{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/lab/arrays.js","webpack:///./src/lab/common/validator.js","webpack:///./src/lab/common/alert.js","webpack:///./node_modules/iframe-phone/lib/parent-endpoint.js","webpack:///./node_modules/iframe-phone/lib/iframe-endpoint.js","webpack:///./src/lab/models/md2d/models/engine/constants/units.js","webpack:///(webpack)/buildin/module.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/fastclick/lib/fastclick.js","webpack:///./node_modules/markdown/lib/index.js","webpack:///./src/lab/common/layout/semantic-layout.js","webpack:///./src/lab/models/md2d/models/engine/math/distributions.js","webpack:///./node_modules/canvg/dist/browser/canvg.min.js","webpack:///./src/lab/common/jquery-svg-class.js","webpack:///./vendor/d3/d3.js","webpack:///./node_modules/jquery-ui-dist/jquery-ui.js","webpack:///./node_modules/jquery-ui-touch-punch/jquery.ui.touch-punch.js","webpack:///./node_modules/jquery-contextmenu/src/jquery.contextMenu.js","webpack:///./node_modules/selectboxit/src/javascripts/jquery.selectBoxIt.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:///./src/lab/models/md2d/models/metadata.js","webpack:///./node_modules/seedrandom/lib/tychei.js","webpack:///./node_modules/seedrandom/seedrandom.js","webpack:///crypto (ignored)","webpack:///./node_modules/iframe-phone/lib/iframe-phone-rpc-endpoint.js","webpack:///./node_modules/markdown/lib/markdown.js","webpack:///./node_modules/rgbcolor/index.js","webpack:///./node_modules/stackblur-canvas/src/stackblur.js","webpack:///./src/lab/common/layout/semantic-layout-config.js","webpack:///./vendor/lab-grapher/dist/lab-grapher.js","webpack:///./node_modules/backbone/backbone.js","webpack:///./node_modules/mustache/mustache.js","webpack:///./src/lab/lab.version.js","webpack:///./node_modules/iframe-phone/main.js","webpack:///./node_modules/process/browser.js","webpack:///./src/lab/models/md2d/models/engine/constants/index.js","webpack:///./src/lab/common/jquery-plugins.js","webpack:///./src/lab/grapher/bar-graph/bar-graph-model.js","webpack:///./src/lab/grapher/bar-graph/bar-graph-view.js","webpack:///./src/lab/models/energy2d/models/constants.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/lab/lab.config.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/i18next/dist/esm/i18next.js","webpack:///./src/lab/common/i18n.js","webpack:///./src/lab/common/controllers/interactive-metadata.js","webpack:///./src/lab/common/resources-url.js","webpack:///./src/lab/common/controllers/language-select.js","webpack:///./src/lab/common/listening-pool.js","webpack:///./src/lab/common/dispatch-support.js","webpack:///./src/lab/common/controllers/data-set.js","webpack:///./src/lab/common/controllers/help-icon-support.js","webpack:///./src/lab/common/controllers/bar-graph-controller.js","webpack:///./src/lab/common/controllers/graph-controller.js","webpack:///./src/lab/import-export/codap-interface.js","webpack:///./src/lab/common/controllers/basic-dialog.js","webpack:///./src/lab/common/controllers/export-controller.js","webpack:///./src/lab/common/controllers/log-controller.js","webpack:///./src/lab/common/controllers/scripting-api.js","webpack:///./src/lab/common/inherit.js","webpack:///./src/lab/common/views/view-state.js","webpack:///./src/lab/common/controllers/disablable.js","webpack:///./src/lab/common/controllers/interactive-component.js","webpack:///./src/lab/common/controllers/button-controller.js","webpack:///./src/lab/common/controllers/checkbox-controller.js","webpack:///./src/lab/common/markdown-to-html.js","webpack:///./src/lab/common/controllers/text-controller.js","webpack:///./src/lab/common/controllers/image-controller.js","webpack:///./src/lab/common/controllers/radio-controller.js","webpack:///./src/lab/common/controllers/slider-controller.js","webpack:///./src/lab/common/views/select-box-view.js","webpack:///./src/lab/common/controllers/pulldown-controller.js","webpack:///./src/lab/common/controllers/joystick-controller.js","webpack:///./src/lab/common/controllers/color-indicator-controller.js","webpack:///./src/lab/common/models/engines/clone-restore-wrapper.js","webpack:///./src/lab/models/md2d/models/engine/utils.js","webpack:///./src/lab/common/array-types.js","webpack:///./src/lab/models/md2d/models/engine/plugins/quantum-dynamics.js","webpack:///./src/lab/common/controllers/spectrometer-controller.js","webpack:///./src/lab/common/layout/detect-font-change.js","webpack:///./src/lab/common/views/numeric-output-view.js","webpack:///./src/lab/common/controllers/numeric-output-controller.js","webpack:///./src/lab/common/views/table-view.js","webpack:///./src/lab/common/controllers/table-controller.js","webpack:///./src/lab/common/benchmark/browser-detect.js","webpack:///./src/lab/common/benchmark/benchmark.js","webpack:///./src/lab/common/url-helper.js","webpack:///./src/lab/common/controllers/parent-message-api.js","webpack:///./src/lab/common/controllers/thermometer.tpl","webpack:///./src/lab/common/controllers/thermometer-controller.js","webpack:///./src/lab/common/controllers/playback-controller.js","webpack:///./src/lab/common/controllers/div-controller.js","webpack:///./src/lab/common/controllers/help-system.js","webpack:///./src/lab/common/views/tooltip.js","webpack:///./src/lab/common/cookies.js","webpack:///./src/lab/common/controllers/setup-banner.js","webpack:///./src/lab/common/controllers/about-dialog.js","webpack:///./src/lab/common/controllers/copyright.js","webpack:///./src/lab/common/controllers/share-dialog.tpl","webpack:///./src/lab/common/controllers/share-dialog.js","webpack:///./src/lab/common/controllers/credits-dialog.tpl","webpack:///./src/lab/common/controllers/credits-dialog.js","webpack:///./src/lab/common/layout/templates.js","webpack:///./src/lab/common/performance.js","webpack:///./src/lab/common/controllers/model-controller.js","webpack:///./src/lab/common/serialize.js","webpack:///./src/lab/common/property-support.js","webpack:///./src/lab/common/property-description.js","webpack:///./src/lab/common/parameter-support.js","webpack:///./src/lab/common/filters/running-average-filter.js","webpack:///./src/lab/common/filters/simple-period-filter.js","webpack:///./src/lab/common/output-support.js","webpack:///./src/lab/common/playback-support.js","webpack:///./src/lab/common/define-builtin-properties.js","webpack:///./src/lab/common/lab-modeler-mixin.js","webpack:///./src/lab/common/models/tick-history.js","webpack:///./src/lab/models/md2d/models/aminoacids-props.js","webpack:///./src/lab/models/md2d/models/aminoacids-helper.js","webpack:///./src/lab/models/md2d/models/engine/math/minimizer.js","webpack:///./src/lab/models/md2d/models/engine/math/index.js","webpack:///./src/lab/models/md2d/models/engine/potentials/coulomb.js","webpack:///./src/lab/models/md2d/models/engine/potentials/lennard-jones.js","webpack:///./src/lab/models/md2d/models/engine/potentials/index.js","webpack:///./src/lab/models/md2d/models/engine/pairwise-lj-properties.js","webpack:///./src/lab/models/md2d/models/engine/cell-list.js","webpack:///./src/lab/models/md2d/models/engine/neighbor-list.js","webpack:///./src/lab/common/models/plugin-controller.js","webpack:///./src/lab/models/md2d/models/engine/md2d.js","webpack:///./src/lab/models/md2d/models/unit-definitions/md2d.js","webpack:///./src/lab/models/md2d/models/unit-definitions/mks.js","webpack:///./src/lab/models/md2d/models/unit-definitions/index.js","webpack:///./src/lab/models/md2d/models/units-translation.js","webpack:///./src/lab/models/md2d/models/engine/genetic-engine.js","webpack:///./src/lab/models/md2d/models/performance-optimizer.js","webpack:///./src/lab/common/models/property-transition.js","webpack:///./src/lab/models/md2d/models/atom-transition.js","webpack:///./src/lab/models/md2d/models/engine/plugins/chemical-reactions.js","webpack:///./src/lab/models/md2d/models/modeler.js","webpack:///./src/lab/common/views/tab-index.js","webpack:///./src/lab/common/feature-tests.js","webpack:///./src/lab/common/views/hit-testing-helper.js","webpack:///./src/lab/common/views/svg-container.js","webpack:///./src/lab/common/views/color.js","webpack:///./src/lab/models/md2d/views/aminoacid-context-menu.js","webpack:///./src/lab/models/md2d/views/atoms-interactions.js","webpack:///./src/lab/models/md2d/views/atoms-renderer.js","webpack:///./src/lab/models/md2d/views/bonds-renderer.js","webpack:///./src/lab/models/md2d/views/vectors-renderer.js","webpack:///./src/lab/models/md2d/views/field-renderer.js","webpack:///./src/lab/models/md2d/views/vdw-lines-renderer.js","webpack:///./src/lab/models/md2d/views/nucleotide-paths.js","webpack:///./src/lab/models/md2d/views/nucleotides.js","webpack:///./src/lab/models/md2d/views/genetic-elements-renderer.js","webpack:///./src/lab/common/views/state-manager.js","webpack:///./src/lab/models/md2d/views/genetic-anim-states.js","webpack:///./src/lab/models/md2d/views/mutations-context-menu.js","webpack:///./src/lab/models/md2d/views/genetic-renderer.js","webpack:///./src/lab/common/layout/wrap-svg-text.js","webpack:///./src/lab/common/views/gradients.js","webpack:///./src/lab/models/md2d/views/images-renderer.js","webpack:///./src/lab/models/md2d/views/renderer.js","webpack:///./src/lab/models/md2d/views/view.js","webpack:///./src/lab/models/md2d/views/dna-edit-dialog.js","webpack:///./src/lab/models/md2d/controllers/scripting-api.js","webpack:///./src/lab/models/md2d/benchmarks/benchmarks.js","webpack:///./src/lab/models/md2d/controllers/controller.js","webpack:///./src/lab/models/signal-generator/metadata.js","webpack:///./src/lab/models/signal-generator/modeler.js","webpack:///./src/lab/common/views/null-model-view.js","webpack:///./src/lab/models/signal-generator/controller.js","webpack:///./src/lab/models/iframe/metadata.js","webpack:///./src/lab/models/iframe/modeler.js","webpack:///./src/lab/models/iframe/iframe-container.js","webpack:///./src/lab/models/iframe/scripting-api.js","webpack:///./src/lab/models/iframe/controller.js","webpack:///./src/lab/models/sensor/metadata.js","webpack:///./src/lab/models/sensor-common/i18n-sensor-definitions.js","webpack:///./src/lab/models/sensor-common/notifier.js","webpack:///./src/lab/models/sensor/modeler.js","webpack:///./src/lab/models/sensor/view.js","webpack:///./src/lab/models/sensor/scripting-api.js","webpack:///./src/lab/models/sensor/controller.js","webpack:///./src/lab/models/dual-sensor/metadata.js","webpack:///./src/lab/models/dual-sensor/modeler.js","webpack:///./src/lab/models/dual-sensor/view.js","webpack:///./src/lab/models/dual-sensor/scripting-api.js","webpack:///./src/lab/models/dual-sensor/controller.js","webpack:///./src/lab/models/dual-sensor-connector/metadata.js","webpack:///./src/lab/common/state-machine.js","webpack:///./src/lab/models/dual-sensor-connector/units-definition.js","webpack:///./src/lab/models/sensor-common/i18n-sensor-definitions-connector.js","webpack:///./src/lab/models/dual-sensor-connector/modeler.js","webpack:///./src/lab/models/dual-sensor-connector/view.js","webpack:///./src/lab/models/dual-sensor-connector/scripting-api.js","webpack:///./src/lab/models/dual-sensor-connector/controller.js","webpack:///./src/lab/models/sensor-connector/metadata.js","webpack:///./src/lab/models/sensor-connector/units-definition.js","webpack:///./src/lab/models/sensor-connector/modeler.js","webpack:///./src/lab/models/sensor-connector/view.js","webpack:///./src/lab/models/sensor-connector/scripting-api.js","webpack:///./src/lab/models/sensor-connector/controller.js","webpack:///./src/lab/models/labquest2/metadata.js","webpack:///./src/lab/models/labquest2/units-definition.js","webpack:///./src/lab/models/labquest2/modeler.js","webpack:///./src/lab/models/labquest2/view.js","webpack:///./src/lab/models/labquest2/scripting-api.js","webpack:///./src/lab/models/labquest2/controller.js","webpack:///./src/lab/models/energy2d/metadata.js","webpack:///./src/lab/models/energy2d/models/physics-solvers/heat-solver.js","webpack:///./src/lab/models/energy2d/gpu/context.js","webpack:///./src/lab/models/energy2d/gpu/shader.js","webpack:///./src/lab/models/energy2d/gpu/texture.js","webpack:///./src/lab/models/energy2d/gpu/mesh.js","webpack:///./src/lab/models/energy2d/gpu/gpgpu.js","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/basic.vs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/solver.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/force-flux-t.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/t-to-t0.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/maccormack-step1.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/maccormack-step2.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-gpu.js","webpack:///./src/lab/models/energy2d/models/physics-solvers/fluid-solver.js","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/basic.vs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/maccormack-step1.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/maccormack-step2.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-uv-boundary.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-u0v0-boundary.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/set-obstacle-boundary.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/set-obstacle-velocity.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/uv-to-u0v0.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step1.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step2.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step3.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/diffuse.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-buoyancy.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-gpu.js","webpack:///./src/lab/models/energy2d/models/helpers.js","webpack:///./src/lab/models/energy2d/models/shape.js","webpack:///./src/lab/models/energy2d/models/photon.js","webpack:///./src/lab/models/energy2d/models/physics-solvers/ray-solver.js","webpack:///./src/lab/models/energy2d/models/part.js","webpack:///./src/lab/models/energy2d/models/core-model.js","webpack:///./src/lab/models/energy2d/modeler.js","webpack:///./src/lab/models/energy2d/views/helpers.js","webpack:///./src/lab/models/energy2d/views/color-palette.js","webpack:///./src/lab/models/energy2d/views/heatmap.js","webpack:///./src/lab/models/energy2d/views/heatmap-webgl-glsl/basic.vs.glsl","webpack:///./src/lab/models/energy2d/views/heatmap-webgl-glsl/temp-renderer.fs.glsl","webpack:///./src/lab/models/energy2d/views/heatmap-webgl.js","webpack:///./src/lab/models/energy2d/views/webgl-status.js","webpack:///./src/lab/models/energy2d/views/vectormap.js","webpack:///./src/lab/models/energy2d/views/vectormap-webgl-glsl/vectormap.vs.glsl","webpack:///./src/lab/models/energy2d/views/vectormap-webgl-glsl/vectormap.fs.glsl","webpack:///./src/lab/models/energy2d/views/vectormap-webgl.js","webpack:///./src/lab/models/energy2d/views/photons.js","webpack:///./src/lab/models/energy2d/views/parts.js","webpack:///./src/lab/models/energy2d/views/sensors.js","webpack:///./src/lab/models/energy2d/views/renderer.js","webpack:///./src/lab/models/energy2d/views/view.js","webpack:///./src/lab/models/energy2d/benchmarks/benchmarks.js","webpack:///./src/lab/models/energy2d/controllers/scripting-api.js","webpack:///./src/lab/models/energy2d/controllers/controller.js","webpack:///./src/lab/common/models/dataset.js","webpack:///./src/lab/common/controllers/experiment-controller.js","webpack:///./src/lab/common/controllers/interactives-controller.js","webpack:///./src/lab/import-export/netlogo-importer.js","webpack:///./src/lab/index.js","webpack:///./src/lab/models/md2d/models/solvent.js","webpack:///./node_modules/underscore/underscore.js","webpack:///./src/lab/models/md2d/models/engine/math/utils.js","webpack:///./node_modules/screenfull/dist/screenfull.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./src/lab/common/console.js","webpack:///./node_modules/pixi.js/bin/pixi.js","webpack:///./node_modules/seedrandom/index.js","webpack:///./vendor/sensor-connector-interface/dist/sensor-connector-interface.js","webpack:///./vendor/sensor-labquest-2-interface/dist/sensor-labquest-2-interface.js","webpack:///./node_modules/iframe-phone/lib/structured-clone.js","webpack:///./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/node-libs-browser/node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./src/lab/grapher/index.js","webpack:///./vendor/lab-sensor-applet-interface-dist/sensor-applet-interface.js"],"names":["arrays","version","webgl","window","WebGLRenderingContext","typed","Float64Array","e","create","size","fill","array_type","undefined","a","Array","Float32Array","Int32Array","Int16Array","Int8Array","Uint32Array","Uint16Array","Uint8Array","Uint8ClampedArray","Error","array","value","i","length","constructor_function","source","buffer","__proto__","constructor","Object","prototype","toString","call","copy","dest","num","len","clone","slice","between","b","x","Math","max","min","apply","maxTypedArray","test","Number","MIN_VALUE","minTypedArray","MAX_VALUE","maxAnyArray","TypeError","minAnyArray","average","acc","extend","newLength","extendedArray","Constructor","set","subarray","remove","idx","rest","push","isArray","object","ValidationError","prop","message","isObject","checkConflicts","input","propName","conflictingProps","hasOwnProperty","validateSingleProperty","propertyMetadata","ignoreImmutable","readOnly","immutable","validate","metadata","result","propMetadata","arguments","conflictsWith","propertyIsWritable","propertyChangeInvalidates","validateCompleteness","opts","includeOnlySerializedProperties","defVal","serialize","defaultValue","required","$","alertFunc","alert","console","error","msg","KILOGRAMS_PER_DALTON","COULOMBS_PER_ELEMENTARY_CHARGE","JOULES_PER_EV","SECONDS_PER_FEMTOSECOND","METERS_PER_NANOMETER","ANGSTROMS_PER_NANOMETER","GRAMS_PER_KILOGRAM","types","TIME","LENGTH","MASS","ENERGY","ENTROPY","CHARGE","INVERSE_QUANTITY","FARADS_PER_METER","METERS_PER_FARAD","FORCE","VELOCITY","AREA","PRESSURE","unit","ratio","convert","exports","FEMTOSECOND","name","type","SECOND","NANOMETER","ANGSTROM","METER","DALTON","GRAM","KILOGRAM","MW_ENERGY_UNIT","JOULE","EV","EV_PER_KELVIN","JOULES_PER_KELVIN","ELEMENTARY_CHARGE","COULOMB","INVERSE_MOLE","MW_FORCE_UNIT","NEWTON","EV_PER_NM","MW_VELOCITY_UNIT","METERS_PER_SECOND","from","to","checkCompatibility","fromUnit","toUnit","per","as","val","fromTo","SemanticLayout","layout","$mainContainer","$containersParent","containerSpecList","containersContent","componentByID","modelController","aspectRatio","fontScale","padding","scaledPadding","containerSpecByID","$containerByID","$innerContainerByID","$modelContainer","availableWidth","availableHeight","fontSizeChanged","modelWidth","modelTop","modelLeft","paddingTop","paddingLeft","paddingBottom","reset","layoutConfig","minModelWidth","getDimensionOfContainer","$container","dim","position","top","outerHeight","left","outerWidth","setFontSize","canonicalWidth","canonicalHeight","containerScale","font","width","height","canonicalFontSize","minFontSize","css","createContainers","container","id","ii","appendTo","replace","placeComponentsInContainers","containerID","divContents","items","$row","$rows","$containerComponents","lastContainer","comps","errMsg","j","jj","k","kk","append","getViewContainer","bottom","children","last","addClass","positionContainers","right","getHeightForWidth","parseDimension","aboveOthers","belowOthers","resizeModelContainer","maxX","Infinity","maxY","minX","minY","abs","isNaN","vars","match","getDimension","eval","split","initialize","options","containers","components","setupModel","newModelController","model","isReady","layoutInteractive","redraws","iterationsLimit","time","resize","timeEnd","normal","next","mean","sd","r","ret","theta","u1","u2","random","PI","sqrt","log","sin","cos","hasClassHTML","fn","hasClass","addClassHTML","removeClassHTML","removeClass","hasClassSVG","className","RegExp","getAttribute","addClassSVG","setAttribute","removeClassSVG","removedClass","execute","jquerySelection","orgArguments","SVGFunc","HTMLFunc","element","SVGElement","isFunction","mainProperties","isBeingEdited","imagePath","dnaEngineImagesPath","unitType","unitsScheme","lennardJonesForces","storeInTickHistory","coulombForces","temperatureControl","targetTemperature","modelSampleRate","gravitationalField","timeStep","dielectricConstant","realisticDielectricEffect","solventForceFactor","solventForceType","additionalSolventForceMult","additionalSolventForceThreshold","polarAAEpsilon","viscosity","timeStepsPerTick","DNAState","DNA","toUpperCase","DNAMutations","useQuantumDynamics","useChemicalReactions","useDuration","requestedDuration","skipPECheckOnAddAtom","viewOptions","viewPortWidth","viewPortHeight","viewPortZoom","viewPortX","viewPortY","viewPortDrag","backgroundColor","showClock","markColor","atomRadiusScale","keShading","keShadingMinEnergy","keShadingMaxEnergy","chargeShading","chargeShadingStyle","aminoAcidColorScheme","aminoAcidLabels","useThreeLetterCode","showChargeSymbols","showVDWLines","VDWLinesCutoff","showVelocityVectors","showForceVectors","showElectricField","electricFieldDensity","electricFieldColor","showAtomTrace","atomTraceId","images","imageMapping","textBoxes","xlabel","ylabel","xunits","yunits","controlButtons","controlButtonStyle","gridLines","atomNumbers","enableAtomTooltips","enableKeyboardHandlers","atomTraceColor","velocityVectors","color","forceVectors","forceVectorsDirectionOnly","onAtomDrag","atom","y","vx","vy","ax","ay","charge","friction","radical","visible","pinned","marked","draggable","draggableWhenStopped","radius","px","py","speed","mass","excitation","sharedElectrons","sigma","epsilon","pairwiseLJProperties","element1","element2","obstacle","externalAx","externalAy","displayExternalAcceleration","westProbe","westProbeValue","northProbe","northProbeValue","eastProbe","eastProbeValue","southProbe","southProbeValue","permeability","shape","fence","lineColor","lineDashes","lineWeight","layer","layerPosition","line","x1","y1","x2","y2","beginStyle","endStyle","radialBond","atom1","atom2","strength","angularBond","atom3","angle","restraint","atomIndex","x0","y0","electricField","intensity","orientation","shapeIdx","textBox","text","anchor","frame","calloutPoint","strokeWidthEms","strokeOpacity","strokeColor","rotate","fontSize","hostType","hostIndex","textAlign","chemicalReactions","updateInterval","createAngularBonds","noLoops","valenceElectrons","bondEnergy","activationEnergy","bondProbability","keys","forEach","key","p","image","imageUri","imageX","imageY","imageHostType","imageHostIndex","imageLayer","imageLayerPosition","rotation","scale","opacity","quantumDynamics","elementEnergyLevels","photons","radiationlessEmissionProbability","lightSource","on","monochromatic","frequency","radiationPeriod","numberOfBeams","angleOfIncidence","photon","angularFrequency","containerColors","units","constants","ATOMIC_MASS","BOLTZMANN_CONSTANT","AVAGADRO_CONSTANT","PERMITTIVITY_OF_FREE_SPACE","constantName","constant","COULOMB_CONSTANT","api","measure","selector","parent","el","selection","visibility","find","truncate","maxWidth","$el","$span","newText","attr","alterClass","removals","additions","self","indexOf","patt","join","each","it","cn","trim","event","special","destroyed","o","handler","BarGraphModel","Backbone","Model","defaults","secondValue","barWidth","title","titleOn","barColor","fillColor","labels","labelFormat","uid","getUID","getRealWidth","d3selection","node","getBBox","CANONICAL_FONT_SIZE","getScaleFunc","factor","setupValueLabelPairs","yAxis","ticks","values","label","tickValues","tickFormat","getFormatFunc","formatString","unitsString","format","d3","BarGraphView","View","tagName","$topArea","vis","select","defs","axisContainer","bar","gridContainer","trianglePos","traingle","titleContainer","yScale","linear","heightScale","svg","axis","$bottomArea","modelChanged","render","toJSON","parseFloat","renderLabels","offset","_setupHorizontalTitle","svgHeight","domain","range","clamp","selectAll","tickPadding","tickSize","orient","_getFillGradient","_getBarGradient","classed","_setupGrid","_setupTitle","update","get","changedAttributes","count","valChanged","secValChanged","gradient","rgb","empty","brighter","pop","shift","grid","data","String","enter","exit","d","round","lines","titleG","gEnter","g","_processTitle","pos","t","$title","truncatedText","AIR_THERMAL_CONDUCTIVITY","AIR_SPECIFIC_HEAT","AIR_DENSITY","AIR_VISCOSITY","STEFAN_CONSTANT","i18n","language","i18next","init","lng","resources","translations","fallbackLng","initImmediate","interpolation","prefix","suffix","escapeValue","LabGrapher","lang","interactive","publicationStatus","labEnvironment","i18nMetadata","theme","showTopBar","showBottomBar","credits","subtitle","about","category","subCategory","screenshot","importedFrom","randomSeed","helpOnLoad","aboutOnLoad","models","parameters","dataSets","propertiesToRetain","outputs","filteredOutputs","experiment","logging","template","helpTips","url","onLoad","modelOptions","parameter","initialValue","onChange","unitName","unitPluralName","unitAbbreviation","output","dataSet","properties","serializableProperties","streamDataFromModel","clearOnModelReset","initialData","filteredOutput","property","period","selectionComponents","perRun","perTick","enabled","timeSeries","destinations","stateButtons","startRun","stopRun","saveRun","nextRun","clearAll","onReset","savedRuns","experimentTimeSeries","experimentParameter","inputs","experimentDestination","componentIds","experimentSavedRun","timeStamp","playback","stepping","onClick","tooltip","helpIcon","src","urlRelativeTo","div","content","classes","button","action","disabled","checkbox","textOn","retainProperty","slider","steps","titlePosition","fillToValue","displayValue","pulldown","labelOn","pulldownOption","selected","radio","style","radioOption","numericOutput","thermometer","labelIsReading","reading","digits","joystick","n","s","w","colorIndicator","colorValue","spectrometer","upperBound","lowerBound","clearOnModelLoad","border","table","tableData","addNewRows","visibleRows","showBlankRow","indexColumn","propertyColumns","headerData","graph","dataPoints","resetAxesOnReset","enableAutoScaleButton","enableAxisScaling","enableZooming","autoScaleX","autoScaleY","enableSelectionButton","clearSelectionOnLeavingSelectMode","enableDrawButton","drawProperty","markAllDataPoints","showRulersOnSelection","fontScaleRelativeToParent","hideAxisValues","xProperty","buttonsStyle","buttonsLayout","lineWidth","xmin","xmax","ymin","ymax","xTickCount","yTickCount","xscaleExponent","yscaleExponent","xFormatter","yFormatter","bars","dataColors","legendLabels","legendVisible","syncXAxis","syncYAxis","barGraph","secondProperty","averagePeriod","helpTip","component","showcase","resourcePath","config","rootUrl","languageSelect","interactiveController","metadataDownloaded","done","results","JSON","parse","setupContextMenu","interactiveRendered","Deferred","resolve","when","setupLangIcon","code2flag","countryCode","arr","resourcesUrl","toLowerCase","currentLang","$icon","contextMenu","trigger","zIndex","determinePosition","$menu","my","at","of","collision","callback","requestInteractiveAt","isD3Listner","listener","off","ListeningPool","namespace","_nameSpace","registeredListeners","_nameSpaced","eventName","listen","speaker","func","eventKey","listeningRecord","removeAll","argsToArray","args","DispatchSupport","d3dispatch","batchMode","suppressedEvents","newTypes","dispatch","dispatchEvent","add","delegate","funcName","mixInto","target","suppressEvents","addEventTypes","concat","startBatch","endBatch","flush","dataSetCount","DataSet","interactivesController","isPrivate","_model","getModel","validator","_data","_modelProperties","_listeningPool","_dispatch","Events","resetData","addDataSet","SAMPLE_ADDED","SAMPLE_CHANGED","SAMPLE_REMOVED","DATA_TRUNCATED","DATA_RESET","SELECTION_CHANGED","LABELS_CHANGED","_setupEmptyData","context","_inNewModelTerritory","stepCounter","maxLength","_addListeners","listeningPool","positionChanged","_trigger","appendDataPoint","removeModelDataAfterStepPointer","addPropertyDescriptionObserver","getLabels","_getModelProperty","_getPropertyLabel","hasProperty","description","getPropertyDescription","getLabel","getUnitAbbreviation","_resetProperty","newValue","getData","props","minLength","dataPointIndex","valuesLength","propsLength","allValuesMatching","index","clearData","resetProperties","dataPoint","removeDataPoint","editDataPoint","getPropertyValue","res","modelLoadedCallback","serializeData","handleExternalEvent","evtName","helpIconSupport","componentDef","helpSystem","$helpIcon","isActive","showSingle","barGraphOptionForComponentSpecProperty","filterOptions","inputHash","cName","gName","BarGraphController","controller","barGraphModel","barGraphView","updateSecondProperty","removeObserver","addPropertiesListener","defineFilteredOutput","grapherOptionForComponentSpecProperty","drawIndex","graphControllerCount","X_LABEL_PROP_IDX","Y_LABEL_PROP_IDX","graphController","grapher","scriptingAPI","xProperties","dataPointsArrays","staticSeries","ignoreDataSetEvents","suppressDomainSync","isLabelExplicit","loadDataSet","getDataSet","dataSetProperties","xProp","_dataResetHandler","_sampleAddedHandler","_sampleChangedHandler","_sampleRemovedHandler","_selectionChangeHandler","_invalidationHandler","_labelsChangedHandler","getScriptingAPI","getOptions","cProp","gOption","setupAxisSync","syncedGraphs","callbackName","setterName","syncedGraphID","syncedGraph","getComponent","redrawCurrentStepPointer","step","updateOrRescale","evt","resetGraph","resetGrapher","initGrapher","clearGrapher","updateLabels","_modelResetHandler","gData","gSeries","xArr","propArr","resetPoints","repaint","extra","labelWasChanged","yProp","yLabel","xLabel","syncAxisRangesToPropertyRanges","isPointValid","point","valid","gPoints","addPoints","replacePoints","propIdx","deletePoint","registerModelListeners","graphChangedDataPoint","yPro","xPro","Graph","getNextTabIndex","addPointListener","appendDataPropertiesToComponent","series","clearDataSets","setAttributes","setXDomain","suppressSync","xDomain","setYDomain","yDomain","xDescription","yDescriptions","map","getMin","getMax","isFinite","scrollXAxisToZero","getView","selectionDomain","selectionEnabled","addAnnotation","resetAnnotations","startX","enableLogging","logFunc","DEF_CODAP_WIDTH","CODAP_VALUES_LIMIT","throwIfError","resp","success","chunks","chunkSize","dataContextName","parentTable","singleCase","pluralCase","singleCaseWithArticle","setOfCases","setOfCasesWithArticle","childTable","singleTable","isCodapPresent","frameConfig","codapPhone","iframePhone","IframePhoneRpcEndpoint","notificationHandler","bind","isEmbeddedInCODAP","canExportData","request","resource","response","initInteractiveFrame","codapDidConnect","doCommand","existingConfig","newIframeConfig","preventDataContextReorg","savedState","dimensions","cmd","exportData","perRunAttrs","perRunData","timeSeriesAttrs","timeSeriesData","unshift","shouldExportTimeSeries","parentTableName","childTableName","runNumber","item","valuesChunks","openTable","createDataContext","collections","attrs","collapseChildren","getDataContext","casesCount","cases","prevRunNumber","logAction","logString","formatStr","defOptions","autoOpen","dialogClass","titleizeClass","BasicDialog","$element","closeText","dialog","_eventNamePrefix","open","$content","close","setContent","openTime","eventNamePrefix","Date","now","wasOpenFor","modalAlert","buttons","modal","ExportController","spec","perTickValues","initialPerRunData","modelCanExportData","isUnexportedDataPresent","askAboutDataDiscard","isInitialized","getDataPoint","removeDataAfterStepPointer","state","shouldHandleDataDiscard","handleDataDiscard","resetRequest","click","is","cancel","getCurrentPerRunData","proceed","getChangedParameterValues","currentPerRunData","changesList","anyChanged","currentValue","changed","willResetModelHandler","modelToBeReset","registerInteractiveListeners","cause","handleModelInitialization","handleModelLoaded","propertyExists","filter","getLabelForProperty","desc","getCodapAttrForProperty","dataAreAvailableForExport","hasPlayed","isStopped","_spec","selectedData","outputData","perRunPropertyLabels","perRunPropertyValues","perTickLabels","changedParameters","codapInterface","LogController","_properties","boundProperties","_interactivesController","_phone","getIFrameEndpoint","_modelLoadedHandler","_interactiveWillReloadHandler","_setupComponents","_enableLoggingIn","additionalComponents","_logToCODAP","_genericLog","post","stringify","enabledComponents","componentsList","compID","logFunction","comp","_getProperties","propData","namespaceCount","shadowedGlobals","errorForKey","ReferenceError","setShadowedGlobals","getOwnPropertyNames","err","defineProperty","ScriptingAPI","onModelReset","isInteger","parseInt","obj","randomFloat","randomInteger","floor","swapElementsOfArray","tmp","choose","N","trackEvent","gtag","deg2rad","rad2deg","freeze","unfreeze","actionName","loadModel","modelId","stop","getLoadedModelId","getLoadedModel","onPropertyChange","propertyName","callAt","checkTime","stopChecking","startChecking","addObserver","onStartHandler","onStart","callEvery","interval","lastCall","resetState","modelContainer","setClickHandler","onDrag","setDragHandler","onSelect","setSelectHandler","setComponentDisabled","v","setDisabled","clearDataSet","resetDataSet","resetDataSetProperties","setComponentAttributes","componentID","resetGraphSelection","resetGraphSelectionDomain","annotation","start","onStop","reloadModel","reloadInteractive","stepForward","isNewStep","updateModelView","stepBack","tick","getTime","getFPS","getSimulationProgressRate","startPerformanceTuning","performanceOptimizer","enable","repaintModelView","exportController","getCardinalDirection","inverse","direction","getCompassDirection","deg","NaN","setTimeout","Function","setInterval","clearTimeout","clearInterval","warn","dir","intController","bindModel","newModel","ModelScriptingAPI","exposeScriptingAPI","script","run","argNames","argVals","makeFunctionInScriptContext","argumentsToScript","scriptSource","scriptFunctionMakerSource","scriptFunctionMaker","scriptFunction","inherit","Child","Parent","F","superClass","disableView","enableView","viewState","disablable","isDisabled","InteractiveComponent","_scriptingAPI","_optionallyAddOnClickHandlers","_modelLoadedCallback","_updateClickHandler","_actionClickFunction","that","_onClick","setAction","newAction","setOnClick","newOnClick","_clickTargetSelector","buttonControllerCount","ButtonController","html","CheckboxController","actionScript","$checkbox","$fakeCheckable","$label","updateCheckbox","setCheckbox","updateCheckboxDisabledState","getFrozen","getCheckboxState","customClickEvent","preventDefault","propObj","removePropertyDescriptionObserver","NEW_WINDOW","markdownToHTML","markdown","toHTML","TextController","externalUrl","ImageController","_controller","_$img","_externalUrl","modelUrl","lastIndexOf","labConfig","modelsRootUrl","RadioController","$div","$inputs","$options","updateRadio","removeAttr","updateRadioDisabledState","$input","$optionsContainer","option","change","optionSpec","SliderController","actionFunc","displayFunc","fillToPct","defaultBackgroundColor","$elem","$slider","$sliderHandle","updateSlider","redoSliderFill","updateSliderDisabledState","bindTargets","ui","valuePct","gradientStr","webkitGradientStr","stops","display","leftLabelWidth","rightLabelWidth","getLabelWidth","labelSelector","interactiveContainer","stopPropagation","remainingHeight","emSize","startTime","startVal","minVal","maxVal","endVal","SelectBoxView","ignoreChangeEvent","$select","$wrapper","changeHandler","selectOption","$option","ulEms","arrowEms","textMaxWidth","boxWidth","selectBoxIt","pxToEm","refresh","destroy","$__common_jquery_plugins","PulldownController","view","updatePulldown","updatePulldownDisabledState","logChange","JoystickController","$labelN","$labelS","$labelE","$labelW","$joystickBase","$joystickHandle","$valueText","valueChanged","hasBeenSetUp","base","updateJoystick","firstTime","moveJoystickTo","updateJoystickDisabledState","setup","revert","drag","loc","limitXY","halfWidth","halfHeight","rel_left","startLeft","rel_top","startTop","joystickMoved","offsetWidth","offsetHeight","offsetTop","offsetLeft","center","dist","distance","radians","atan2","dot1","dot2","pow","magnitude","mag","dx","dy","fromSetup","clientWidth","clientHeight","baseHeight","labelsWidth","baseWidth","labelsOverflow","baseSize","handleSize","containerHeight","centerX","adjPct","borderRadius","ColorIndicatorController","colorFunc","$swatch","updateColorIndicator","CloneRestoreWrapper","hashOfArrays","padArraysWithZeroes","restore","extendArrays","arrayContainer","notSafari","navigator","safarimatch","userAgent","useTyped","floatType","int32Type","int16Type","int8Type","uint16Type","uint8Type","PLANCK_CONSTANT","ENERGY_GAP_TOLERANCE","C","TWO_PI","LIFETIME","EMISSION_PROBABILITY_PER_FS","INFRARED","ULTRAVIOLET","PHOTON_ABSORBED","PHOTON_EMITTED","QuantumDynamics","engine","pRadiationless","pStimulatedEmission","getDimensions","excitationTime","modelTime","atoms","elements","nextPhotonId","getRandomFrequency","updateAtomsTable","arrayTypes","createPhotonsTable","serializedPhotons","ceil","currentlyOperatedPairs","atom1Idx","atom2Idx","w1","w2","dxFraction","dyFraction","numPhotons","copyPhotonData","handlePhotonAtomCollisions","numAtoms","getNumberOfAtoms","rsq","collisionResult","handlePhotonAtomCollision","photonIndex","preciseEnergy","tryToAbsorbPhoton","removePhoton","newFreq","photonAbsorbed","energyLevels","energyLevelIndex","electronEnergy","photonEnergy","nLevels","thermallyExciteAndDeexciteAtoms","neighborList","nlist","getList","currentlyClosePairs","a1","a2","el1","el2","energyLevels1","energyLevels2","xi","yi","xij","yij","ijsq","avrSigma","avrSigmaSq","atomWasExcited","atomWasDeexcited","getStartIdxFor","getEndIdxFor","tryToThermallyExciteAtoms","tryToThermallyDeexciteAtoms","tryToExciteAtom","currentEnergyLevel","currentElectronEnergy","relativeKE","energyRequired","highest","nextEnergyLevel","energyAbsorbed","computeVelocityComponents","getRelativeKE","updateVelocities","normalizationFactor","du","m1","m2","energyDelta","v1","v2","excitation1","excitation2","readyToThermallyDeexcite","deexciteAtom","currentLevel","newLevel","energyReleased","emitPhotonFromAtom","findEmptyPhotonIndex","utils","emitPhoton","energy","cosA","sinA","angularFreq","movePhotons","dt","spontaneouslyEmitPhotons","tryToSpontaneouslyEmitPhoton","r1","r2","excessEnergy","m","mInverse","normalizeAngle","emitLightSourcePhotons","h","nBeams","spacing","c","getEnergy","toFixed","dataTables","performActionWithinIntegrationLoop","turnOnLightSource","turnOffLightSource","setLightSourceAngle","setLightSourceFrequency","freq","setLightSourcePeriod","setLightSourceNumber","number","getPhotons","getNumPhotons","getViewPhotons","viewPhotons","viewPhotonsByIndex","makeViewPhoton","viewPhoton","getElementEnergyLevels","getRadiationlessEmissionProbability","getLightSource","getState","PHOTON_MARKS_PRECISION","VISIBLE_LIGHT_IMG_DATA","SpectrometerController","_existingPhotonMarks","renderBackground","renderTickMarks","$photonMarksContainer","onPhotonAbsorbed","$tickMarksContainer","photonMarkExists","addPhotonMark","FONT_SIZE","DEFAULTS","weight","timeout","onchange","fontLoaded","loading","getBitmap","canvas","document","createElement","ctx","getContext","fillText","toDataURL","pollingInterval","fontChecker","bitmap","changeCallbacks","cb","detectFontChange","_options","multipleFonts","fontName","OVERSAMPLE","NumericOutputView","$numericOutput","$output","$number","$units","lastValue","minContentWidth","$canvas","textWidth","textY","canvasElementWidth","canvasElementHeight","canvasInternalWidth","canvasInternalHeight","resizeCanvas","oversampledFontSize","fillStyle","textBaseline","repositionCanvas","measureText","clearRect","updateLabel","updateUnits","hideUnits","showUnits","NumericOutputController","propertyDescription","renderValue","TableView","tableController","columns","formatters","blankRow","klasses","headerWidths","$tableWrapper","$table","$thead","$titlerow","$tbody","$bodyrows","tbodyPos","tbodyHeight","renderColumnTitles","$th","columnSort","setFormattedData","$td","datum","colIdx","formatNumericValues","ascending","descending","sortOrder","removeBlankRow","siblings","tsort","sortFunction","anum","bnum","setupBlankRow","alignColumnWidths","getRowByIndex","rowIndex","getRowIndexFromRow","$tr","getRowVisiblity","removeSelection","splice","addSelection","getRowOrderIndices","indices","sort","fillSelection","rowOrderIndices","end","clearSelection","appendSingleRow","rowData","scrollToBottom","scrollTop","replaceDataRow","appendDataRow","$dataElements","dataElementCount","calculateSizeAndPosition","commitEditing","colIndex","addDataToCell","startEditing","$oldInputs","nextColIndex","editable","getDataInCell","code","keyCode","which","focus","ri","currentTarget","shiftKey","metaKey","clear","appendDataRows","rows","startIndex","row","removeDataRows","startIdx","updateTable","tableControllerCount","TableController","generateColumnTitlesAndFormatters","sampleAddedHandler","sampleChangedHandler","dataResetHandler","dataTruncatedHandler","selectionChangedHandler","columnDesc","propertyTitle","unitAbrev","appendPropertyRow","activeRow","nthRow","data2row","dataRow","isEmpty","handleNewDataRow","dataRows","dataLength","propArray","col","windows_platform_token","os_platform","systemInfo","systemInfoArray","token","arch","isMobile","substr","vendor","opera","what_browser","chromematch","ffmatch","iematch","operamatch","iphonematch","ipadmatch","ipodmatch","androidchromematch","androidfirefoxmatch","androidmatch","browser","oscpu","buildID","buildDate","platform_match","cpuClass","platform","appVersion","browser_detect","_isMobile","_browser","average_row","renderToTable","benchmarks_table","benchmarksThatWereRun","results_row","col_number","col_numbers","title_row","title_cells","getElementsByTagName","add_column","cell","appendChild","innerHTML","add_row","num_cols","tr","add_result","textContent","update_averages","num_rows","cell_index","average_elements","total","genericDecimalFormatter","genericIntegerFormatter","numeric","formatter","bench","benchmarks_to_run","resultsCallback","start_callback","end_callback","bencharks_queue","browser_info","commit_link","Lab","repo","commit","short_sha","dirty","branch","runBenchmark","doneCallback","addParam","string","getVersionedUrl","versionedHome","last_tag","host","location","path","pathname","search","protocol","iframeEndpoint","sendPropertyValue","sendDataset","datasetName","addListener","setFocus","urlHelper","loadInteractive","modelObject","benchmarks","benchmark","sendDatasetEvents","dataset","ThermometerController","scaleFunc","normalize","fitWidth","$thermometer","$thermometerFill","$bottomLabel","$labelsContainer","temperature","updateThermometer","labelText","longestLabelIdx","mustache","thermometerTpl","thermometerHeight","disable","enableWhen","condition","disableWhen","PlaybackController","_modelStopped","_modelPlayable","_modelHasPlayed","_dataAreAvailableForExport","_timeDesc","_fontSpec","fontFamily","_updateClockVisibility","controlButtonMethods","video","createControls","_$reset","_$playPause","_$timeDisplay","_$timeCanvas","_timeCtx","_$stepBackward","insertBefore","_$stepForward","insertAfter","after","before","updateButtonStates","stopped","playable","playing","toggleClass","updateControlButtonChoices","mode","$buttons","not","first","setClockVisibility","_timeChanged","setClockValue","_canvWidth","_canvHeigth","_$start","_$stop","codap","_$analyzeData","_$newRun","show","hide","_createControls","_controlButtonMethods","_updateButtonStates","_fitButtons","_updateControlButtonChoices","_setClockVisibility","_setClockValue","_updateCachedSimulationState","modelStopped","modelPlayable","isPlayable","modelHasPlayed","_simulationStateChanged","displayTime","_useDurationChanged","_useDuration","actualUseDuration","_updateDurationControl","durationOptions","actualDuration","selectOptions","durationControl","duration","formatTime","_controlButtonChoicesChanged","_controlButtonStyleChanged","parentWidth","MIN_FONT_SIZE","relativeFontSize","absoluteFontSize","fontSizeStyle","$durationControl","elementWidth","prepend","$b","_fitButtonsOnResize","_debouncedFitButtons","_","debounce","simulationStateChanged","DivController","divController","ajax","dataType","complete","responseText","OVERLAY_MY","OVERLAY_AT","IS_BOUNDING_BOX","HelpSystem","tipIdx","$tip","$instructions","overlays","showTip","def","$component","overlayHeight","within","using","feedback","eLeft","eWidth","tLeft","tWidth","$arrow","leftOffset","vertical","$overlay","compDef","closest","getBoundingBox","$elements","minLeft","maxRight","minTop","maxBottom","$bb","contPos","single","prev","keycode","componentName","hasShowcase","lastClose","customTooltipsEnabled","$parent","$tooltip","fadeInID","fadeOutID","wasShown","vertOffset","$posTarget","horizontal","clearTooltipState","delayVal","originalEvent","fadeIn","fadeOut","getItem","sKey","unescape","cookie","escape","setItem","sValue","vEnd","sPath","sDomain","bSecure","sExpires","toGMTString","removeItem","hasItem","aKeys","nIdx","topBarHeight","topBarFontScale","topBarVerticalPadding","setupBanner","creditsDialog","aboutDialog","shareDialog","body","requestFullscreenMethod","createElementInContainer","Controller","isPlaybackDefinedByAuthor","setupTopBar","sharing","setupBottomBar","screenfull","isFullscreen","AboutDialog","parentSelector","_i18n","$aboutContent","interactive_title","getCopyright","CC_link","MIT_link","license_link","concord_org_link","getFullYear","iframeTpl","ShareDialog","interactiveContainerSelector","hash","originMatch","href","origin","embeddablePath","_view","paste_html","select_size","size_larger","size_actual","size_smaller","copyright","homeForSharing","embeddableSharingUrl","homeEmbeddablePath","link","paste_email_im","shareDialogTpl","_$interactiveContainer","_$iframeSize","_$iframeContent","proxy","updateIframeSize","actualWidth","innerWidth","actualHeight","innerHeight","sizeChoice","CONCORD_URL","NEXT_GEN_URL","CreditsDialog","concordUrl","nextGenUrl","interactiveCreditsUrl","utmString","utmCampaign","encodeURIComponent","encodeURI","credits_text","Next_Gen_MW_link","Google_link","find_shareable","shareable_ver_link","showShareable","creditsDialogTpl","nowFunc","scope","performance","collectData","enterScope","lastTime","timeSum","leaveScope","getAvgTime","getAvgFreq","ModelController","ModelContainer","Benchmarks","resetCause","tickStartHandler","seedrandom","tickHandler","waitForSetup","resetHandler","RESET_CAUSE","RESET","modelReset","reload","newModelUrl","newModelOptions","willReset","modelLoaded","LOAD_CAUSE","RELOAD","initializeView","updateView","INITIAL_LOAD","infinityToString","metaData","propertiesHash","descriptorProperties","beforeSetCallback","afterSetCallback","afterGetTransform","beforeSetTransform","writable","includeInHistoryState","invokeSetterAfterBulkRestore","validateIsType","propertyKey","PropertySupport","propertyTypes","propertyInformation","cachedPropertiesObjects","all","byType","cachingIsEnabled","notificationsAreBatched","invalidatingChangeNestingLevel","invalidatingChangeOccurredDuringBatch","suppressInvalidationForBatch","changedPropertyKeys","computedPropertyKeys","historyStatePropertyKeys","observedComputedPropertyKeys","observers","validateIsPropertyType","validateDescriptor","descriptor","descriptorProperty","notifyCallbacksOnce","callbacks","called","withBatchedNotifications","closure","notify","notifyPropertyDescriptionObservers","propertyDescriptionObservers","info","cachedValue","hasCachedValue","setPropertyDescription","invalidateCachedPropertiesObjects","constructProperty","enumerable","configurable","getPropertiesObject","seal","propertiesOfType","setFrozen","isPropertyWritable","getPropertyType","getPropertyValidateFunc","makeInvalidatingChange","invalidatingChangePreHook","invalidatingChangePostHook","previousValue","deleteComputedPropertyCachedValues","storeComputedProperties","notifyChangedComputedProperties","notifyAllComputedProperties","enableCaching","historyStateRawValues","rawValues","setRawValues","beforeInvalidatingChange","afterInvalidatingChange","afterInvalidatingChangeSequence","isUndefined","PropertyDescription","unitDefinition","descriptionHash","u","_descriptionHash","_label","_unitName","_unitPluralName","_unitAbbreviation","_unitType","pluralName","symbol","_min","_max","_frozen","frozen","setFormat","getHash","reject","getUnitName","getUnitPluralName","getUnitType","_formatter","formattedVal","plural","abbreviated","_lastFormat","_lastFormatter","ParameterSupport","propertySupport","unitsDefinition","defineParameter","setter","RunningAverageFilter","periodLength","_value","_time","_idx","_maxBufferLength","timeDiff","minTime","valSum","_values","SimplePeriodFilter","_zero_crossing_buffer","_period_buffer","previous_value","previous_zero_crossing","sum","reduce","OutputSupport","tickHistory","updateFilteredOutputs","addSample","resetFilteredOutputs","defineOutput","getter","filteredPropertyKey","registerExternalObject","extract","setCurrentStep","invalidate","setHistoryLength","setMaxBufferLength","calculate","updateAllOutputProperties","resetAllOutputProperties","PlaybackSupport","computeActualUseDuration","computeActualDuration","eventsSupported","stopRequest","restartRequest","timer","f","intervalID","sampleRate","timePropertyDescription","TICKS","timePerTick","timerTick","elapsedTime","tickStart","play","restart","defineBuiltinProperties","unitsTranslation","setters","initialProperties","defineBuiltinProperty","metadataForType","translateToModelUnits","translateFromModelUnits","LabModelerMixin","usePlaybackSupport","parameterSupport","outputSupport","dispatchSupport","playbackSupport","ready","saveInitialState","TickHistory","modelState","initialState","list","listState","defaultSize","externalObjects","useNewInterface","getProperties","newState","maxSize","counter","startCounter","copyModelState","destination","getRawPropertyValue","isDefined","lastState","invalidateFollowingState","restoreProperties","restoreParameters","checkIndexArg","returnTick","ptr","restoreInitialState","decrementExtract","incrementExtract","seekExtract","externalObj","FIST_ELEMENT_ID","RNA_CODON_TABLE","firstElementID","lastElementID","aminoacidsProps","cysteineElement","abbrToElement","abbreviation","aminoacid","getAminoAcidByElement","elementID","isAminoAcid","getPolarAminoAcids","abbr","codonToAbbr","codon","minimize","precision","bounds","maxiter","stopval","maxstep","eps","f_cur","f_prev","grad","maxstepsq","gradnormsq","iter","$____distributions","getWindowedAverager","$____utils","getAngleBetweenVec","CLASSIC_MW_FUDGE_FACTOR","COULOMB_CONSTANT_IN_METERS_PER_FARAD","NANOMETERS_PER_METER","COULOMBS_SQ_PER_ELEMENTARY_CHARGE_SQ","EV_PER_JOULE","MW_FORCE_UNITS_PER_NEWTON","k_ePotential","k_eForce","potential","q1","q2","dC","rDE","exp","forceFromSquaredDistance","rSq","forceOverDistanceFromSquaredDistance","force","pairwiseEpsilon","epsilon1","epsilon2","pairwiseSigma","sigma1","sigma2","rmin","newLJCalculator","params","alpha_Potential","beta_Potential","alpha_Force","beta_Force","initialized","setCoefficients","getCoefficients","validateEpsilon","validateSigma","calculator","setEpsilon","setSigma","potentialFromSquaredDistance","r_sq","r_minus2nd","r_minus6th","r_minus8th","r_minus14th","coulomb","lennardJones","PairwiseLJProperties","_engine","changePreHook","changePostHook","_changePreHook","_changePostHook","setPairwiseLJProperties","key1","innerObj","key2","CellList","cellSize","colsNum","rowsNum","cellsNum","reinitialize","newWidth","newHeight","newCellSize","addToCell","atomIdx","cellIdx","getCell","getRowsNum","getColsNum","getNeighboringCells","rowIdx","NeighborList","atomsNum","maxDisplacement","maxAtomsNum","listIdx","listCapacity","head","tail","forceUpdate","newAtomsNum","newMaxDisplacement","markNeighbors","saveAtomPosition","xCoord","yCoord","shouldUpdate","newX","newY","maxDx","maxDy","PluginController","plugins","registerPlugin","plugin","callPluginFunction","retVal","potentials","BOLTZMANN_CONSTANT_IN_JOULES","cross","a0","b0","b1","sumSquare","convertKEtoT","totalKEinMWUnits","averageKEinMWUnits","averageKEinJoules","convertTtoKE","T","validateTemperature","createEngine","sizeHasBeenInitialized","pluginController","useCoulombInteraction","dielectricConst","dnaTranslationInProgress","useLennardJonesInteraction","useThermostat","vdwLinesRatio","T_target","dt_sq","hydrophobicity","visited","elementMass","elementEpsilon","elementSigma","elementRadius","elementColor","N_elements","elementUsed","radialBondAtom1Index","radialBondAtom2Index","radialBondLength","radialBondStrength","radialBondType","radialBonds","N_radialBonds","radialBondsChanged","restraintAtomIndex","restraintK","restraintX0","restraintY0","restraints","N_restraints","angularBondAtom1Index","angularBondAtom2Index","angularBondAtom3Index","angularBondAngle","angularBondStrength","angularBonds","N_angularBonds","obstacleX","obstacleY","obstacleWidth","obstacleHeight","obstacleVX","obstacleVY","obstacleExtAX","obstacleExtAY","obstacleFriction","obstacleMass","obstacleWestProbe","obstacleNorthProbe","obstacleEastProbe","obstacleSouthProbe","obstacleColor","obstacleVisible","obstaclePermeability","obstacleXPrev","obstacleYPrev","obstacleWProbeValue","obstacleNProbeValue","obstacleEProbeValue","obstacleSProbeValue","obstacles","N_obstacles","shapeType","shapeX","shapeY","shapeWidth","shapeHeight","shapeFence","shapeColor","shapeLineColor","shapeLineDashes","shapeLineWeight","shapeLayer","shapeLayerPosition","shapeVisible","shapes","N_shapes","lineX1","lineY1","lineX2","lineY2","lineBeginStyle","lineEndStyle","lineFence","lineLineColor","lineLineDashes","lineLineWeight","lineLayer","lineLayerPosition","lineVisible","N_lines","electricFieldIntensity","electricFieldOrientation","electricFieldShapeIdx","electricFields","N_electricFields","vdwPairs","N_vdwPairs","vdwPairAtom1Index","vdwPairAtom2Index","springForceAtomIndex","springForceX","springForceY","springForceStrength","springForces","N_springForces","cellList","updateNeighborList","x_CM","y_CM","px_CM","py_CM","vx_CM","vy_CM","L_CM","I_CM","omega_CM","cutoff","cutoffDistance_LJ_sq","cutoffList","cutoffNeighborListSquared","ljCalculator","freeCysteinesList","createElementsArray","createAtomsArray","createAngularBondsArray","createRadialBondsArray","createRestraintsArray","createVdwPairsArray","createSpringForcesArray","createObstaclesArray","createShapesArray","createLinesArray","createElectricFieldsArray","ljCoefficientChangeError","epsilon_i","epsilon_j","sigma_i","sigma_j","customProps","computeMaxCutoff","maxCutoff","computeNeighborListMaxDisplacement","initializeCellList","initializeNeighborList","assignShortcutReferences","xPrev","yPrev","computeTemperature","twoKE","computeTemperatureOfAtoms","atomIndices","addVelocity","vx_t","vy_t","addAngularVelocity","omega","removeTranslationAndRotationFromVelocities","computeSystemTranslation","x_sum","y_sum","px_sum","py_sum","totalMass","getTotalMass","computeSystemRotation","L","I","computeCMMotion","bounceObstacleOffWalls","leftwall","bottomwall","rightwall","topwall","bounceParticleOffWalls","bounceParticleOffObstacles","x_prev","y_prev","updatePressure","x_left","x_right","y_top","y_bottom","x_left_prev","x_right_prev","y_top_prev","y_bottom_prev","vxPrev","vyPrev","obs_vxPrev","obs_vyPrev","atom_mass","obs_mass","atomElement","bounceDirection","bounceParticleOffShapes","x_inside_left","x_inside_right","y_inside_top","y_inside_bottom","x_outside_left","x_outside_right","y_outside_top","y_outside_bottom","shapeX_offset","shapeY_offset","tx","ty","tx_prev","ty_prev","ar","br","f1x","f1y","f1d","f2x","f2y","f2d","tvx","tvy","mx","nx","ny","nd","bounceParticleOffLines","ld","atom1_to_line","atom2_to_line","line1_to_atom","line2_to_atom","calculateLJInteraction","elI","elJ","fOverR","fx","fy","radialBondMatrix","updateShortRangeForces","shortRangeForcesCellList","shortRangeForcesNeighborList","cols","temp","cell1","cell2","cell1Len","cell2Len","nLen","cellNeighbors","updateLongRangeForces","chargedAtomsList","charge1","bondingPartners","updateFrictionForces","updateRadialBondForces","i1","i2","r0","updateAngularBondForces","i3","dxij","dyij","dxkj","dykj","rijSquared","rkjSquared","rij","rkj","cosTheta","sinTheta","forceInXForI","forceInYForI","forceInXForK","forceInYForK","commonPrefactor","acos","updateRestraintForces","f_over_r","updateSpringForces","getMoleculeCenterOfMass","molecule","xcm","ycm","atomMass","updateAminoAcidForces","moleculeAtoms","cm","solventFactor","getMoleculeAtoms","updateGravitationalAccelerations","rectContains","rx","ry","getElFieldForce","updateElectricFieldsAccelerations","rect","updateDNATranslationAccelerations","diff","calculateOptimizationStructures","cysteineEl","aminoacidsHelper","updateParticlesAccelerations","inverseMass","halfUpdateVelocity","updateParticlesPosition","width100","height100","pinAtoms","updateParticlesSpeed","updateObstaclesPosition","extFx","extFy","zeroTotalMomentumOfMolecules","sumX","sumY","invMass","adjustTemperature","forceAdjustment","rescalingFactor","createDisulfideBonds","cys1Idx","cys2Idx","xDiff","yDiff","addRadialBond","zeroPressureValues","calculateFinalPressureValues","mult","removeAngularBondsContaining","conserveEnergy","removeAngularBond","bondedAtoms","unset","addPlugin","setVDWLinesRatio","vdwlr","setGravitationalField","gf","setTemperatureOfAtoms","targetT","vxtmp","vytmp","smallT","smallKE","groupT","nGroup","setAtomProperties","getTemperatureOfAtoms","setTargetTemperature","setDielectricConstant","dc","setRealisticDielectricEffect","setSolventForceType","sft","setDNAState","setSolventForceFactor","sff","setAdditionalSolventForceMult","asfm","setAdditionalSolventForceThreshold","asft","setTime","setDimensions","getLJCalculator","amino","removeRadialBond","setRadialBondProperties","conserveAngularBondsEnergy","setAngularBondProperties","setRestraintProperties","setElementProperties","newRadius","setObstacleProperties","canPlaceObstacle","setShapeProperties","setLineProperties","setElectricFieldProperties","addAtom","removeAtom","l","lists","addElement","addRestraint","addAngularBond","a3","angleDiff","math","addKEToAtoms","addSpringForce","updateSpringForce","removeSpringForce","addObstacle","removeObstacle","addShape","removeShape","removeElectricField","addLine","removeLine","addElectricField","atomInBounds","_x","_y","canPlaceAtom","skipPECheck","orig_x","orig_y","PEAtLocation","testX","testY","testXMax","testYMax","newPotentialCalculator","obsX","obsY","obsWidth","obsHeight","obsXMax","obsYMax","setupAtomsRandomly","nrows","ncols","rowSpacing","colSpacing","vMagnitude","vDirection","userElements","getVdwPairsArray","x_i","y_i","index_i","index_j","sig","distanceCutoff_sq","integrate","_dt","iloop","tStart","minimizeEnergy","stepLength","accThreshold","iterLimit","maxAcc","delta","getRadialBondsForAtom","rbonds","getAngularBondsForAtom","abonds","getRadiusOfElement","getNumberOfElements","getNumberOfObstacles","getNumberOfShapes","getNumberOfLines","getNumberOfRadialBonds","getNumberOfAngularBonds","getNumberOfRestraints","getNumberOfSpringForces","getNumberOfElectricFields","computeOutputState","dr","elInMWUnits","gravPEInMWUnits","KEinMWUnits","PE","KE","pCM","CM","vCM","testElement","testCharge","calculateGradient","gradX","gradY","ljTest","lj","energyChange","oldKE","newKE","getAtomKineticEnergy","addKEToAtomPairAndConserveMomentum","deltaKE","v1x","v2x","v1y","v2y","disc","dv1xPlus","dv1xMinus","dv1x","findMinimumPELocation","pot","findMinimumPESquaredLocation","potsq","stack","bondedAtom","getBondedAtoms","getCoulombForceAt","resultObj","atomCharge","getAtomNeighbors","getNeighborList","setViscosity","atomsBonded","pluginState","callPluginAccessor","accessorMethodName","returnValue","translated","unitsPerBaseUnit","inverseTime","velocity","acceleration","momentum","dampingCoefficient","stiffness","rotationalStiffness","pressure","representationInMD2DUnits","valueInSIUnits","md2d","md2dUnits","mks","mksUnits","baseUnitTypes","UnitsTranslation","siFactor","translatedUnitsValue","md2dUnitsValue","STATES","STATE_INDEX","NUCLEO_LAST_ID","PROMOTER_SEQ","TERMINATOR_SEQ","PROMOTER_COMP_SEQ","complementarySequence","TERMINATOR_COMP_SEQ","JUNK_SEQ","JUNK_COMP_SEQ","DEF_EVENT","junkSequence","letters","lettersLen","seq","getNucleoID","GeneticProperties","eventMode","ongoingTransitions","DNAComp","mRNA","stopCodonsHash","lastTranslationStep","calculatemRNA","newCode","mRNACode","calculateStopCodonsHash","generateMRNAViewModel","sequence","nucleo","generateDNAViewModel","junkBound","promoterBound","codingBound","terminatorBound","region","updateGeneticProperties","viewModel","stateBefore","stateAfter","removeAminoAcids","stateEqual","generateFinalProtein","aaCount","aaSequenece","generateProtein","centerProtein","nextState","prevState","stateComp","stateA","stateB","parseState","transitionToState","doStateTransition","doDNATransition","newDNA","dispatchChange","suppressViewportUpdate","cancelTransitions","eventType","stateUpdated","transition","DNAUpdated","PRECODING_LEN","mutate","newType","DNAComplement","insert","newDNANucleo","newDNACompNucleo","newMRNANucleo","transitionToNextState","stopTransition","jumpToNextState","jumpToPrevState","transitionTo","stateName","lastStateBefore","transcribeStep","expectedNucleotide","queueLen","lastStateName","lastStateAfter","codonComplement","translationStepStarted","codonIdx","xEnd","yEnd","elID","suppressCheck","atomTransition","shiftAminoAcids","xShift","getAtomProperties","batch","proteinCenterOfMass","tickInPlace","connectAminoAcid","bondLen","translationCompleted","atomsCount","transitionEnded","aaSequence","expectedLength","createdAA","opt","xPos","yPos","xStep","yStep","prevRadius","turnHeight","xStepFunc","changeHeight","yStepFunc","getRandomAA","getElementProperties","proteinsMaxX","proteinsCenter","viewPortCenter","spaceOnRight","MIN_FPS","PerformanceOptimizer","_initialTimeStep","_maxTimeStep","_targetProgressRate","_assessPerformance","progressRate","fps","currentMaxTimeStep","PropertyTransition","isFinished","_duration","_easeFunc","ease","_elapsedTime","_id","_propName","_endValue","_interpolator","getObjectProperties","setObjectProperties","endValue","delay","process","_incompleteSpec","interpolate","AtomTransition","BOND_LEN_RATIO","BOND_TYPE","BOND_TYPE_INV","ANGULAR_BOND_STRENGTH","dot","commonElement","array1","array2","len1","len2","ChemicalReactions","bondToExchange","bondsChanged","modifiedAtoms","updateRadialBondsTable","creationPotential","isRadical","getBondLength","getBondStrength","getUnpairedElectrons","getPossibleBondType","atom2Mod","maxType","prob","getBondTypeProbability","randomValue","getBondType","bondIdx","getBondEnergy","getActivationEnergy","getEnergyForBondExchange","oldType","oldEnergy","newEnergy","bondType","transferRadialBond","cleanupModifiedAtomsAndFlags","validateSharedElectronsCount","updateBondToExchangeArray","destroyBonds","forcedCleanup","dpot","chemEnergy","ljAdjustment","bondRemoved","createBonds","collide","willCollide","a1Radical","a2Radical","bothRadical","a1a2Exchange","a2a1Exchange","makeBond","tryToExchangeBond","en","a1Old","a2Old","el1Old","el2Old","el3","minCollisionEnergy","ijsr","vxij","vyij","vxy","a1Mass","a2Mass","collisionEnergy","newStrength","oldLength","oldStrength","lenDiff","removeAngularBondOfModfiedAtoms","tryToMakeAngularBondsStronger","getAngleBetweenAtoms","getMoleculeAngle","bondsCount","setupNewAngularBonds","ba","possibleBonds","addAngularBondBetween","pushPossibleBond","comparePossibleBonds","createFirstNPossibleBonds","aCentral","bondAngle","bondDef","currentAngle","getBondsChemicalPE","mod","processOutputState","setBondEnergy","bondDescription","setValenceElectrons","md2dModelCount","initializationOptions","customSetters","VDWLinesCutoffMap","polarAAs","yOffset","unitDefinitions","scheme","labModelerMixin","defaultMaxTickHistory","newStep","lastSampleTime","sampleTimes","transitions","registerChangeHooks","geneticEngine","editableElements","viewAtoms","viewRadialBonds","liveDragSpringForceIndex","liveDragSavedFriction","pluginProperties","processTransitions","mapValues","translateToMD2DUnits","translateFromMD2DUnits","runAndDispatchObjectNumberChanges","objects","getNum","addEvent","removeEvent","newNum","readModelState","updateViewAtoms","updateViewRadialBonds","updateViewElectricField","viewAtom","aminoAcid","viewBond","randomElement","createAminoAcids","sigmaIn01Angstroms","sigmaInNm","aminoacids","volume","molWeight","stepStartCounter","seek","initializeDimensions","initializeEngine","createElements","_elements","elementProps","createAtoms","atomProps","createRadialBonds","_radialBonds","radialBondProps","_angularBonds","angularBondProps","createRestraints","_restraints","restraintsProps","createObstacles","_obstacles","numObstacles","obstacleProps","createShapes","_shapes","numShapes","shapeProps","createLines","_lines","numLines","lineProps","createElectricFields","_eFields","eFieldProps","addRandomAtom","numTries","maxTries","prevRadBondsCount","prevAngBondsCount","validatedProps","prevElFieldsCount","getMoleculeBoundingBox","cx","cy","checkLocation","moveMolecule","new_x","new_y","atomMetaData","elementMetaData","getObstacleProperties","obstacleMetaData","getShapeProperties","shapeMetaData","getLineProperties","lineMetaData","changeElectricField","getElectricFieldProperties","elFieldMetaData","getRadialBondProperties","radialBondMetaData","getRestraintProperties","restraintMetaData","getAngularBondProperties","angularBondMetaData","setSolvent","solventName","solvent","Solvent","forceType","springConstant","springForceIndex","addTextBox","textBoxesChanged","removeTextBox","setTextBoxProperties","addImage","imagesChanged","removeImage","setImageProperties","getTextBoxProperties","getImageProperties","liveDragStart","LIVE_DRAG_FRICTION","liveDrag","liveDragEnd","get_elements","getAtoms","getRadialBonds","getElectricField","_photonAbsorbedHandlersCount","get_obstacles","get_shapes","get_lines","getNumberOfTextBoxes","get_restraints","getPairwiseLJProperties","get_vdw_pairs","sampleTime","getUnitDefinition","unroll","serializeQuantumDynamics","serializeChemicalReactions","propCopy","ljProps","rawProperties","removeAtomsArrayIfDefault","defaultVal","every","Boolean","invalidation","GeneticEngine","deserialize","displayTimeUnits","displayTimePropertyDescription","recomputeProperties","tabIndex","CACHE","cssPointerEvents","$div1","$div2","$svg","elementFromPoint","EVENT_TYPES","windowListeners","addWindowEventListener","useCapture","addEventListener","capture","cleanupWindowListeners","removeEventListener","noop","HitTestingHelper","foregroundNode","layersToHitTest","featureTests","propHidden","propBackup","mousedownTarget","targetForCreatedClick","defaultPreventedFlag","cancelClickFlag","retargetMouseEvent","clonedEvent","createEvent","initMouseEvent","bubbles","cancelable","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","relatedTarget","forwardedTouchEvent","pageX","pageY","doc","documentElement","scrollLeft","clientLeft","clientTop","createClick","hideLayer","unhideLayers","hitTest","mouseEvent","hitTestSucceeded","isCanvasObjectClick","layerBgColor","hitTestCallback","isHit","mouseupCallback","isClick","defaultPrevented","setupTouchEventTranslation","touchId","touchStartX","touchStartY","createMouseEvent","touch","didTouchMove","touchStarted","changedTouches","touches","identifier","touchChanged","mouseMoveEvent","replacedBySynthetic","passMouseMove","mmoveSource","mmoveTarget","prevTarget","synthetic","addLayer","CANVAS_OVERSAMPLING","MAX_Z_INDEX","getPixiRenderer","instance","newRenderer","transparent","PIXI","CanvasRenderer","autoDetectRenderer","SVGContainer","Renderer","plotContainer","backgroundContainer","foregroundContainer","backgroundRect","backgroundGroup","foregroundGroup","brushContainer","pixiRenderers","pixiStages","pixiContainers","hitTestingHelper","viewportZIndex","viewport","model2canvas","model2canvasInv","model2px","model2pxInv","clickHandler","dragHandler","selectBrush","renderer","nextViewportZIndex","getFontSizeInPixels","modelSize","scaledWidth","scaledHeight","redrawGridLinesAndLabels","fsize","stroke","lengthUnits","drawXunits","drawYunits","drawXLabel","drawYLabel","transform","gx","gxe","gy","gye","setupBackground","pixiStage","setBackgroundColor","mousedown","basicSVGAttrs","layeredOnTop","renderContainer","viewBox","pixiRenderer","pixiContainer","pivot","renderCanvas","viewportDragging","xs","ys","ts","samples","newDrag","dragOpt","dragBehavior","behavior","updateArrays","invert","viewportDrag","removeClickHandlers","updateClickHandlers","appendViewport","appendPixiViewport","Stage","DisplayObjectContainer","addChild","getClickHandler","coords","mouse","brush","extent","d3rgba","rgba","contrastingColor","bg","color2number","colorString","MENU_CLASS","HYDROPHOBIC_CLASS","HYDROPHOBIC_CAT_CLASS","HYDROPHILIC_CLASS","HYDROPHILIC_CAT_CLASS","POS_CHARGE_CLASS","NEG_CHARGE_CLASS","MARKED_CLASS","showCategory","animate","register","getClickedAtom","animation","$node","elemId","$win","triggerIsFixed","$trigger","parents","andSelf","scrollHeight","scrollWidth","events","aminoAcidProps","POINT_CACHE","TRANSLATE","ROTATE","getAngle","AtomsInteractions","modelView","m2px","m2pxInv","modelHeight","$target","targetOffset","targetOversampling","viewportX","viewportY","downAtom","contextMenuAtom","dragging","dragged","mouseDownHandler","isAtomRotatable","modes","isAtomDraggable","mouseOverHandler","mouseOutHandler","mouseUpHandler","contextMenuHandler","mouseDownCanvas","getClickCoords","getAtomUnder","mouseMoveCanvas","setCursorForAtom","mouseUpCanvas","upAtom","isDOMClick","mouseOverCanvas","mouseOutCanvas","setCursor","contextMenuCanvas","setCursorFromEvent","cursorVal","cursor","useCachedDimensionsAndViewport","translate","originalPositions","prevAngle","getMoleculePositions","bbox","translateMolecule","newAngle","rotateMolecule","one","isPositionValid","restoreMoleculePositions","moleculePositions","setAtomPosition","setMoleculePosition","xpos","ypos","rotationAllowed","newCoords","posAllowed","amniacidContextMenu","FONT_WEIGHT","ATOM_SVG_TPL","KE_SHADING_MIN_COLORS","KE_SHADING_MAX_COLORS","CHARGE_SHADING_STEPS","NEUTRAL_COLORS","chargeBlueLightColor","interpolateRgb","chargeBlueMedColor","chargeBlueDarkColor","chargeRedLightColor","chargeRedMedColor","chargeRedDarkColor","getChargeShadingColors","chargeIndex","getHydrophobicityColors","RENDERING_OPTIONS","AtomsRenderer","modelAtoms","elementTex","renderMode","interactions","readRenderingOptions","getAtomColors","colorStr","darker","colorLib","getAtomOpacity","getAtomTexture","colors","getAtomLabel","canv","tplData","watchFont","lightCol","medCol","darkCol","excited","canvg","Texture","fromCanvas","clearTextureCacheAndRedraw","setTexture","textVal","sizeRatio","keSprite","removeChild","Sprite","modelAtom","minKE","maxKE","alpha","RADIAL_BOND_TYPES","STANDARD_STICK","LONG_SPRING","BOND_SOLID_LINE","GHOST","UNICOLOR_STICK","SHORT_SPRING","DOUBLE_BOND","TRIPLE_BOND","DISULPHIDE_BOND","BondsRenderer","atomsRenderer","modelBonds","graphics","Graphics","renderSpring","numTurns","springDiameter","costheta","sintheta","cosThetaDiameter","sinThetaDiameter","cosThetaSpikes","sinThetaSpikes","pointX","pointY","lineStyle","getBondWidth","getBondColor","getBondOpacity","moveTo","lineTo","renderBond","midRatio","xMid","yMid","bondWidth","bondColor1","bondColor2","bondOpacity1","bondOpacity2","bondShift","bond","VectorsRenderer","viewVectors","xFunc","yFunc","vxFunc","vyFunc","alphaFunc","dirOnly","readOptions","getVectorTexture","fillRect","getVectorArrowheadTexture","beginPath","closePath","renderVector","vec","rot","arrowHead","lenInPx","tex","logistic","FieldRenderer","sprites","getTexture","MIN_FRACTION","MAX_FRACTION","LOW_LENGTH_THRESHOLD","HIGH_LENGTH_THRESHOLD","fraction","renderSprite","sprite","texture","NUMBER_OF_SEGMENTS","VdwLinesRenderer","strokeWidth","texLength","getLineTexture","gapLength","segmentLength","halfStroke","strokeStyle","removeContainerAndSprites","createContainerAndSprites","newStrokeWidth","SCALE","W","H","nucleotides","bonds","backbone","randomEnter","glow","enterExitOnly","yShift","HEIGHT","WIDTH","BACKB","yStart","A","nucleoEnter","nucleoExit","nucleoGEnter","backboneEnter","nucleoShape","nucleoSVG","nucleoSVGUpdate","nucleoTrans","targetScale","G_GLOW","nucleotidePaths","letter","regionClass","interior","outline","attrTween","interpolateString","ee","OBJECT_NAMES","getDefs","appendTranscriptionBg","GeneticElementsRenderer","opacityFunc","translateFuncInv","translateX","translateY","translateScaleFuncInv","getOptBoundaries","dna","lowIdx","highIdx","cells","CELLS","dna1","DNA1","dna2","DNA2","dna3","dna3units","dna3Enter","DNA3","boundaries","dnaComp","mrna","mrnaSequence","stopCodons","polymeraseUnder","polyUnder","POLY_UNDER","polymeraseOver","polyOver","POLY_OVER","nucleus","NUCLEUS","ribosomeBottom","RIBO_BOTTOM","ribosomeTop","RIBO_TOP","ribosomeUnder","RIBO_UNDER","ribosomeOver","RIBO_OVER","trna","codonWidth","TRNA","TRNA_NECK","neck","viewPort","tween","newVal","background","StateManager","names","states","stateByName","stateDef","extendLastState","objDef","orgState","objName","geneticAnimStates","stateMgr","lastStep","getStep","ribosomeX","trnaX","limit","$__common_jquery_svg_class","clickedNucleoType","onMenuShow","subsItems","onMenuHide","interrupt","lock","__transition__","active","GeneticRenderer","viewportG","currentTrans","prevAnimState","prevAnimStep","suppressViewport","transitionInProgress","animStateInProgress","GeneticAnimStates","objectRenderer","transitionFunction","mutationsContextMenu","renderState","animState","onStartCallback","forceAll","prevAnimStateData","shouldRenderObj","inData","inPrevData","nextTrans","forceNew","newTrans","d3node","transitionName","dnaUpdated","introZoom1","introZoom2","introZoom3","introPolymerase","transcription0","transcription","transcriptionEnd","afterTranscription","beforeTranslation","translation0","translation","newAADuration","shiftDuration","translationEnd","wrapSVGText","svgUrl","svgTextNode","dashArray","newlinemode","words","dashes","result1","exec","curLineLength","computedTextLength","widestWidth","tempText","textNode","tspanNode","word","lastWord","getComputedTextLength","firstChild","nodeValue","createElementNS","setAttributeNS","createTextNode","childNodes","createRadialGradient","lightColor","medColor","darkColor","gradientUrl","mainColorOfGradient","settleParens","peel","inparens","firstparen","smartSplit","parseWord","isLinear","isRadial","isGradient","isParens","asNumber","isDegrees","isRight","isLeft","isTop","isBottom","isRepeat","isReflect","interpolateStops","fullParse","radial","x_direction","y_direction","repeat","isNumber","standard","toStandardForm","restandardize","toCSS","backgroundImage","toSVG","xt","yt","UPPER_LEFT","CENTER","ImagesRenderer","imgDimBySrc","imageData","loadImage","Image","onload","$image","imageDim","scaleImageLength","setupImageData","countsBySrc","layerIndex","countBySrc","getImagePath","referencePoint","capturesPointer","imageDescription","srcIndex","zOrder","updateImageCoordinates","basePath","MIN_VISIBLE_FREQ","MAX_VISIBLE_FREQ","PHOTON_COLORS","MD2DView","isSetup","modelElectricField","modelElements","belowAtomsViewport","shapeContainerBelow","imageContainerBelow","textContainerBelow","atomsViewport","atomsContainer","vectorsBelowPixi","vdwLinesPixi","bondsPixi","atomsPixi","vectorsAbovePixi","aboveAtomsViewport","shapeContainerTop","lineContainerTop","imageContainerTop","textContainerTop","iconContainer","bondsRenderer","vdwLinesRenderer","velocityVectorsRenderer","forceVectorsRenderer","electricFieldRenderer","imagesRenderer","geneticRenderer","arrowHeadsCache","fontSizeInPixels","mockObstaclesArray","shapeTop","shapeBelow","mockShapesTop","mockShapesBelow","lineTop","mockLinesTop","forceVectorColor","forceVectorWidth","onlyStaticTextBoxes","drawAtomTrace","atomTrace","atomTracePath","halfPi","hideLineMarkers","createCustomArrowHead","createVectorArrowHeads","createExcitationGlow","createSymbolImages","xMargin","fSize","drawSymbolImages","heatBath","keShadingMode","imageSelect","imageHeight","yMargin","atomTraceEnter","getAtomTracePath","obstacleEnter","obstacleGroup","gradients","obstacleGroupEl","obsAx","obsAy","vecLen","space","shapeEnter","layers","shapeGroup","getTextBoxCoords","hostX","hostY","textX","frameX","frameY","calloutX","calloutY","pixelScale","getCalloutPath","fullWidth","fullHeight","calloutLocation","atan","dcx","dcy","updateTextBoxes","updateText","layerNum","layerTextBoxes","$parentNode","parentNode","callout","getAttributeNS","drawTextBoxes","appendTextBoxes","shouldRoundTextBoxStrokeWidth","AUTHORING","fontface","align","textDrag","hasHost","horizontalPadding","verticalPadding","setupObstacles","setupShapes","setupLines","setupAtomTrace","lIndex","sIndex","updateAtomTrace","dragDx","dragDy","setupBrowserWarning","setupWarningPane","testFunc","htmlContent","$warning","setupMiscOptions","setupRendererOptions","photonPath","lineData","nPoints","photonColor","remainder","g1","g2","b2","photonDashArray","enterAndUpdatePhotons","redrawClickableObjects","redrawOperation","setupElectricField","DNAEditDialog","$dialogDiv","$dnaTextInput","$originalDnaInput","$errorMsg","$submitButton","originalDNA","MD2DScriptingAPI","dnaEditDialog","batchDepth","setProperty","repaintIfReady","createModelAdder","methodName","modelAdder","silent","getCurrentComputerTime","setTemperatureOfAllAtoms","getTemperatureOfAllAtoms","limitHighTemperature","randomAtoms","setVelenceElectrons","atomsWithinCircle","atomsWithinRect","inX","inY","atomsWithinTriangle","bx","by","isInTriangle","v0","dot00","dot01","dot02","dot11","dot12","invDenom","markAtoms","unmarkAllAtoms","traceAtom","untraceAtom","removePairwiseLJProperties","getAminoAcid","getAtomsWithinShape","getAtomsInsideShape","openDNADialog","jumpToNextDNAState","jumpToPrevDNAState","DNAStateBefore","DNAStateAfter","animateToNextDNAState","animateToDNAState","stopDNAAnimation","transcribeDNAStep","ge","translateDNAStep","generateRandomProtein","realLength","pe","ke","atomsKe","atomsList","TEST_TIME","WARMUP_TIME","timeScale","sampleBatchLength","newFrequency","lastFrequency","phase","constrain","times","timesIndex","getIndexWithDefault","intervalLength","IFrameModel","customSet","_stopped","_hasPlayed","_initialProperties","_propertySupport","_stepCounter","_propertyUpdateComingFromIframe","_iframeOutputs","_defineModelSpecificProperties","iframeOutput","_updateOutputs","_updatePropertiesFromIframe","IFrameContainer","addIFrame","$iframe","phone","ParentEndpoint","disconnect","IframeScriptingAPI","orgBindModel","resetModel","sensorType","samplesPerSecond","collectionTime","tareValue","sensorDefinitions","sensorApplet","getTranslatedSensorDefinitions","goMotion","measurementName","sensorName","goTemp","goLinkTemperature","goLinkLight","goLinkForce","goLinkPH","goLinkCO2","goLinkO2","labQuestMotion","labQuestTemperature","labQuestLight","labQuestForce","labQuestPH","labQuestCO2","labQuestO2","Notifier","closeOnEscape","status","notifier","needsReload","initialSensorType","applet","isSensorReady","isSensorInitializing","sensorPollsPerSecond","sensorPollingIntervalID","rawSensorValue","didCollectData","isTaring","isSensorTareable","initialTareValue","defaultSensorReadingDescriptionHash","getSensorDefinitions","updatePropertyRange","updateDisplayTimeRange","removeApplet","removeListeners","appendApplet","appletDataCallback","handleUnplugged","JavaLoadError","handleLoadingFailure","AppletInitializationError","SensorConnectionError","handleSensorConnectionError","sensor_name","OK","what","sensor_or_device_name","startPollingSensor","handleSensorValues","AlreadyReadingError","readSensor","stopPollingSensor","initializeStateVariables","setSensorType","_sensorType","AppletClass","sensorDefinition","measurementType","appletClass","tareable","sensor","listenerPath","appletId","codebase","minReading","maxReading","maxSeconds","__bizarreSafariFix","isStarted","tare","deviceName","shouldPollSensor","sensorTypeView","sensorReadingView","setIsTaringState","$zeroButton","setCanTareState","canTare","setSensorTypeDisabledState","$selectBox","setupModelObservers","$sensorReading","showInitializationProgress","$progressbar","$progressbarContainer","progressbar","hideInitializationProgress","sensorReading","SensorScriptingAPI","sensorType2","tareValue2","clientId","useRandomClientId","rawSensorValue2","isTaring2","isSensorTareable2","setupApplet","sensorDefinition2","updateSamplesPerSecond","setSensorType2","tare2","sensorType2View","sensorReading2View","setIsTaringState2","$zeroButton2","setCanTareState2","canTare2","setSensorType2DisabledState","$selectBox2","$row1","$row2","$sensorReading2","updateUnits2","sensorReading2","DualSensorScriptingAPI","clientName","StateMachine","currentState","gotoState","toStateName","getCurrentStateName","toState","leaveState","enterState","handleEvent","eventArgs","stateMachine","sensorConnectorInterface","timeColumn","dataColumn","dataColumn2","selectedSensor","selectedSensor2","sensorName2","liveSensorValue","liveSensorValue2","canControl","hasMultipleSensors","statusDialog","statusErrors","defaultSensorReadingDescription","setSensorReadingDescription","setSensorReadingDescription2","checkColumnAgainstSelected","colCandidate","checkColumnAgainstSelected2","hasCollectableSensors","setColumn","datasets","newDataColumn","newDataColumn2","sIdx","hasAttachedInterface","inControl","controlling_client","handleData","numberOfValues","isAllColumnDataReceieved","column","receivedValuesTimeStamp","requestedValuesTimeStamp","isAllDataReceived","connectedSensors","sensors","handle","oldPlayable","getSelectedSensor","getSelectedSensor2","setSelectedSensor","sensorIndex","setSelectedSensor2","notConnected","startPolling","connecting","isConnected","statusErrored","connectionTimedOut","launchTimedOut","statusReceived","sessionChanged","stopPolling","initialConnectionFailure","retry_link","dialog_msg","click_here_link","closed","tryAttachingHandler","links","dismiss","connected","controlEnabled","controlDisabled","isCollecting","columnAdded","columnRemoved","columnTypeChanged","columnMoved","interfaceConnected","interfaceRemoved","liveValue","requestStart","collectionStarted","starting","_startTimerId","startRequestFailed","errorStarting","dismissErrorStarting","started","requestStop","collectionStopped","startedWithNoDataColumn","stoppedWithNoDataColumn","stopping","stopRequestFailed","errorStopping","dismissErrorStopping","collectionComplete","disconnected","handled","SensorConnectorInterface","sensorReadingView2","setCanTare2State","setCanConnectState","setHasMultipleSensorsState","$selectSensorButton","$selectSensorButton2","setMessageText","$message","chooseSensorPopup1","chooseSensorPopup","chooseSensorPopup2","second","Cancel","checked","sensorDef","remoteAddress","$controlsContainer","$statusContainer","liveSensorReading","liveSensorReading2","DualSensorConnectorScriptingAPI","pluaralName","light","ph","co2","o2","lastLiveValueTimestamp","liveValueLastChanged","canConnect","liveMode","labquest2Interface","connect","address","canceling","cancelRequestFailed","errorCanceling","liveValueTimeStamp","$connectButton","$addressInput","use_WebGL","grid_width","grid_height","model_width","model_height","ticksPerGPUSync","convective","background_temperature","background_conductivity","background_specific_heat","background_density","background_viscosity","thermal_buoyancy","buoyancy_approximation","boundary","upper","lower","sunny","sun_angle","solar_power_density","solar_ray_count","solar_ray_speed","photon_emission_interval","color_palette_type","minimum_temperature","maximum_temperature","part","inner","outer","vertices","raw_x_coords","raw_y_coords","thermal_conductivity","specific_heat","density","transmission","reflection","absorption","emissivity","constant_temperature","power","wind_speed","wind_angle","filled","RELAXATION_STEPS","makeHeatSolver","getModelOptions","relaxationSteps","conductivity","getConductivityArray","capacity","getCapacityArray","getDensityArray","getUVelocityArray","getVVelocityArray","tb","getBoundaryTemperatureArray","fluidity","getFluidityArray","t0","getArrayType","nx1","ny1","nx2","ny2","deltaX","deltaY","applyBoundary","vN","vS","vW","vE","inx","inx_ny1","macCormack","jinx","jinx_plus_nx","jinx_minus_nx","jinx_plus_1","jinx_minus_1","solve","q","hx","hy","invTimeStep","sij","axij","bxij","ayij","byij","gl","getWebGLContext","getError","NO_ERROR","regexMap","regex","str","Shader","vertexSource","fragmentSource","vertexHeader","fragmentHeader","fix","header","replaced","isSampler","compileSource","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","program","createProgram","attachShader","VERTEX_SHADER","FRAGMENT_SHADER","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","attributes","uniformLocations","groups","uniforms","useProgram","getUniformLocation","uniform1fv","uniform2fv","uniform3fv","uniform4fv","uniformMatrix3fv","uniformMatrix4fv","uniform1i","uniform1f","draw","mesh","drawBuffers","vertexBuffers","indexBuffers","LINES","TRIANGLES","indexBuffer","attribute","getAttribLocation","bindBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","FLOAT","disableVertexAttribArray","ELEMENT_ARRAY_BUFFER","drawElements","UNSIGNED_SHORT","drawArrays","createTexture","RGBA","UNSIGNED_BYTE","tex_unit","fbo","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","mag_filter","LINEAR","TEXTURE_MIN_FILTER","min_filter","TEXTURE_WRAP_S","wrap","wrap_s","CLAMP_TO_EDGE","TEXTURE_WRAP_T","wrap_t","texImage2D","setAsRenderTarget","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","activeTexture","TEXTURE0","unbind","drawTo","swapWith","other","Buffer","Mesh","compile","chunk","createBuffer","bufferData","STATIC_DRAW","addVertexBuffer","normals","triangles","addIndexBuffer","plane","detailX","detailY","temp_texture","output_texture","temp_storage","sync_allowed","WebGL_initialized","encode_program","copy_program","basic_vertex_shader","encode_fragment_shader","copy_fragment_shader","INIT_ERR","feature","available","initWebGL","getExtension","NEAREST","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","DEPTH_TEST","packRGBAData","R","G","B","storage","i4","featuresInfo","convertToRGBA","channel","writeTexture","writeRGBATexture","readTexture","output_storage","readPixels","copyTexture","src_tex","dst_tex","executeProgram","textures","setSynchronizationAllowed","tryFinish","finish","makeHeatSolverGPU","solver_program","basic_vs","solver_fs","force_flux_t_program","force_flux_t_fs","force_flux_t0_program","force_flux_t0_fs","t_to_t0_program","t_to_t0","maccormack_step1_program","maccormack_step1_fs","maccormack_step2_program","maccormack_step2_fs","delta_x","delta_y","relaxation_steps","data0_tex","getSimulationTexture","data1_tex","data2_tex","data_0_1_2_array","data_0_1_array","data_0_array","grid_vec","enforce_temp","inv_timeStep","gpgpu","heat_solver_gpu","GRAVITY","BUOYANCY_AVERAGE_ALL","BUOYANCY_AVERAGE_COLUMN","makeFluidSolver","gravity","getTemperatureArray","uWind","getUWindArray","vWind","getVWindArray","u0","i2dx","i2dy","idxsq","idysq","nx1nx","nx2nx","inx_plus1","inx_plus_ny1","inx_plus_ny2","nx_plusj","setObstacleVelocity","uw","vw","setObstacleBoundary","getMeanTemperature","inx_plus_k","applyBuoyancy","conserve","phi","diffuse","f0","dn","advect","makeFluidSolverGPU","apply_uv_boundary_program","apply_uv_boundary_fs","apply_u0v0_boundary_program","apply_u0v0_boundary_fs","set_obstacle_boundary_program","set_obstacle_boundary_fs","set_obstacle_velocity_program","set_obstacle_velocity_fs","uv_to_u0v0_program","uv_to_u0v0_fs","conserve_step1_program","conserve_step1_fs","conserve_step2_program","conserve_step2_fs","conserve_step3_program","conserve_step3_fs","diffuse_program","diffuse_fs","apply_buoyancy_program","apply_buoyancy_fs","data3_tex","data_2_array","data_1_2_array","data_1_2_3_array","copyUVtoU0V0","fluid_solver_gpu","hypot","pointInsidePolygon","nvert","vertx","verty","testx","testy","Line","intersectsLine","ua_t","ub_t","u_b","ua","ub","Polygon","x_coords","y_coords","polygonize","contains","Rectangle","polygon_cache","polygonizeEllipse","ra","rb","segments","Ellipse","POLYGON_SEGMENTS","Ring","ra_outer","rb_outer","ra_inner","rb_inner","Photon","isContained","move","reflectFromLine","time_step","photon_line","r12","reflectFromRectangle","rectangle","reflectFromPolygon","polygon","reflect","makeRaySolver","getPowerArray","parts","getPartsArray","getPhotonsArray","lx","ly","sunAngle","cleanupPhotonsArray","shootAtAngle","ray_power","ray_speed","idy","photons_len","parts_len","absorb","radiate","sunShine","RADIATOR_SPACING","MINIMUM_RADIATING_TEMPERATUE","UNIT_SURFACE_AREA","SIN30","COS30","SIN60","COS60","Part","formatLabel","valueStr","getGridCells","rectangleIndices","i0","j0","i_max","j_max","ellipseIndices","ellipse","eq","ringIndices","ring","j1","j2","polygonIndices","x_min","x_max","y_min","y_max","getIrradiance","t2","poly","radiateFromLine","vxi","vyi","nray","ir","getAverageTemperatureAt","getTemperatureAt","addPhoton","setTemperatureAt","changeAverageTemperatureAt","makeCoreModel","partsOpt","array_size","indexOfStep","heatSolver","fluidSolver","ray_solver","radiative","has_part_power","WebGL_active","WebGL_error","perf","startFPS","updateFPS","stopFPS","initGPGPU","fillGPGPUTextures","core_model","setupOptimizationFlags","setupPart","updateOnly","resetArrays","skipTempAndVelocity","setupMaterialProperties","refreshPowerArray","iny","getVorticityAt","du_dy","dv_dx","nextStep","setPerformanceTools","perf_tools","partsChanged","propChanged","addPart","removePart","useWebGL","isWebGLCompatible","syncTemperature","syncVelocity","isWebGLActive","getWebGLError","getIndexOfStep","increment","getAverageVorticityAt","vor","getSpeedAt","getHeatFluxAt","getPerformanceModel","getTemperatureTexture","getVelocityTexture","energy2dModelCount","Modeler","coreModel","setWebGLEnabled","ticksToGPUSync","syncGPU","anemometers","updatePartsViewModel","PartWrapper","rawPart","_rawPart","WebGLOrg","computeLabel","rawParts","viewParts","updateSensorViewModel","SensorWrapper","rawObj","constraint","_rawObj","sensorsChanged","viewSensors","hasDiverged","validateParts","partsArray","createSensors","sensorsSpec","sensorValue","anemometer","_rot","heatFlux","flux","_sin","_cos","sensorOutputDesc","updateAnemometers","diverged","structure","getSensorsArray","seconds","minutes","hours","days","HSVToRGB","color_palette","ColorPalette","view_helpers","color_palette_id","getRGBArray","HeatmapView","html_id","DEFAULT_ID","$heatmap_canvas","canvas_ctx","rgb_array","max_rgb_idx","heatmap","min_temp","max_temp","initHTMLelement","heatmap_view","renderHeatmap","rgb_idx","color1","color2","image_data","pix_index","pix_stride","getImageData","putImageData","bindHeatmap","new_heatmap","new_grid_width","new_grid_height","setCanvasSize","getHTMLElement","setMinTemperature","setMaxTemperature","setColorPalette","HeatmapWebGLView","render_program","temp_renderer_fs","palette_tex","canvas_width","canvas_height","heatmap_tex","setupRenderTarget","COLOR_BUFFER_BIT","bindHeatmapTexture","new_heatmap_tex","tex_data","GET_WEBGL","WebGLStatusView","$webgl_icon","$status_wrapper","$status","webgl_checkbox","energy2d_modeler","WebGL_status_view","interactiveControllerProxy","$closeBtn","modelCompatible","requiredFeatures","optionalFeatures","initError","supported","VectormapView","VECTOR_SCALE","VECTOR_BASE_LEN","WING_COS","WING_SIN","WING_LEN","ARROW_COLOR","$vectormap_canvas","vectormap_u","vectormap_v","drawVector","arrowx","arrowy","wingx","wingy","vectormap_view","renderVectormap","uij","vij","ijny","bindVectormap","new_vectormap_u","new_vectormap_v","arrows_per_row","VectormapWebGLView","vectormap_vs","vectormap_fs","arrows","vectormap_tex","initGeometry","coord","gdx","gdy","tdx","tdy","origins","bindVectormapTexture","new_vectormap_tex","base_length","vector_scale","PhotonsView","DEFAULT_CLASS","PHOTON_LENGTH","$photons_canvas","scale_x","scale_y","scene_width","scene_height","setCanvasStyle","photons_view","renderPhotons","sx","sy","bindPhotonsArray","new_photons","new_scene_width","new_scene_height","E2D_XY_SHIFT","E2D_DIM_SHIFT","PartsView","shapeTest","ringPathSpec","arc","innerRadius","outerRadius","startAngle","endAngle","textureFill","polygonPathSpec","pathSpec","firstElementChild","generateTextures","renderShape","renderParts","partEnter","bindPartsArray","newParts","TH_W","TH_H","SensorsView","thermBg","thermReading","thermValScale","anemoRot","heatFluxReading","em","labelDx","readingText","bgHeight","anemometerRotation","heatFluxReadingText","heatFluxRot","measuringPoint","supportLabels","renderThermometers","renderAnemometer","renderHeatFluxSensors","renderSensors","bindSensorsArray","newSensors","setMinMaxTemp","velocity_view","parts_view","sensors_view","webgl_status","$canvasCont","canvasCount","setAsNextLayer","$layer","setupCanvasViews","setVisOptions","elapsedModelTime","Energy2DScriptingAPI","getSensor","getPart","getNumberOfParts","datasetCount","Dataset","definition","rowResult","ExperimentController","experimentDefinition","timeSeriesDatasets","currentDataset","onLoadFunc","timeSeriesDestinations","parameterSeriesDestinations","timeSeriesGraph","setupModelParameters","goToNextRun","goToRunStarted","goToRunStopped","setupStateButtons","setupDestinationComponents","setupStateButtonActions","parameterSeriesDestination","addOlderRunsToGraph","unfreezeInputParameters","freezeInputParameters","setOnLoadScript","onLoadScript","ModelControllerFor","$__models_md_d_controllers_controller","$__models_signal_generator_controller","$__models_iframe_controller","$__models_sensor_controller","$__models_dual_sensor_controller","$__models_dual_sensor_connector_controller","$__models_sensor_connector_controller","$__models_labquest__controller","$__models_energy_d_controllers_controller","ComponentConstructor","GraphController","InteractivesController","interactiveReference","viewSelector","initialInteractiveConfig","initialModelConfig","experimentController","currentModelID","$interactiveContainer","$fastClickContainer","modelDefinitions","modelHash","componentModelLoadedCallbacks","dataSetModelLoadedCallbacks","willResetModelCallbacks","ignoreModelResetEvent","initialModelLoad","componentList","propertiesRetainedByComponents","publicDataSetsByName","logController","parentMessageAPI","semanticLayout","randSeed","generateRandomSeed","getModelDefinition","setupModelPlayerKeyboardHandler","setupLayout","banner","resizeAfterFullscreen","templates","onlyElementOnPage","createComponent","getStringFromArray","validateInteractive","modelDefinition","validateArray","modelName","setupTheme","newInteractive","FastClick","attach","firstModel","initializeInteractive","cleanupInteractive","getI18n","modelDef","createModelController","modelResetHandler","dataSetDefinition","hashCode","charCodeAt","cookies","componentJsons","getBoundProperties","modelType","modelConfig","additionalPropertiesToRetain","interactiveViewOptions","interactiveModelOptions","retainedProperties","getRetainedProperties","currentModel","finishWithLoadedModel","fail","processOptions","interactiveModelConfig","interactiveViewConfig","meldOptions","overlay","possiblySetButtonStyle","initializeModelOutputsAndParameters","getDefaultExports","setupCustomOutputs","setupCustomParameters","notifyModelResetCallbacks","notifyWillResetModelAnd","numberOfResponsesRequired","numberOfProceedResponses","resetWasCanceled","proceedIfReady","makeResetRequest","wasUsed","willResetModelCallback","outputType","modelOutputs","interactiveOutputs","processOutputsArray","outputsArray","modelParameters","interactiveParameters","initialValues","customParameters","onChangeFunc","additionalProps","getDefaultPropertiesToRetain","durationProps","propertyKeys","uniq","flatten","componentProperties","pluck","graphProperties","where","without","additionalPerTickProperties","perRunProperties","perTickProperties","difference","writableProperties","defaultExports","getModelController","interactiveRequested","interactiveWillReload","modelParams","interactiveParams","isModelParameter","param","dsName","ParentMessageAPI","fields","columnLabelWithUnits","importRun","perRunLabels","field","perRunValues","runs","identity","numberOfRuns","timeStamps","runHavingTimeStamp","importExport","netlogoImporter","TYPES","vacuum","oil","water","propsHash","windowSize","vals","sum_vals","xa","ya","xb","yb","xc","yc","publicAPI","cons","emptyFunction","tracing"],"mappings":"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AxB,CAAf;AACD,SAHM,MAGA;AACL;AACAe,gBAAM,CAACf,IAAD,CAAN,GAAeI,KAAK,CAACJ,IAAD,CAApB;AACD;AACF;AACF,KA7CmD,CA+CpD;AACA;AACA;;;AACA,WAAO,KAAKa,QAAL,CAAcC,QAAd,EAAwBC,MAAxB,EAAgC,IAAhC,CAAP;AACD,GAxGY;AA0Gb;AACAhB,iBAAe,EAAEA;AA3GJ,CAAf,E;;;;;;;;ACzCA;AAAA;;;;;;CAOE;;AACA,IAAM8B,SAAS,GAAG,OAAOpG,MAAM,CAACqG,KAAd,KAAwB,WAAxB,GAAsCrG,MAAM,CAACqG,KAA7C,GAAqDC,8DAAO,CAACC,KAA/E;AAEa,mEAASC,GAAT,EAAc;AAC3BJ,WAAS,CAACI,GAAD,CAAT;AACD,C;;;;;;;ACZD,sBAAsB,mBAAO,CAAC,EAAoB;;AAElD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,uDAAuD;;AAEvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvLA,sBAAsB,mBAAO,CAAC,EAAoB;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzIA;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,IAAIC,oBAAoB,GAAG,YAA3B;AAAA,IACEC,8BAA8B,GAAG,YADnC;AAAA,IAGE;AACAC,aAAa,GAAGD,8BAJlB;AAAA,IAME;AACAE,uBAAuB,GAAG,KAP5B;AAAA,IAQEC,oBAAoB,GAAG,IARzB;AAAA,IASEC,uBAAuB,GAAG,EAT5B;AAAA,IAUEC,kBAAkB,GAAG,IAVvB;AAAA,IAYEC,KAAK,GAAG;AACNC,MAAI,EAAE,MADA;AAENC,QAAM,EAAE,QAFF;AAGNC,MAAI,EAAE,MAHA;AAINC,QAAM,EAAE,QAJF;AAKNC,SAAO,EAAE,SALH;AAMNC,QA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AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;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;;;AAGA;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;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,KAAK;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;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;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,EAAoB;;AAE/C;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,mBAAmB,mBAAO,CAAC,EAAU;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kCAAkC;AAC7D,2BAA2B,mDAAmD;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9rBA,mCAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO,YAAY;AAC/B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,yCAAyC;AAC/D;;;AAGA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC,cAAc,QAAQ;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC,YAAY,MAAM;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA,YAAY,YAAY;AACxB,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,6BAA6B;AACzC,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO,YAAY;AAC/B;AACA;AACA;AACA;;;AAGA,KAAK,IAA4E;;AAEjF;AACA,EAAE,mCAAO;AACT;AACA,GAAG;AAAA,oGAAC;AACJ,EAAE,MAAM,EAKN;AACF,CAAC;;;;;;;;;;;;;;;ACx0BD;AACA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AAG;AACH;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;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,KAAK;AACL;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,uDAAuD;AACvD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;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,8EAA8E,SAAS;AACvF,uDAAuD,SAAS;AAChE;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;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,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;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;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,EAAE;AACpD,sBAAsB;AACtB;AACA,GAAG;AACH;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,qCAAqC,SAAS;AAC9C;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C,yDAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,oEAAoE;AACpE;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA,cAAc,MAAM;AACpB;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,oCAAoC,OAAO;AAC3C;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C,4EAA4E,UAAU;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sCAAsC,OAAO;AAC7C,gEAAgE,OAAO;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C,wDAAwD,OAAO;AAC/D;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,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;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;AACA,qCAAqC,SAAS;AAC9C;AACA,yDAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kEAAkE;AAClE;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA,OAAO;AACP;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,wCAAwC;AAC9F;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAAiF;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;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,OAAO;AACP;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,2CAA2C;AAC3C;AACA,SAAS,gBAAgB;AACzB;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,WAAW;AACX;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,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;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,OAAO;AACP;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,OAAO;AACP;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;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,2CAA2C;AAC3C,KAAK;AACL;AACA;AACA,KAAK;AACL;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;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,KAAK;AACL;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,sEAAsE,6BAA6B;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,OAAO;AACP;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,gEAAgE,QAAQ;AACxE;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,6DAA6D,OAAO;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2CAA2C,QAAQ;AACnD,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,WAAW;AACX;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;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;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B,oEAAoE,OAAO;AAC3E;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;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;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,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;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,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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;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,+BAA+B,iCAAiC;AAChE;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;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,GAAG;AACH;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;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,yEAAyE;AACzE,oBAAoB,OAAO;AAC3B;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,OAAO;AACP,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,KAAK;AACL;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,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,8BAA8B,8BAA8B;AAC5D;AACA,+CAA+C;AAC/C,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,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,OAAO;AACP;AACA,OAAO;AACP;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,OAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,4BAA4B;AAC5B;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,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,8CAA8C;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,cAAc,QAAQ;AACtB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mCAAmC;AAClD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC,WAAW;AACX;AACA;AACA,2BAA2B,OAAO;AAClC;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,eAAe,QAAQ;AACvB,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB;AACA,iBAAiB,QAAQ;AACzB;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,KAAK;AACL;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,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,8BAA8B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,8BAA8B;AACnF;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,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,kBAAkB;AAClB;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,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;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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,SAAS;AACT;AACA;AACA;AACA,iBAAiB,OAAO;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;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO,2DAA2D,iBAAiB,OAAO;AACnJ;AACA,yDAAyD,OAAO,2DAA2D,iBAAiB,OAAO;AACnJ;AACA,mDAAmD,OAAO,mDAAmD,iBAAiB,OAAO;AACrI;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,0BAA0B,OAAO;AACjC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,OAAO;AAClC,uDAAuD,OAAO;AAC9D,0EAA0E,OAAO;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA,KAAK;AACL;AACA;AACA,iBAAiB,OAAO;AACxB,0BAA0B,OAAO;AACjC,0BAA0B,OAAO,yBAAyB,iBAAiB,OAAO;AAClF;AACA,iBAAiB,OAAO;AACxB;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;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;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AAC1B;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;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;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,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gCAAgC;AAC/D;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,gBAAgB,MAAM,qBAAqB,OAAO;AAClD;AACA,SAAS;AACT;AACA,gBAAgB,QAAQ,sBAAsB,OAAO;AACrD;AACA,mBAAmB,cAAc;AACjC,8BAA8B,kBAAkB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;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,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,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;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,qCAAqC,SAAS;AAC9C;AACA,yDAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C,yDAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA,wDAAwD,OAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;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;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA,wDAAwD,OAAO;AAC/D;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,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,OAAO;AACP;AACA;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;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,sCAAsC;AACtC;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;AACA;AACA;AACA,mDAAmD,0BAA0B;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AAC5B;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,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;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;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,OAAO;AACP;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,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,OAAO;AACP;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;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,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;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,oBAAoB,EAAE;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;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;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;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;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,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;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,GAAG;AACH;AACA,CAAC,G;;;;;;;ACjhSD;AACA;AACA;AACA,qDAAqD;;AAErD;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAO,EAAE,uBAAQ,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,oGAAE;AAChC,EAAE,MAAM,EAIN;AACF,CAAC;;AAED;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA,cAAc,+BAA+B;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,0BAA0B;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA,yBAAyB;;AAEzB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;;AAEA,8CAA8C,OAAO,WAAW;AAChE;AACA;AACA;AACA;AACA,oDAAoD;AACpD,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,4BAA4B,kBAAkB;AAC9C,EAAE;;AAEF;AACA,4BAA4B,iBAAiB;AAC7C,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kCAAkC;AAC3C;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB,WAAW,YAAY,gBAAgB;AACnF,8BAA8B,WAAW;AACzC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,kBAAkB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,eAAe;AACnD,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;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,IAAI;AACJ;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,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB,IAAI,YAAY,IAAI,YAAY,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,6BAA6B;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;;AAEA;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;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;;AAEJ;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB;AACxB;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,MAAM,qBAAqB;AAC3B;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,iBAAiB,kBAAkB,IAAI,qBAAqB;AAC5D;AACA;AACA,IAAI;;AAEJ;AACA;AACA,MAAM,qBAAqB;AAC3B;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,uBAAuB;AACzC,kBAAkB,uBAAuB;AACzC,IAAI;AACJ;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;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;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;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,EAAE;AACF;;AAEA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,aAAa,mBAAmB,WAAW;AAC3C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ,WAAW;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,UAAU,QAAQ;AAC/B;AACA;;AAEA,cAAc,WAAW,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,mBAAmB,WAAW;AAC9C,gBAAgB,mBAAmB,WAAW;;AAE9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA,oCAAoC;AACpC;AACA;AACA,EAAE;;AAEF;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,WAAW;AACnB,oBAAoB,qBAAqB;AACzC;AACA;;AAEA,mBAAmB,qBAAqB;;AAExC;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;;AAEjB;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;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,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA,yCAAyC,WAAW,EAAE;AACtD;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;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;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;AAID;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;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;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,aAAa;AAC/C,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,oBAAoB;AACrD;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,sDAAsD;AACtD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;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;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;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,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,mDAAmD,aAAa;;AAEhE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA,oDAAoD,aAAa;AACjE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,gBAAgB,cAAc;AAC9B,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,oCAAoC,0BAA0B;AAC9D;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,kCAAkC;AAClC,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,iDAAiD,IAAI;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ,eAAe,YAAY;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;;AAEA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,uBAAuB;AAC7C;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA,iBAAiB,cAAc,oBAAoB,EAAE;;AAErD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,yBAAyB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB,wBAAwB;AACxB,2BAA2B;AAC3B,iCAAiC;AACjC,wBAAwB;AACxB,uCAAuC;AACvC,4CAA4C;AAC5C,4CAA4C;AAC5C,8CAA8C;AAC9C,4CAA4C;AAC5C,+CAA+C;AAC/C,wDAAwD;AACxD,kDAAkD;AAClD,qDAAqD;AACrD,oBAAoB;AACpB,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,8CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,oEAAoE;AACpE,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,kDAAkD;AAClD;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,YAAY,uDAAuD;AACnE;AACA;AACA,MAAM,oDAAoD;AAC1D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA,iCAAiC,aAAa,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB,EAAE;AAC/C,0BAA0B,6BAA6B;AACvD,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4CAA4C,EAAE,GAAG;AACvE,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB,EAAE;AAC9C,0BAA0B,oCAAoC;AAC9D,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4CAA4C,EAAE,GAAG;AACvE;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iCAAiC;AACnD;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C;AAC9C,4CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mBAAmB;AACnB;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,GAAG,oDAAoD;AACvD;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;;AAEA,2FAA2F;AAC3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA,mBAAmB,yDAAyD;AAC5E;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA,mBAAmB;AACnB,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,iDAAiD;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gFAAgF;AAChF,GAAG;AACH,kCAAkC;AAClC;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA,MAAM;AACN;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,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;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,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;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;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;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA,mEAAmE;AACnE,0DAA0D,kBAAkB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D,2FAA2F;AAC3F;AACA;AACA,mBAAmB,gBAAgB,WAAW;AAC9C;AACA;AACA;AACA,mBAAmB,SAAS,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qHAAqH;AACrH;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kEAAkE;AAClE;AACA,mBAAmB;AACnB;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA,gCAAgC;AAChC;AACA;AACA;;AAEA;;;;;AAKA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA,wCAAwC;AACxC,uCAAuC;AACvC,uCAAuC;AACvC,yCAAyC,aAAa;AACtD,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;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,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA,2CAA2C,4BAA4B;AACvE,GAAG;AACH;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA,+BAA+B;AAC/B;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA,+BAA+B;AAC/B;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;;AAEJ,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,QAAQ;;AAEjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ,wBAAwB,QAAQ;;AAEhC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,cAAc;;AAE7B;AACA;AACA;AACA;;AAEA,eAAe,mBAAmB;;AAElC;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA,mCAAmC,+BAA+B;AAClE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,uBAAuB;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,OAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,+CAA+C;;AAExD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA,EAAE;;AAEF;;AAEA;AACA;;AAEA;;AAEA,gEAAgE;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA,GAAG;AACH;AACA;;AAEA,EAAE;;AAEF;AACA;AACA,WAAW;AACX,GAAG;AACH;AACA;AACA,WAAW;AACX,GAAG;AACH;AACA;AACA,WAAW;AACX,GAAG;AACH;AACA,WAAW;AACX,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,uBAAuB,KAAK;AAC/D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,yCAAyC;AAClE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uFAAuF;AACvF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;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,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,sBAAsB;AACtB;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,2BAA2B;AAChC;;AAEA;AACA,sBAAsB,iBAAiB;;AAEvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;;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,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,SAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA,kBAAkB;AAClB,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B,cAAc;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;;AAEA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;;AAEA,6BAA6B;AAC7B;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;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,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,UAAU,SAAS,UAAU;AAC/C,kBAAkB,UAAU,SAAS,UAAU;AAC/C,oBAAoB,qDAAqD;;AAEzE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,sCAAsC,aAAa;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA,qCAAqC,kBAAkB;AACvD,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,wBAAwB;AACxB;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;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;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,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,aAAa;;AAEhD;AACA,oCAAoC,aAAa;AACjD;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,iBAAiB;AACpD;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,yCAAyC,kBAAkB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA,kBAAkB,iCAAiC;AACnD;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,EAAE;;AAEF;AACA;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,IAAI;AACJ;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,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;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,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA,sCAAsC,QAAQ;AAC9C;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,qCAAqC,EAAE;AACxD;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,QAAQ;;AAE1C;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;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;;AAEA,2CAA2C,eAAe;;AAE1D;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,qDAAqD;;AAErD;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,gDAAgD;AAChF;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;;AAEA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wDAAwD,yBAAyB;AACjF;AACA;;AAEA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,QAAQ;AACvC;AACA;;AAEA,gDAAgD,mBAAmB;AACnE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kCAAkC,QAAQ;AAC1C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;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;;AAEA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,QAAQ;;AAE/C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW;AACX;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC;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;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,4BAA4B;;AAE3C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;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,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,wDAAwD,eAAe;AACvE;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA,gDAAgD,aAAa,EAAE;AAC/D,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,cAAc,yBAAyB;AACvC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,yBAAyB;AACjD,0BAA0B,2BAA2B;;AAErD;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA,iCAAiC,mBAAmB;AACpD,EAAE;;AAEF;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;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;;;AAKA,CAAC,G;;;;;;;ACjxkBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,CAAC,U;;;;;;;ACnLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC;AACzC;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,2BAA2B;AACzD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,cAAc;AACd;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,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD,kEAAkE;AACrH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,+BAA+B;;AAE7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oDAAoD,+CAA+C;AACnG,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,+CAA+C;AACrG;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oEAAoE;AAC1H,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,WAAW;AAC1D,qBAAqB;AACrB;;AAEA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,yC;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb,oDAAoD;;AAEpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qCAAqC,aAAa;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,0DAA0D,eAAe,eAAe;AACxF;;AAEA;AACA,uBAAuB,uCAAuC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,4FAA4F,wBAAwB,OAAO,QAAQ,YAAY,0BAA0B,wBAAwB;AACjM,sBAAsB,6DAA6D;AACnF;AACA;AACA;AACA;;AAEA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAU;AAC9B,sCAAsC;AACtC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,qDAAqD,uCAAuC;AAC5F,KAAK;AACL;AACA;AACA,KAAK;AACL,kCAAkC,cAAc;AAChD,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB,KAAK;AACL;AACA;;AAEA;AACA,6BAA6B,yBAAyB;AACtD;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA,uF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kEAAkE,YAAY;AAC9E;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA;;AAEA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA,8DAA8D,YAAY;AAC1E;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mBAAmB,eAAe,GAAG,EAAE;AACjF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,mBAAmB,eAAe,GAAG,EAAE;AACzF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;AC3pDD;AACA;AACA,iCAAiC;;AAEjC;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,iBAAiB;;AAEjB;AACA;;AAEA;;AAE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;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS;;AAET;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA;;AAEA;;AAEA,iBAAiB;;AAEjB;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA;;AAEA;;AAEA,SAAS;;;AAGT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA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S;;AAET;AACA;;AAEA;AACA;;AAEA,SAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS;;AAET;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,aAAa;;AAEb;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA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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,UAAU,uBAAM,IAAI,uBAAU;AAC/B,EAAE,mCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA,EAAE,KAA2B;AAC7B,EAAE,uBAAuC;AACzC;;;;;;;;;;;AC/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,UAAU,uBAAM,IAAI,uBAAU;AAC/B,EAAE,mCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA,EAAE,KAA2B;AAC7B,EAAE,uBAAuC;AACzC;;;;;;;;;;;AC9EA;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,UAAU,uBAAM,IAAI,uBAAU;AAC/B,EAAE,mCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA,EAAE,KAA2B;AAC7B,EAAE,uBAAuC;AACzC;;;;;;;;;;;ACnFA;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,UAAU,uBAAM,IAAI,uBAAU;AAC/B,EAAE,mCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA,EAAE,KAA2B;AAC7B,EAAE,uBAAuC;AACzC;;;;;;;;;;AC/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;AAC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;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,UAAU,uBAAM,IAAI,uBAAU;AAC/B,EAAE,mCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA,EAAE,KAA2B;AAC7B,EAAE,uBAAuC;AACzC;;;;;;;;;;;ACpGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;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;;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,IAAI,KAA2B;AAC/B;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,GAAG;AACH,CAAC,UAAU,IAA2C;AACtD,EAAE,mCAAO,YAAY,mBAAmB,EAAE;AAAA,oGAAC;AAC3C,CAAC,MAAM,EAGN;;;AAGD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5PA,e;;;;;;;ACAA,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,wBAAwB,mBAAO,CAAC,GAAmB;;AAEnD;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACvFA;AACA;AACA;AACA;;AAEA;;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;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,mBAAO,CAAC,EAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,IAAI;;AAEpC;;AAEA,gCAAgC,uBAAuB;AACvD;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA,gCAAgC,gBAAgB;;AAEhD;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,IAAI,KAAK,EAAE;AACjC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sDAAsD,kBAAkB,EAAE;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;;AAEL;AACA;AACA,wEAAwE,GAAG;;AAE3E;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C,4BAA4B,IAAI,MAAM,EAAE;;AAExC;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,gBAAgB,EAAE,IAAI;AACxD;AACA,+BAA+B,oBAAoB,IAAI,IAAI;AAC3D;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kDAAkD,cAAc;AAChE,qDAAqD,cAAc;AACnE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA,+DAA+D,QAAQ,WAAW,EAAE;;AAEpF;AACA;;AAEA;AACA;;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,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,uBAAuB;AACvB,MAAM,iBAAiB;;AAEvB,8BAA8B;;AAE9B;AACA;AACA,gCAAgC,EAAE;AAClC;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,qBAAqB;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,qDAAqD;AACjG;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA,2CAA2C,yBAAyB;;AAEpE;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA,2CAA2C,aAAa;AACxD;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;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;;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;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,IAAI,EAAE,YAAY,KAAK,SAAS;AAChE;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;AACA;;AAEA;;AAEA,kBAAkB,kBAAkB;AACpC;AACA;;AAEA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,iCAAiC,aAAa,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,IAAI,UAAU,IAAI;AAC7C;AACA,8BAA8B,IAAI,2BAA2B,IAAI;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E,2DAA2D,cAAc;AACzE,2DAA2D,gBAAgB;AAC3E,4DAA4D;AAC5D,KAAK;;AAEL;AACA;AACA,eAAe,iBAAiB;AAChC,mDAAmD;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC,oDAAoD;AACpD;AACA;AACA,KAAK;;AAEL;AACA;;AAEA,mCAAmC;AACnC;AACA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA,kBAAkB;AAClB;;AAEA;AACA,0BAA0B,YAAY,KAAK,SAAS;;AAEpD;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0DAA0D;;AAE1D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC,kCAAkC;AAClC,kCAAkC;AAClC,oCAAoC;AACpC,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAmB;AAC5B;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,OAAO,KAA8B,GAAG,EAGrC;AACH;AACA;AACA;AACA,CAAC;;;;;;;;AC5rDD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4BAA4B,IAAI,SAAS,IAAI,SAAS,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,2BAA2B,IAAI,SAAS,IAAI,SAAS,IAAI;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,mDAAmD;AACnD,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA;;AAEA;;;;;;;;AC7SA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA,eAAe,WAAW;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,aAAa;AAChC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA,eAAe,WAAW;AAC1B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,aAAa;AAChC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpmBA;AACA;AACA;AACA;AACA;AAEe;AACb;;;AAGAuK,iBAAe,EAAE,EAJJ;;AAKb;;;AAGA1E,eAAa,EAAE,GARF;;AASb;;;AAGAiB,aAAW,EAAE,IAZA;;AAab;;;AAGAD,mBAAiB,EAAE,GAhBN;;AAiBb;;;;AAIAN,gBAAc,EAAE,GArBH;;AAuBb;;;AAGA8S,iBAAe,EAAE,CACf,mBADe,EACM,mBADN,EAC2B,mBAD3B,EACgD,qBADhD,EAEf,qBAFe,EAEQ,uBAFR,EAEiC,qBAFjC,EAEwD,qBAFxD;AA1BJ,CAAf,E;;;;;;;ACNA,qCAAa,KAAwB,oBAAoB,SAAiM,CAAC,YAAY,0BAA0B,0BAA0B,gBAAgB,UAAU,UAAU,0CAA0C,gBAAgB,OAAC,OAAO,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,0CAA0C,YAAY,WAAW,YAAY,SAAS,GAAG;AAClsB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uCAAuC;AAC5C,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uCAAuC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,GAAG;AACJ;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC,4BAA4B,EAAE;;AAE9D;AACA,wBAAwB,yCAAyC,EAAE;AACnE,wBAAwB,yCAAyC,EAAE;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,6BAA6B,EAAE;AAC1D,2BAA2B,6BAA6B,EAAE;AAC1D;;AAEA;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;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,OAAO;AACP;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;;AAEA;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;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4CAA4C,EAAE;AAC5E,8BAA8B,4CAA4C,EAAE;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4CAA4C,EAAE;AAC5E,8BAA8B,4CAA4C,EAAE;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,UAAU,EAAE;AAC/C;AACA;AACA,2BAA2B,UAAU,EAAE;AACvC;AACA,sBAAsB,0FAA0F,EAAE;AAClH;AACA,oCAAoC,0CAA0C,EAAE;AAChF;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,0FAA0F,EAAE;AAC7H;AACA,sCAAsC,0CAA0C,EAAE;AAClF;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+CAA+C;AACtF,uCAAuC,iDAAiD;AACxF;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,+CAA+C;AACvF,SAAS;AACT,wCAAwC,gDAAgD;AACxF,SAAS;AACT;AACA,4DAA4D;AAC5D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+CAA+C;AACtF,uCAAuC,iDAAiD;AACxF;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB,EAAE;AAC7D,sCAAsC,qBAAqB,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iDAAiD,EAAE;;AAEhF;AACA;AACA,sCAAsC,qBAAqB,EAAE;AAC7D,sCAAsC,qBAAqB,EAAE;AAC7D;AACA,6BAA6B,iDAAiD,EAAE;;AAEhF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oDAAoD,EAAE;AACtF,gCAAgC,oDAAoD,EAAE;AACtF,mCAAmC,uDAAuD,EAAE;;AAE5F;AACA;AACA;AACA,gCAAgC,oDAAoD,EAAE;AACtF,gCAAgC,oDAAoD,EAAE;AACtF,mCAAmC,uDAAuD,EAAE;AAC5F,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA,mDAAmD;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,UAAU;AACnC,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAwD,UAAU;AAClE;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,6BAA6B;AACvD,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gCAAgC,QAAQ;AACxC,eAAe,0BAA0B;AACzC;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;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,iCAAiC,UAAU;AAC3C;AACA;AACA;AACA;AACA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA,iCAAiC,kCAAkC;AACnE;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;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;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD,QAAQ;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,2FAA2F,OAAO;AAClG;AACA;AACA,oCAAoC,UAAU;AAC9C,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,aAAa;AACpE,qEAAqE,UAAU;AAC/E;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC,uEAAuE,UAAU;AACjF;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C,qEAAqE,UAAU;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC,uEAAuE,UAAU;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,2FAA2F,OAAO;AAClG;AACA;AACA,wBAAwB,SAAS;AACjC,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA,uDAAuD,aAAa;AACpE,qEAAqE,UAAU;AAC/E;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC,uEAAuE,UAAU;AACjF;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;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;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,iBAAiB,wBAAwB;AACzC,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,sBAAsB,gBAAgB;AACtC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC,EAAE,sBAAsB;AACzB;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,EAAE,iCAAiC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,GAAG;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,EAAE,+BAA+B,EAAE,GAAG;AACvC;AACA,CAAC;AACD,C;;;;;;;ACzrGA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAA0C;AAChD,IAAI,iCAAO,CAAC,sBAAY,EAAE,uBAAQ,EAAE,OAAS,CAAC,mCAAE;AAChD;AACA;AACA;AACA,KAAK;AAAA,oGAAC;;AAEN;AACA,GAAG,MAAM,aAQN;;AAEH,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,wCAAwC,mBAAmB,EAAE;AAC7D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA,KAAK;AACL;AACA,6CAA6C,kBAAkB;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,KAAK;;AAEL;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,gFAAgF;AACrG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;;AAEA;AACA,UAAU,kBAAkB;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C,sCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,YAAY;AAC1C,sCAAsC;AACtC;AACA;;AAEA,iDAAiD,mBAAmB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,yEAAyE;AACzE,6EAA6E;AAC7E,iFAAiF;AACjF,6EAA6E;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,WAAW;AACrD;AACA;AACA;AACA;AACA,OAAO;AACP,mBAAmB;AACnB;;AAEA,8BAA8B;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,+CAA+C,YAAY,YAAY;AACvE,KAAK;;AAEL;AACA;AACA;AACA;AACA,wCAAwC,YAAY,YAAY;AAChE,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,0BAA0B,YAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,0CAA0C,WAAW;AACrD;AACA;AACA;AACA;AACA,OAAO;AACP,mBAAmB;AACnB;;AAEA,0BAA0B,4BAA4B;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,WAAW;AAClD,sDAAsD;;AAEtD;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,8BAA8B,aAAa,YAAY,eAAe;AACtE,KAAK;;AAEL;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,8DAA8D,uBAAuB;AACrF;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;;AAEA;AACA,oBAAoB;AACpB,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,YAAY;AAC3B,eAAe,iBAAiB;AAChC;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA,uCAAuC,8BAA8B,EAAE;AACvE,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD,KAAK;;AAEL;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,aAAa;;AAExC;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA,0CAA0C,aAAa;AACvD;AACA;AACA,KAAK;;AAEL;AACA;AACA,uCAAuC,gBAAgB;AACvD,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,uCAAuC,MAAM;AAC7C,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,0BAA0B,YAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,SAAS,6BAA6B;AACtC;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA,wCAAwC,+BAA+B;AACvE;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,KAAK;AACL;;AAEA,oEAAoE,MAAM;AAC1E;AACA;AACA;AACA,sDAAsD,4BAA4B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,IAAI;AACX;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA,KAAK;;AAEL;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,yCAAyC,cAAc;AACvD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,6BAA6B,iCAAiC;AAC9D,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uEAAuE;;AAEvE;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,yBAAyB,sCAAsC;AAC/D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;AC/iED;AACA;AACA,EAAE,KAA4D;AAC9D,EAAE,SACsD;AACxD,CAAC,qBAAqB;;AAEtB;AACA,gCAAgC,UAAU;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,eAAe;AACf,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,oBAAoB;AACpB,oBAAoB;AACpB,uBAAuB,oBAAoB,KAAK;AAChD,yBAAyB;AACzB,yBAAyB;AACzB,qBAAqB;;AAErB;AACA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0DAA0D;AAC1D;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mDAAmD,iBAAiB;AACpE;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO,wCAAwC;AAC/C;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,eAAe;AAC7D;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,eAAe;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;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;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,WAAW,UAAU,SAAS,KAAK,oBAAoB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;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;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,eAAe;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;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;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;ACnuBD;AACe;AACb,UAAQ;AACN,cAAU,QADJ;AAEN,cAAU;AACR,aAAO,0CADC;AAER,mBAAa,SAFL;AAGR,aAAO,0DAHC;AAIR,gBAAU,eAJF;AAKR,eAAS,sBALD;AAMR,cAAQ,2BANA;AAOR,iBAAW;AAPH,KAFJ;AAWN,gBAAY,QAXN;AAYN,aAAS;AAZH;AADK,CAAf,E;;;;;;;ACDA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,GAAuB;AAClD;AACA;AACA;AACA;AACA,qBAAqB,mBAAO,CAAC,GAAuB;AACpD,mBAAmB,mBAAO,CAAC,EAAwB;;AAEnD;AACA,0BAA0B,mBAAO,CAAC,GAAiC;;AAEnE;;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;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;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;ACvLtC;AAAA;AAAA;;AAEA;;;;;;;;;;;;;;;;;;;AAmBA;AAEA,IACEvX,IAAI,GAAGwX,6CAAK,CAACxX,IADf;AAAA,IAEEC,KAAK,GAAGuX,6CAAK,CAACvX,KAFhB;AAA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AngB,OAAO,CAACogB,eAAR,GAA0B,YAA1B,C;;;;;;;ACdA;AACA;;;;;;;;;;ACDe;AACb,aAAW,IADE;AAEb,aAAW,KAFE;AAGb,aAAW,KAHE;AAIb;AACA;AACA;AACA;AACA,oBAAkB,EARL;AASb,wBAAsB,kBATT;AAUb;AACA,aAAW,KAXE;AAYb;AACA;AACA,mBAAiB,EAdJ;AAeb,iBAAe,IAfF;AAgBb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAiB;AAvBJ,CAAf,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAe;AACf;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,C;;ACde;AACf;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA,C;;ACb8C;AAC/B;AACf,iBAAiB,sBAAsB;AACvC;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,MAAM,eAAc;AACpB,KAAK;AACL;;AAEA;AACA,C;;AClBe;AACf;AACA;AACA;AACA,C;;ACJA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,C;;ACde;AACf;AACA;AACA;;AAEA;AACA,C;;ACN+C;AACa;AAC7C;AACf,eAAe,OAAO;AACtB;AACA;;AAEA,SAAS,sBAAqB;AAC9B,C;;ACRe;AACf;AACA;AACA;AACA;AACA,C;;ACLe;AACf;AACA;AACA;AACA;;AAEA;AACA,C;;ACP8C;AAC/B;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,kBAAkB,eAAc;AAChC,C;;ACde;AACf;AACA,iDAAiD,gBAAgB;AACjE;AACA;;AAEA;AACA;AACA,C;;ACRe;AACf;AACA,C;;ACFe;AACf;AACA,C;;ACFoD;AACJ;AACI;AACrC;AACf,SAAS,kBAAiB,SAAS,gBAAe,SAAS,kBAAiB;AAC5E,C;;ACLe;AACf;AACA,C;;ACFe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,+BAA+B;AAC5E;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,C;;AC5Be;AACf;AACA,C;;ACF8C;AACY;AACV;AACjC;AACf,SAAS,eAAc,SAAS,qBAAoB,YAAY,gBAAe;AAC/E,C;;ACLwD;AACY;AACI;AACN;AAC4B;AACtB;AACc;AAC1B;AACkB;AACR;;AAEtE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,6EAA6E,kBAAkB;AAC/F;AACA;;AAEA,IAAI,cAAM;AACV;AACA;AACA;AACA;;AAEA,IAAI,eAAe;;AAEnB;AACA;;AAEA,EAAE,YAAY;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,yEAAyE,aAAa;AACtF;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,4EAA4E,eAAe;AAC3F;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,4EAA4E,eAAe;AAC3F;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,4EAA4E,eAAe;AAC3F;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qCAAqC,aAAa,GAAG;AACrD;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED,qBAAqB,cAAM;;AAE3B,IAAI,oBAAY;AAChB;AACA;AACA;AACA,IAAI,eAAe;;AAEnB;AACA;;AAEA,EAAE,YAAY;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA,4FAA4F,aAAa;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,YAAI;AACb;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,EAAE;AACnC;AACA;;AAEA;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,aAAa;AACb,cAAc;AACd;AACA;;AAEA,SAAS,cAAM;AACf;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,IAAI,qBAAa;AACjB;AACA;AACA,EAAE,SAAS;;AAEX;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAI,eAAe;;AAEnB,YAAY,0BAA0B,OAAO,eAAe;AAC5D,IAAI,oBAAY,MAAM,sBAAsB,SAAS;;AAErD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE,YAAY;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP,eAAe,aAAa,GAAG;AAC/B;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2CAA2C;;AAE3C,yDAAyD,aAAa,GAAG,IAAI;AAC7E;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,oBAAY;;AAEd;AACA,gBAAgB;AAChB;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA,IAAI,kBAAU;AACd;AACA;AACA,EAAE,SAAS;;AAEX;AACA;;AAEA;;AAEA,IAAI,eAAe;;AAEnB,YAAY,0BAA0B,OAAO,eAAe;AAC5D,IAAI,oBAAY,MAAM,sBAAsB,SAAS;;AAErD,IAAI,YAAI,4HAA4H,sBAAsB;AAC1J;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,YAAY;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA,iCAAiC;;AAEjC;AACA;AACA;AACA,sDAAsD;;AAEtD,+GAA+G;;AAE/G;AACA;AACA;;AAEA,wDAAwD;;AAExD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG;;AAEvG;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;;AAGA;AACA;AACA,iDAAiD;;AAEjD;;AAEA;;AAEA;AACA;AACA;AACA,mDAAmD,aAAa,GAAG;AACnE;AACA;AACA,eAAe;AACf,8DAA8D;AAC9D;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,4BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA,SAAS;;;AAGT,mEAAmE;;AAEnE,4HAA4H;;AAE5H;AACA,OAAO;;;AAGP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,0DAA0D,aAAa,GAAG;AAC1E,yBAAyB,aAAa,GAAG;AACzC,SAAS,GAAG;;AAEZ;AACA,gEAAgE,aAAa,GAAG;AAChF,8FAA8F;;AAE9F;AACA;AACA,SAAS;AACT;AACA,OAAO;;;AAGP;AACA;;AAEA;AACA,wHAAwH,aAAa;AACrI;AACA,SAAS;AACT;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;;AAElB,uBAAuB;;AAEvB;AACA;AACA,kDAAkD;;AAElD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,2GAA2G;;AAE3G,uGAAuG;;AAEvG,uIAAuI;;AAEvI;AACA,aAAa;;;AAGb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,oBAAY;;AAEd;AACA;AACA;;AAEA,IAAI,oBAAY;AAChB;AACA;AACA;AACA,IAAI,eAAe;;AAEnB;AACA;AACA;AACA;;AAEA,EAAE,YAAY;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA,IAAI,sBAAc;AAClB;AACA;AACA;AACA;;AAEA,IAAI,eAAe;;AAEnB;AACA;AACA;AACA;AACA;;AAEA,EAAE,YAAY;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,oDAAoD;AACpD;AACA,uCAAuC;;AAEvC;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;;;AAGA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED,IAAI,oBAAY;AAChB;AACA;AACA;AACA;;AAEA,IAAI,eAAe;;AAEnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,EAAE,YAAY;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,cAAM;AACtE;AACA;AACA,yFAAyF;AACzF,yFAAyF;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;;AAExF;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,aAAa,GAAG;;AAE1C,+CAA+C;;AAE/C,wCAAwC;AACxC,mEAAmE,YAAY,iBAAiB,EAAE;;AAElG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD,aAAa,GAAG;AAChE,SAAS;AACT;AACA;AACA,SAAS;;;AAGT;AACA;AACA,OAAO;;;AAGP;AACA,+FAA+F;;AAE/F,iFAAiF;;AAEjF;;AAEA;AACA;AACA;AACA,SAAS;AACT;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI,iBAAS;AACb;AACA;AACA,EAAE,SAAS;;AAEX;AACA;;AAEA;;AAEA,IAAI,eAAe;;AAEnB,YAAY,0BAA0B,OAAO,eAAe;AAC5D,IAAI,oBAAY,MAAM,sBAAsB,SAAS;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE,YAAY;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC,WAAW,mCAAmC;AAC9C;AACA,WAAW;AACX,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;;;AAGP,sCAAsC;;AAEtC,sBAAsB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO,EAAE;;AAET,kCAAkC;;AAElC;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C,EAAE;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C;;AAE/C,oBAAoB;AACpB;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA,mDAAmD;AACnD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB,cAAc;AACvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;;AAEA;AACA;AACA;AACA,UAAU,aAAa,GAAG;AAC1B;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,oBAAY;;AAEd,SAAS,WAAG;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;;AAEA,UAAU,OAAO,0BAA0B,OAAO;AAClD;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,iBAAiB;AACjB,iBAAiB;AACjB;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wFAAwF;;AAExF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,IAAI,YAAI;AACR;AACA;AACA,EAAE,SAAS;;AAEX;AACA;;AAEA;AACA;;AAEA,IAAI,eAAe;;AAEnB,YAAY,0BAA0B,OAAO,eAAe;AAC5D,IAAI,oBAAY,MAAM,sBAAsB,SAAS;;AAErD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,0BAA0B,QAAQ,sBAAsB;AACvE;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA,EAAE,YAAY;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,aAAa,GAAG,EAAE,WAAG;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qBAAqB,oBAAY;AACjC,yBAAyB,qBAAa;AACtC;AACA;AACA;AACA;AACA,+BAA+B,sBAAc;AAC7C;AACA;AACA;AACA,SAAS;AACT,6BAA6B,oBAAY;AACzC;AACA;AACA;AACA,iCAAiC,iBAAS,8EAA8E;;AAExH;AACA,gGAAgG,aAAa;AAC7G;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B,kBAAU,8BAA8B;;AAEtE;AACA,oGAAoG,eAAe;AACnH;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,8BAA8B;;AAE9B;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iFAAiF;;AAEjF;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA,YAAY,OAAO;AACnB,oGAAoG,eAAe;AACnH;AACA;;AAEA;AACA,SAAS;AACT,oBAAoB,aAAa,GAAG;AACpC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8DAA8D;;AAE9D;;AAEA;AACA;;AAEA;AACA,QAAQ;;;AAGR,uDAAuD;;AAEvD,+DAA+D;;AAE/D;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA,0BAA0B,aAAa,GAAG;AAC1C;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP,6BAA6B,kBAAU;AACvC;AACA,kGAAkG,eAAe;AACjH;AACA;;AAEA;AACA,OAAO;AACP;AACA,+CAA+C;;AAE/C;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,oBAAY;;AAEd,kBAAkB,YAAI;;AAEP,uDAAO,EAAC;;;;;;;;;;ACzuEvB;AACA;AACA;AAEe,SAASC,SAAT,CAAcC,QAAd,EAAwB;AACrCC,aAAO,CAACC,IAAR,CAAa;AACXC,OAAG,EAAEH,QADM;AAEXI,aAAS,EAAEC,YAFA;AAGXC,eAAW,EAAE,OAHF;AAIXC,iBAAa,EAAE,KAJJ;AAKXC,iBAAa,EAAE;AACbC,YAAM,EAAE,IADK;AAEbC,YAAM,EAAE,IAFK;AAGbC,iBAAW,EAAE;AAHA;AALJ,GAAb,EADqC,CAYrC;;AACAC,uBAAU,CAACb,IAAX,CAAgBc,IAAhB,GAAuBb,QAAvB;AACA,SAAOC,WAAP;AACD,C;;AClBc;AACb;;;AAGAa,aAAW,EAAE;AACXlH,SAAK,EAAE;AACLjc,cAAQ,EAAE;AADL,KADI;AAKXojB,qBAAiB,EAAE;AACjBrjB,kBAAY,EAAE;AADG,KALR;AASXsjB,kBAAc,EAAE;AACd;AACA;AACA;AACA;AACA;AACAtjB,kBAAY,EAAE;AANA,KATL;AAkBX;AACA;AACA;AACAujB,gBAAY,EAAE;AACZvjB,kBAAY,EAAE;AADF,KArBH;AAyBXmjB,QAAI,EAAE;AACJnjB,kBAAY,EAAE;AADV,KAzBK;AA6BXwjB,SAAK,EAAE;AACL;AACA;AACA;AACAxjB,kBAAY,EAAE;AAJT,KA7BI;AAoCXyjB,cAAU,EAAE;AACV;AACAzjB,kBAAY,EAAE;AAFJ,KApCD;AAyCX0jB,iBAAa,EAAE;AACb;AACA1jB,kBAAY,EAAE;AAFD,KAzCJ;AA8CX2jB,WAAO,EAAE;AACP;AACA3jB,kBAAY,EAAE;AAFP,KA9CE;AAmDX2E,WAAO,EAAE;AACP;AACA;AACA;AACA3E,kBAAY,EAAE;AAJP,KAnDE;AA0DX4jB,YAAQ,EAAE;AACR5jB,kBAAY,EAAE;AADN,KA1DC;AA8DX6jB,SAAK,EAAE;AACL7jB,kBAAY,EAAE;AADT,KA9DI;AAkEX;AACA8jB,YAAQ,EAAE;AACR9jB,kBAAY,EAAE;AADN,KAnEC;AAuEX;AACA+jB,eAAW,EAAE;AACX/jB,kBAAY,EAAE;AADH,KAxEF;AA4EX;AACAgkB,cAAU,EAAE;AACVhkB,kBAAY,EAAE;AADJ,KA7ED;AAiFX;AACAikB,gBAAY,EAAE,EAlFH;AAoFXxf,eAAW,EAAE;AACXzE,kBAAY,EAAE;AADH,KApFF;AAwFX0E,aAAS,EAAE;AACT1E,kBAAY,EAAE;AADL,KAxFA;AA4FXkkB,cAAU,EAAE;AACVjkB,cAAQ,EAAE;AADA,KA5FD;AAgGXkkB,cAAU,EAAE;AACV;AACAnkB,kBAAY,EAAE;AAFJ,KAhGD;AAqGXokB,eAAW,EAAE;AACX;AACApkB,kBAAY,EAAE;AAFH,KArGF;AA0GXqkB,UAAM,EAAE;AACN;AACApkB,cAAQ,EAAE;AAFJ,KA1GG;AA+GXqkB,cAAU,EAAE;AACV;AACAtkB,kBAAY,EAAE;AAFJ,KA/GD;AAoHXukB,YAAQ,EAAE;AACR;AACAvkB,kBAAY,EAAE;AAFN,KApHC;AAyHXwkB,sBAAkB,EAAE;AAClB;AACAxkB,kBAAY,EAAE;AAFI,KAzHT;AA8HXykB,WAAO,EAAE;AACP;AACAzkB,kBAAY,EAAE;AAFP,KA9HE;AAmIX0kB,mBAAe,EAAE;AACf;AACA1kB,kBAAY,EAAE;AAFC,KAnIN;AAwIX2kB,cAAU,EAAE;AACV1kB,cAAQ,EAAE;AADA,KAxID;AA4IX+B,WAAO,EAAE;AACP/B,cAAQ,EAAE;AADH,KA5IE;AAgJX2kB,WAAO,EAAE;AACP;AACA;AACA;AACA3kB,cAAQ,EAAE;AAJH,KAhJE;AAuJX8J,cAAU,EAAE;AACV;AACA/J,kBAAY,EAAE;AAFJ,KAvJD;AA4JXkE,UAAM,EAAE;AACN;AACAlE,kBAAY,EAAE;AAFR,KA5JG;AAiKX6kB,YAAQ,EAAE;AACR;AACA7kB,kBAAY,EAAE;AAFN,KAjKC;AAsKX8kB,YAAQ,EAAE;AACR;AACA9kB,kBAAY,EAAE;AAFN;AAtKC,GAJA;AAgLbkK,OAAK,EAAE;AACL;AACA;AACA/H,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAHD;AAMLgH,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KANC;AASL8kB,OAAG,EAAE;AACHvlB,mBAAa,EAAE,CAAC,OAAD;AADZ,KATA;AAYL;AACAykB,gBAAY,EAAE,EAbT;AAcL/Z,SAAK,EAAE;AACL1K,mBAAa,EAAE,CAAC,KAAD;AADV,KAdF;AAiBL;AACAwlB,UAAM,EAAE,EAlBH;AAmBL;AACAjW,eAAW,EAAE,EApBR;AAqBLkW,gBAAY,EAAE,EArBT;AAsBL;AACAX,cAAU,EAAE,EAvBP;AAwBLG,WAAO,EAAE,EAxBJ;AAyBLC,mBAAe,EAAE;AAzBZ,GAhLM;AA4MbQ,WAAS,EAAE;AACThjB,QAAI,EAAE;AACJjC,cAAQ,EAAE;AADN,KADG;AAITklB,gBAAY,EAAE;AACZllB,cAAQ,EAAE;AADE,KAJL;AAOT;AACAmlB,YAAQ,EAAE,EARD;AAST;AACA/H,SAAK,EAAE,EAVE;AAWTlQ,YAAQ,EAAE,EAXD;AAYTkY,YAAQ,EAAE,EAZD;AAaTC,kBAAc,EAAE,EAbP;AAcTC,oBAAgB,EAAE;AAdT,GA5ME;AA6NbC,QAAM,EAAE;AACNtjB,QAAI,EAAE;AACJjC,cAAQ,EAAE;AADN,KADA;AAIN5E,SAAK,EAAE;AACL4E,cAAQ,EAAE;AADL,KAJD;AAON;AACAod,SAAK,EAAE,EARD;AASNlQ,YAAQ,EAAE,EATJ;AAUNkY,YAAQ,EAAE,EAVJ;AAWNC,kBAAc,EAAE,EAXV;AAYNC,oBAAgB,EAAE;AAZZ,GA7NK;AA4ObE,SAAO,EAAE;AACPvjB,QAAI,EAAE;AACJjC,cAAQ,EAAE;AADN,KADC;AAIPylB,cAAU,EAAE;AACV1lB,kBAAY,EAAE;AADJ,KAJL;AAOP2lB,0BAAsB,EAAE;AACtB;AACA;AACA;AACA3lB,kBAAY,EAAE;AAJQ,KAPjB;AAaP4lB,uBAAmB,EAAE;AACnB5lB,kBAAY,EAAE;AADK,KAbd;AAgBP6lB,qBAAiB,EAAE;AACjB;AACA;AACA;AACA;AACA7lB,kBAAY,EAAE;AALG,KAhBZ;AAuBP8lB,eAAW,EAAE;AAvBN,GA5OI;AAsQbC,gBAAc,EAAE;AACd7jB,QAAI,EAAE;AACJjC,cAAQ,EAAE;AADN,KADQ;AAId+lB,YAAQ,EAAE;AACR/lB,cAAQ,EAAE;AADF,KAJI;AAOdkC,QAAI,EAAE;AACJ;AACAnC,kBAAY,EAAE;AAFV,KAPQ;AAWdimB,UAAM,EAAE;AACN;AACAjmB,kBAAY,EAAE;AAFR,KAXM;AAed;AACAqd,SAAK,EAAE,EAhBO;AAiBdlQ,YAAQ,EAAE,EAjBI;AAkBdkY,YAAQ,EAAE,EAlBI;AAmBdC,kBAAc,EAAE,EAnBF;AAoBdC,oBAAgB,EAAE;AApBJ,GAtQH;AA6RbvjB,SAAO,EAAE;AACPkkB,uBAAmB,EAAE;AACnBjmB,cAAQ,EAAE,KADS;AAEnBD,kBAAY,EAAE;AAFK,KADd;AAKPmmB,UAAM,EAAE;AACNlmB,cAAQ,EAAE,KADJ;AAEND,kBAAY,EAAE;AAFR,KALD;AASPomB,WAAO,EAAE;AACPnmB,cAAQ,EAAE;AADH;AATF,GA7RI;AA2Sb2kB,SAAO,EAAE;AACPyB,WAAO,EAAE;AACP;AACA;AACA;AACArmB,kBAAY,EAAE;AAJP,KADF;AAOP0lB,cAAU,EAAE;AACV;AACA;AACA1lB,kBAAY,EAAE;AAHJ,KAPL;AAYP+J,cAAU,EAAE;AACV;AACA;AACA/J,kBAAY,EAAE;AAHJ;AAZL,GA3SI;;AA8Tb;;;AAGA2kB,YAAU,EAAE;AACV2B,cAAU,EAAE;AACVrmB,cAAQ,EAAE;AADA,KADF;AAIVqkB,cAAU,EAAE;AACVrkB,cAAQ,EAAE,IADA;AAEVD,kBAAY,EAAE;AAFJ,KAJF;AAQVumB,gBAAY,EAAE;AACZtmB,cAAQ,EAAE,IADE;AAEZD,kBAAY,EAAE;AAFF,KARJ;AAYVwmB,gBAAY,EAAE;AACZvmB,cAAQ,EAAE,IADE;AAEZwmB,cAAQ,EAAE;AACRxmB,gBAAQ,EAAE,IADF;AAERD,oBAAY,EAAE;AAFN,OAFE;AAMZ0mB,aAAO,EAAE;AACPzmB,gBAAQ,EAAE,IADH;AAEPD,oBAAY,EAAE;AAFP,OANG;AAUZ2mB,aAAO,EAAE;AACP1mB,gBAAQ,EAAE,IADH;AAEPD,oBAAY,EAAE;AAFP,OAVG;AAcZ4mB,aAAO,EAAE;AACP3mB,gBAAQ,EAAE,IADH;AAEPD,oBAAY,EAAE;AAFP,OAdG;AAkBZ6mB,cAAQ,EAAE;AACR5mB,gBAAQ,EAAE,IADF;AAERD,oBAAY,EAAE;AAFN;AAlBE,KAZJ;AAmCV8mB,WAAO,EAAE,EAnCC;AAoCVC,aAAS,EAAE;AACT/mB,kBAAY,EAAE;AADL;AApCD,GAjUC;AA0WbgnB,sBAAoB,EAAE;AACpBzc,QAAI,EAAE;AACJvK,kBAAY,EAAE;AADV,KADc;AAIpB0lB,cAAU,EAAE;AACVzlB,cAAQ,EAAE,IADA;AAEVD,kBAAY,EAAE;AAFJ;AAJQ,GA1WT;AAoXbinB,qBAAmB,EAAE;AACnBC,UAAM,EAAE;AACNjnB,cAAQ,EAAE,IADJ;AAEND,kBAAY,EAAE;AAFR,KADW;AAKnBykB,WAAO,EAAE;AACPxkB,cAAQ,EAAE,IADH;AAEPD,kBAAY,EAAE;AAFP;AALU,GApXR;AA+XbmnB,uBAAqB,EAAE;AACrBhlB,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KADe;AAIrBmnB,gBAAY,EAAE;AACZnnB,cAAQ,EAAE,IADE;AAEZD,kBAAY,EAAE;AAFF,KAJO;AAQrB0lB,cAAU,EAAE;AACVzlB,cAAQ,EAAE,IADA;AAEVD,kBAAY,EAAE;AAFJ;AARS,GA/XV;AA6YbqnB,oBAAkB,EAAE;AAClBC,aAAS,EAAE;AACTrnB,cAAQ,EAAE;AADD,KADO;AAIlBqmB,cAAU,EAAE;AACVrmB,cAAQ,EAAE,IADA;AAEVD,kBAAY,EAAE;AAFJ,KAJM;AAQlBskB,cAAU,EAAE;AACVrkB,cAAQ,EAAE,IADA;AAEVD,kBAAY,EAAE;AAFJ;AARM,GA7YP;;AA2Zb;;;AAGAunB,UAAQ,EAAE;AACRtgB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADI;AAIRkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJE;AAORunB,YAAQ,EAAE;AACRxnB,kBAAY,EAAE;AADN;AAPF,GA9ZG;AA0aboW,MAAI,EAAE;AACJnP,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADA;AAIJkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJF;AAOJwnB,WAAO,EAAE,CACP;AADO,KAPL;AAUJrR,QAAI,EAAE;AACJ;AACApW,kBAAY,EAAE;AAFV,KAVF;AAcJ0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAdH;AAiBJ2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KAjBJ;AAoBJ0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KApBL;AAuBJ2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AAvBN,GA1aO;AAscb4X,OAAK,EAAE;AACL3Q,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADC;AAILkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJD;AAOL2nB,OAAG,EAAE;AACH;AACA;AACA;AACA5nB,kBAAY,EAAE;AAJX,KAPA;AAaL6nB,iBAAa,EAAE;AACb;AACA;AACA7nB,kBAAY,EAAE;AAHD,KAbV;AAkBL0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAlBF;AAqBL2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KArBH;AAwBLynB,WAAO,EAAE,CACP;AADO,KAxBJ;AA2BLC,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KA3BJ;AA8BL2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AA9BL,GAtcM;AAyeb8nB,KAAG,EAAE;AACH7gB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADD;AAIHkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJH;AAOH8nB,WAAO,EAAE;AACPvoB,mBAAa,EAAE,CAAC,KAAD;AADR,KAPN;AAUHulB,OAAG,EAAE;AACHvlB,mBAAa,EAAE,CAAC,SAAD;AADZ,KAVF;AAaHkH,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAbJ;AAgBH2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KAhBL;AAmBHynB,WAAO,EAAE,CACP;AADO,KAnBN;AAsBHO,WAAO,EAAE;AACPhoB,kBAAY,EAAE;AADP,KAtBN;AAyBH0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KAzBN;AA4BH2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AA5BP,GAzeQ;AA0gBbioB,QAAM,EAAE;AACNhhB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADE;AAINkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJA;AAONioB,UAAM,EAAE;AACNjoB,cAAQ,EAAE;AADJ,KAPF;AAUNmW,QAAI,EAAE;AACJpW,kBAAY,EAAE;AADV,KAVA;AAaN0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAbD;AAgBN2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KAhBF;AAmBNmoB,YAAQ,EAAE;AACRnoB,kBAAY,EAAE;AADN,KAnBJ;AAsBN0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KAtBH;AAyBN2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AAzBJ,GA1gBK;AAwiBbooB,UAAQ,EAAE;AACRnhB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADI;AAIRkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJE;AAORmW,QAAI,EAAE;AACJpW,kBAAY,EAAE;AADV,KAPE;AAURqoB,UAAM,EAAE;AACNroB,kBAAY,EAAE;AADR,KAVA;AAaR0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAbC;AAgBR2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KAhBA;AAmBRgmB,YAAQ,EAAE;AACRxmB,mBAAa,EAAE,CAAC,cAAD,EAAiB,QAAjB;AADP,KAnBF;AAsBR8oB,kBAAc,EAAE;AACd;AACA;AACAtoB,kBAAY,EAAE;AAHA,KAtBR;AA2BRkoB,UAAM,EAAE;AACN;AACA1oB,mBAAa,EAAE,CAAC,UAAD;AAFT,KA3BA;AA+BR2lB,gBAAY,EAAE;AACZ;AACA;AACA3lB,mBAAa,EAAE,CAAC,UAAD;AAHH,KA/BN;AAoCR2oB,YAAQ,EAAE;AACRnoB,kBAAY,EAAE;AADN,KApCF;AAuCR0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KAvCD;AA0CR2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AA1CF,GAxiBG;AAulBbuoB,QAAM,EAAE;AACNthB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADE;AAINkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJA;AAONrD,OAAG,EAAE;AACHqD,cAAQ,EAAE;AADP,KAPC;AAUNtD,OAAG,EAAE;AACHsD,cAAQ,EAAE;AADP,KAVC;AAaNuoB,SAAK,EAAE;AACLvoB,cAAQ,EAAE;AADL,KAbD;AAgBNic,SAAK,EAAE;AACLlc,kBAAY,EAAE;AADT,KAhBD;AAmBNyoB,iBAAa,EAAE;AACbzoB,kBAAY,EAAE,KADD,CACO;;AADP,KAnBT;AAsBNqc,aAAS,EAAE,EAtBL;AAuBNqM,eAAW,EAAE,EAvBP;AAwBNpM,UAAM,EAAE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACAtc,kBAAY,EAAE;AARR,KAxBF;AAkCN0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAlCD;AAqCN2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KArCF;AAwCN2oB,gBAAY,EAAE,EAxCR;AAyCN;AACA3C,YAAQ,EAAE;AACR;AACAxmB,mBAAa,EAAE,CAAC,cAAD,EAAiB,QAAjB;AAFP,KA1CJ;AA8CN8oB,kBAAc,EAAE;AACd;AACA;AACAtoB,kBAAY,EAAE;AAHA,KA9CV;AAmDNkoB,UAAM,EAAE;AACN1oB,mBAAa,EAAE,CAAC,UAAD;AADT,KAnDF;AAsDN2lB,gBAAY,EAAE;AACZ;AACA;AACA;AACA3lB,mBAAa,EAAE,CAAC,UAAD;AAJH,KAtDR;AA4DN2oB,YAAQ,EAAE;AACRnoB,kBAAY,EAAE;AADN,KA5DJ;AA+DN0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KA/DH;AAkEN2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AAlEJ,GAvlBK;AA8pBb4oB,UAAQ,EAAE;AACR3hB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADI;AAIRkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJE;AAORod,SAAK,EAAE;AACLrd,kBAAY,EAAE;AADT,KAPC;AAUR6oB,WAAO,EAAE;AACP;AACA7oB,kBAAY,EAAE;AAFP,KAVD;AAcR6J,WAAO,EAAE;AACP7J,kBAAY,EAAE;AADP,KAdD;AAiBRgmB,YAAQ,EAAE,CACR;AACA;AAFQ,KAjBF;AAqBRsC,kBAAc,EAAE;AACd;AACA;AACAtoB,kBAAY,EAAE;AAHA,KArBR;AA0BRmoB,YAAQ,EAAE;AACRnoB,kBAAY,EAAE;AADN,KA1BF;AA6BR0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KA7BD;AAgCR2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AAhCF,GA9pBG;AAmsBb8oB,gBAAc,EAAE;AACd1S,QAAI,EAAE;AACJpW,kBAAY,EAAE;AADV,KADQ;AAIdkoB,UAAM,EAAE;AACN;AACA1oB,mBAAa,EAAE,CAAC,OAAD;AAFT,KAJM;AAQdnE,SAAK,EAAE;AACL;AACAmE,mBAAa,EAAE,CAAC,QAAD;AAFV,KARO;AAYdupB,YAAQ,EAAE;AACR;AACA;AACA;AACAvpB,mBAAa,EAAE,CAAC,OAAD;AAJP,KAZI;AAkBd2oB,YAAQ,EAAE;AAlBI,GAnsBH;AAwtBba,OAAK,EAAE;AACL/hB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADC;AAILkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJD;AAOLgpB,SAAK,EAAE;AACL;AACAjpB,kBAAY,EAAE;AAFT,KAPF;AAWLiW,eAAW,EAAE;AACXjW,kBAAY,EAAE;AADH,KAXR;AAcLqd,SAAK,EAAE;AACLrd,kBAAY,EAAE;AADT,KAdF;AAiBL6oB,WAAO,EAAE;AACP;AACA7oB,kBAAY,EAAE;AAFP,KAjBJ;AAqBL6J,WAAO,EAAE;AACP7J,kBAAY,EAAE;AADP,KArBJ;AAwBLgmB,YAAQ,EAAE,CACR;AACA;AAFQ,KAxBL;AA4BLsC,kBAAc,EAAE;AACd;AACA;AACAtoB,kBAAY,EAAE;AAHA,KA5BX;AAiCLmoB,YAAQ,EAAE;AACRnoB,kBAAY,EAAE;AADN,KAjCL;AAoCL0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KApCJ;AAuCL2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AAvCL,GAxtBM;AAowBbkpB,aAAW,EAAE;AACX9S,QAAI,EAAE;AACJpW,kBAAY,EAAE;AADV,KADK;AAIXkoB,UAAM,EAAE;AACN;AACA1oB,mBAAa,EAAE,CAAC,OAAD;AAFT,KAJG;AAQXnE,SAAK,EAAE;AACL;AACAmE,mBAAa,EAAE,CAAC,QAAD;AAFV,KARI;AAYXupB,YAAQ,EAAE;AACR;AACA;AACA;AACAvpB,mBAAa,EAAE,CAAC,OAAD;AAJP,KAZC;AAkBX2oB,YAAQ,EAAE;AAlBC,GApwBA;AAyxBbgB,eAAa,EAAE;AACbliB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADS;AAIbkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJO;AAOb+lB,YAAQ,EAAE;AACR/lB,cAAQ,EAAE;AADF,KAPG;AAUbod,SAAK,EAAE;AACLrd,kBAAY,EAAE;AADT,KAVM;AAabqZ,SAAK,EAAE;AACLrZ,kBAAY,EAAE;AADT,KAbM;AAgBbiW,eAAW,EAAE;AACXjW,kBAAY,EAAE;AADH,KAhBA;AAmBb0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAnBM;AAsBb2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KAtBK;AAyBb2oB,gBAAY,EAAE,EAzBD;AA0BbjB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KA1BI;AA6Bb2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AA7BG,GAzxBF;AA2zBbopB,aAAW,EAAE;AACXniB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADO;AAIXkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJK;AAOXrD,OAAG,EAAE;AACHqD,cAAQ,EAAE;AADP,KAPM;AAUXtD,OAAG,EAAE;AACHsD,cAAQ,EAAE;AADP,KAVM;AAaXyG,SAAK,EAAE;AACL;AACA;AACA;AACA1G,kBAAY,EAAE;AAJT,KAbI;AAmBX2G,UAAM,EAAE;AACN;AACA3G,kBAAY,EAAE;AAFR,KAnBG;AAuBXqpB,kBAAc,EAAE;AACdrpB,kBAAY,EAAE;AADA,KAvBL;AA0BXspB,WAAO,EAAE;AACPtpB,kBAAY,EAAE;AACZqZ,aAAK,EAAE,GADK;AAEZgG,cAAM,EAAE,CAFI;AAGZhH,aAAK,EAAE,CAHK;AAIZkR,cAAM,EAAE;AAJI;AADP,KA1BE;AAkCXjN,UAAM,EAAE;AACN;AACA;AACA;AACA;AACA;AACAtc,kBAAY,EAAE;AANR;AAlCG,GA3zBA;AAu2BbwpB,UAAQ,EAAE;AACRviB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADI;AAIRkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJE;AAORic,SAAK,EAAE;AACLlc,kBAAY,EAAE;AADT,KAPC;AAURsc,UAAM,EAAE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACAtc,kBAAY,EAAE;AACZypB,SAAC,EAAE,GADS;AAEZtvB,SAAC,EAAE,GAFS;AAGZuvB,SAAC,EAAE,GAHS;AAIZC,SAAC,EAAE;AAJS;AARR,KAVA;AAyBRtR,SAAK,EAAE;AACLrY,kBAAY,EAAE;AADT,KAzBC;AA4BR0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KA5BC;AA+BR2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KA/BA;AAkCR2oB,gBAAY,EAAE,CACZ;AACA;AACA;AACA;AAJY,KAlCN;AAwCR;AACA;AACA;AACA3C,YAAQ,EAAE;AACR;AACAxmB,mBAAa,EAAE,CAAC,cAAD,EAAiB,QAAjB;AAFP,KA3CF;AA+CR8oB,kBAAc,EAAE;AACd;AACA;AACAtoB,kBAAY,EAAE;AAHA,KA/CR;AAoDRkoB,UAAM,EAAE;AACN1oB,mBAAa,EAAE,CAAC,UAAD;AADT,KApDA;AAuDR2lB,gBAAY,EAAE;AACZ3lB,mBAAa,EAAE,CAAC,UAAD;AADH,KAvDN;AA0DR2oB,YAAQ,EAAE;AACRnoB,kBAAY,EAAE;AADN,KA1DF;AA6DR0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KA7DD;AAgER2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AAhEF,GAv2BG;AA46Bb4pB,gBAAc,EAAE;AACd3iB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADU;AAIdkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJQ;AAOdic,SAAK,EAAE;AACLlc,kBAAY,EAAE;AADT,KAPO;AAUd6pB,cAAU,EAAE;AACV;AACA;AACA;AACA5pB,cAAQ,EAAE;AAJA,KAVE;AAgBdyG,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAhBO;AAmBd2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KAnBM;AAsBdgmB,YAAQ,EAAE;AACR/lB,cAAQ,EAAE;AADF,KAtBI;AAyBdqoB,kBAAc,EAAE;AACd;AACA;AACAtoB,kBAAY,EAAE;AAHA,KAzBF;AA8Bd0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KA9BK;AAiCd2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AAjCI,GA56BH;AAk9Bb8pB,cAAY,EAAE;AACZ7iB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADQ;AAIZkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJM;AAOZ8pB,cAAU,EAAE;AACV;AACA/pB,kBAAY,EAAE;AAFJ,KAPA;AAWZgqB,cAAU,EAAE;AACV;AACAhqB,kBAAY,EAAE;AAFJ,KAXA;AAeZmd,SAAK,EAAE;AACLnd,kBAAY,EAAE;AADT,KAfK;AAkBZiqB,oBAAgB,EAAE;AAChB;AACAjqB,kBAAY,EAAE;AAFE,KAlBN;AAsBZ0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAtBK;AAyBZ2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KAzBI;AA4BZkqB,UAAM,EAAE;AACN;AACAlqB,kBAAY,EAAE;AAFR,KA5BI;AAgCZ0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KAhCG;AAmCZ2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AAnCE,GAl9BD;AA0/BbmqB,OAAK,EAAE;AACLljB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADC;AAILkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJD;AAOLic,SAAK,EAAE;AACLlc,kBAAY,EAAE;AADT,KAPF;AAULylB,WAAO,EAAE;AACP;AACA;AACAjmB,mBAAa,EAAE,CAAC,WAAD,EAAc,mBAAd,EAAmC,qBAAnC;AAHR,KAVJ;AAeL4qB,aAAS,EAAE;AACT5qB,mBAAa,EAAE,CAAC,SAAD;AADN,KAfN;AAkBLqmB,qBAAiB,EAAE;AACjBrmB,mBAAa,EAAE,CAAC,SAAD;AADE,KAlBd;AAqBLomB,uBAAmB,EAAE;AACnBpmB,mBAAa,EAAE,CAAC,SAAD;AADI,KArBhB;AAwBL6qB,cAAU,EAAE;AACVrqB,kBAAY,EAAE;AADJ,KAxBP;AA2BLsqB,eAAW,EAAE;AACXtqB,kBAAY,EAAE;AADH,KA3BR;AA8BLuqB,gBAAY,EAAE;AACZ;AACAvqB,kBAAY,EAAE;AAFF,KA9BT;AAkCLwqB,eAAW,EAAE;AACXxqB,kBAAY,EAAE;AADH,KAlCR;AAqCLyqB,mBAAe,EAAE;AACfzqB,kBAAY,EAAE;AADC,KArCZ;AAwCL0qB,cAAU,EAAE;AACV1qB,kBAAY,EAAE;AADJ,KAxCP;AA2CL0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KA3CF;AA8CL2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KA9CH;AAiDL0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KAjDJ;AAoDL2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AApDL,GA1/BM;AAmjCb2qB,OAAK,EAAE;AACL1jB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADC;AAILkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJD;AAOLwlB,WAAO,EAAE;AACP;AACA;AACAjmB,mBAAa,EAAE,CAAC,YAAD,EAAe,mBAAf,EAAoC,qBAApC;AAHR,KAPJ;AAYLorB,cAAU,EAAE;AACVprB,mBAAa,EAAE,CAAC,SAAD;AADL,KAZP;AAeLqmB,qBAAiB,EAAE;AACjBrmB,mBAAa,EAAE,CAAC,SAAD;AADE,KAfd;AAkBLomB,uBAAmB,EAAE;AACnBpmB,mBAAa,EAAE,CAAC,SAAD;AADI,KAlBhB;AAqBLqrB,oBAAgB,EAAE;AAChB7qB,kBAAY,EAAE;AADE,KArBb;AAwBL8qB,yBAAqB,EAAE;AACrB9qB,kBAAY,EAAE;AADO,KAxBlB;AA2BL+qB,qBAAiB,EAAE;AACjB/qB,kBAAY,EAAE;AADG,KA3Bd;AA8BLgrB,iBAAa,EAAE;AACbhrB,kBAAY,EAAE;AADD,KA9BV;AAiCLirB,cAAU,EAAE;AACVjrB,kBAAY,EAAE;AADJ,KAjCP;AAoCLkrB,cAAU,EAAE;AACVlrB,kBAAY,EAAE;AADJ,KApCP;AAuCLmrB,yBAAqB,EAAE;AACrBnrB,kBAAY,EAAE;AADO,KAvClB;AA0CLorB,qCAAiC,EAAE;AACjCprB,kBAAY,EAAE;AADmB,KA1C9B;AA6CLqrB,oBAAgB,EAAE;AAChBrrB,kBAAY,EAAE;AADE,KA7Cb;AAgDLsrB,gBAAY,EAAE;AACZtrB,kBAAY,EAAE;AADF,KAhDT;AAmDLurB,qBAAiB,EAAE;AACjBvrB,kBAAY,EAAE;AADG,KAnDd;AAsDLwrB,yBAAqB,EAAE;AACrBxrB,kBAAY,EAAE;AADO,KAtDlB;AAyDLyrB,6BAAyB,EAAE;AACzBzrB,kBAAY,EAAE;AADW,KAzDtB;AA4DL0rB,kBAAc,EAAE;AACd1rB,kBAAY,EAAE;AADA,KA5DX;AA+DL0lB,cAAU,EAAE;AACV1lB,kBAAY,EAAE;AADJ,KA/DP;AAkEL2rB,aAAS,EAAE;AACT3rB,kBAAY,EAAE;AADL,KAlEN;AAqELkc,SAAK,EAAE;AACLlc,kBAAY,EAAE;AADT,KArEF;AAwELyoB,iBAAa,EAAE;AACb;AACAzoB,kBAAY,EAAE;AAFD,KAxEV;AA4EL4rB,gBAAY,EAAE;AACZ;AACA5rB,kBAAY,EAAE;AAFF,KA5ET;AAgFL6rB,iBAAa,EAAE;AACb;AACA7rB,kBAAY,EAAE;AAFD,KAhFV;AAoFL8rB,aAAS,EAAE;AACT9rB,kBAAY,EAAE;AADL,KApFN;AAuFL0G,SAAK,EAAE;AACL1G,kBAAY,EAAE;AADT,KAvFF;AA0FL2G,UAAM,EAAE;AACN3G,kBAAY,EAAE;AADR,KA1FH;AA6FL+Q,UAAM,EAAE;AACN/Q,kBAAY,EAAE;AADR,KA7FH;AAgGL+rB,QAAI,EAAE;AACJ/rB,kBAAY,EAAE;AADV,KAhGD;AAmGLgsB,QAAI,EAAE;AACJhsB,kBAAY,EAAE;AADV,KAnGD;AAsGLgR,UAAM,EAAE;AACNhR,kBAAY,EAAE;AADR,KAtGH;AAyGLisB,QAAI,EAAE;AACJjsB,kBAAY,EAAE;AADV,KAzGD;AA4GLksB,QAAI,EAAE;AACJlsB,kBAAY,EAAE;AADV,KA5GD;AA+GLmsB,cAAU,EAAE;AACVnsB,kBAAY,EAAE;AADJ,KA/GP;AAkHLosB,cAAU,EAAE;AACVpsB,kBAAY,EAAE;AADJ,KAlHP;AAqHLqsB,kBAAc,EAAE;AACdrsB,kBAAY,EAAE;AADA,KArHX;AAwHLssB,kBAAc,EAAE;AACdtsB,kBAAY,EAAE;AADA,KAxHX;AA2HLusB,cAAU,EAAE;AACVvsB,kBAAY,EAAE;AADJ,KA3HP;AA8HLwsB,cAAU,EAAE;AACVxsB,kBAAY,EAAE;AADJ,KA9HP;AAiILuhB,SAAK,EAAE;AACLvhB,kBAAY,EAAE;AADT,KAjIF;AAoILysB,QAAI,EAAE;AACJzsB,kBAAY,EAAE;AADV,KApID;AAuIL0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KAvIJ;AA0IL0sB,cAAU,EAAE;AACV1sB,kBAAY,EAAE,CACZ,SADY,EAEZ,SAFY,EAGZ,SAHY;AADJ,KA1IP;AAiJL2sB,gBAAY,EAAE;AACZ3sB,kBAAY,EAAE;AADF,KAjJT;AAoJL4sB,iBAAa,EAAE;AACb5sB,kBAAY,EAAE;AADD,KApJV;AAuJL6sB,aAAS,EAAE;AACT7sB,kBAAY,EAAE;AADL,KAvJN;AA0JL8sB,aAAS,EAAE;AACT9sB,kBAAY,EAAE;AADL,KA1JN;AA6JL2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AA7JL,GAnjCM;AAqtCb+sB,UAAQ,EAAE;AACR9lB,MAAE,EAAE;AACFhH,cAAQ,EAAE;AADR,KADI;AAIRkC,QAAI,EAAE;AACJlC,cAAQ,EAAE;AADN,KAJE;AAOR+lB,YAAQ,EAAE;AACR/lB,cAAQ,EAAE;AADF,KAPF;AAUR+sB,kBAAc,EAAE;AACd;AACA;AACA;AACA;AACAxtB,mBAAa,EAAE,CAAC,eAAD;AALD,KAVR;AAiBR5C,OAAG,EAAE;AACH;AACAoD,kBAAY,EAAE;AAFX,KAjBG;AAqBRrD,OAAG,EAAE;AACH;AACAqD,kBAAY,EAAE;AAFX,KArBG;AAyBRkc,SAAK,EAAE;AACL;AACAlc,kBAAY,EAAE;AAFT,KAzBC;AA6BRmc,WAAO,EAAE;AACP;AACA;AACAnc,kBAAY,EAAE;AAHP,KA7BD;AAkCRsc,UAAM,EAAE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAtc,kBAAY,EAAE;AAhBR,KAlCA;AAoDRqZ,SAAK,EAAE;AACL;AACA;AACA;AACArZ,kBAAY,EAAE;AAJT,KApDC;AA0DRqR,aAAS,EAAE;AACT;AACA;AACArR,kBAAY,EAAE;AAHL,KA1DH;AA+DRuc,eAAW,EAAE;AACX;AACA;AACA;AACA;AACA;AACAvc,kBAAY,EAAE;AANH,KA/DL;AAuERitB,iBAAa,EAAE;AACb;AACA;AACA;AACA;AACA;AACAztB,mBAAa,EAAE,CAAC,gBAAD;AANF,KAvEP;AA+ERyc,YAAQ,EAAE;AACR;AACA;AACAjc,kBAAY,EAAE;AAHN,KA/EF;AAoFR2G,UAAM,EAAE;AACN;AACA;AACA3G,kBAAY,EAAE;AAHR,KApFA;AAyFRoc,YAAQ,EAAE;AACR;AACApc,kBAAY,EAAE;AAFN,KAzFF;AA6FRqc,aAAS,EAAE;AACT;AACArc,kBAAY,EAAE;AAFL,KA7FH;AAiGR0nB,WAAO,EAAE;AACP1nB,kBAAY,EAAE;AADP,KAjGD;AAoGR2nB,YAAQ,EAAE;AACR3nB,kBAAY,EAAE;AADN;AApGF,GArtCG;AA8zCbktB,SAAO,EAAE;AACPC,aAAS,EAAE;AACT;AACA;AACAntB,kBAAY,EAAE;AAHL,KADJ;AAMPoW,QAAI,EAAE;AACJpW,kBAAY,EAAE;AADV,KANC;AASPotB,YAAQ,EAAE;AACR;AACA;AACAptB,kBAAY,EAAE;AAHN;AATH;AA9zCI,CAAf,E;;ACAA;AACe,4DAASqtB,YAAT,EAAuB;AACpC,SAAOC,6BAAM,CAACC,OAAP,GAAiB,aAAjB,GAAiCF,YAAxC;AACD;AAAA,C;;ACHD;;AAEA,SAASG,cAAT,CAAwBxT,QAAxB,EAAkCyT,qBAAlC,EAAyD;AACvD,MAAIruB,QAAQ,GAAGquB,qBAAqB,CAACrK,WAAtB,CAAkCG,YAAjD;AACA,MAAI,CAACnkB,QAAL,EAAe;AAEf,MAAIsuB,kBAAkB,GAAGxtB,CAAC,CAACmgB,GAAF,CAAMjhB,QAAN,EAAgBuuB,IAAhB,CAAqB,UAASC,OAAT,EAAkB;AAC9D,QAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiCA,OAAO,GAAGC,IAAI,CAACC,KAAL,CAAWF,OAAX,CAAV;AACjCG,oBAAgB,CAAC/T,QAAD,EAAW4T,OAAX,EAAoBH,qBAAqB,CAACrK,WAAtB,CAAkCD,IAAtD,EACdsK,qBADc,CAAhB;AAED,GAJwB,CAAzB;AAMA,MAAIO,mBAAmB,GAAG,IAAI9tB,CAAC,CAAC+tB,QAAN,EAA1B;AACAR,uBAAqB,CAAC7U,EAAtB,CAAyB,gCAAzB,EAA2D,YAAW;AACpEoV,uBAAmB,CAACE,OAApB;AACD,GAFD;AAIAhuB,GAAC,CAACiuB,IAAF,CAAOT,kBAAP,EAA2BM,mBAA3B,EAAgDL,IAAhD,CAAqD,YAAW;AAC9DS,iBAAa,CAACpU,QAAD,EAAWyT,qBAAqB,CAACrK,WAAtB,CAAkCD,IAA7C,CAAb;AACD,GAFD;AAGD,C,CAED;;;AAEA,SAASkL,SAAT,CAAmBC,WAAnB,EAAgC;AAC9B,MAAIC,GAAG,GAAGD,WAAW,CAAC3kB,KAAZ,CAAkB,GAAlB,CAAV,CAD8B,CAE9B;;AACA,SAAO6kB,aAAY,CAAC,WAAWD,GAAG,CAACA,GAAG,CAAChzB,MAAJ,GAAa,CAAd,CAAH,CAAoBkzB,WAApB,EAAX,GAA+C,MAAhD,CAAnB;AACD;;AAED,SAASL,aAAT,CAAuBpU,QAAvB,EAAiC0U,WAAjC,EAA8C;AAC5C,MAAIC,KAAK,GAAGzuB,CAAC,CAAC8Z,QAAD,CAAb;AACA2U,OAAK,CAACnmB,QAAN,CAAe,WAAf;AACAmmB,OAAK,CAAC7nB,GAAN,CAAU,kBAAV,EAA8B,UAAUunB,SAAS,CAACK,WAAD,CAAnB,GAAmC,IAAjE;AACD;;AAED,SAASX,gBAAT,CAA0B/T,QAA1B,EAAoCuJ,YAApC,EAAkDmL,WAAlD,EAA+DjB,qBAA/D,EAAsF;AACpF,MAAIjmB,KAAK,GAAG,EAAZ;AACA3L,QAAM,CAAC2b,IAAP,CAAY+L,YAAZ,EAA0B9L,OAA1B,CAAkC,UAASC,GAAT,EAAc;AAC9C,QAAIA,GAAG,KAAKgX,WAAZ,EAAyB;AACzBlnB,SAAK,CAACkQ,GAAD,CAAL,GAAa;AACXxV,UAAI,EAAEwV,GADK;AAEX1L,eAAS,EAAE,UAAU0L;AAFV,KAAb;AAID,GAND;AAOA,MAAI7b,MAAM,CAAC2b,IAAP,CAAYhQ,KAAZ,EAAmBjM,MAAnB,KAA8B,CAAlC,EAAqC,OAT+C,CAUpF;AACA;AACA;;AACA2E,GAAC,CAAC8Z,QAAD,CAAD,CAAYpB,EAAZ,CAAe,OAAf,EAAwB,YAAW;AACjC1Y,KAAC,CAAC8Z,QAAD,CAAD,CAAY4U,WAAZ,GADiC,CACN;AAC5B,GAFD;AAGA1uB,GAAC,CAAC0uB,WAAF,CAAc,SAAd,EAAyB5U,QAAzB;AACA9Z,GAAC,CAAC0uB,WAAF,CAAc;AACZ5U,YAAQ,EAAEA,QADE;AAEZ7S,YAAQ,EAAE,yBAFE;AAGZ6E,aAAS,EAAE,WAHC;AAIZ6iB,WAAO,EAAE,MAJG;AAIK;AACjBC,UAAM,EAAE,IALI;AAKE;AACdC,qBAAiB,EAAE,2BAASC,KAAT,EAAgB;AACjC;AACA;AACA;AACAA,WAAK,CAACloB,GAAN,CAAU,SAAV,EAAqB,OAArB,EAA8Bd,QAA9B,CAAuC;AACrCipB,UAAE,EAAE,WADiC;AAErCC,UAAE,EAAE,cAFiC;AAGrCC,UAAE,EAAE,IAHiC;AAIrC9P,cAAM,EAAE,KAJ6B;AAKrC+P,iBAAS,EAAE;AAL0B,OAAvC,EAMGtoB,GANH,CAMO,SANP,EAMkB,MANlB;AAOD,KAjBW;AAkBZuoB,YAAQ,EAAE,kBAAS3X,GAAT,EAAc;AACtB+V,2BAAqB,CAAC6B,oBAAtB,CAA2C/L,YAAY,CAAC7L,GAAD,CAAvD;AACD,KApBW;AAqBZlQ,SAAK,EAAEA;AArBK,GAAd;AAuBA3L,QAAM,CAAC2b,IAAP,CAAYhQ,KAAZ,EAAmBiQ,OAAnB,CAA2B,UAASC,GAAT,EAAc;AACvCxX,KAAC,CAAC,6BAA6BwX,GAA9B,CAAD,CAAoC5Q,GAApC,CAAwC,kBAAxC,EAA4D,UAAUunB,SAAS,CAAC3W,GAAD,CAAnB,GAA2B,IAAvF;AACD,GAFD;AAGD;;AAEc8V,kEAAf,E;;AClFA;;;;AAIA,IAAI+B,WAAW,GAAG,SAAdA,WAAc,CAASC,QAAT,EAAmB;AACnC;AACA;AACA,MAAI,OAAOA,QAAQ,CAACC,GAAhB,KAAwB,UAA5B,EAAwC;AACtC,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD,CAPD;AASA;;;;;;;;;;;AASA,SAASC,aAAT,CAAuBC,SAAvB,EAAkC;AAChC,OAAKC,UAAL,GAAkBD,SAAlB;AACA,OAAKE,mBAAL,GAA2B,EAA3B;;AAEA,OAAKC,WAAL,GAAmB,UAASC,SAAT,EAAoB;AACrC,WAAOA,SAAS,GAAG,GAAZ,GAAkB,KAAKH,UAA9B;AACD,GAFD;AAGD;AAED;;;;;;;;;AAOAF,aAAa,CAAC5zB,SAAd,CAAwBk0B,MAAxB,GAAiC,UAASC,OAAT,EAAkBF,SAAlB,EAA6BG,IAA7B,EAAmC;AAClE,MAAIC,QAAQ,GAAG,KAAKL,WAAL,CAAiBC,SAAjB,CAAf;;AACA,MAAIK,eAAe,GAAG;AACpBH,WAAO,EAAEA,OADW;AAEpBF,aAAS,EAAEI;AAFS,GAAtB;AAIAF,SAAO,CAACrX,EAAR,CAAWuX,QAAX,EAAqBD,IAArB;AACA,OAAKL,mBAAL,CAAyB3xB,IAAzB,CAA8BkyB,eAA9B;AACD,CARD;AAUA;;;;;;AAIAV,aAAa,CAAC5zB,SAAd,CAAwBiC,MAAxB,GAAiC,UAASyxB,QAAT,EAAmB;AAClD,MAAID,WAAW,CAACC,QAAD,CAAf,EAA2B;AACzBA,YAAQ,CAACS,OAAT,CAAiBrX,EAAjB,CAAoB4W,QAAQ,CAACO,SAA7B,EAAwC,IAAxC,EADyB,CACsB;AAChD,GAFD,MAEO;AACLP,YAAQ,CAACS,OAAT,CAAiBR,GAAjB,CAAqBD,QAAQ,CAACO,SAA9B,EADK,CACqC;AAC3C;AACF,CAND;AAQA;;;;;;AAIAL,aAAa,CAAC5zB,SAAd,CAAwBu0B,SAAxB,GAAoC,YAAW;AAC7C,SAAO,KAAKR,mBAAL,CAAyBt0B,MAAzB,GAAkC,CAAzC,EAA4C;AAC1C,SAAKwC,MAAL,CAAY,KAAK8xB,mBAAL,CAAyB/O,GAAzB,EAAZ;AACD;AACF,CAJD;;AAMe4O,gEAAf,E;;ACtEA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA;AACA,SAASY,WAAT,CAAqBC,IAArB,EAA2B;AACzB,SAAO,GAAGj0B,KAAH,CAASN,IAAT,CAAcu0B,IAAd,CAAP;AACD;;AAEc,SAASC,eAAT,GAA2B;AACxC,MAAI1W,GAAJ;AAAA,MACE2W,UADF;AAAA,MAEE1vB,KAFF;AAAA,MAIE2vB,SAAS,GAAG,KAJd;AAAA,MAKEC,gBAAgB,GAAG/S,EAAE,CAAC/f,GAAH,EALrB;;AAOA,WAAS2kB,IAAT,CAAcoO,QAAd,EAAwB;AACtB,QAAIt1B,CAAJ,EAAOc,GAAP;AAEA2E,SAAK,GAAG6vB,QAAR;AAEAH,cAAU,GAAG7S,EAAE,CAACiT,QAAH,CAAYh0B,KAAZ,CAAkB,IAAlB,EAAwBkE,KAAxB,CAAb,CALsB,CAOtB;;AACA,SAAKzF,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG2E,KAAK,CAACxF,MAAxB,EAAgCD,CAAC,GAAGc,GAApC,EAAyCd,CAAC,EAA1C,EAA8C;AAC5Cwe,SAAG,CAAC/Y,KAAK,CAACzF,CAAD,CAAN,CAAH,GAAgBw1B,aAAa,CAAC/vB,KAAK,CAACzF,CAAD,CAAN,CAA7B;AACD;AACF;;AAED,WAASw1B,aAAT,CAAuB5uB,IAAvB,EAA6B;AAC3B,WAAO,YAAW;AAChB,UAAI,CAACwuB,SAAL,EAAgB;AACdD,kBAAU,CAACvuB,IAAD,CAAV,CAAiBrF,KAAjB,CAAuB4zB,UAAvB,EAAmClxB,SAAnC;AACD,OAFD,MAEO;AACLoxB,wBAAgB,CAACI,GAAjB,CAAqB7uB,IAArB;AACD;AACF,KAND;AAOD;;AAED,WAAS8uB,QAAT,CAAkBC,QAAlB,EAA4B;AAC1B,WAAO,YAAW;AAChBR,gBAAU,CAACQ,QAAD,CAAV,CAAqBp0B,KAArB,CAA2B4zB,UAA3B,EAAuClxB,SAAvC;AACD,KAFD;AAGD,GAnCuC,CAqCxC;;;AACAua,KAAG,GAAG;AACJ;;AAEA;;;;AAIAlB,MAAE,EAAEoY,QAAQ,CAAC,IAAD,CAPR;AASJ;AAEAE,WAAO,EAAE,iBAASC,MAAT,EAAiB;AACxBA,YAAM,CAACvY,EAAP,GAAYkB,GAAG,CAAClB,EAAhB;AACAuY,YAAM,CAACC,cAAP,GAAwBtX,GAAG,CAACsX,cAA5B;AACD,KAdG;;AAgBJ;;;;;;AAMAC,iBAAa,EAAE,yBAAW;AACxB,UAAI9xB,SAAS,CAAChE,MAAd,EAAsB;AACpBinB,YAAI,CAACzhB,KAAK,CAACuwB,MAAN,CAAahB,WAAW,CAAC/wB,SAAD,CAAxB,CAAD,CAAJ;AACD;AACF,KA1BG;;AA4BJ;;;;;AAKAgyB,cAAU,EAAE,sBAAW;AACrBb,eAAS,GAAG,IAAZ;AACD,KAnCG;;AAqCJ;;;AAGAc,YAAQ,EAAE,oBAAW;AACnBd,eAAS,GAAG,KAAZ;AACA5W,SAAG,CAAC2X,KAAJ;AACD,KA3CG;;AA6CJ;;;;AAIAA,SAAK,EAAE,iBAAW;AAChBd,sBAAgB,CAAClZ,OAAjB,CAAyB,UAASsY,SAAT,EAAoB;AAC3CU,kBAAU,CAACV,SAAD,CAAV;AACD,OAFD,EADgB,CAIhB;;AACAY,sBAAgB,GAAG/S,EAAE,CAAC/f,GAAH,EAAnB;AACD,KAvDG;;AAyDJ;;;;AAIAuzB,kBAAc,EAAE,wBAASlJ,MAAT,EAAiB;AAC/BwI,eAAS,GAAG,IAAZ;AACAxI,YAAM;AACNwI,eAAS,GAAG,KAAZ,CAH+B,CAI/B;;AACAC,sBAAgB,GAAG/S,EAAE,CAAC/f,GAAH,EAAnB;AACD;AAnEG,GAAN;AAsEA2kB,MAAI,CAAC8N,WAAW,CAAC/wB,SAAD,CAAZ,CAAJ;AAEA,SAAOua,GAAP;AACD;AAAA,C;;AC9ID;AACA;AACA;AACA;AACA,IAAI4X,YAAY,GAAG,CAAnB;AAEA;;;;;;;;;;;;AAWA,SAASC,OAAT,CAAiBxE,SAAjB,EAA4ByE,sBAA5B,EAAoDC,SAApD,EAA+D;AAC7D,OAAKD,sBAAL,GAA8BA,sBAA9B;AACA,OAAKE,MAAL,GAAcF,sBAAsB,CAACG,QAAvB,EAAd;AACA,OAAKpC,SAAL,GAAiB,YAAa,EAAE+B,YAAhC;AACA,OAAKvE,SAAL,GAAiB6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACqmB,OAAxC,EAAiD0H,SAAjD,CAAjB;AACA,OAAKjrB,IAAL,GAAY,KAAKirB,SAAL,CAAejrB,IAA3B;AACA,OAAKwjB,UAAL,GAAkB,KAAKyH,SAAL,CAAezH,UAAf,IAA6B,EAA/C;AACA,OAAKE,mBAAL,GAA2B,KAAKuH,SAAL,CAAevH,mBAA1C;AACA,OAAKC,iBAAL,GAAyB,KAAKsH,SAAL,CAAetH,iBAAxC,CAR6D,CAS7D;;AACA,OAAKC,WAAL,GAAmB,KAAKqH,SAAL,CAAerH,WAAf,GACjB5lB,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB,KAAK0vB,SAAL,CAAerH,WAAlC,CADiB,GACgC,IADnD;AAEA,OAAKmM,KAAL,GAAa,EAAb,CAZ6D,CAa7D;AACA;;AACA,OAAKC,gBAAL,GAAwB,EAAxB;AACA,OAAKC,cAAL,GAAsB,IAAIzC,cAAJ,CAAkB,KAAKC,SAAvB,CAAtB;AACA,OAAKyC,SAAL,GAAiB,IAAI5B,eAAJ,EAAjB;;AAEA,OAAK,IAAI9Y,GAAT,IAAgBia,OAAO,CAACU,MAAxB,EAAgC;AAC9B,SAAKD,SAAL,CAAef,aAAf,CAA6BM,OAAO,CAACU,MAAR,CAAe3a,GAAf,CAA7B;AACD;;AACD,OAAK0a,SAAL,CAAelB,OAAf,CAAuB,IAAvB,EAtB6D,CAwB7D;;;AACA,OAAKoB,SAAL,GAzB6D,CA2B7D;AACA;;AACA,OAAKV,sBAAL,CAA4BW,UAA5B,CAAuC,IAAvC,EAA6CV,SAA7C;AACD;;AAEDF,OAAO,CAACU,MAAR,GAAiB;AACfG,cAAY,EAAE,aADC;AAEfC,gBAAc,EAAE,eAFD;AAGfC,gBAAc,EAAE,eAHD;AAKfC,gBAAc,EAAE,eALD;AAMfC,YAAU,EAAE,WANG;AAQfC,mBAAiB,EAAE,kBARJ;AAUfC,gBAAc,EAAE;AAVD,CAAjB;AAaA;;;;AAIAnB,OAAO,CAAC71B,SAAR,CAAkBi3B,eAAlB,GAAoC,YAAW;AAC7C,MAAIC,OAAO,GAAG,IAAd;AACA,OAAKtN,UAAL,CAAgBjO,OAAhB,CAAwB,UAASnZ,IAAT,EAAe;AACrC00B,WAAO,CAACf,KAAR,CAAc3zB,IAAd,IAAsB,EAAtB;AACD,GAFD;AAGD,CALD;AAOA;;;;;AAGAqzB,OAAO,CAAC71B,SAAR,CAAkBm3B,oBAAlB,GAAyC,YAAW;AAClD,SAAQ,KAAKnB,MAAL,CAAYoB,WAAZ,KAA4B,KAAKC,SAAL,CAAe,KAAKjB,gBAApB,CAApC;AACD,CAFD;AAIA;;;;;AAGAP,OAAO,CAAC71B,SAAR,CAAkBs3B,aAAlB,GAAkC,YAAW;AAC3C,MAAIC,aAAa,GAAG,KAAKlB,cAAzB;AACA,MAAIjoB,KAAK,GAAG,KAAK0nB,sBAAL,CAA4BG,QAA5B,EAAZ;AACA,MAAIiB,OAAO,GAAG,IAAd;;AAEA,MAAIM,eAAe,GAAG,SAAlBA,eAAkB,GAAW;AAC/BN,WAAO,CAACO,QAAR,CAAiB5B,OAAO,CAACU,MAAR,CAAeQ,iBAAhC,EAAmD3oB,KAAK,CAACgpB,WAAN,EAAnD;AACD,GAFD;;AAIAG,eAAa,CAAChD,SAAd,GAT2C,CAShB;;AAE3B,MAAI,KAAKzK,mBAAT,EAA8B;AAC5ByN,iBAAa,CAACrD,MAAd,CAAqB9lB,KAArB,EAA4B,MAA5B,EAAoC,YAAW;AAC7C8oB,aAAO,CAACQ,eAAR;AACAF,qBAAe;AAChB,KAHD;AAKAD,iBAAa,CAACrD,MAAd,CAAqB9lB,KAArB,EAA4B,MAA5B,EAAoC,YAAW;AAC7C,UAAI8oB,OAAO,CAACC,oBAAR,EAAJ,EAAoC;AAClCD,eAAO,CAACS,+BAAR;AACD;AACF,KAJD;AAMAJ,iBAAa,CAACrD,MAAd,CAAqB9lB,KAArB,EAA4B,UAA5B,EAAwCopB,eAAxC;AACAD,iBAAa,CAACrD,MAAd,CAAqB9lB,KAArB,EAA4B,aAA5B,EAA2CopB,eAA3C;AACAD,iBAAa,CAACrD,MAAd,CAAqB9lB,KAArB,EAA4B,MAA5B,EAAoCopB,eAApC;AAEAD,iBAAa,CAACrD,MAAd,CAAqB9lB,KAArB,EAA4B,cAA5B,EAA4C,YAAW;AACrD8oB,aAAO,CAACS,+BAAR;AACD,KAFD;AAGD;;AAEDJ,eAAa,CAACrD,MAAd,CAAqB9lB,KAArB,EAA4B,OAA5B,EAAqC,YAAW;AAC9C,QAAI8oB,OAAO,CAACnN,iBAAZ,EAA+B;AAC7BmN,aAAO,CAACV,SAAR;AACD;;AACD,QAAIU,OAAO,CAACpN,mBAAZ,EAAiC;AAC/BoN,aAAO,CAACQ,eAAR;AACD;AACF,GAPD;AASA,OAAK9N,UAAL,CAAgBjO,OAAhB,CAAwB,UAASnZ,IAAT,EAAe;AACrC00B,WAAO,CAAClB,MAAR,CAAe4B,8BAAf,CAA8Cp1B,IAA9C,EAAoD,YAAW;AAC7D00B,aAAO,CAACO,QAAR,CAAiB5B,OAAO,CAACU,MAAR,CAAeS,cAAhC,EAAgDE,OAAO,CAACW,SAAR,EAAhD;AACD,KAFD;AAGD,GAJD;AAKD,CA9CD;AAgDA;;;;;AAGAhC,OAAO,CAAC71B,SAAR,CAAkB83B,iBAAlB,GAAsC,UAASj1B,QAAT,EAAmB;AACvD,SAAO,KAAKmzB,MAAL,CAAYzR,GAAZ,CAAgB1hB,QAAhB,CAAP;AACD,CAFD;AAIA;;;;;;;AAKAgzB,OAAO,CAAC71B,SAAR,CAAkBy3B,QAAlB,GAA6B,UAASrxB,IAAT,EAAe+e,IAAf,EAAqB;AAChD,OAAKmR,SAAL,CAAelwB,IAAf,EAAqB;AACnB,YAAQ+e;AADW,GAArB;AAGD,CAJD;;AAMA0Q,OAAO,CAAC71B,SAAR,CAAkB+3B,iBAAlB,GAAsC,UAASv1B,IAAT,EAAe;AACnD,MAAI,CAAC,KAAKwzB,MAAL,CAAYgC,WAAZ,CAAwBx1B,IAAxB,CAAL,EAAoC,OAAO,EAAP;;AACpC,MAAIy1B,WAAW,GAAG,KAAKjC,MAAL,CAAYkC,sBAAZ,CAAmC11B,IAAnC,CAAlB;;AACA,SAAOy1B,WAAW,CAACE,QAAZ,KAAyB,IAAzB,GAAgCF,WAAW,CAACG,mBAAZ,EAAhC,GAAoE,GAA3E;AACD,CAJD;;AAMAvC,OAAO,CAAC71B,SAAR,CAAkBq4B,cAAlB,GAAmC,UAAS71B,IAAT,EAAe8e,MAAf,EAAuB;AACxD,MAAIgX,QAAQ,GAAG,EAAf;;AACA,MAAIhX,MAAM,IAAIA,MAAM,CAAC9e,IAAD,CAApB,EAA4B;AAC1B81B,YAAQ,GAAGhX,MAAM,CAAC9e,IAAD,CAAjB;AACD,GAFD,MAEO,IAAI,KAAKwnB,WAAL,CAAiBxnB,IAAjB,CAAJ,EAA4B;AACjC81B,YAAQ,GAAG,KAAKtO,WAAL,CAAiBxnB,IAAjB,CAAX;AACD;;AACD,OAAK2zB,KAAL,CAAW3zB,IAAX,IAAmB81B,QAAQ,CAAC93B,KAAT,CAAe,CAAf,CAAnB,CAPwD,CAOlB;AACvC,CARD;AAWA;;;;;AAIAq1B,OAAO,CAAC71B,SAAR,CAAkBu4B,OAAlB,GAA4B,YAAW;AACrC,SAAO,KAAKpC,KAAZ;AACD,CAFD;;AAIAN,OAAO,CAAC71B,SAAR,CAAkBq3B,SAAlB,GAA8B,UAASmB,KAAT,EAAgB;AAC5C,MAAInB,SAAS,GAAG,CAAClqB,QAAjB;AACA,MAAI+pB,OAAO,GAAG,IAAd;AACAsB,OAAK,CAAC7c,OAAN,CAAc,UAASnZ,IAAT,EAAe;AAC3B,QAAI60B,SAAS,GAAGH,OAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoB/C,MAApC,EAA4C43B,SAAS,GAAGH,OAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoB/C,MAAhC;AAC7C,GAFD;AAGA,SAAO43B,SAAP;AACD,CAPD;;AASAxB,OAAO,CAAC71B,SAAR,CAAkBy4B,SAAlB,GAA8B,UAASD,KAAT,EAAgB;AAC5C,MAAIC,SAAS,GAAGtrB,QAAhB;AACA,MAAI+pB,OAAO,GAAG,IAAd;AACAsB,OAAK,CAAC7c,OAAN,CAAc,UAASnZ,IAAT,EAAe;AAC3B,QAAIi2B,SAAS,GAAGvB,OAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoB/C,MAApC,EAA4Cg5B,SAAS,GAAGvB,OAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoB/C,MAAhC;AAC7C,GAFD;AAGA,SAAOg5B,SAAP;AACD,CAPD;AASA;;;;;;;;;;;;;;AAYA5C,OAAO,CAAC71B,SAAR,CAAkB04B,cAAlB,GAAmC,UAASpX,MAAT,EAAiB;AAClD,MAAIkX,KAAK,GAAGz4B,MAAM,CAAC2b,IAAP,CAAY4F,MAAZ,CAAZ;AACA,MAAIqX,YAAY,GAAG,KAAKF,SAAL,CAAeD,KAAf,CAAnB;AACA,MAAII,WAAW,GAAGJ,KAAK,CAAC/4B,MAAxB;AACA,MAAIo5B,iBAAJ;AACA,MAAIr2B,IAAJ;;AAEA,OAAK,IAAIs2B,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGH,YAA5B,EAA0CG,KAAK,EAA/C,EAAmD;AACjDD,qBAAiB,GAAG,IAApB;;AACA,SAAK,IAAI5sB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2sB,WAApB,EAAiC3sB,CAAC,EAAlC,EAAsC;AACpCzJ,UAAI,GAAGg2B,KAAK,CAACvsB,CAAD,CAAZ;;AACA,UAAI,KAAKkqB,KAAL,CAAW3zB,IAAX,EAAiBs2B,KAAjB,MAA4BxX,MAAM,CAAC9e,IAAD,CAAtC,EAA8C;AAC5Cq2B,yBAAiB,GAAG,KAApB;AACA;AACD;AACF;;AACD,QAAIA,iBAAJ,EAAuB;AACrB,aAAOC,KAAP;AACD;AACF;;AACD,SAAO,CAAC,CAAR;AACD,CArBD;AAuBA;;;;;;AAIAjD,OAAO,CAAC71B,SAAR,CAAkBw2B,SAAlB,GAA8B,YAAW;AACvC,OAAKS,eAAL;;AACA,MAAI,KAAKjN,WAAT,EAAsB;AACpB5lB,KAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,KAAKw0B,KAApB,EAA2B,KAAKnM,WAAhC;AACD;;AACD,OAAKyN,QAAL,CAAc5B,OAAO,CAACU,MAAR,CAAeO,UAA7B,EAAyC,KAAKX,KAA9C;AACD,CAND;AAQA;;;;;AAGAN,OAAO,CAAC71B,SAAR,CAAkB+4B,SAAlB,GAA8B,YAAW;AACvC,OAAK9B,eAAL;;AACA,OAAKQ,QAAL,CAAc5B,OAAO,CAACU,MAAR,CAAeO,UAA7B,EAAyC,KAAKX,KAA9C;AACD,CAHD;;AAKAN,OAAO,CAAC71B,SAAR,CAAkBg5B,eAAlB,GAAoC,UAASR,KAAT,EAAgB;AAClD,MAAIh5B,CAAJ;;AACA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGg5B,KAAK,CAAC/4B,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjC,SAAK64B,cAAL,CAAoBG,KAAK,CAACh5B,CAAD,CAAzB;AACD;;AACD,OAAKi4B,QAAL,CAAc5B,OAAO,CAACU,MAAR,CAAeO,UAA7B,EAAyC,KAAKX,KAA9C;AACD,CAND;;AAQAN,OAAO,CAAC71B,SAAR,CAAkB03B,eAAlB,GAAoC,UAASc,KAAT,EAAgBlX,MAAhB,EAAwB;AAC1D,MAAI,CAACkX,KAAL,EAAY;AACVA,SAAK,GAAG,KAAKpC,gBAAb;AACD;;AACD,MAAI6C,SAAS,GAAG,EAAhB;AACA,MAAI/B,OAAO,GAAG,IAAd;AACAsB,OAAK,CAAC7c,OAAN,CAAc,UAASnZ,IAAT,EAAe;AAC3B,QAAIyF,GAAG,GAAGqZ,MAAM,IAAIA,MAAM,CAAC9e,IAAD,CAAN,KAAiB9D,SAA3B,GAAuC4iB,MAAM,CAAC9e,IAAD,CAA7C,GAAsD00B,OAAO,CAACY,iBAAR,CAA0Bt1B,IAA1B,CAAhE;AACA,QAAIyF,GAAG,KAAKvJ,SAAZ,EAAuB;AACvBu6B,aAAS,CAACz2B,IAAD,CAAT,GAAkByF,GAAlB;;AACAivB,WAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoBJ,IAApB,CAAyB6F,GAAzB;AACD,GALD;;AAOA,OAAKwvB,QAAL,CAAc5B,OAAO,CAACU,MAAR,CAAeG,YAA7B,EAA2CuC,SAA3C;AACD,CAdD;;AAgBApD,OAAO,CAAC71B,SAAR,CAAkBk5B,eAAlB,GAAoC,UAASV,KAAT,EAAgBM,KAAhB,EAAuB;AACzD,MAAI5B,OAAO,GAAG,IAAd;AACAsB,OAAK,CAAC7c,OAAN,CAAc,UAASnZ,IAAT,EAAe;AAC3B00B,WAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoBs2B,KAApB,IAA6B,IAA7B;AACD,GAFD;;AAGA,OAAKrB,QAAL,CAAc5B,OAAO,CAACU,MAAR,CAAeK,cAA7B,EAA6C;AAC3C4B,SAAK,EAAEA,KADoC;AAE3CM,SAAK,EAAEA;AAFoC,GAA7C;AAID,CATD;AAYA;;;;;;AAIAjD,OAAO,CAAC71B,SAAR,CAAkB23B,+BAAlB,GAAoD,YAAW;AAC7D,MAAI/1B,SAAS,GAAG,KAAKo0B,MAAL,CAAYoB,WAAZ,EAAhB;;AACA,MAAIF,OAAO,GAAG,IAAd;;AAEA,MAAIt1B,SAAS,GAAG,CAAhB,EAAmB;AACjBA,aAAS,GAAG,CAAZ;AACD;;AAED,OAAKw0B,gBAAL,CAAsBza,OAAtB,CAA8B,UAASnZ,IAAT,EAAe;AAC3C,QAAI00B,OAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoB/C,MAApB,GAA6BmC,SAAjC,EAA4C;AAC1Cs1B,aAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoB/C,MAApB,GAA6BmC,SAA7B;AACD;AACF,GAJD;;AAMA,OAAK61B,QAAL,CAAc5B,OAAO,CAACU,MAAR,CAAeM,cAA7B,EAA6C,KAAKV,KAAlD,EAd6D,CAgB7D;AACA;AACA;;;AACAe,SAAO,CAACQ,eAAR;AACD,CApBD;;AAsBA7B,OAAO,CAAC71B,SAAR,CAAkBm5B,aAAlB,GAAkC,UAASL,KAAT,EAAgB5O,QAAhB,EAA0BoO,QAA1B,EAAoC;AACpE,OAAKnC,KAAL,CAAWjM,QAAX,EAAqB4O,KAArB,IAA8BR,QAA9B;AAEA,MAAIpB,OAAO,GAAG,IAAd;AACA,MAAI+B,SAAS,GAAG,EAAhB;AACA,OAAKrP,UAAL,CAAgBjO,OAAhB,CAAwB,UAASnZ,IAAT,EAAe;AACrCy2B,aAAS,CAACz2B,IAAD,CAAT,GAAkB00B,OAAO,CAACf,KAAR,CAAc3zB,IAAd,EAAoBs2B,KAApB,CAAlB;AACD,GAFD;;AAIA,OAAKrB,QAAL,CAAc5B,OAAO,CAACU,MAAR,CAAeI,cAA7B,EAA6C;AAC3CmC,SAAK,EAAEA,KADoC;AAE3C5O,YAAQ,EAAEA,QAFiC;AAG3C3qB,SAAK,EAAE+4B,QAHoC;AAI3CW,aAAS,EAAEA;AAJgC,GAA7C;AAMD,CAfD;;AAiBApD,OAAO,CAAC71B,SAAR,CAAkBo5B,gBAAlB,GAAqC,UAASN,KAAT,EAAgB5O,QAAhB,EAA0B;AAC7D,SAAO,KAAKiM,KAAL,CAAWjM,QAAX,EAAqB4O,KAArB,CAAP;AACD,CAFD;AAIA;;;;;AAGAjD,OAAO,CAAC71B,SAAR,CAAkB63B,SAAlB,GAA8B,YAAW;AACvC,MAAIwB,GAAG,GAAG,EAAV;AACA,MAAInC,OAAO,GAAG,IAAd;AACA,OAAKtN,UAAL,CAAgBjO,OAAhB,CAAwB,UAASnZ,IAAT,EAAe;AACrC62B,OAAG,CAAC72B,IAAD,CAAH,GAAY00B,OAAO,CAACa,iBAAR,CAA0Bv1B,IAA1B,CAAZ;AACD,GAFD;AAGA,SAAO62B,GAAP;AACD,CAPD;AASA;;;;;AAGAxD,OAAO,CAAC71B,SAAR,CAAkBs5B,mBAAlB,GAAwC,YAAW;AACjD,OAAKtD,MAAL,GAAc,KAAKF,sBAAL,CAA4BG,QAA5B,EAAd;;AACA,OAAKqB,aAAL,GAFiD,CAGjD;;;AACA,OAAKlB,gBAAL,GAAwB,EAAxB;AACA,MAAIc,OAAO,GAAG,IAAd;AACA,OAAKtN,UAAL,CAAgBjO,OAAhB,CAAwB,UAASnZ,IAAT,EAAe;AACrC,QAAI00B,OAAO,CAAClB,MAAR,CAAegC,WAAf,CAA2Bx1B,IAA3B,CAAJ,EAAsC;AACpC00B,aAAO,CAACd,gBAAR,CAAyBh0B,IAAzB,CAA8BI,IAA9B;AACD;AACF,GAJD;;AAKA,MAAI,KAAKunB,iBAAT,EAA4B;AAC1B,SAAKyM,SAAL;AACD;;AACD,MAAI,KAAK1M,mBAAT,EAA8B;AAC5B,SAAK4N,eAAL;AACD;AACF,CAjBD;;AAmBA7B,OAAO,CAAC71B,SAAR,CAAkBiE,SAAlB,GAA8B,YAAW;AACvC;AACA,MAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB,KAAK0vB,SAAxB,CAAb,CAFuC,CAGvC;;AACA9tB,QAAM,CAACymB,WAAP,GAAqB,KAAKuP,aAAL,EAArB;AACA,SAAOh2B,MAAP;AACD,CAND;;AAQAsyB,OAAO,CAAC71B,SAAR,CAAkBu5B,aAAlB,GAAkC,YAAW;AAC3C,MAAI,KAAKlI,SAAL,CAAexH,sBAAf,KAA0C,MAA9C,EAAsD,OAAO,EAAP;AACtD,MAAI2O,KAAK,GAAG,KAAKnH,SAAL,CAAexH,sBAAf,KAA0C,KAA1C,GACV,KAAKD,UADK,GACQ,KAAKyH,SAAL,CAAexH,sBADnC;AAEA,MAAItmB,MAAM,GAAG,EAAb;AACA,MAAI2zB,OAAO,GAAG,IAAd;AACAsB,OAAK,CAAC7c,OAAN,CAAc,UAASnZ,IAAT,EAAe;AAC3Be,UAAM,CAACf,IAAD,CAAN,GAAe4B,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBu1B,OAAO,CAACf,KAAR,CAAc3zB,IAAd,CAAnB,CAAf;AACD,GAFD;AAGA,SAAOe,MAAP;AACD,CAVD,C,CAYA;AACA;;;AACAsyB,OAAO,CAAC71B,SAAR,CAAkBw5B,mBAAlB,GAAwC,UAASC,OAAT,EAAkBtU,IAAlB,EAAwB;AAC9D,UAAQsU,OAAR;AACE,SAAK5D,OAAO,CAACU,MAAR,CAAeG,YAApB;AACE,WAAKgB,eAAL,CAAqB33B,MAAM,CAAC2b,IAAP,CAAYyJ,IAAZ,CAArB,EAAwCA,IAAxC;AACA;;AACF,SAAK0Q,OAAO,CAACU,MAAR,CAAeI,cAApB;AACE,WAAKwC,aAAL,CAAmBhU,IAAI,CAAC,OAAD,CAAvB,EAAkCA,IAAI,CAAC,UAAD,CAAtC,EAAoDA,IAAI,CAAC,UAAD,CAAxD;AACA;;AACF,SAAK0Q,OAAO,CAACU,MAAR,CAAeK,cAApB;AACE,WAAKsC,eAAL,CAAqB/T,IAAI,CAAC,OAAD,CAAzB,EAAoCA,IAAI,CAAC,OAAD,CAAxC;AACA;;AAEF,SAAK0Q,OAAO,CAACU,MAAR,CAAeM,cAApB;AACE;AACA;;AACF,SAAKhB,OAAO,CAACU,MAAR,CAAeO,UAApB;AACE,UAAII,OAAO,GAAG,IAAd;AACAn3B,YAAM,CAAC2b,IAAP,CAAYyJ,IAAZ,EAAkBxJ,OAAlB,CAA0B,UAASnZ,IAAT,EAAe;AACvC00B,eAAO,CAACmB,cAAR,CAAuB71B,IAAvB,EAA6B2iB,IAA7B;AACD,OAFD;;AAGA,WAAKsS,QAAL,CAAc5B,OAAO,CAACU,MAAR,CAAeO,UAA7B,EAAyC,KAAKX,KAA9C;;AACA;;AAEF,SAAKN,OAAO,CAACU,MAAR,CAAeQ,iBAApB;AACE;AACA;;AAEF,SAAKlB,OAAO,CAACU,MAAR,CAAeS,cAApB;AACE;AACA;AA5BJ;AA8BD,CA/BD;;AAiCenB,oDAAf,E;;;;;;;;AClaA;;;AAGe,SAAS6D,eAAT,CAAyBrI,SAAzB,EAAoCsI,YAApC,EAAkDC,UAAlD,EAA8D;AAC3E,MAAID,YAAY,CAAC9N,QAAjB,EAA2B;AACzB,QAAIgO,SAAS,GAAGz1B,CAAC,CAAC,0EAAD,CAAjB;AACAy1B,aAAS,CAAC/c,EAAV,CAAa,OAAb,EAAsB,YAAW;AAC/B,UAAI,CAAC8c,UAAU,CAACE,QAAX,EAAL,EAA4B;AAC1BF,kBAAU,CAACG,UAAX,CAAsBJ,YAAY,CAACxuB,EAAnC;AACD;AACF,KAJD;AAKA0uB,aAAS,CAACxuB,QAAV,CAAmBgmB,SAAS,CAAC/kB,gBAAV,EAAnB;AACD;AACF;AAAA,C;;ACbD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAI;AACF;AACA;AACA0tB,sCAAsC,GAAG;AACvC;AACAl5B,KAAG,EAAE,KAFkC;AAGvC;AACAD,KAAG,EAAE,KAJkC;AAKvC;AACAuf,OAAK,EAAE,OANgC;AAOvC;AACAC,SAAO,EAAE,SAR8B;AASvC;AACAC,UAAQ,EAAE,UAV6B;AAWvC;AACAC,WAAS,EAAE,WAZ4B;AAavC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAC,QAAM,EAAE,QA5B+B;AA6BvC;AACA;AACAjL,WAAS,EAAE,WA/B4B;AAgCvC;AACA;AACA;AACA;AACA;AACAkL,aAAW,EAAE,aArC0B;AAsCvC;AACA;AACA;AACAlD,OAAK,EAAE;AAzCgC,CAH3C;AAAA,IA+CE;AACA0c,aAAa,GAAG,SAAhBA,aAAgB,CAASC,SAAT,EAAoB;AAClC,MAAInsB,OAAO,GAAG,EAAd;AAAA,MACEosB,KADF;AAAA,MACSC,KADT;;AAGA,OAAKD,KAAL,IAAcH,sCAAd,EAAsD;AACpD,QAAIA,sCAAsC,CAACj3B,cAAvC,CAAsDo3B,KAAtD,CAAJ,EAAkE;AAChEC,WAAK,GAAGJ,sCAAsC,CAACG,KAAD,CAA9C;;AACA,UAAID,SAAS,CAACC,KAAD,CAAT,KAAqBz7B,SAAzB,EAAoC;AAClCqP,eAAO,CAACqsB,KAAD,CAAP,GAAiBF,SAAS,CAACC,KAAD,CAA1B;AACD;AACF;AACF;;AACD,SAAOpsB,OAAP;AACD,CA7DH;;AA+De,SAASssB,kBAAT,CAA4BhJ,SAA5B,EAAuCyE,sBAAvC,EAA+D;AAC5E,MAAI;AACFwE,YADF;AAAA,MAEElsB,KAFF;AAAA,MAGE;AACAmsB,eAJF;AAAA,MAKE;AACAC,cANF;AAAA,MAOE;AACAtQ,UARF;AAAA,MASE;AACAgH,gBAVF;AAAA,MAYE5M,MAAM,GAAG,SAATA,MAAS,GAAW;AAClBiW,iBAAa,CAACx4B,GAAd,CAAkB;AAChBxC,WAAK,EAAE6O,KAAK,CAACmW,GAAN,CAAU2F,QAAV;AADS,KAAlB;AAGD,GAhBH;AAAA,MAkBEuQ,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAW;AAChCF,iBAAa,CAACx4B,GAAd,CAAkB;AAChBme,iBAAW,EAAE9R,KAAK,CAACmW,GAAN,CAAU2M,cAAV;AADG,KAAlB;AAGD,GAtBH;;AAwBA,WAASpjB,UAAT,GAAsB;AACpBM,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CADoB,CAGpB;;AACA5E,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC2tB,QAAxC,EAAkDI,SAAlD,CAAZ;AACAkJ,iBAAa,GAAG,IAAIza,kCAAJ,CAAkBma,aAAa,CAAC5I,SAAD,CAA/B,CAAhB;AACAmJ,gBAAY,GAAG,IAAIzY,iCAAJ,CAAiB;AAC9B3T,WAAK,EAAEmsB,aADuB;AAE9BpvB,QAAE,EAAEkmB,SAAS,CAAClmB;AAFgB,KAAjB,CAAf,CANoB,CAUpB;;AACAqvB,gBAAY,CAAC9b,GAAb,CAAiBhS,QAAjB,CAA0B,WAA1B;AACAwd,YAAQ,GAAGmH,SAAS,CAACnH,QAArB;AACAgH,kBAAc,GAAGG,SAAS,CAACH,cAA3B;;AAEA,QAAIG,SAAS,CAACzF,OAAd,EAAuB;AACrB4O,kBAAY,CAAC9b,GAAb,CAAiBG,IAAjB,CAAsB,OAAtB,EAA+BwS,SAAS,CAACzF,OAAzC;AACD;;AAED8N,mBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf;AACD;;AAEDU,YAAU,GAAG;AACX;AACAhB,uBAAmB,EAAE,+BAAW;AAC9B,UAAI/b,KAAK,GAAG,EAAZ;;AACA,UAAInP,KAAJ,EAAW;AACTA,aAAK,CAACssB,cAAN,CAAqBxQ,QAArB,EAA+B5F,MAA/B;;AACA,YAAI4M,cAAJ,EAAoB;AAClB9iB,eAAK,CAACssB,cAAN,CAAqBxJ,cAArB,EAAqCuJ,oBAArC;AACD;AACF;;AACDrsB,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CAR8B,CAS9B;;AACA7nB,WAAK,CAACusB,qBAAN,CAA4B,CAACzQ,QAAD,CAA5B,EAAwC5F,MAAxC;;AACA,UAAI,OAAO+M,SAAS,CAACF,aAAjB,KAAmC,WAAnC,IAAkDE,SAAS,CAACF,aAAV,KAA4B,IAAlF,EAAwF;AACtF;AACA;AACA;AACAD,sBAAc,GAAGhH,QAAQ,GAAG,YAAX,GAA0BmH,SAAS,CAAClmB,EAApC,GAAyC,UAA1D;AACAiD,aAAK,CAACwsB,oBAAN,CAA2B1J,cAA3B,EAA2C,EAA3C,EAA+ChH,QAA/C,EAAyD,gBAAzD,EAA2EmH,SAAS,CAACF,aAArF;AACD;;AACD,UAAID,cAAJ,EAAoB;AAClB9iB,aAAK,CAACusB,qBAAN,CAA4B,CAACzJ,cAAD,CAA5B,EAA8CuJ,oBAA9C;AACD,OApB6B,CAqB9B;;;AACA,UAAIpJ,SAAS,CAAC9T,KAAV,KAAoB,IAAxB,EAA8B;AAC5B;AACAA,aAAK,GAAGnP,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,EAAuCkO,mBAAvC,EAAR;AACD,OAHD,MAGO,IAAI/G,SAAS,CAAC9T,KAAd,EAAqB;AAC1B;AACAA,aAAK,GAAG8T,SAAS,CAAC9T,KAAlB;AACD,OA5B6B,CA6B9B;AACA;AACA;AACA;AACA;;;AACAgd,mBAAa,CAACx4B,GAAd,CAAkB;AAChBoe,gBAAQ,EAAEkR,SAAS,CAAClR,QADJ;AAEhBtV,cAAM,EAAEwmB,SAAS,CAACxmB,MAFF;AAGhB0S,aAAK,EAAEA;AAHS,OAAlB,EAlC8B,CAuC9B;;AACAid,kBAAY,CAACrX,MAAb,GAxC8B,CAyC9B;;AACAmB,YAAM;AACP,KA7CU;AA+CX;AACAhY,oBAAgB,EAAE,4BAAW;AAC3B,aAAOkuB,YAAY,CAAC9b,GAApB;AACD,KAlDU;AAoDX;AACAhQ,UAAM,EAAE,kBAAW;AACjB;AACA8rB,kBAAY,CAACrX,MAAb;AACD,KAxDU;AA0DX;AACAlf,aAAS,EAAE,qBAAW;AACpB,UAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAb,CADoB,CAEpB;;AACA,aAAO9tB,MAAP;AACD;AA/DU,GAAb;AAkEAuK,YAAU,GAjHkE,CAmH5E;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;AC5LD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACF;AACA;AACAO,qCAAqC,GAAG;AACtCza,OAAK,EAAE,OAD+B;AAEtCuM,eAAa,EAAE,eAFuB;AAGtCmD,cAAY,EAAE,cAHwB;AAItCC,eAAa,EAAE,eAJuB;AAKtCf,uBAAqB,EAAE,uBALe;AAMtCC,mBAAiB,EAAE,mBANmB;AAOtCC,eAAa,EAAE,eAPuB;AAQtCC,YAAU,EAAE,YAR0B;AAStCC,YAAU,EAAE,YAT0B;AAUtCC,uBAAqB,EAAE,uBAVe;AAWtCC,mCAAiC,EAAE,mCAXG;AAYtCC,kBAAgB,EAAE,kBAZoB;AAatCuL,WAAS,EAAE,WAb2B;AActChM,YAAU,EAAE,YAd0B;AAetCW,mBAAiB,EAAE,mBAfmB;AAgBtCC,uBAAqB,EAAE,uBAhBe;AAiBtCC,2BAAyB,EAAE,2BAjBW;AAkBtCC,gBAAc,EAAE,gBAlBsB;AAmBtC3a,QAAM,EAAE,QAnB8B;AAoBtCgb,MAAI,EAAE,MApBgC;AAqBtCC,MAAI,EAAE,MArBgC;AAsBtChb,QAAM,EAAE,QAtB8B;AAuBtCib,MAAI,EAAE,MAvBgC;AAwBtCC,MAAI,EAAE,MAxBgC;AAyBtCJ,WAAS,EAAE,WAzB2B;AA0BtCK,YAAU,EAAE,YA1B0B;AA2BtCC,YAAU,EAAE,YA3B0B;AA4BtCC,gBAAc,EAAE,gBA5BsB;AA6BtCC,gBAAc,EAAE,gBA7BsB;AA8BtCC,YAAU,EAAE,YA9B0B;AA+BtCC,YAAU,EAAE,YA/B0B;AAgCtCjL,OAAK,EAAE,OAhC+B;AAiCtCkL,MAAI,EAAE,MAjCgC;AAkCtCC,YAAU,EAAE,YAlC0B;AAmCtCC,cAAY,EAAE,cAnCwB;AAoCtCC,eAAa,EAAE;AApCuB,CAH1C;AAAA,IA0CEiK,oBAAoB,GAAG,CA1CzB;AAAA,IA4CE;AACA;AACAC,gBAAgB,GAAG,CA9CrB;AAAA,IA+CEC,gBAAgB,GAAG,CA/CrB;AAiDe,SAASC,eAAT,CAAyB7J,SAAzB,EAAoCyE,sBAApC,EAA4D;AACzE,MAAI;AACF9rB,YADF;AAAA,MAEEmxB,OAFF;AAAA,MAGEb,UAHF;AAAA,MAIE3Q,OAJF;AAAA,MAKEyR,YALF;AAAA,MAMEC,WANF;AAAA,MAOEzR,UAPF;AAAA,MAQE0R,gBAAgB,GAAG,EARrB;AAAA,MASEC,YATF;AAAA,MAUEhE,aAVF;AAAA,MAWEiE,mBAAmB,GAAG,KAXxB;AAAA,MAYEC,kBAAkB,GAAG,KAZvB;AAAA,MAaE5H,SAAS,GAAG,oBAAqB,EAAEkH,oBAbrC;;AAeA,WAAS9E,QAAT,GAAoB;AAClB,WAAOH,sBAAsB,CAACG,QAAvB,EAAP;AACD,GAlBwE,CAoBzE;;;AACA,WAASyF,eAAT,CAAyBna,KAAzB,EAAgC;AAC9B,WAAOA,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,MAAlC;AACD;;AAED,WAASoa,WAAT,GAAuB;AACrB;AACA;AACA,QAAItK,SAAS,CAAC1H,OAAd,EAAuB;AACrBA,aAAO,GAAGmM,sBAAsB,CAAC8F,UAAvB,CAAkCvK,SAAS,CAAC1H,OAA5C,CAAV;AACD,KAFD,MAEO;AACL;AACA,UAAIkS,iBAAiB,GAAGxK,SAAS,CAACzH,UAAV,CAAqBppB,KAArB,EAAxB;AACA66B,iBAAW,CAAC1f,OAAZ,CAAoB,UAASmgB,KAAT,EAAgB;AAClC,YAAID,iBAAiB,CAAC3c,OAAlB,CAA0B4c,KAA1B,MAAqC,CAAC,CAA1C,EAA6C;AAC3CD,2BAAiB,CAACz5B,IAAlB,CAAuB05B,KAAvB;AACD;AACF,OAJD;AAKAnS,aAAO,GAAG,IAAIkM,QAAJ,CAAY;AACpBjM,kBAAU,EAAEiS,iBADQ;AAEpBz1B,YAAI,EAAEirB,SAAS,CAAClmB,EAAV,GAAe,cAFD;AAGpB2e,2BAAmB,EAAEuH,SAAS,CAACvH,mBAHX;AAIpBC,yBAAiB,EAAEsH,SAAS,CAACtH;AAJT,OAAZ,EAKP+L,sBALO,EAKiB,IALjB,CAAV;AAMD;;AACDyB,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeO,UAA7C,EAAyDiF,iBAAzD;AACAxE,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeG,YAA7C,EAA2DsF,mBAA3D;AACAzE,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeI,cAA7C,EAA6DsF,qBAA7D;AACA1E,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeK,cAA7C,EAA6DsF,qBAA7D;AACA3E,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeQ,iBAA7C,EAAgEoF,uBAAhE;AACA5E,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeM,cAA7C,EAA6DuF,oBAA7D;AACA7E,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeS,cAA7C,EAA6DqF,qBAA7D;AACD;;AAED,WAASvuB,UAAT,GAAsB;AACpBstB,gBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACA/E,iBAAa,GAAG,IAAI3D,cAAJ,CAAkBC,SAAlB,CAAhB,CAFoB,CAGpB;;AACAxC,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACurB,KAAxC,EAA+CwC,SAA/C,CAAZ,CAJoB,CAKpB;;AACAzH,cAAU,GAAGyH,SAAS,CAACzH,UAAV,CAAqBppB,KAArB,EAAb;AACA66B,eAAW,GAAGhK,SAAS,CAACxB,SAAxB;;AACA,QAAI,CAACzrB,CAAC,CAAC/B,OAAF,CAAUg5B,WAAV,CAAL,EAA6B;AAC3BA,iBAAW,GAAG,CAACA,WAAD,CAAd;AACD;;AACDM,eAAW;AACX3xB,cAAU,GAAG5F,CAAC,CAAC,OAAD,CAAD,CAAWya,IAAX,CAAgB,IAAhB,EAAsBwS,SAAS,CAAClmB,EAAhC,EAAoCuB,QAApC,CAA6C,OAA7C,CAAb,CAZoB,CAapB;;AACA1C,cAAU,CAAC0C,QAAX,CAAoB,WAApB,EAdoB,CAepB;;AACA1C,cAAU,CAACgB,GAAX,CAAe;AACbJ,WAAK,EAAEymB,SAAS,CAACzmB,KADJ;AAEbC,YAAM,EAAEwmB,SAAS,CAACxmB;AAFL,KAAf;;AAIA,QAAIwmB,SAAS,CAACzF,OAAd,EAAuB;AACrB5hB,gBAAU,CAAC6U,IAAX,CAAgB,OAAhB,EAAyBwS,SAAS,CAACzF,OAAnC;AACD,KAtBmB,CAuBpB;;;AACA8N,mBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf;AAEA2B,gBAAY,GAAG,EAAf;;AAEA,QAAIlK,SAAS,CAAC7B,YAAd,EAA4B;AAC1B6B,eAAS,CAACyJ,SAAV,GAAsBlR,UAAU,CAAC1K,OAAX,CAAmBmS,SAAS,CAAC7B,YAA7B,CAAtB;;AACA,UAAI6B,SAAS,CAACyJ,SAAV,IAAuB,CAAC,CAA5B,EAA+B;AAC7BzJ,iBAAS,CAAC7B,YAAV,GAAyB5F,UAAU,CAAC,CAAD,CAAnC;AACAyH,iBAAS,CAACyJ,SAAV,GAAsB,CAAtB;AACD;AACF,KAlCmB,CAoCpB;;;AACAnR,WAAO,CAAC6M,SAAR;AACD;AAED;;;;;AAGA,WAAS+F,UAAT,GAAsB;AACpB,QAAIxuB,OAAO,GAAG,EAAd;AAAA,QACEyuB,KADF;AAAA,QAEEC,OAFF,CADoB,CAKpB;;AACA,SAAKD,KAAL,IAAc3B,qCAAd,EAAqD;AACnD,UAAIA,qCAAqC,CAAC93B,cAAtC,CAAqDy5B,KAArD,CAAJ,EAAiE;AAC/DC,eAAO,GAAG5B,qCAAqC,CAAC2B,KAAD,CAA/C;AACAzuB,eAAO,CAAC0uB,OAAD,CAAP,GAAmBpL,SAAS,CAACmL,KAAD,CAA5B;AACD;AACF,KAXmB,CAapB;AACA;;;AACA,QAAInL,SAAS,CAACN,SAAd,EAAyB;AACvB2L,mBAAa,CAAC,GAAD,EAAMrL,SAAS,CAACN,SAAhB,EAA2BhjB,OAA3B,CAAb;AACD;;AACD,QAAIsjB,SAAS,CAACL,SAAd,EAAyB;AACvB0L,mBAAa,CAAC,GAAD,EAAMrL,SAAS,CAACL,SAAhB,EAA2BjjB,OAA3B,CAAb;AACD;;AAED,WAAOA,OAAP;AACD;;AAED,WAAS2uB,aAAT,CAAuB1Z,IAAvB,EAA6B2Z,YAA7B,EAA2C5uB,OAA3C,EAAoD;AAClD,QAAI6uB,YAAY,GAAG,OAAO5Z,IAAI,CAACtQ,WAAL,EAAP,GAA4B,cAA/C,CADkD,CACa;;AAC/D,QAAImqB,UAAU,GAAG,QAAQ7Z,IAAI,CAACtQ,WAAL,EAAR,GAA6B,QAA9C,CAFkD,CAEM;;AACxD,QAAI,OAAOiqB,YAAP,KAAyB,QAA7B,EAAuC;AACrCA,kBAAY,GAAG,CAACA,YAAD,CAAf;AACD;;AACD5uB,WAAO,CAAC6uB,YAAD,CAAP,GAAwB,UAAS97B,GAAT,EAAcD,GAAd,EAAmB;AACzC,UAAI46B,kBAAJ,EAAwB;AACxBkB,kBAAY,CAAChhB,OAAb,CAAqB,UAASmhB,aAAT,EAAwB;AAC3C,YAAIC,WAAW,GAAGjH,sBAAsB,CAACkH,YAAvB,CAAoCF,aAApC,CAAlB,CAD2C,CAE3C;AACA;;AACAC,mBAAW,CAACF,UAAD,CAAX,CAAwB/7B,GAAxB,EAA6BD,GAA7B,EAAkC,IAAlC;AACD,OALD;AAMD,KARD;AASD;AAED;;;;;;AAIA,WAASo8B,wBAAT,CAAkCC,IAAlC,EAAwC;AACtC/B,WAAO,CAACgC,eAAR,CAAwBD,IAAxB;AACD;;AAED,WAASf,uBAAT,CAAiCiB,GAAjC,EAAsC;AACpC,QAAI5B,mBAAJ,EAAyB;AACzByB,4BAAwB,CAACG,GAAG,CAACjY,IAAL,CAAxB;AACD;;AAED,WAASkY,UAAT,GAAsB;AACpB,QAAIlC,OAAJ,EAAa;AACX,UAAI9J,SAAS,CAACtC,gBAAd,EAAgC;AAC9BuO,oBAAY;AACb;AACF,KAJD,MAIO;AACLC,iBAAW;AACZ;;AACDC,gBAAY,CAAC7T,OAAO,CAAC4O,OAAR,EAAD,CAAZ;AACAkF,gBAAY;AACb;;AAED,WAASC,kBAAT,GAA8B;AAC5BL,cAAU;AACX;AAED;;;;;;;AAKA,WAASG,YAAT,CAAsBrY,IAAtB,EAA4B;AAC1B,QAAI,CAACgW,OAAL,EAAc,OADY,CAE1B;;AACA,QAAIwC,KAAK,GAAG,EAAZ;AACA/T,cAAU,CAACjO,OAAX,CAAmB,UAASnZ,IAAT,EAAeN,GAAf,EAAoB;AACrC,UAAI07B,OAAO,GAAG,EAAd;AACA,UAAIC,IAAI,GAAG1Y,IAAI,CAAC2W,KAAK,CAAC55B,GAAD,CAAN,CAAf;AACA,UAAI47B,OAAO,GAAG3Y,IAAI,CAAC3iB,IAAD,CAAlB;;AACA,WAAK,IAAIhD,CAAC,GAAG,CAAR,EAAWc,GAAG,GAAGM,IAAI,CAACE,GAAL,CAAS+8B,IAAI,CAACp+B,MAAd,EAAsBq+B,OAAO,CAACr+B,MAA9B,CAAtB,EAA6DD,CAAC,GAAGc,GAAjE,EAAsEd,CAAC,EAAvE,EAA2E;AACzEo+B,eAAO,CAACx7B,IAAR,CAAa,CAACy7B,IAAI,CAACr+B,CAAD,CAAL,EAAUs+B,OAAO,CAACt+B,CAAD,CAAjB,CAAb;AACD;;AACDm+B,WAAK,CAACv7B,IAAN,CAAWw7B,OAAX;AACD,KARD,EAJ0B,CAc1B;;AACAD,SAAK,GAAGA,KAAK,CAACnI,MAAN,CAAa+F,YAAb,CAAR;AAEAJ,WAAO,CAAC4C,WAAR,CAAoBJ,KAApB;AACAxC,WAAO,CAAC6C,OAAR;AACD;;AAED,WAASjC,iBAAT,CAA2BkC,KAA3B,EAAkC;AAChC,QAAIzC,mBAAJ,EAAyB;AACzBgC,gBAAY,CAACS,KAAK,CAAC9Y,IAAP,CAAZ;AACD;;AAED,WAASiX,oBAAT,CAA8B6B,KAA9B,EAAqC;AACnC,QAAIzC,mBAAJ,EAAyB;AACzBgC,gBAAY,CAACS,KAAK,CAAC9Y,IAAP,CAAZ;AACD;;AAED,WAASkX,qBAAT,CAA+B7b,MAA/B,EAAuC;AACrC,QAAIgb,mBAAJ,EAAyB;AACzB,QAAI0C,eAAe,GAAG,KAAtB;;AACA,QAAI,CAACxC,eAAe,CAACrK,SAAS,CAACnc,MAAX,CAApB,EAAwC;AACtC;AACA,UAAIipB,KAAK,GAAGvU,UAAU,CAACqR,gBAAD,CAAtB,CAFsC,CAItC;;AACA,UAAImD,MAAM,GAAG5d,MAAM,CAAC2d,KAAD,CAAN,IAAiB3d,MAAM,CAAC2E,IAAP,CAAYgZ,KAAZ,CAA9B;AACAhD,aAAO,CAACiD,MAAR,CAAeA,MAAf;AACAF,qBAAe,GAAG,IAAlB;AACD;;AACD,QAAI,CAACxC,eAAe,CAACrK,SAAS,CAACpc,MAAX,CAApB,EAAwC;AACtC,UAAI6mB,KAAK,GAAGT,WAAW,CAACL,gBAAD,CAAvB;AACA,UAAIqD,MAAM,GAAG7d,MAAM,CAACsb,KAAD,CAAN,IAAiBtb,MAAM,CAAC2E,IAAP,CAAY2W,KAAZ,CAA9B;AACAX,aAAO,CAACkD,MAAR,CAAeA,MAAf;AACAH,qBAAe,GAAG,IAAlB;AACD;;AACD,QAAIA,eAAJ,EAAqB;AACnB5D,gBAAU,CAACgE,8BAAX;AACD;AACF;AAED;;;;;AAGA,WAAShB,YAAT,GAAwB;AACtBnC,WAAO,CAACvxB,KAAR,CAAc,MAAMynB,SAAS,CAAClmB,EAA9B,EAAkCoxB,UAAU,EAA5C;AACD;;AAED,WAASgC,YAAT,CAAsBC,KAAtB,EAA6B;AAC3B,QAAI79B,CAAC,GAAG69B,KAAK,CAAC,CAAD,CAAb;AACA,QAAItoB,CAAC,GAAGsoB,KAAK,CAAC,CAAD,CAAb;AACA,WAAO79B,CAAC,IAAI,IAAL,IAAaA,CAAC,KAAK,EAAnB,IAAyB,CAAC6M,KAAK,CAACtM,MAAM,CAACP,CAAD,CAAP,CAA/B,IACLuV,CAAC,IAAI,IADA,IACQA,CAAC,KAAK,EADd,IACoB,CAAC1I,KAAK,CAACtM,MAAM,CAACgV,CAAD,CAAP,CADjC;AAED;;AAED,WAAS4lB,KAAT,CAAe55B,GAAf,EAAoB;AAClB,WAAOm5B,WAAW,CAACn5B,GAAD,CAAX,IAAoBm5B,WAAW,CAAC,CAAD,CAAtC;AACD;;AAED,WAASW,mBAAT,CAA6BoB,GAA7B,EAAkC;AAChC,QAAI,CAACjC,OAAL,EAAc;AACd,QAAIK,mBAAJ,EAAyB,OAFO,CAGhC;;AACA,QAAIiD,KAAK,GAAG,IAAZ;AACA,QAAIxF,SAAS,GAAGmE,GAAG,CAACjY,IAApB;AACA,QAAIuZ,OAAO,GAAG,EAAd;AACA,QAAIF,KAAJ;AACA5U,cAAU,CAACjO,OAAX,CAAmB,UAASnZ,IAAT,EAAeN,GAAf,EAAoB;AACrCs8B,WAAK,GAAG,CAACvF,SAAS,CAAC6C,KAAK,CAAC55B,GAAD,CAAN,CAAV,EAAwB+2B,SAAS,CAACz2B,IAAD,CAAjC,CAAR,CADqC,CAErC;;AACAk8B,aAAO,CAACt8B,IAAR,CAAam8B,YAAY,CAACC,KAAD,CAAZ,GAAsBA,KAAtB,GAA8B,IAA3C;AACD,KAJD;AAKA,QAAIC,KAAJ,EAAWtD,OAAO,CAACwD,SAAR,CAAkBD,OAAlB;AACZ;;AAED,WAASzC,qBAAT,CAA+BmB,GAA/B,EAAoC;AAClC,QAAI,CAACjC,OAAL,EAAc;AACd,QAAIK,mBAAJ,EAAyB;AACzB,QAAIvC,SAAS,GAAGmE,GAAG,CAACjY,IAAJ,CAAS8T,SAAzB;AACA,QAAIH,KAAK,GAAGsE,GAAG,CAACjY,IAAJ,CAAS2T,KAArB;AACA,QAAI4F,OAAO,GAAG,EAAd;AACA,QAAIF,KAAJ;AACA5U,cAAU,CAACjO,OAAX,CAAmB,UAASnZ,IAAT,EAAeN,GAAf,EAAoB;AACrCs8B,WAAK,GAAG,CAACvF,SAAS,CAAC6C,KAAK,CAAC55B,GAAD,CAAN,CAAV,EAAwB+2B,SAAS,CAACz2B,IAAD,CAAjC,CAAR,CADqC,CAErC;;AACAk8B,aAAO,CAACt8B,IAAR,CAAam8B,YAAY,CAACC,KAAD,CAAZ,GAAsBA,KAAtB,GAA8B,IAA3C;AACD,KAJD;AAKArD,WAAO,CAACyD,aAAR,CAAsBF,OAAtB,EAA+B5F,KAA/B;AACD;;AAED,WAASoD,qBAAT,CAA+BkB,GAA/B,EAAoC;AAClC,QAAI,CAACjC,OAAL,EAAc;AACd,QAAIK,mBAAJ,EAAyB;AACzB,QAAI1C,KAAK,GAAGsE,GAAG,CAACjY,IAAJ,CAAS2T,KAArB;AAAA,QACEN,KAAK,GAAG4E,GAAG,CAACjY,IAAJ,CAASqT,KADnB;AAEA5O,cAAU,CAACjO,OAAX,CAAmB,UAASnZ,IAAT,EAAeq8B,OAAf,EAAwB;AACzC,UAAIrG,KAAK,CAACtZ,OAAN,CAAc1c,IAAd,MAAwB,CAAC,CAA7B,EAAgC;AAC9B24B,eAAO,CAAC2D,WAAR,CAAoBhG,KAApB,EAA2B+F,OAA3B;AACD;AACF,KAJD;AAKD;;AAED,WAASE,sBAAT,GAAkC;AAChC,QAAI3wB,KAAK,GAAG6nB,QAAQ,EAApB,CADgC,CAEhC;;AACA7nB,SAAK,CAAC0O,EAAN,CAAS,OAAT,EAAkB4gB,kBAAlB;AACD;;AAED,WAASD,YAAT,GAAwB;AACtBpB,yBAAqB,CAAC1S,OAAO,CAACkO,SAAR,EAAD,CAArB;AACD;;AAED,WAASmH,qBAAT,CAA+B5B,GAA/B,EAAoC;AAClC5B,uBAAmB,GAAG,IAAtB;AACA,QAAIyD,IAAI,GAAG5N,SAAS,CAAC7B,YAAV,IAA0B5F,UAAU,CAAC,CAAD,CAA/C;AAAA,QACEsV,IAAI,GAAGpD,KAAK,CAAClS,UAAU,CAAC1K,OAAX,CAAmB+f,IAAnB,CAAD,CADd;AAAA,QAEE9Z,IAAI,GAAG,EAFT;AAGAA,QAAI,CAAC+Z,IAAD,CAAJ,GAAa9B,GAAG,CAACoB,KAAJ,CAAU,CAAV,CAAb;AACArZ,QAAI,CAAC8Z,IAAD,CAAJ,GAAa7B,GAAG,CAACoB,KAAJ,CAAU,CAAV,CAAb;;AACA,QAAIpB,GAAG,CAAChR,MAAJ,KAAe,OAAnB,EAA4B;AAC1BzC,aAAO,CAAC+N,eAAR,CAAwB,CAACwH,IAAD,EAAOD,IAAP,CAAxB,EAAsC9Z,IAAtC;AACD,KAFD,MAEO,IAAIiY,GAAG,CAAChR,MAAJ,KAAe,SAAnB,EAA8B;AACnC;AACA;AACA,UAAIlqB,GAAG,GAAGynB,OAAO,CAAC+O,cAAR,CAAuBvT,IAAvB,CAAV,CAHmC,CAInC;;AACAwE,aAAO,CAACuP,eAAR,CAAwB,CAAC+F,IAAD,CAAxB,EAAgC/8B,GAAhC;AACD;;AACDs5B,uBAAmB,GAAG,KAAtB;AACD;;AAED,WAAS+B,WAAT,GAAuB;AACrBpC,WAAO,GAAG,IAAIgE,qBAAJ,CAAUn1B,UAAU,CAAC,CAAD,CAApB,EAAyBuyB,UAAU,EAAnC,EAAuC79B,SAAvC,EAAkDo3B,sBAAsB,CAACsJ,eAAvB,EAAlD,CAAV;AACAjE,WAAO,CAACkE,gBAAR,CAAyBL,qBAAzB;AACD;;AAED1E,YAAU,GAAG;AACXj0B,QAAI,EAAE,OADK;;AAGX;;;AAGAizB,uBAAmB,EAAE,+BAAW;AAC9ByF,4BAAsB;AACtB3D,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACAe,gBAAU;AACVlC,aAAO,CAAC6C,OAAR;AACD,KAXU;AAaXpC,cAAU,EAAE,sBAAW;AACrB,aAAOjS,OAAP;AACD,KAfU;;AAiBX;;;AAGA2V,mCAA+B,EAAE,2CAAW;AAC1C3V,aAAO,CAAC+N,eAAR;AACD,KAtBU;;AAyBX;;;AAGAjB,cAAU,EAAE,oBAAS8I,MAAT,EAAiB;AAC3BhE,kBAAY,CAACn5B,IAAb,CAAkBm9B,MAAlB;AACD,KA9BU;;AAgCX;;;AAGAC,iBAAa,EAAE,yBAAW;AACxBjE,kBAAY,GAAG,EAAf;AACD,KArCU;;AAuCX;;;;AAIAkE,iBAAa,EAAE,uBAAS37B,IAAT,EAAe;AAC5B,UAAIq3B,OAAJ,EAAa;AACX/2B,SAAC,CAACzC,MAAF,CAAS0vB,SAAT,EAAoBvtB,IAApB;AACA6lB,eAAO,CAAC6M,SAAR;;AACA,YAAI1yB,IAAI,CAACgrB,UAAT,EAAqB;AACnBwM,0BAAgB,GAAGx3B,IAAI,CAACgrB,UAAxB;AACD;;AACDwO,oBAAY,GAND,CAOX;AACA;;AACAG,oBAAY;AACb;AACF,KAvDU;;AAyDX;;;AAGAiC,cAAU,EAAE,oBAAS5+B,GAAT,EAAcD,GAAd,EAAmB8+B,YAAnB,EAAiC;AAC3C,UAAIxE,OAAJ,EAAa;AACXM,0BAAkB,GAAGkE,YAArB;AACAxE,eAAO,CAACyE,OAAR,CAAgB,CAAC9+B,GAAD,EAAMD,GAAN,CAAhB;AACA46B,0BAAkB,GAAG,KAArB;AACD;AACF,KAlEU;;AAoEX;;;AAGAoE,cAAU,EAAE,oBAAS/+B,GAAT,EAAcD,GAAd,EAAmB8+B,YAAnB,EAAiC;AAC3C,UAAIxE,OAAJ,EAAa;AACXM,0BAAkB,GAAGkE,YAArB;AACAxE,eAAO,CAAC2E,OAAR,CAAgB,CAACh/B,GAAD,EAAMD,GAAN,CAAhB;AACA46B,0BAAkB,GAAG,KAArB;AACD;AACF,KA7EU;;AA+EX;;;;;;;;AASA6C,kCAA8B,EAAE,0CAAW;AACzC,UAAIlwB,KAAK,GAAG6nB,QAAQ,EAApB;AACA,UAAI8J,YAAY,GAAG3xB,KAAK,CAAC8pB,sBAAN,CAA6BmD,WAAW,CAACL,gBAAD,CAAxC,CAAnB;AACA,UAAIgF,aAAa,GAAGpW,UAAU,CAACqW,GAAX,CAAe,UAAS/V,QAAT,EAAmB;AACpD,eAAO9b,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,CAAP;AACD,OAFmB,CAApB;AAGA,UAAIiG,IAAJ;AACA,UAAIC,IAAJ;;AAEA,UAAI2P,YAAY,IAAIA,YAAY,CAACG,MAAb,MAAyB,IAAzC,IAAiDH,YAAY,CAACI,MAAb,MAAyB,IAA9E,EAAoF;AAClFhF,eAAO,CAACyE,OAAR,CAAgB,CAACG,YAAY,CAACG,MAAb,EAAD,EAAwBH,YAAY,CAACI,MAAb,EAAxB,CAAhB;AACD;;AAEDhQ,UAAI,GAAGhjB,QAAP;AACAijB,UAAI,GAAG,CAACjjB,QAAR;AACA6yB,mBAAa,CAACrkB,OAAd,CAAsB,UAASsc,WAAT,EAAsB;AAC1C,YAAIA,WAAJ,EAAiB;AACf,cAAIA,WAAW,CAACiI,MAAZ,KAAuB/P,IAA3B,EAAiCA,IAAI,GAAG8H,WAAW,CAACiI,MAAZ,EAAP;AACjC,cAAIjI,WAAW,CAACkI,MAAZ,KAAuB/P,IAA3B,EAAiCA,IAAI,GAAG6H,WAAW,CAACkI,MAAZ,EAAP;AAClC;AACF,OALD;;AAOA,UAAIC,QAAQ,CAACjQ,IAAD,CAAR,IAAkBiQ,QAAQ,CAAChQ,IAAD,CAA9B,EAAsC;AACpC+K,eAAO,CAAC2E,OAAR,CAAgB,CAAC3P,IAAD,EAAOC,IAAP,CAAhB;AACD;AACF,KAjHU;;AAmHX;;;;;AAKAiQ,qBAAiB,EAAE,6BAAW;AAC5B,UAAIpQ,IAAI,GAAGkL,OAAO,CAAClL,IAAR,EAAX;AACA,UAAIC,IAAI,GAAGiL,OAAO,CAACjL,IAAR,EAAX;;AAEA,UAAID,IAAI,KAAK,CAAb,EAAgB;AACdkL,eAAO,CAACyE,OAAR,CAAgB,CAAC,CAAD,EAAI1P,IAAI,GAAGD,IAAX,CAAhB;AACD;AACF,KA/HU;;AAiIX;;;AAGAqQ,WAAO,EAAE,mBAAW;AAClB,aAAOnF,OAAP;AACD,KAtIU;;AAwIX;;;AAGA7uB,oBAAgB,EAAE,4BAAW;AAC3B,aAAOtC,UAAP;AACD,KA7IU;AA+IX0E,UAAM,EAAE,kBAAW;AACjB;AACA,UAAIysB,OAAJ,EAAa;AACXA,eAAO,CAACzsB,MAAR;AACD;AACF,KApJU;AAsJX9E,SAAK,EAAE,iBAAW;AAChB,UAAIuxB,OAAJ,EAAa;AACXmC,oBAAY;AACb;AACF,KA1JU;AA4JXhZ,UAAM,EAAE,kBAAW;AACjB,UAAI6W,OAAJ,EAAa;AACXA,eAAO,CAAC7W,MAAR;AACD;AACF,KAhKU;AAkKXic,mBAAe,EAAE,2BAAW;AAC1B,UAAIpF,OAAJ,EAAa;AACX,eAAOA,OAAO,CAACoF,eAAR,CAAwBx/B,KAAxB,CAA8Bo6B,OAA9B,EAAuC13B,SAAvC,CAAP;AACD;;AACD,aAAO,IAAP;AACD,KAvKU;AAyKX+8B,oBAAgB,EAAE,4BAAW;AAC3B,UAAIrF,OAAJ,EAAa;AACX,eAAOA,OAAO,CAACqF,gBAAR,CAAyBz/B,KAAzB,CAA+Bo6B,OAA/B,EAAwC13B,SAAxC,CAAP;AACD;;AACD,aAAO,IAAP;AACD,KA9KU;AAgLXg9B,iBAAa,EAAE,uBAASjI,KAAT,EAAgB;AAC7B,UAAI2C,OAAJ,EAAa;AACXA,eAAO,CAACsF,aAAR,CAAsBjI,KAAtB;AACD;AACF,KApLU;AAsLXkI,oBAAgB,EAAE,4BAAW;AAC3B,UAAIvF,OAAJ,EAAa;AACXA,eAAO,CAACuF,gBAAR;AACD;AACF,KA1LU;;AA4LX;;;AAGAz8B,aAAS,EAAE,qBAAW;AACpB;AACA;AACA;AACA;AACA,UAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAb;AAAA,UACE;AACA;AACA;AACAuO,aAAO,GAAGzE,OAAO,CAACyE,OAAR,EAJZ;AAAA,UAKEE,OAAO,GAAG3E,OAAO,CAAC2E,OAAR,EALZ;AAAA,UAMEa,MAAM,GAAGtP,SAAS,CAACpB,IANrB;AAQA1sB,YAAM,CAAC4sB,IAAP,GAAc2P,OAAO,CAAC,CAAD,CAArB;AACAv8B,YAAM,CAAC6sB,IAAP,GAAc0P,OAAO,CAAC,CAAD,CAArB,CAdoB,CAepB;AACA;;AACAv8B,YAAM,CAAC0sB,IAAP,GAAc0Q,MAAd;AACAp9B,YAAM,CAAC2sB,IAAP,GAAcyQ,MAAM,GAAGf,OAAO,CAAC,CAAD,CAAhB,GAAsBA,OAAO,CAAC,CAAD,CAA3C;AAEA,aAAOr8B,MAAP;AACD,KApNU;AAsNXq9B,iBAAa,EAAE,uBAASC,OAAT,EAAkB;AAC/B;AACA;AACA72B,gBAAU,CAAC2pB,GAAX,CAAe,UAAf;AACA3pB,gBAAU,CAAC8S,EAAX,CAAc,eAAd,EAA+B,sBAA/B,EAAuD,YAAW;AAChE+jB,eAAO,CAAC,oBAAD,CAAP;AACD,OAFD;AAGA72B,gBAAU,CAAC8S,EAAX,CAAc,eAAd,EAA+B,yBAA/B,EAA0D,YAAW;AACnE+jB,eAAO,CAAC,qBAAD,CAAP;AACD,OAFD;AAGD;AAhOU,GAAb;AAmOA/yB,YAAU;AACV,SAAOwsB,UAAP;AAED;AAAA,C;;;;;;AChmBD;CAKA;;AACA,IAAIwG,eAAe,GAAG,GAAtB,C,CAA2B;AAE3B;;AACA,IAAIC,kBAAkB,GAAG,GAAzB;;AAEA,SAASC,YAAT,CAAsBC,IAAtB,EAA4B;AAC1B,MAAIA,IAAI,CAACC,OAAL,KAAiB,KAArB,EAA4B;AAC1B,UAAM,IAAI7hC,KAAJ,CAAU,kBAAkB4hC,IAAI,CAAC3f,MAAL,CAAY9c,KAAxC,CAAN;AACD;AACF,C,CAED;;;AACA,SAAS28B,MAAT,CAAgB1O,GAAhB,EAAqB2O,SAArB,EAAgC;AAC9B,MAAI79B,MAAM,GAAG,EAAb;;AACA,OAAK,IAAI/D,CAAC,GAAG,CAAR,EAAWc,GAAG,GAAGmyB,GAAG,CAAChzB,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,IAAI4hC,SAAhD,EAA2D;AACzD79B,UAAM,CAACnB,IAAP,CAAYqwB,GAAG,CAACjyB,KAAJ,CAAUhB,CAAV,EAAaA,CAAC,GAAG4hC,SAAjB,CAAZ;AACD;;AACD,SAAO79B,MAAP;AACD;;AAED,SAASs0B,SAAT,CAAmBtR,IAAnB,EAAyB;AACvB,SAAO;AACL8a,mBAAe,EAAE9a,IAAI,CAACR,CAAL,CAAO,uBAAP,CADZ;AAELub,eAAW,EAAE;AACXC,gBAAU,EAAEhb,IAAI,CAACR,CAAL,CAAO,8BAAP,CADD;AAEXyb,gBAAU,EAAEjb,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFD;AAGX0b,2BAAqB,EAAElb,IAAI,CAACR,CAAL,CAAO,yCAAP,CAHZ;AAIX2b,gBAAU,EAAEnb,IAAI,CAACR,CAAL,CAAO,8BAAP,CAJD;AAKX4b,2BAAqB,EAAEpb,IAAI,CAACR,CAAL,CAAO,yCAAP;AALZ,KAFR;AASL6b,cAAU,EAAE;AACVL,gBAAU,EAAEhb,IAAI,CAACR,CAAL,CAAO,6BAAP,CADF;AAEVyb,gBAAU,EAAEjb,IAAI,CAACR,CAAL,CAAO,6BAAP,CAFF;AAGV0b,2BAAqB,EAAElb,IAAI,CAACR,CAAL,CAAO,wCAAP,CAHb;AAIV2b,gBAAU,EAAEnb,IAAI,CAACR,CAAL,CAAO,6BAAP,CAJF;AAKV4b,2BAAqB,EAAEpb,IAAI,CAACR,CAAL,CAAO,wCAAP;AALb,KATP;AAgBL8b,eAAW,EAAE;AACXN,gBAAU,EAAEhb,IAAI,CAACR,CAAL,CAAO,8BAAP,CADD;AAEXyb,gBAAU,EAAEjb,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFD;AAGX0b,2BAAqB,EAAElb,IAAI,CAACR,CAAL,CAAO,yCAAP,CAHZ;AAIX2b,gBAAU,EAAEnb,IAAI,CAACR,CAAL,CAAO,8BAAP,CAJD;AAKX4b,2BAAqB,EAAEpb,IAAI,CAACR,CAAL,CAAO,yCAAP;AALZ;AAhBR,GAAP;AAwBD;;AAEc;AACb+b,gBAAc,EAAE,KADH;AAGbpb,MAAI,EAAE,cAASqb,WAAT,EAAsB;AAC1B,QAAI,KAAKC,UAAT,EAAqB,OADK,CACG;;AAC7B,SAAKD,WAAL,GAAmBA,WAAnB;AACA,SAAKC,UAAL,GAAkB,IAAIC,cAAW,CAACC,sBAAhB,CAChB,KAAKC,mBAAL,CAAyBC,IAAzB,CAA8B,IAA9B,CADgB,EAEhB,kBAFgB,EAGhBnkC,MAAM,CAACkgB,MAHS,CAAlB;AAKD,GAXY;AAabkkB,mBAAiB,EAAE,6BAAW;AAC5B,WAAO,KAAKP,cAAZ;AACD,GAfY;AAiBbQ,eAAa,EAAE,yBAAW;AACxB,WAAO,KAAKR,cAAZ;AACD,GAnBY;;AAqBb;;;;;;;;AAUAK,qBAAmB,EAAE,6BAASI,OAAT,EAAkBhP,QAAlB,EAA4B;AAC/C,QAAInH,MAAM,GAAGmW,OAAO,CAACnW,MAArB;AACA,QAAIoW,QAAQ,GAAGD,OAAO,CAACC,QAAvB;AACA,QAAIC,QAAQ,GAAG;AACbvB,aAAO,EAAE;AADI,KAAf,CAH+C,CAM/C;;AACA,QAAIqB,OAAO,IAAIA,OAAO,CAAC9/B,OAAR,KAAoB,eAAnC,EAAoD;AAClD;AACA,WAAKq/B,cAAL,GAAsB,IAAtB;AACA,WAAKY,oBAAL;AACA,WAAKC,eAAL;AACD,KALD,MAKO,IAAIvW,MAAM,KAAK,KAAX,IAAoBoW,QAAQ,KAAK,kBAArC,EAAyD;AAC9D;AACA;AACA;AACAC,cAAQ,CAACnhB,MAAT,GAAkB;AAChBvjB,eAAO,EAAE;AADO,OAAlB;AAGD;;AACDw1B,YAAQ,CAACkP,QAAD,CAAR;AACD,GApDY;AAsDbC,sBAAoB,EAAE,gCAAW;AAC/B;AACA,SAAKE,SAAL,CAAe;AACbxW,YAAM,EAAE,KADK;AAEboW,cAAQ,EAAE;AAFG,KAAf,EAGG,UAASvB,IAAT,EAAe;AAChBD,kBAAY,CAACC,IAAD,CAAZ;AACA,UAAI4B,cAAc,GAAG5B,IAAI,CAAC3f,MAA1B;AACA,UAAIwhB,eAAe,GAAG;AACpB18B,YAAI,EAAE,KAAK27B,WAAL,CAAiB3hB,KADH;AAEpBA,aAAK,EAAE,KAAK2hB,WAAL,CAAiB3hB,KAFJ;AAGpB2iB,+BAAuB,EAAE;AAHL,OAAtB,CAHgB,CAQhB;AACA;AACA;;AACA,UAAI,CAACF,cAAc,CAACG,UAApB,EAAgC;AAC9BF,uBAAe,CAACG,UAAhB,GAA6B;AAC3Br4B,eAAK,EAAEk2B,eADoB;AAE3Bj2B,gBAAM,EAAEi2B,eAAe,GAAG,KAAKiB,WAAL,CAAiBp5B;AAFhB,SAA7B;AAID;;AACD,WAAKi6B,SAAL,CAAe;AACbxW,cAAM,EAAE,QADK;AAEboW,gBAAQ,EAAE,kBAFG;AAGblhB,cAAM,EAAEwhB;AAHK,OAAf,EAIG9B,YAJH;AAKD,KAtBE,CAsBDoB,IAtBC,CAsBI,IAtBJ,CAHH;AA0BD,GAlFY;AAoFbQ,WAAS,EAAE,mBAASM,GAAT,EAAc3P,QAAd,EAAwB;AACjC,SAAKyO,UAAL,CAAgB9hC,IAAhB,CAAqBgjC,GAArB,EAA0B3P,QAA1B;AACD,GAtFY;;AAwFb;;;;;;;;;;;;;;;;;;;;;AA4BA4P,YAAU,EAAE,oBAASC,WAAT,EAAsBC,UAAtB,EAAkCC,eAAlC,EAAmDC,cAAnD,EAAmEhd,IAAnE,EAAyE;AACnF+c,mBAAe,GAAGA,eAAe,IAAI,EAArC;AAEAF,eAAW,GAAGA,WAAW,CAAC5iC,KAAZ,EAAd,CAHmF,CAInF;;AACA4iC,eAAW,CAACI,OAAZ,CAAoB;AAClBp9B,UAAI,EAAE,KADY;AAElBC,UAAI,EAAE;AAFY,KAApB;AAKA,QAAIma,MAAM,GAAGqX,SAAS,CAACtR,IAAD,CAAtB;AAEA,QAAIkd,sBAAsB,GAAGH,eAAe,CAAC7jC,MAAhB,GAAyB,CAAtD;AACA,QAAIikC,eAAJ;AACA,QAAIC,cAAJ;;AACA,QAAIF,sBAAJ,EAA4B;AAC1BC,qBAAe,GAAGljB,MAAM,CAAC8gB,WAAP,CAAmBE,UAArC;AACAmC,oBAAc,GAAGnjB,MAAM,CAACohB,UAAP,CAAkBJ,UAAnC;AACD,KAHD,MAGO;AACLkC,qBAAe,GAAGljB,MAAM,CAACqhB,WAAP,CAAmBL,UAArC;AACD;;AAED,QAAI2B,UAAU,GAAG,UAASS,SAAT,EAAoB;AACnCP,gBAAU,GAAGA,UAAU,CAAC7iC,KAAX,EAAb;AACA6iC,gBAAU,CAACG,OAAX,CAAmBI,SAAnB,EAFmC,CAInC;AACA;AACA;;AACA,UAAItiB,MAAM,GAAG,CAACmiB,sBAAsB,GAAGF,cAAH,GAAoB,CAAC,uBAAD,CAA3C,EAAsEtD,GAAtE,CAA0E,UAAS9a,IAAT,EAAe;AACpG,YAAI0e,IAAI,GAAG,EAAX;AACAT,mBAAW,CAACznB,OAAZ,CAAoB,UAASkD,IAAT,EAAe3c,GAAf,EAAoB;AACtC2hC,cAAI,CAAChlB,IAAI,CAACzY,IAAN,CAAJ,GAAkBi9B,UAAU,CAACnhC,GAAD,CAA5B;AACD,SAFD;AAGAohC,uBAAe,CAAC3nB,OAAhB,CAAwB,UAASkD,IAAT,EAAe3c,GAAf,EAAoB;AAC1C2hC,cAAI,CAAChlB,IAAI,CAACzY,IAAN,CAAJ,GAAkB+e,IAAI,CAACjjB,GAAD,CAAtB;AACD,SAFD;AAGA,eAAO2hC,IAAP;AACD,OATY,CAAb,CAPmC,CAkBnC;;AACA,UAAIC,YAAY,GAAG3C,MAAM,CAAC7f,MAAD,EAASyf,kBAAT,CAAzB;AACA+C,kBAAY,CAACnoB,OAAb,CAAqB,UAAS2F,MAAT,EAAiBpf,GAAjB,EAAsB;AACzC;AACA,aAAK0gC,SAAL,CAAe;AACbxW,gBAAM,EAAE,QADK;AAEboW,kBAAQ,EAAE,kBAFG;AAGblhB,gBAAM,EAAEA;AAHK,SAAf,EAIG,UAAS2f,IAAT,EAAe;AAChBD,sBAAY,CAACC,IAAD,CAAZ;;AACA,cAAI/+B,GAAG,KAAK,CAAZ,EAAe;AACb;AACA,iBAAK6hC,SAAL;AACD;AACF,SANE,CAMD3B,IANC,CAMI,IANJ,CAJH;AAWD,OAboB,CAanBA,IAbmB,CAad,IAbc,CAArB;AAcD,KAlCgB,CAkCfA,IAlCe,CAkCV,IAlCU,CAAjB;;AAoCA,QAAI4B,iBAAiB,GAAG,YAAW;AACjC,UAAIC,WAAW,GAAG,CAAC;AACjB79B,YAAI,EAAEs9B,eADW;AAEjBQ,aAAK,EAAEd,WAFU;AAGjB5iB,cAAM,EAAEijB,sBAAsB,GAAGjjB,MAAM,CAAC8gB,WAAV,GAAwB9gB,MAAM,CAACqhB,WAH5C;AAIjBsC,wBAAgB,EAAE;AAJD,OAAD,CAAlB;;AAOA,UAAIV,sBAAJ,EAA4B;AAC1BQ,mBAAW,CAAC7hC,IAAZ,CAAiB;AACfgE,cAAI,EAAEu9B,cADS;AAEfO,eAAK,EAAEZ,eAFQ;AAGfnlB,gBAAM,EAAEulB,eAHO;AAIfljB,gBAAM,EAAEA,MAAM,CAACohB;AAJA,SAAjB;AAMD;;AAED,WAAKgB,SAAL,CAAe;AACbxW,cAAM,EAAE,QADK;AAEboW,gBAAQ,EAAE,aAFG;AAGblhB,cAAM,EAAE;AACNlB,eAAK,EAAEI,MAAM,CAAC6gB,eADR;AAEN4C,qBAAW,EAAEA;AAFP;AAHK,OAAf,EAOG,UAAShD,IAAT,EAAe;AAChBD,oBAAY,CAACC,IAAD,CAAZ,CADgB,CAEhB;;AACAkC,kBAAU,CAAC,CAAD,CAAV;AACD,OAXD;AAYD,KA7BuB,CA6BtBf,IA7BsB,CA6BjB,IA7BiB,CAAxB;;AA+BA,QAAIgC,cAAc,GAAG,YAAW;AAC9B,WAAKxB,SAAL,CAAe;AACbxW,cAAM,EAAE,KADK;AAEboW,gBAAQ,EAAE;AAFG,OAAf,EAGG,UAASvB,IAAT,EAAe;AAChB,YAAIA,IAAI,CAACC,OAAT,EAAkB;AAChB;AACA,eAAK0B,SAAL,CAAe;AACbxW,kBAAM,EAAE,KADK;AAEboW,oBAAQ,EAAE,gBAAgBkB,eAAhB,GAAkC;AAF/B,WAAf,EAGG,UAASzC,IAAT,EAAe;AAChBD,wBAAY,CAACC,IAAD,CAAZ;AACA,gBAAIoD,UAAU,GAAGpD,IAAI,CAAC3f,MAAL,CAAYgjB,KAAZ,CAAkB7kC,MAAnC;AACA,gBAAI8kC,aAAa,GAAGF,UAAU,GAAG,CAAb,GAAiBpD,IAAI,CAAC3f,MAAL,CAAYgjB,KAAZ,CAAkBD,UAAU,GAAG,CAA/B,UAAuC/iB,MAAvC,CAA8C,KAA9C,CAAjB,GAAwE,CAA5F;AACA6hB,sBAAU,CAACoB,aAAa,GAAG,CAAjB,CAAV;AACD,WALE,CAKDnC,IALC,CAKI,IALJ,CAHH;AASD,SAXD,MAWO;AACL4B,2BAAiB;AAClB;AACF,OAfE,CAeD5B,IAfC,CAeI,IAfJ,CAHH;AAmBD,KApBoB,CAoBnBA,IApBmB,CAoBd,IApBc,CAArB,CAzFmF,CA+GnF;;;AACAgC,kBAAc;AACf,GArOY;;AAuOb;;;;AAIAL,WAAS,EAAE,qBAAW;AACpB,SAAKnB,SAAL,CAAe;AACbxW,YAAM,EAAE,QADK;AAEboW,cAAQ,EAAE,WAFG;AAGblhB,YAAM,EAAE;AACN,gBAAQ;AADF;AAHK,KAAf,EAMG0f,YANH;AAOD,GAnPY;;AAqPb;;;AAGAwD,WAAS,EAAE,mBAASC,SAAT,EAAoB;AAC7B,SAAK7B,SAAL,CAAe;AACbxW,YAAM,EAAE,QADK;AAEboW,cAAQ,EAAE,YAFG;AAGblhB,YAAM,EAAE;AACNojB,iBAAS,EAAED;AADL;AAHK,KAAf;AAOD;AAhQY,CAAf,E;;ACpDA,IAAIE,UAAU,GAAG;AACfC,UAAQ,EAAE,KADK;AAEfC,aAAW,EAAE,oBAFE;AAGfj6B,OAAK,EAAE;AAHQ,CAAjB,C,CAMA;;AACA,SAASk6B,aAAT,CAAuB50B,SAAvB,EAAkC;AAChC,SAAOA,SAAS,CAACrC,KAAV,CAAgB,GAAhB,EAAqBoyB,GAArB,CAAyB,UAASrS,CAAT,EAAY;AAC1C,WAAOA,CAAC,CAAC,CAAD,CAAD,CAAKlb,WAAL,KAAqBkb,CAAC,CAACptB,KAAF,CAAQ,CAAR,CAA5B;AACD,GAFM,EAEJ4e,IAFI,CAEC,EAFD,CAAP;AAGD;AAED;;;;;;;;;AAOA,SAAS2lB,WAAT,CAAqBh3B,OAArB,EAA8BwY,IAA9B,EAAoC;AAClC;;;;AAIA,MAAInG,KAAK,GAAGrS,OAAO,CAACqS,KAAR,IAAiB,EAA7B;AACA,MAAIjV,EAAE,GAAG4C,OAAO,CAAC5C,EAAR,IAAc,EAAvB;AAEA,OAAK65B,QAAL,GAAgB5gC,CAAC,CAAC,cAAc+G,EAAd,GAAmB,WAAnB,GAAiCiV,KAAjC,GAAyC,IAA1C,CAAjB,CARkC,CASlC;;AACArS,SAAO,GAAG3J,CAAC,CAACzC,MAAF,CAAS;AACjBsjC,aAAS,EAAE1e,IAAI,CAACR,CAAL,CAAO,sBAAP;AADM,GAAT,EAEP4e,UAFO,EAEK52B,OAFL,CAAV;AAGA,OAAKi3B,QAAL,CAAcE,MAAd,CAAqBn3B,OAArB;AACA,OAAKo3B,gBAAL,GAAwBL,aAAa,CAAC/2B,OAAO,CAAC82B,WAAT,CAArC;AACD;AAED;;;;;AAGAE,WAAW,CAAC/kC,SAAZ,CAAsBolC,IAAtB,GAA6B,YAAW;AACtC;AACA,OAAKC,QAAL,CAAcr6B,GAAd,CAAkB,YAAlB,EAAiC5G,CAAC,CAACnG,MAAD,CAAD,CAAU4M,MAAV,KAAqB,GAAtB,GAA6B,IAA7D;AACA,OAAKm6B,QAAL,CAAcE,MAAd,CAAqB,MAArB;AACD,CAJD;AAMA;;;;;AAGAH,WAAW,CAAC/kC,SAAZ,CAAsBslC,KAAtB,GAA8B,YAAW;AACvC,OAAKN,QAAL,CAAcE,MAAd,CAAqB,OAArB;AACD,CAFD;AAIA;;;;;;;;AAMAH,WAAW,CAAC/kC,SAAZ,CAAsB+B,GAAtB,GAA4B,UAAS6Z,GAAT,EAAcrc,KAAd,EAAqB;AAC/C,OAAKylC,QAAL,CAAcE,MAAd,CAAqB,QAArB,EAA+BtpB,GAA/B,EAAoCrc,KAApC;AACD,CAFD;AAIA;;;;;;;AAKAwlC,WAAW,CAAC/kC,SAAZ,CAAsBulC,UAAtB,GAAmC,UAAStZ,OAAT,EAAkB;AACnD;AACA,OAAKoZ,QAAL,GAAgBjhC,CAAC,CAAC,OAAD,CAAD,CAAWiI,MAAX,CAAkB4f,OAAlB,CAAhB;AACA,OAAK+Y,QAAL,CAAclgB,KAAd,GAHmD,CAInD;AACA;AACA;;AACA,OAAKkgB,QAAL,CAAc34B,MAAd,CAAqB,+CAArB;AACA,OAAK24B,QAAL,CAAc34B,MAAd,CAAqB,KAAKg5B,QAA1B;AACD,CATD;AAWA;;;;;;;AAKAN,WAAW,CAAC/kC,SAAZ,CAAsB4gC,aAAtB,GAAsC,UAASC,OAAT,EAAkB;AACtD,MAAI2E,QAAQ,GAAG,IAAf;AACA,MAAIC,eAAe,GAAG,KAAKN,gBAA3B;AACA,OAAKH,QAAL,CAAcrR,GAAd,CAAkB,UAAlB;AACA,OAAKqR,QAAL,CAAcloB,EAAd,CAAiB,oBAAjB,EAAuC,YAAW;AAChD+jB,WAAO,CAAC4E,eAAe,GAAG,QAAnB,CAAP;AACAD,YAAQ,GAAGE,IAAI,CAACC,GAAL,EAAX;AACD,GAHD;AAIA,OAAKX,QAAL,CAAcloB,EAAd,CAAiB,qBAAjB,EAAwC,YAAW;AACjD+jB,WAAO,CAAC4E,eAAe,GAAG,QAAnB,EAA6B;AAClCG,gBAAU,EAAE,CAACF,IAAI,CAACC,GAAL,KAAaH,QAAd,IAA0B;AADJ,KAA7B,CAAP;AAGD,GAJD;AAKD,CAbD;;AAeeT,4DAAf,E;;ACpGA;AAEA;AACA;AACA;AACA;;AAGA,SAASc,UAAT,CAAoBzlB,KAApB,EAA2B3d,OAA3B,EAAoCqjC,OAApC,EAA6Cvf,IAA7C,EAAmD;AACjD,MAAI2e,MAAM,GAAG,IAAIH,YAAJ,CAAgB;AAC3Bn6B,SAAK,EAAE,KADoB;AAE3Bm7B,SAAK,EAAE,IAFoB;AAG3B56B,MAAE,EAAE,sBAHuB;AAI3BiV,SAAK,EAAEA,KAJoB;AAK3B0lB,WAAO,EAAEA;AALkB,GAAhB,EAMVvf,IANU,CAAb;AAQA2e,QAAM,CAACK,UAAP,CAAkB9iC,OAAlB;AACAyiC,QAAM,CAACE,IAAP;AACD,C,CAED;AACA;;;AACA,SAASY,gBAAT,CAA0BlQ,sBAA1B,EAAkD;AAChD,MAAIf,QAAQ,GAAG,IAAIL,eAAJ,EAAf;AAAA,MACEuR,IADF;AAAA,MAEE5b,MAFF;AAAA,MAGEC,OAHF;AAAA,MAIEF,mBAJF;AAAA,MAKE8b,aALF;AAAA,MAME5L,UANF;AAAA,MAOElsB,KAPF;AAAA,MASE;AACA+3B,mBAVF;AAAA,MAYE;AACA1C,wBAAsB,GAAG,KAb3B;AAAA,MAeE;AACA;AACA;AACA;AACA;AACA2C,qBAAkB,GAAG,KApBvB;AAAA,MAsBE;AACAC,0BAAuB,GAAG,KAvB5B;AAAA,MAyBE;AACA;AACAC,qBAAmB,GAAG,IA3BxB;AAAA,MA6BEC,aAAa,GAAG,KA7BlB;;AA+BA,WAASC,YAAT,GAAwB;AACtB,QAAIv3B,GAAG,GAAG,EAAV;AAAA,QACEzP,CADF;AAAA,QACKc,GADL;;AAGA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGgqB,OAAO,CAAC7qB,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9CyP,SAAG,CAAC7M,IAAJ,CAASgM,KAAK,CAACmW,GAAN,CAAU+F,OAAO,CAAC9qB,CAAD,CAAjB,CAAT;AACD;;AACD,WAAOyP,GAAP;AACD;;AAED,WAASunB,SAAT,GAAqB;AACnB0P,iBAAa,GAAG,CAACM,YAAY,EAAb,CAAhB;AACD;;AAED,WAAS9O,eAAT,GAA2B;AACzBwO,iBAAa,CAAC9jC,IAAd,CAAmBokC,YAAY,EAA/B,EADyB,CAEzB;;AACAH,4BAAuB,GAAG,IAA1B;AACD;;AAED,WAASI,0BAAT,GAAsC;AACpC;AACAP,iBAAa,CAACzmC,MAAd,GAAuB2O,KAAK,CAACgpB,WAAN,KAAsB,CAA7C;AACD;;AAED,WAASoN,SAAT,CAAmBpY,MAAnB,EAA2Bsa,KAA3B,EAAkC;AAChC,QAAIvhB,IAAJ;;AACA,QAAIuhB,KAAJ,EAAW;AACT;AACAvhB,UAAI,GAAG,EAAP;;AACA,WAAK,IAAI3lB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGknC,KAAK,CAAClmB,MAAN,CAAa/gB,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;AAC5C2lB,YAAI,CAACuhB,KAAK,CAAClmB,MAAN,CAAahhB,CAAb,CAAD,CAAJ,GAAwBknC,KAAK,CAACplB,MAAN,CAAa9hB,CAAb,CAAxB;AACD;AACF;;AACDs2B,0BAAsB,CAAC0O,SAAvB,CAAiCpY,MAAjC,EAAyCjH,IAAzC;AACD;;AAED,WAASwhB,uBAAT,GAAmC;AACjC;AACA,WAAOX,gBAAgB,CAAC1D,aAAjB,MACLgE,mBADK,IAEL7C,sBAFK,IAGL4C,wBAHF;AAID,GA3E+C,CA6EhD;AACA;;;AACA,WAASO,iBAAT,CAA2BC,YAA3B,EAAyC;AAEvC;AACAhB,cAAU,CACR,eADQ,EAER,sFACA,qDADA,GAEA,+DAFA,GAGA,6DALQ,EAKuD,CAAC;AAC9D16B,QAAE,EAAE,eAD0D;AAE9DmP,UAAI,EAAE,SAFwD;AAG9DwsB,WAAK,EAAE,iBAAW;AAChBR,2BAAmB,GAAG,CAACliC,CAAC,CAAC,WAAD,CAAD,CAAe2iC,EAAf,CAAkB,UAAlB,CAAvB;AACA3iC,SAAC,CAAC,IAAD,CAAD,CAAQnC,MAAR;AACA4kC,oBAAY,CAACG,MAAb;AACD;AAP6D,KAAD,EAQ5D;AACD77B,QAAE,EAAE,cADH;AAEDmP,UAAI,EAAE,kBAFL;AAGDwsB,WAAK,EAAE,iBAAW;AAChBtC,iBAAS,CAAC,eAAD,EAAkByC,oBAAoB,EAAtC,CAAT;AACAX,2BAAmB,GAAG,CAACliC,CAAC,CAAC,WAAD,CAAD,CAAe2iC,EAAf,CAAkB,UAAlB,CAAvB;AACA3iC,SAAC,CAAC,IAAD,CAAD,CAAQnC,MAAR;AACA4kC,oBAAY,CAACK,OAAb;AACD;AARA,KAR4D,CALvD,EAuBRpR,sBAAsB,CAACvP,IAvBf,CAAV;AAyBD,GA3G+C,CA6GhD;AACA;;;AACA,WAAS4gB,yBAAT,GAAqC;AACnC,QAAI,CAAChB,iBAAL,EAAwB;AACtB,aAAO,KAAP;AACD;;AAED,QAAIiB,iBAAiB,GAAGH,oBAAoB,EAA5C;AACA,QAAII,WAAW,GAAG;AAChB/lB,YAAM,EAAE,EADQ;AAEhBd,YAAM,EAAE;AAFQ,KAAlB;AAIA,QAAI8mB,UAAU,GAAG,KAAjB;AAEAF,qBAAiB,CAAC9lB,MAAlB,CAAyB3F,OAAzB,CAAiC,UAAS4rB,YAAT,EAAuB/nC,CAAvB,EAA0B;AACzD,UAAI6pB,YAAY,GAAG8c,iBAAiB,CAAC7kB,MAAlB,CAAyB9hB,CAAzB,CAAnB;AACA,UAAI4pB,SAAS,GAAGge,iBAAiB,CAAC5mB,MAAlB,CAAyBhhB,CAAzB,CAAhB;AACA,UAAIgoC,OAAO,GAAGne,YAAY,KAAKke,YAA/B;AAEAF,iBAAW,CAAC7mB,MAAZ,CAAmBpe,IAAnB,CAAwBgnB,SAAS,GAAG,WAApC;AACAie,iBAAW,CAAC/lB,MAAZ,CAAmBlf,IAAnB,CAAwBolC,OAAxB;AACAF,gBAAU,GAAGA,UAAU,IAAIE,OAA3B;AAEAH,iBAAW,CAAC7mB,MAAZ,CAAmBpe,IAAnB,CAAwBgnB,SAAS,GAAG,iBAApC;AACAie,iBAAW,CAAC/lB,MAAZ,CAAmBlf,IAAnB,CAAwBinB,YAAxB;AAEAge,iBAAW,CAAC7mB,MAAZ,CAAmBpe,IAAnB,CAAwBgnB,SAAS,GAAG,kBAApC;AACAie,iBAAW,CAAC/lB,MAAZ,CAAmBlf,IAAnB,CAAwBmlC,YAAxB;AACD,KAdD;AAgBA,WAAOD,UAAU,GAAGD,WAAH,GAAiB,KAAlC;AACD;;AAED,WAAStI,sBAAT,GAAkC;AAChC;AACA3wB,SAAK,CAAC0O,EAAN,CAAS,uBAAT,EAAkC4a,eAAlC;AACAtpB,SAAK,CAAC0O,EAAN,CAAS,wBAAT,EAAmC0Z,SAAnC;AACApoB,SAAK,CAAC0O,EAAN,CAAS,uBAAT,EAAkC,YAAW;AAC3C2pB,gCAA0B,GADiB,CAE3C;AACA;;AACA,UAAI,CAACN,iBAAL,EAAwB;AACtBA,yBAAiB,GAAGc,oBAAoB,EAAxC;AACD,OAN0C,CAO3C;AACA;;;AACAf,mBAAa,CAAC93B,KAAK,CAACgpB,WAAN,EAAD,CAAb,GAAqCoP,YAAY,EAAjD;AACD,KAVD;AAWAp4B,SAAK,CAAC0O,EAAN,CAAS,+BAAT,EAA0C2pB,0BAA1C;AACD;;AAED,WAASgB,qBAAT,CAA+BC,cAA/B,EAA+Cb,YAA/C,EAA6D;AAE3D,QAAIa,cAAc,KAAKt5B,KAAnB,IAA4B,CAACu4B,uBAAuB,EAAxD,EAA4D;AAC1D;AACA,aAAO,KAAP;AACD,KAL0D,CAO3D;AAEA;AACA;;;AACAC,qBAAiB,CAACC,YAAD,CAAjB,CAX2D,CAa3D;;AACA,WAAO,IAAP;AACD;;AAED,WAASc,4BAAT,GAAwC;AACtC7R,0BAAsB,CAAChZ,EAAvB,CAA0B,8BAA1B,EAA0D,UAAS8qB,KAAT,EAAgB;AACxEC,+BAAyB,CAAC,aAAD,EAAgBD,KAAhB,CAAzB;AACD,KAFD;AAIA9R,0BAAsB,CAAChZ,EAAvB,CAA0B,6BAA1B,EAAyD,UAAS8qB,KAAT,EAAgB;AACvEC,+BAAyB,CAAC,YAAD,EAAeD,KAAf,CAAzB;AACD,KAFD,EALsC,CAQtC;AACA;AACA;;AACA9R,0BAAsB,CAAChZ,EAAvB,CAA0B,gBAA1B,EAA4C2qB,qBAA5C;AACD;;AAED,WAASI,yBAAT,CAAmC5T,SAAnC,EAA8C2T,KAA9C,EAAqD;AAEnD,aAASE,iBAAT,GAA6B;AAC3B15B,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;;AAEA,eAAS8R,cAAT,CAAwBlsB,CAAxB,EAA2B;AACzB;AACA;AACA;AACA,eAAO9b,MAAM,CAACC,SAAP,CAAiB+C,cAAjB,CAAgC7C,IAAhC,CAAqCkO,KAAK,CAACwb,UAA3C,EAAuD/N,CAAvD,CAAP;AACD;;AAEDwO,YAAM,GAAG,CAAC4b,IAAI,CAAC5b,MAAL,IAAe,EAAhB,EAAoB2d,MAApB,CAA2BD,cAA3B,CAAT;;AACA,UAAI9B,IAAI,CAAC3b,OAAL,IAAgB,IAAhB,IAAwB2b,IAAI,CAAC3b,OAAL,CAAa7qB,MAAb,KAAwB,CAApD,EAAuD;AACrDgkC,8BAAsB,GAAG,KAAzB;AACAnZ,eAAO,GAAG,EAAV;AACD,OAHD,MAGO;AACLmZ,8BAAsB,GAAG,IAAzB;AACAnZ,eAAO,GAAG,CAAC,aAAD,EAAgBkL,MAAhB,CAAuByQ,IAAI,CAAC3b,OAAL,CAAa0d,MAAb,CAAoBD,cAApB,CAAvB,CAAV;AACD;;AAEDvR,eAAS;AACTuI,4BAAsB;;AAEtB,UAAI6I,KAAK,KAAK,SAAd,EAAyB;AACvBpD,iBAAS,CAAC,aAAD,CAAT;AACD;;AAED2B,uBAAiB,GAAG,IAApB;AACAE,8BAAuB,GAAG,KAA1B;;AACA,UAAI/L,UAAU,CAACgI,aAAX,EAAJ,EAAgC;AAC9B8D,2BAAkB,GAAG,IAArB;AACArR,gBAAQ,CAACqR,kBAAT;AACD;AACF;;AAEDA,uBAAkB,GAAG,KAArB,CApCmD,CAsCnD;AACA;AACA;;AACA,QAAI9L,UAAU,CAACgI,aAAX,EAAJ,EAAgC;AAC9BwF,uBAAiB;AAClB,KAFD,MAEO;AACLxN,gBAAU,CAACxd,EAAX,CAAc,iCAAd,EAAiDgrB,iBAAjD;AACD;AACF;;AAED,WAASb,oBAAT,GAAgC;AAC9B,QAAIP,KAAK,GAAG,EAAZ;AAEAA,SAAK,CAAClmB,MAAN,GAAe,EAAf;AACAkmB,SAAK,CAACplB,MAAN,GAAe,EAAf;;AAEA,SAAK,IAAI9hB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6qB,MAAM,CAAC5qB,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtCknC,WAAK,CAAClmB,MAAN,CAAahhB,CAAb,IAAkByoC,mBAAmB,CAAC5d,MAAM,CAAC7qB,CAAD,CAAP,CAArC;AACAknC,WAAK,CAACplB,MAAN,CAAa9hB,CAAb,IAAkB4O,KAAK,CAACmW,GAAN,CAAU8F,MAAM,CAAC7qB,CAAD,CAAhB,CAAlB;AACD;;AACD,WAAOknC,KAAP;AACD;;AAED,WAASuB,mBAAT,CAA6B/d,QAA7B,EAAuC;AACrC,QAAIge,IAAI,GAAG95B,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,CAAX;AAAA,QACE3I,KAAK,GAAG2mB,IAAI,IAAIA,IAAI,CAAC/P,QAAL,EADlB;AAAA,QAEE5a,KAAK,GAAG2qB,IAAI,IAAIA,IAAI,CAAC9P,mBAAL,EAFlB;AAAA,QAGEnpB,GAAG,GAAG,EAHR;;AAKA,QAAIsS,KAAK,IAAIA,KAAK,CAAC9hB,MAAN,GAAe,CAA5B,EAA+B;AAC7BwP,SAAG,IAAIsS,KAAP;AACD,KAFD,MAEO;AACLtS,SAAG,IAAIib,QAAP;AACD;;AAED,QAAI3M,KAAK,IAAIA,KAAK,CAAC9d,MAAN,GAAe,CAA5B,EAA+B;AAC7BwP,SAAG,IAAI,IAAP;AACAA,SAAG,IAAIsO,KAAP;AACAtO,SAAG,IAAI,GAAP;AACD;;AACD,WAAOA,GAAP;AACD;;AAED,WAASk5B,uBAAT,CAAiCje,QAAjC,EAA2C;AACzC,QAAIge,IAAI,GAAG95B,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,CAAX;AAAA,QACE3I,KAAK,GAAG2mB,IAAI,IAAIA,IAAI,CAAC/P,QAAL,EADlB;AAAA,QAEEpyB,IAAI,GAAGmiC,IAAI,IAAIA,IAAI,CAAC9P,mBAAL,EAFjB;AAGA,WAAO;AACLhyB,UAAI,EAAEmb,KAAK,IAAIA,KAAK,CAAC9hB,MAAN,GAAe,CAAxB,GAA4B8hB,KAA5B,GAAoC2I,QADrC;AAELnkB,UAAI,EAAEA,IAAI,IAAIA,IAAI,CAACtG,MAAL,GAAc,CAAtB,GAA0BsG,IAA1B,GAAiCrH;AAFlC,KAAP;AAID;;AAED47B,YAAU,GAAG;AAEX;AACA;AACAgI,iBAAa,EAAE,yBAAW;AACxB,aAAO0D,gBAAgB,CAAC1D,aAAjB,EAAP;AACD,KANU;AAQX8D,sBAAkB,EAAE,8BAAW;AAC7B,aAAOA,mBAAP;AACD,KAVU;AAYX;AACA;AACA;AACA;AACA;AACA;AACAgC,6BAAyB,EAAE,qCAAW;AACpC,aAAO,CAAC3E,sBAAD,IAA4Br1B,KAAK,CAACwb,UAAN,CAAiBye,SAAjB,IAA8Bj6B,KAAK,CAACk6B,SAAN,EAA9B,IAAmDjC,wBAAtF;AACD,KApBU;AAsBXA,2BAAuB,EAAE,mCAAW;AAClC,aAAOA,wBAAP;AACD,KAxBU;AA0BX3f,QAAI,EAAE,cAAS6hB,KAAT,EAAgB;AACpBtC,UAAI,GAAGsC,KAAP;AACAne,yBAAmB,GAAG,CAAC6b,IAAI,CAAC7b,mBAAL,IAA4B,EAA7B,EAAiC5pB,KAAjC,EAAtB;AAEA+lC,mBAAa,GAAG,IAAhB;AACD,KA/BU;AAiCXiC,gBAAY,EAAE,wBAAW;AACvB,UAAIhpC,CAAJ;AAAA,UAAO6xB,SAAP;AAAA,UAAkB3N,MAAlB;AAAA,UAA0B5iB,GAAG,GAAGqM,QAAhC;AAAA,UACEtM,GAAG,GAAG,CAACsM,QADT;AAAA,UAEEs7B,UAAU,GAAG,EAFf;;AAIA,UAAI,CAAClC,aAAL,EAAoB;AAClB,cAAM,IAAIlnC,KAAJ,CAAU,8EAAV,CAAN;AACD;;AAED,WAAKG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG4qB,mBAAmB,CAAC3qB,MAApC,EAA4CD,CAAC,EAA7C,EAAiD;AAC/C6xB,iBAAS,GAAGyE,sBAAsB,CAACkH,YAAvB,CAAoC5S,mBAAmB,CAAC5qB,CAAD,CAAvD,CAAZ;;AACA,YAAI6xB,SAAS,IAAIA,SAAS,CAACkP,eAA3B,EAA4C;AAC1C7c,gBAAM,GAAG2N,SAAS,CAACkP,eAAV,EAAT;;AACA,cAAI7c,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACjkB,MAAP,KAAkB,CAAzC,EAA4C;AAC1C,gBAAIqB,GAAG,GAAG4iB,MAAM,CAAC,CAAD,CAAhB,EAAqB;AACnB5iB,iBAAG,GAAG4iB,MAAM,CAAC,CAAD,CAAZ;AACD;;AACD,gBAAI7iB,GAAG,GAAG6iB,MAAM,CAAC,CAAD,CAAhB,EAAqB;AACnB7iB,iBAAG,GAAG6iB,MAAM,CAAC,CAAD,CAAZ;AACD;AACF;AACF;AACF;;AAED,UAAI5iB,GAAG,GAAGqM,QAAN,IAAkBtM,GAAG,GAAG,CAACsM,QAA7B,EAAuC;AACrC;AACAs7B,kBAAU,GAAGvC,aAAa,CAAC8B,MAAd,CAAqB,UAASxJ,KAAT,EAAgB;AAChD,iBAAOA,KAAK,CAAC,CAAD,CAAL,GAAW19B,GAAX,IAAkB09B,KAAK,CAAC,CAAD,CAAL,GAAW39B,GAApC;AACD,SAFY,CAAb;AAGD,OALD,MAKO;AACL4nC,kBAAU,GAAGvC,aAAb;AACD;;AACD,aAAOuC,UAAP;AACD,KAlEU;AAoEXtF,cAAU,EAAE,sBAAW;AACrB,UAAIuF,oBAAoB,GAAG,EAA3B;AAAA,UACEC,oBAAoB,GAAG,EADzB;AAAA,UAEEC,aAAa,GAAG,EAFlB;AAAA,UAGEC,iBAHF;AAAA,UAIErpC,CAJF;;AAMA,UAAI,CAAC+mC,aAAL,EAAoB;AAClB,cAAM,IAAIlnC,KAAJ,CAAU,8EAAV,CAAN;AACD;;AAEDmlC,eAAS,CAAC,eAAD,EAAkByC,oBAAoB,EAAtC,CAAT;AAEA4B,uBAAiB,GAAG1B,yBAAyB,EAA7C,CAbqB,CAerB;;AACA,UAAI0B,iBAAJ,EAAuB;AACrBrE,iBAAS,CAAC,sCAAD,EAAyCqE,iBAAzC,CAAT;AACD;;AAED,WAAKrpC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6qB,MAAM,CAAC5qB,MAAvB,EAA+BD,CAAC,EAAhC,EAAoC;AAClCkpC,4BAAoB,CAAClpC,CAAD,CAApB,GAA0B2oC,uBAAuB,CAAC9d,MAAM,CAAC7qB,CAAD,CAAP,CAAjD;AACAmpC,4BAAoB,CAACnpC,CAAD,CAApB,GAA0B4O,KAAK,CAACmW,GAAN,CAAU8F,MAAM,CAAC7qB,CAAD,CAAhB,CAA1B;AACD;;AAED,WAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG8qB,OAAO,CAAC7qB,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnCopC,qBAAa,CAACppC,CAAD,CAAb,GAAmB2oC,uBAAuB,CAAC7d,OAAO,CAAC9qB,CAAD,CAAR,CAA1C;AACD;;AAEDspC,qBAAc,CAAC3F,UAAf,CAA0BuF,oBAA1B,EAAgDC,oBAAhD,EAAsEC,aAAtE,EAAqF,KAAKJ,YAAL,EAArF,EAA0G1S,sBAAsB,CAACvP,IAAjI,EA7BqB,CA+BrB;;AACA8f,8BAAuB,GAAG,KAA1B;AACD;AArGU,GAAb,CA1RgD,CAkYhD;;AAEAyC,iBAAc,CAACpiB,IAAf,CAAoB;AAClBtG,SAAK,EAAE0V,sBAAsB,CAACvR,GAAvB,CAA2B,OAA3B,CADW;AAElB5b,eAAW,EAAEmtB,sBAAsB,CAACvR,GAAvB,CAA2B,aAA3B;AAFK,GAApB,EApYgD,CAyYhD;AACA;;AACAwQ,UAAQ,CAACK,OAAT,CAAiBkF,UAAjB;AACAvF,UAAQ,CAACQ,aAAT,CAAuB,eAAvB,EAAwC,oBAAxC,EA5YgD,CA8YhD;;AACAuT,iBAAc,CAACnG,eAAf,GAAiC,YAAW;AAC1C,QAAIqD,gBAAgB,CAAC1D,aAAjB,EAAJ,EAAsC;AACpCvN,cAAQ,CAACuN,aAAT;AACD;AACF,GAJD;;AAMAqF,8BAA4B;AAE5B,SAAOrN,UAAP;AACD,C,CAED;;;AACA0L,gBAAgB,CAAC1D,aAAjB,GAAiC,YAAW;AAC1C,SAAOwG,eAAc,CAACxG,aAAf,EAAP;AACD,CAFD;;AAIe0D,sEAAf,E;;ACtbA;AAEA;CAGA;;AACA,SAAS+C,aAAT,CAAuBtU,IAAvB,EAA6B;AAC3B,MAAIjD,MAAM,GAAGiD,IAAI,CAACjD,MAAlB;AACA,OAAKjH,OAAL,GAAeiH,MAAM,CAACjH,OAAtB,CAF2B,CAG3B;;AACA,OAAKye,WAAL,GAAmBxX,MAAM,CAAC5H,UAAP,KAAsB,mBAAtB,GAA4C6K,IAAI,CAACwU,eAAjD,GAAmEzX,MAAM,CAAC5H,UAA7F;AACA,OAAKsf,uBAAL,GAA+BzU,IAAI,CAACqB,sBAApC;AACA,OAAKE,MAAL,GAAc,IAAd,CAN2B,CAQ3B;;AACA,OAAKmT,MAAL,GAAclH,cAAW,CAACmH,iBAAZ,EAAd,CAT2B,CAU3B;AACA;;AACA,OAAKD,MAAL,CAAYr7B,UAAZ;;AACAg7B,iBAAc,CAACpiB,IAAf;;AAEA,OAAKwiB,uBAAL,CAA6BpsB,EAA7B,CAAgC,2BAAhC,EAA6D,KAAKusB,mBAAL,CAAyBjH,IAAzB,CAA8B,IAA9B,CAA7D;;AACA,OAAK8G,uBAAL,CAA6BpsB,EAA7B,CAAgC,qCAAhC,EAAuE,KAAKwsB,6BAAL,CAAmClH,IAAnC,CAAwC,IAAxC,CAAvE;;AAEA,OAAKmH,gBAAL,CAAsB9U,IAAI,CAAChsB,aAA3B,EAA0C+oB,MAAM,CAACvjB,UAAjD;;AACA,OAAKu7B,gBAAL,CAAsB/U,IAAI,CAACgV,oBAA3B;AACD;;AAEDV,aAAa,CAAC/oC,SAAd,CAAwBwkC,SAAxB,GAAoC,UAASpY,MAAT,EAAiBjH,IAAjB,EAAuB;AACzD,MAAI,CAAC,KAAKoF,OAAV,EAAmB;;AAEnB,MAAIue,eAAc,CAACzG,iBAAf,EAAJ,EAAwC;AACtC,SAAKqH,WAAL,CAAiBtd,MAAjB,EAAyBjH,IAAzB;AACD,GAFD,MAEO;AACL,SAAKwkB,WAAL,CAAiBvd,MAAjB,EAAyBjH,IAAzB;AACD;AACF,CARD;;AAUA4jB,aAAa,CAAC/oC,SAAd,CAAwB2pC,WAAxB,GAAsC,UAASvd,MAAT,EAAiBjH,IAAjB,EAAuB;AAC3D,OAAKgkB,MAAL,CAAYS,IAAZ,CAAiB,KAAjB,EAAwB;AACtBxd,UAAM,EAAEA,MADc;AAEtBjH,QAAI,EAAEA;AAFgB,GAAxB;AAID,CALD;;AAOA4jB,aAAa,CAAC/oC,SAAd,CAAwB0pC,WAAxB,GAAsC,UAAStd,MAAT,EAAiBjH,IAAjB,EAAuB;AAC3D,MAAIsf,SAAS,GAAGrY,MAAhB;;AACA,MAAIjH,IAAJ,EAAU;AACRsf,aAAS,IAAI,OAAO1S,IAAI,CAAC8X,SAAL,CAAe1kB,IAAf,CAApB;AACD;;AACD2jB,iBAAc,CAACtE,SAAf,CAAyBC,SAAzB;AACD,CAND;;AAQAsE,aAAa,CAAC/oC,SAAd,CAAwBupC,gBAAxB,GAA2C,UAAS9gC,aAAT,EAAwBqhC,iBAAxB,EAA2C;AACpF,MAAIA,iBAAiB,KAAK,MAAtB,IAAgCA,iBAAiB,KAAK,EAA1D,EAA8D;;AAC9D,MAAIA,iBAAiB,KAAK,KAA1B,EAAiC;AAC/BA,qBAAiB,GAAG/pC,MAAM,CAAC2b,IAAP,CAAYjT,aAAZ,CAApB;AACD;;AACD,MAAIshC,cAAc,GAAG,EAArB;AACAD,mBAAiB,CAACnuB,OAAlB,CAA0B,UAASquB,MAAT,EAAiB;AACzCD,kBAAc,CAAC3nC,IAAf,CAAoBqG,aAAa,CAACuhC,MAAD,CAAjC;AACD,GAFD;;AAGA,OAAKR,gBAAL,CAAsBO,cAAtB;AACD,CAVD;;AAYAhB,aAAa,CAAC/oC,SAAd,CAAwBwpC,gBAAxB,GAA2C,UAASO,cAAT,EAAyB;AAClE,MAAIE,WAAW,GAAG,KAAKzF,SAAL,CAAepC,IAAf,CAAoB,IAApB,CAAlB;AACA2H,gBAAc,CAACpuB,OAAf,CAAuB,UAASuuB,IAAT,EAAe;AACpC;AACA,QAAIA,IAAI,IAAIA,IAAI,CAACtJ,aAAjB,EAAgC;AAC9BsJ,UAAI,CAACtJ,aAAL,CAAmBqJ,WAAnB;AACD;AACF,GALD;AAMD,CARD;;AAUAlB,aAAa,CAAC/oC,SAAd,CAAwBspC,6BAAxB,GAAwD,YAAW;AACjE;AACA,OAAK9E,SAAL,CAAe,qBAAf,EAAsC,KAAK2F,cAAL,EAAtC;AACD,CAHD;;AAKApB,aAAa,CAAC/oC,SAAd,CAAwBqpC,mBAAxB,GAA8C,UAASzB,KAAT,EAAgB;AAC5D,OAAK5R,MAAL,GAAc,KAAKkT,uBAAL,CAA6BjT,QAA7B,EAAd;;AAEA,OAAKD,MAAL,CAAYlZ,EAAZ,CAAe,mBAAf,EAAoC,UAASsP,MAAT,EAAiBjH,IAAjB,EAAuB;AACzD;AACA,SAAKqf,SAAL,CAAepY,MAAf,EAAuBjH,IAAvB;AACD,GAHmC,CAGlCid,IAHkC,CAG7B,IAH6B,CAApC;;AAKA,OAAKpM,MAAL,CAAYlZ,EAAZ,CAAe,oBAAf,EAAqC,YAAW;AAC9C,SAAK0nB,SAAL,CAAe,cAAf,EAA+B,KAAK2F,cAAL,EAA/B;AACD,GAFoC,CAEnC/H,IAFmC,CAE9B,IAF8B,CAArC;;AAIA,OAAKpM,MAAL,CAAYlZ,EAAZ,CAAe,oBAAf,EAAqC,YAAW;AAC9C,SAAK0nB,SAAL,CAAe,cAAf,EAA+B,KAAK2F,cAAL,EAA/B;AACD,GAFoC,CAEnC/H,IAFmC,CAE9B,IAF8B,CAArC;;AAIA,OAAKpM,MAAL,CAAYlZ,EAAZ,CAAe,yBAAf,EAA0C,YAAW;AACnD;AACA;AACA,SAAK0nB,SAAL,CAAe,eAAf,EAAgC,KAAK2F,cAAL,EAAhC;AACD,GAJyC,CAIxC/H,IAJwC,CAInC,IAJmC,CAA1C;AAKD,CArBD;;AAwBA2G,aAAa,CAAC/oC,SAAd,CAAwBmqC,cAAxB,GAAyC,YAAW;AAClD,MAAI/7B,KAAK,GAAG,KAAK4nB,MAAjB;AACA,MAAIoU,QAAQ,GAAG,EAAf;;AAEA,WAASnC,mBAAT,CAA6B/d,QAA7B,EAAuC;AACrC,QAAIge,IAAI,GAAG95B,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,CAAX;AACA,QAAI3I,KAAK,GAAG2mB,IAAI,IAAIA,IAAI,CAAC/P,QAAL,EAApB;AACA,QAAI5a,KAAK,GAAG2qB,IAAI,IAAIA,IAAI,CAAC9P,mBAAL,EAApB;AACA,QAAInpB,GAAG,GAAG,EAAV;;AACA,QAAIsS,KAAK,IAAIA,KAAK,CAAC9hB,MAAN,GAAe,CAA5B,EAA+B;AAC7BwP,SAAG,IAAIsS,KAAP;AACD,KAFD,MAEO;AACLtS,SAAG,IAAIib,QAAP;AACD;;AACD,QAAI3M,KAAK,IAAIA,KAAK,CAAC9d,MAAN,GAAe,CAA5B,EAA+B;AAC7BwP,SAAG,IAAI,OAAOsO,KAAP,GAAe,GAAtB;AACD;;AACD,WAAOtO,GAAP;AACD;;AAED,OAAK+5B,WAAL,CAAiBrtB,OAAjB,CAAyB,UAASnZ,IAAT,EAAe;AACtC4nC,YAAQ,CAACnC,mBAAmB,CAACzlC,IAAD,CAApB,CAAR,GAAsC4L,KAAK,CAACmW,GAAN,CAAU/hB,IAAV,CAAtC;AACD,GAFD;;AAGA,SAAO4nC,QAAP;AACD,CAxBD;;AA0BerB,gEAAf,E;;;;AClIE;AAEF;AAEA,IAAIsB,cAAc,GAAG,CAArB,C,CAEA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,EAAtB;;AAEA,SAASC,WAAT,CAAqB3uB,GAArB,EAA0B;AACxB,SAAO,YAAW;AAChB,UAAM,IAAI4uB,cAAJ,CAAmB5uB,GAAG,GAAG,iBAAzB,CAAN;AACD,GAFD;AAGD,C,CAED;AACA;AACA;;;AACA,SAAS6uB,kBAAT,GAA8B;AAC5B,MAAI/uB,IAAI,GAAG3b,MAAM,CAAC2qC,mBAAP,CAA2BzsC,MAA3B,CAAX;AAAA,MACE2d,GADF;AAAA,MAEEpc,CAFF;AAAA,MAGEc,GAHF;AAAA,MAIEqqC,GAJF;;AAMA,OAAKnrC,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGob,IAAI,CAACjc,MAAvB,EAA+BD,CAAC,GAAGc,GAAnC,EAAwCd,CAAC,EAAzC,EAA6C;AAC3Coc,OAAG,GAAGF,IAAI,CAAClc,CAAD,CAAV;;AACA,QAAI,CAAC8qC,eAAe,CAACvnC,cAAhB,CAA+B6Y,GAA/B,CAAL,EAA0C;AACxC+uB,SAAG,GAAGJ,WAAW,CAAC3uB,GAAD,CAAjB;AAEA7b,YAAM,CAAC6qC,cAAP,CAAsBN,eAAtB,EAAuC1uB,GAAvC,EAA4C;AAC1C7Z,WAAG,EAAE4oC,GADqC;AAE1CpmB,WAAG,EAAEomB;AAFqC,OAA5C;AAID;AACF;AACF,C,CAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAASE,0BAAT,CAAsB/U,sBAAtB,EAA8C1nB,KAA9C,EAAqD;AAElE;AACA;AACA;AACA;AACA;AAEA;AACA;AACA,WAAS08B,YAAT,CAAsBvX,QAAtB,EAAgC;AAC9BnlB,SAAK,CAAC0O,EAAN,CAAS,gCAAiCutB,cAAc,EAAxD,EAA6D9W,QAA7D;AACD;;AAED,MAAI+G,UAAU,GAAG;AAEftc,OAAG,EAAG,YAAW;AAEf,eAAS+sB,SAAT,CAAmBpd,CAAnB,EAAsB;AACpB;AACA,eAAO,OAAOA,CAAP,KAAa,QAAb,IAA0BtK,UAAU,CAACsK,CAAD,CAAV,KAAkBqd,QAAQ,CAACrd,CAAD,EAAI,EAAJ,CAA3D;AACD;;AAED,eAAStrB,OAAT,CAAiB4oC,GAAjB,EAAsB;AACpB,eAAO,qBAAOA,GAAP,MAAe,QAAf,IAA2BA,GAAG,CAACzqC,KAAJ,KAAc5B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhE;AACD;AAED;;;AACA,eAAS0qC,WAAT,CAAqBrqC,GAArB,EAA0B;AACxB,YAAIA,GAAJ,EAAS;AACP,iBAAOD,IAAI,CAACyO,MAAL,KAAgBxO,GAAvB;AACD,SAFD,MAEO;AACL,iBAAOD,IAAI,CAACyO,MAAL,EAAP;AACD;AACF;AAED;;;AACA,eAAS87B,aAAT,CAAuBxd,CAAvB,EAA0B;AACxB,eAAO/sB,IAAI,CAACwqC,KAAL,CAAWxqC,IAAI,CAACyO,MAAL,KAAgBse,CAA3B,CAAP;AACD;;AAED,eAAS0d,mBAAT,CAA6B/rC,KAA7B,EAAoCE,CAApC,EAAuCyM,CAAvC,EAA0C;AACxC,YAAIq/B,GAAG,GAAGhsC,KAAK,CAACE,CAAD,CAAf;AACAF,aAAK,CAACE,CAAD,CAAL,GAAWF,KAAK,CAAC2M,CAAD,CAAhB;AACA3M,aAAK,CAAC2M,CAAD,CAAL,GAAWq/B,GAAX;AACD;AAED;;;AACA,eAASC,MAAT,CAAgB5d,CAAhB,EAAmB6d,CAAnB,EAAsB;AACpB,YAAIlqB,MAAM,GAAG,EAAb;AAAA,YACE9hB,CADF;;AAGA,aAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB8hB,gBAAM,CAAC9hB,CAAD,CAAN,GAAYA,CAAZ;AACD;;AAED,aAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmuB,CAAhB,EAAmBnuB,CAAC,EAApB,EAAwB;AACtB6rC,6BAAmB,CAAC/pB,MAAD,EAAS9hB,CAAT,EAAYA,CAAC,GAAG2rC,aAAa,CAACK,CAAC,GAAGhsC,CAAL,CAA7B,CAAnB;AACD;;AACD8hB,cAAM,CAAC7hB,MAAP,GAAgBkuB,CAAhB;AAEA,eAAOrM,MAAP;AACD;AAED;;;AACA,eAASmqB,UAAT,CAAoBzjB,QAApB,EAA8BoE,MAA9B,EAAsC7K,KAAtC,EAA6C;AAE3C,YAAI,OAAOmqB,IAAP,KAAgB,WAApB,EAAiC;AAC/B;AACA;AACD;;AACD,YAAI,CAAC1jB,QAAL,EAAe;AACbA,kBAAQ,GAAG,aAAX;AACD,SAR0C,CAS3C;AACA;;;AACA0jB,YAAI,CAAC,OAAD,EAAUtf,MAAV,EAAkB;AAAE,4BAAkBpE,QAApB;AAA8B,yBAAezG;AAA7C,SAAlB,CAAJ;AACD;;AAED,aAAO;AACLwpB,iBAAS,EAAEA,SADN;AAEL1oC,eAAO,EAAEA,OAFJ;AAGL8oC,qBAAa,EAAEA,aAHV;AAILD,mBAAW,EAAEA,WAJR;AAKLG,2BAAmB,EAAEA,mBALhB;AAMLE,cAAM,EAAEA,MANH;AAQLI,eAAO,EAAE/qC,IAAI,CAAC0O,EAAL,GAAU,GARd;AASLs8B,eAAO,EAAE,MAAMhrC,IAAI,CAAC0O,EATf;AAWLm8B,kBAAU,EAAEA,UAXP;AAaL5pB,cAAM,EAAEC,EAAE,CAACD,MAbN;AAeL0C,WAAG,EAAE,SAASA,GAAT,GAAe;AAClB,iBAAOnW,KAAK,CAACmW,GAAN,CAAUxjB,KAAV,CAAgBqN,KAAhB,EAAuB3K,SAAvB,CAAP;AACD,SAjBI;AAmBL1B,WAAG,EAAE,SAASA,GAAT,GAAe;AAClB,iBAAOqM,KAAK,CAACrM,GAAN,CAAUhB,KAAV,CAAgBqN,KAAhB,EAAuB3K,SAAvB,CAAP;AACD,SArBI;AAuBLooC,cAAM,EAAE,SAASA,MAAT,GAAkB;AACxB,iBAAOz9B,KAAK,CAACy9B,MAAN,CAAa9qC,KAAb,CAAmBqN,KAAnB,EAA0B3K,SAA1B,CAAP;AACD,SAzBI;AA2BLqoC,gBAAQ,EAAE,SAASA,QAAT,GAAoB;AAC5B,iBAAO19B,KAAK,CAAC09B,QAAN,CAAe/qC,KAAf,CAAqBqN,KAArB,EAA4B3K,SAA5B,CAAP;AACD,SA7BI;;AA+BL;;;;;;;;;AASA+gC,iBAAS,EAAE,SAASA,SAAT,CAAmBuH,UAAnB,EAA+B5mB,IAA/B,EAAqC;AAC9C2Q,gCAAsB,CAAC0O,SAAvB,CAAiCuH,UAAjC,EAA6C5mB,IAA7C;AACD,SA1CI;AA4CL;AACA;AACA;AACA;AACA6mB,iBAAS,EAAE,SAASA,SAAT,CAAmBC,OAAnB,EAA4BzjB,UAA5B,EAAwC;AACjDpa,eAAK,CAAC89B,IAAN;AACApW,gCAAsB,CAACkW,SAAvB,CAAiCC,OAAjC,EAA0C,IAA1C,EAAgDzjB,UAAhD;AACD,SAnDI;AAqDL2jB,wBAAgB,EAAE,SAASC,cAAT,GAA0B;AAC1C,iBAAOtW,sBAAsB,CAACqW,gBAAvB,EAAP;AACD,SAvDI;;AAyDL;;;;AAIAE,wBAAgB,EAAE,SAASA,gBAAT,CAA0BC,YAA1B,EAAwClgB,MAAxC,EAAgD;AAChEhe,eAAK,CAACusB,qBAAN,CAA4B,CAAC2R,YAAD,CAA5B,EAA4C,YAAW;AACrDlgB,kBAAM,CAAChe,KAAK,CAACmW,GAAN,CAAU+nB,YAAV,CAAD,CAAN;AACD,WAFD;AAGD,SAjEI;;AAmEL;;;;;;;;;;;;;;;;AAgBAC,cAAM,EAAE,SAASA,MAAT,CAAgB99B,IAAhB,EAAsB2d,MAAtB,EAA8B;AACpC,mBAASogB,SAAT,GAAqB;AACnB,gBAAIp+B,KAAK,CAACwb,UAAN,CAAiBnb,IAAjB,IAAyBA,IAA7B,EAAmC;AACjC2d,oBAAM;AACNqgB,0BAAY;AACb;AACF;;AAED,mBAASC,aAAT,GAAyB;AACvB;AACAt+B,iBAAK,CAACu+B,WAAN,CAAkB,MAAlB,EAA0BH,SAA1B;AACD;;AAED,mBAASC,YAAT,GAAwB;AACtBr+B,iBAAK,CAACssB,cAAN,CAAqB,MAArB,EAA6B8R,SAA7B;AACD;;AAED,mBAASI,cAAT,GAA0B;AACxB;AACA;AACA;AACA,gBAAIx+B,KAAK,CAACwb,UAAN,CAAiBnb,IAAjB,GAAwBA,IAA5B,EAAkC;AAChCi+B,2BAAa;AACd;AACF;;AAED5B,sBAAY,CAAC4B,aAAD,CAAZ;AACA,eAAKG,OAAL,CAAaD,cAAb;AACAF,uBAAa;AACd,SAhHI;;AAkHL;;;;;;;;;;;;;;;;;;;;AAoBAI,iBAAS,EAAE,SAASA,SAAT,CAAmBC,QAAnB,EAA6B3gB,MAA7B,EAAqC;AAC9C,cAAI4gB,QAAQ,GAAG,CAAf;;AAEA,mBAASR,SAAT,GAAqB;AACnB,mBAAOp+B,KAAK,CAACwb,UAAN,CAAiBnb,IAAjB,GAAwBu+B,QAAxB,IAAoCD,QAA3C,EAAqD;AACnD3gB,oBAAM;AACN4gB,sBAAQ,IAAID,QAAZ;AACD;AACF;;AAED,mBAASE,UAAT,GAAsB;AACpBD,oBAAQ,GAAG,CAAX;AACD;;AAED,mBAASJ,cAAT,GAA0B;AACxB;AACA;AACA,mBAAOI,QAAQ,GAAG5+B,KAAK,CAACwb,UAAN,CAAiBnb,IAAnC,EAAyC;AACvCu+B,sBAAQ,IAAID,QAAZ;AACD;AACF;;AAED3+B,eAAK,CAACu+B,WAAN,CAAkB,MAAlB,EAA0BH,SAA1B;AACA1B,sBAAY,CAACmC,UAAD,CAAZ;AACA,eAAKJ,OAAL,CAAaD,cAAb;AACD,SA/JI;;AAiKL;;;;;;;;;;;;;;;;;;;;;;;AAuBAjhB,eAAO,EAAE,SAASA,OAAT,CAAiBtlB,IAAjB,EAAuBwZ,OAAvB,EAAgC;AACvC;AACA;AACAiW,gCAAsB,CAACptB,eAAvB,CAAuCwkC,cAAvC,CAAsDC,eAAtD,CAAsE,MAAM9mC,IAA5E,EAAkFwZ,OAAlF;AACD,SA5LI;;AA8LL;;;;;;;;;;;;;;;;;;;;AAoBAutB,cAAM,EAAE,SAASA,MAAT,CAAgB/mC,IAAhB,EAAsBwZ,OAAtB,EAA+B;AACrCiW,gCAAsB,CAACptB,eAAvB,CAAuCwkC,cAAvC,CAAsDG,cAAtD,CAAqEhnC,IAArE,EAA2EwZ,OAA3E;AACD,SApNI;;AAsNL;;;;;;;;;;;;AAYAytB,gBAAQ,EAAE,SAASA,QAAT,CAAkBztB,OAAlB,EAA2B;AACnCiW,gCAAsB,CAACptB,eAAvB,CAAuCwkC,cAAvC,CAAsDK,gBAAtD,CAAuE1tB,OAAvE;AACD,SApOI;AAsOL2tB,4BAAoB,EAAE,SAASA,oBAAT,CAA8BxD,MAA9B,EAAsCyD,CAAtC,EAAyC;AAC7D3X,gCAAsB,CAACkH,YAAvB,CAAoCgN,MAApC,EAA4C0D,WAA5C,CAAwDD,CAAxD;AACD,SAxOI;;AA0OL;;;AAGAE,oBAAY,EAAE,SAASA,YAAT,CAAsBvnC,IAAtB,EAA4B;AACxC0vB,gCAAsB,CAAC8F,UAAvB,CAAkCx1B,IAAlC,EAAwC2yB,SAAxC;AACD,SA/OI;;AAiPL;;;;AAIA6U,oBAAY,EAAE,SAASA,YAAT,CAAsBxnC,IAAtB,EAA4B;AACxC0vB,gCAAsB,CAAC8F,UAAvB,CAAkCx1B,IAAlC,EAAwCowB,SAAxC;AACD,SAvPI;AAyPLqX,8BAAsB,EAAE,SAASA,sBAAT,CAAgCznC,IAAhC,EAAsCoyB,KAAtC,EAA6C;AACnE1C,gCAAsB,CAAC8F,UAAvB,CAAkCx1B,IAAlC,EAAwC4yB,eAAxC,CAAwDR,KAAxD;AACD,SA3PI;;AA6PL;;;;;AAKA8G,uCAA+B,EAAE,SAASA,+BAAT,CAAyC0K,MAAzC,EAAiD;AAChF,cAAIE,IAAI,GAAGpU,sBAAsB,CAACkH,YAAvB,CAAoCgN,MAApC,CAAX;;AACA,cAAIE,IAAI,KAAKxrC,SAAb,EAAwB;AACtBwrC,gBAAI,CAAC5K,+BAAL;AACD;AACF,SAvQI;;AAyQL;;;;;AAMAwO,8BAAsB,EAAE,SAASA,sBAAT,CAAgCC,WAAhC,EAA6CjqC,IAA7C,EAAmD;AACzE,cAAIomC,IAAI,GAAGpU,sBAAsB,CAACkH,YAAvB,CAAoC+Q,WAApC,CAAX;;AAEA,cAAI,CAAC7D,IAAL,EAAW;AACT,kBAAM,IAAI7qC,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,aAAvC,CAAN;AACD;;AACD,cAAI,OAAO7D,IAAI,CAACzK,aAAZ,KAA+B,UAAnC,EAA+C;AAC7C,kBAAM,IAAIpgC,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,8CAAvC,CAAN;AACD;;AACD7D,cAAI,CAACzK,aAAL,CAAmB37B,IAAnB;AACD,SAzRI;;AA2RL;;;AAGAw6B,sCAA8B,EAAE,SAASA,8BAAT,CAAwCyP,WAAxC,EAAqD;AACnF,cAAI1c,SAAS,GAAGyE,sBAAsB,CAACkH,YAAvB,CAAoC+Q,WAApC,CAAhB;;AAEA,cAAI,CAAC1c,SAAL,EAAgB;AACd,kBAAM,IAAIhyB,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,aAAvC,CAAN;AACD;;AACD,cAAI,CAAC1c,SAAS,CAACiN,8BAAf,EAA+C;AAC7C,kBAAM,IAAIj/B,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,mDAAvC,CAAN;AACD;;AAED1c,mBAAS,CAACiN,8BAAV;AACD,SAzSI;AA2SL+B,yBAAiB,EAAE,SAASA,iBAAT,CAA2B0N,WAA3B,EAAwC;AACzD,cAAI1c,SAAS,GAAGyE,sBAAsB,CAACkH,YAAvB,CAAoC+Q,WAApC,CAAhB;;AAEA,cAAI,CAAC1c,SAAL,EAAgB;AACd,kBAAM,IAAIhyB,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,aAAvC,CAAN;AACD;;AACD,cAAI,CAAC1c,SAAS,CAACgP,iBAAf,EAAkC;AAChC,kBAAM,IAAIhhC,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,sCAAvC,CAAN;AACD;;AAED1c,mBAAS,CAACgP,iBAAV;AACD,SAtTI;AAwTL2N,2BAAmB,EAAE,SAASC,yBAAT,CAAmCF,WAAnC,EAAgD;AACnE,cAAI1c,SAAS,GAAGyE,sBAAsB,CAACkH,YAAvB,CAAoC+Q,WAApC,CAAhB;;AAEA,cAAI,CAAC1c,SAAL,EAAgB;AACd,kBAAM,IAAIhyB,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,aAAvC,CAAN;AACD;;AACD,cAAI,CAAC1c,SAAS,CAACkP,eAAf,EAAgC;AAC9B,kBAAM,IAAIlhC,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,oCAAvC,CAAN;AACD;;AACD,cAAI,CAAC1c,SAAS,CAACmP,gBAAf,EAAiC;AAC/B,kBAAM,IAAInhC,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,qCAAvC,CAAN;AACD;;AAED1c,mBAAS,CAACkP,eAAV,CAA0B,IAA1B;AACAlP,mBAAS,CAACmP,gBAAV,CAA2B,KAA3B;AACD,SAvUI;AAyULC,qBAAa,EAAE,SAASA,aAAT,CAAuBsN,WAAvB,EAAoCG,UAApC,EAAgD;AAC7D,cAAI7c,SAAS,GAAGyE,sBAAsB,CAACkH,YAAvB,CAAoC+Q,WAApC,CAAhB;;AAEA,cAAI,CAAC1c,SAAL,EAAgB;AACd,kBAAM,IAAIhyB,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,aAAvC,CAAN;AACD;;AACD,cAAI,CAAC1c,SAAS,CAACoP,aAAf,EAA8B;AAC5B,kBAAM,IAAIphC,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,kCAAvC,CAAN;AACD;;AAED1c,mBAAS,CAACoP,aAAV,CAAwByN,UAAxB;AACD,SApVI;AAsVLxN,wBAAgB,EAAE,SAASA,gBAAT,CAA0BqN,WAA1B,EAAuC;AACvD,cAAI1c,SAAS,GAAGyE,sBAAsB,CAACkH,YAAvB,CAAoC+Q,WAApC,CAAhB;;AAEA,cAAI,CAAC1c,SAAL,EAAgB;AACd,kBAAM,IAAIhyB,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,aAAvC,CAAN;AACD;;AACD,cAAI,CAAC1c,SAAS,CAACqP,gBAAf,EAAiC;AAC/B,kBAAM,IAAIrhC,KAAJ,CAAU,eAAe0uC,WAAf,GAA6B,qCAAvC,CAAN;AACD;;AAED1c,mBAAS,CAACqP,gBAAV;AACD,SAjWI;AAmWLyN,aAAK,EAAE,SAASA,KAAT,GAAiB;AACtB//B,eAAK,CAAC+/B,KAAN;AACA1C,oBAAU,CAAC,aAAD,EAAgB,OAAhB,EAAyB,2BAA2B3V,sBAAsB,CAACvR,GAAvB,CAA2B,OAA3B,CAApD,CAAV;AACD,SAtWI;AAwWLsoB,eAAO,EAAE,SAASA,OAAT,CAAiBhtB,OAAjB,EAA0B;AACjCzR,eAAK,CAAC0O,EAAN,CAAS,uBAAwButB,cAAc,EAA/C,EAAoDxqB,OAApD;AACD,SA1WI;AA4WLqsB,YAAI,EAAE,SAASA,IAAT,GAAgB;AACpB99B,eAAK,CAAC89B,IAAN;AACD,SA9WI;AAgXLkC,cAAM,EAAE,SAASA,MAAT,CAAgBvuB,OAAhB,EAAyB;AAC/BzR,eAAK,CAAC0O,EAAN,CAAS,oBAAT,EAA+B+C,OAA/B;AACD,SAlXI;;AAoXL;;;;;;;;;;AAUAwuB,mBAAW,EAAE,SAASA,WAAT,CAAqBtgC,OAArB,EAA8B;AACzC+nB,gCAAsB,CAACuY,WAAvB,CAAmCtgC,OAAnC;AACD,SAhYI;;AAkYL;;;;;;AAMAugC,yBAAiB,EAAE,SAASA,iBAAT,GAA6B;AAC9CxY,gCAAsB,CAACwY,iBAAvB;AACD,SA1YI;AA4YLC,mBAAW,EAAE,SAASA,WAAT,GAAuB;AAClCngC,eAAK,CAACmgC,WAAN;;AACA,cAAI,CAACngC,KAAK,CAACogC,SAAN,EAAL,EAAwB;AACtB1Y,kCAAsB,CAAC2Y,eAAvB;AACD;AACF,SAjZI;AAmZLC,gBAAQ,EAAE,SAASA,QAAT,GAAoB;AAC5BtgC,eAAK,CAACsgC,QAAN;AACA5Y,gCAAsB,CAAC2Y,eAAvB;AACD,SAtZI;AAwZLE,YAAI,EAAE,SAASA,IAAT,GAAgB;AACpBvgC,eAAK,CAACugC,IAAN;AACD,SA1ZI;AA4ZLrG,iBAAS,EAAE,SAASA,SAAT,GAAqB;AAC9B,iBAAOl6B,KAAK,CAACk6B,SAAN,EAAP;AACD,SA9ZI;AAgaLsG,eAAO,EAAE,SAASA,OAAT,GAAmB;AAC1B,iBAAOxgC,KAAK,CAACmW,GAAN,CAAU,MAAV,CAAP;AACD,SAlaI;;AAoaL;;;;AAIAsqB,cAAM,EAAE,SAASA,MAAT,GAAkB;AACxB,iBAAOzgC,KAAK,CAACygC,MAAN,EAAP;AACD,SA1aI;;AA4aL;;;;;;AAMAC,iCAAyB,EAAE,SAASA,yBAAT,GAAqC;AAC9D,iBAAO1gC,KAAK,CAAC0gC,yBAAN,EAAP;AACD,SApbI;AAsbLC,8BAAsB,EAAE,SAASA,sBAAT,GAAkC;AACxD3gC,eAAK,CAAC4gC,oBAAN,CAA2BC,MAA3B;AACD,SAxbI;AA0bLjR,eAAO,EAAE,SAASA,OAAT,GAAmB;AAC1BlI,gCAAsB,CAACoZ,gBAAvB;AACD,SA5bI;AA8bL5M,qBAAa,EAAE,SAASA,aAAT,GAAyB;AACtC,cAAI6M,gBAAgB,GAAGrZ,sBAAsB,CAACqZ,gBAA9C;AACA,iBAAOA,gBAAgB,IAAIA,gBAAgB,CAAC7M,aAAjB,EAApB,IAAwD,KAA/D;AACD,SAjcI;AAmcL+D,+BAAuB,EAAE,SAASA,uBAAT,GAAmC;AAC1D,cAAI8I,gBAAgB,GAAGrZ,sBAAsB,CAACqZ,gBAA9C;AACA,iBAAOA,gBAAgB,IAAIA,gBAAgB,CAAC9I,uBAAjB,EAApB,IAAkE,KAAzE;AACD,SAtcI;AAwcL+B,iCAAyB,EAAE,SAASA,yBAAT,GAAqC;AAC9D,cAAI+G,gBAAgB,GAAGrZ,sBAAsB,CAACqZ,gBAA9C;AACA,iBAAOA,gBAAgB,IAAIA,gBAAgB,CAAC/G,yBAAjB,EAApB,IAAoE,KAA3E;AACD,SA3cI;AA6cLjF,kBAAU,EAAE,SAASA,UAAT,GAAsB;AAChC,cAAIgM,gBAAgB,GAAGrZ,sBAAsB,CAACqZ,gBAA9C;;AACA,cAAI,CAACA,gBAAD,IAAqB,CAACA,gBAAgB,CAAC7M,aAAjB,EAA1B,EAA4D;AAC1D,kBAAM,IAAIjjC,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACD8vC,0BAAgB,CAAChM,UAAjB;AACD,SAndI;AAqdLiM,4BAAoB,EAAE,SAASA,oBAAT,CAA8Bx1B,KAA9B,EAAqCy1B,OAArC,EAA8C;AAClE,cAAIC,SAAS,GAAG,CAAC,EAAD,EAAK,EAAL,CAAhB;AACA,cAAI11B,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,CAAlB,IAAuBsK,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,CAAV,GAAc,CAAjD,EACEggC,SAAS,CAAC,CAAD,CAAT,GAAeD,OAAO,GAAG,GAAH,GAAS,GAA/B,CADF,KAEK,IAAIz1B,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,CAAV,GAAc,CAAtB,IAA2BsK,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,EAAV,GAAe,CAAtD,EACHggC,SAAS,CAAC,CAAD,CAAT,GAAeD,OAAO,GAAG,GAAH,GAAS,GAA/B;;AACF,cAAIz1B,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,CAAV,GAAc,CAAtB,IAA2BsK,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,EAAV,GAAe,CAAtD,EAAyD;AACvDggC,qBAAS,CAAC,CAAD,CAAT,GAAeD,OAAO,GAAG,GAAH,GAAS,GAA/B;AACD,WAFD,MAEO,IAAIz1B,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,CAAV,GAAc,CAAtB,IAA2BsK,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,EAAV,GAAe,CAAtD,EAAyD;AAC9DggC,qBAAS,CAAC,CAAD,CAAT,GAAeD,OAAO,GAAG,GAAH,GAAS,GAA/B;AACD;;AACD,iBAAOC,SAAS,CAAClwB,IAAV,CAAe,EAAf,CAAP;AACD,SAjeI;AAmeLmwB,2BAAmB,EAAE,SAASA,mBAAT,CAA6B31B,KAA7B,EAAoCy1B,OAApC,EAA6C;AAChEz1B,eAAK,GAAG,CAACA,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,CAAV,GAAc,CAAvB,KAA6B,IAAI1O,IAAI,CAAC0O,EAAtC,CAAR;AACA,cAAIkgC,GAAG,GAAG,MAAM51B,KAAK,GAAG,GAAR,GAAchZ,IAAI,CAAC0O,EAAnC;AACA,iBAAO+/B,OAAO,GAAG,CAAC,MAAMG,GAAP,IAAc,GAAjB,GAAuBA,GAArC;AACD,SAveI;AAyeL5uC,YAAI,EAAEA,IAzeD;AA0eLuM,gBAAQ,EAAEA,QA1eL;AA2eLizB,gBAAQ,EAAEA,QA3eL;AA4eLqP,WAAG,EAAEA,GA5eA;AA6eLjiC,aAAK,EAAEA,KA7eF;AA+eL;AACA;AACA9O,iBAAS,EAAE,KAAK,CAjfX;AAmfL;AACA4F,aAAK,EAAEA,+BApfF;AAsfL;AACAorC,kBAAU,EAAE,SAASA,UAAT,CAAoB7vB,OAApB,EAA6B;AAEvC;AACA,cAAI,CAACA,OAAD,IAAYA,OAAO,CAAC/f,WAAR,KAAwB6vC,QAAxC,EAAkD;AAChD,kBAAM,IAAIpuC,SAAJ,CAAc,oDAAd,CAAN;AACD;;AAED,cAAIkzB,IAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBO,KAAtB,CAA4B0C,SAA5B,CAAX,CAPuC,CAQvC;AACA;AACA;AACA;;AACAgxB,cAAI,CAAC,CAAD,CAAJ,GAAU5U,OAAO,CAACuiB,IAAR,CAAa1jC,SAAb,CAAV;AACA,iBAAOT,MAAM,CAACyxC,UAAP,CAAkB3uC,KAAlB,CAAwB9C,MAAxB,EAAgCw2B,IAAhC,CAAP;AACD,SArgBI;AAugBLmb,mBAAW,EAAE,SAASA,WAAT,CAAqB/vB,OAArB,EAA8B;AACzC,cAAI,CAACA,OAAD,IAAYA,OAAO,CAAC/f,WAAR,KAAwB6vC,QAAxC,EAAkD;AAChD,kBAAM,IAAIpuC,SAAJ,CAAc,qDAAd,CAAN;AACD;;AAED,cAAIkzB,IAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBO,KAAtB,CAA4B0C,SAA5B,CAAX;AACAgxB,cAAI,CAAC,CAAD,CAAJ,GAAU5U,OAAO,CAACuiB,IAAR,CAAa1jC,SAAb,CAAV;AACA,iBAAOT,MAAM,CAAC2xC,WAAP,CAAmB7uC,KAAnB,CAAyB9C,MAAzB,EAAiCw2B,IAAjC,CAAP;AACD,SA/gBI;AAihBLob,oBAAY,EAAE5xC,MAAM,CAAC4xC,YAjhBhB;AAmhBLC,qBAAa,EAAE7xC,MAAM,CAAC6xC,aAnhBjB;AAqhBLvrC,eAAO,EAAEtG,MAAM,CAACsG,OAAP,KAAmB,IAAnB,GAA0BtG,MAAM,CAACsG,OAAjC,GAA2C;AAClDiL,aAAG,EAAE,eAAW,CAAE,CADgC;AAElDhL,eAAK,EAAE,iBAAW,CAAE,CAF8B;AAGlDurC,cAAI,EAAE,gBAAW,CAAE,CAH+B;AAIlDC,aAAG,EAAE,eAAW,CAAE;AAJgC;AArhB/C,OAAP;AA4hBD,KA3lBK,EAFS;;AA+lBf;;;AAGA,QAAI5hC,KAAJ,GAAY;AACV,aAAOA,KAAP;AACD,KApmBc;;AAsmBf;;;AAGA,QAAI6hC,aAAJ,GAAoB;AAClB,aAAOna,sBAAP;AACD,KA3mBc;;AA6mBf;;;AAGAoa,aAAS,EAAE,mBAASC,QAAT,EAAmB;AAC5B/hC,WAAK,GAAG+hC,QAAR;AACD,KAlnBc;;AAonBf;;;;AAIAtE,UAAM,EAAE,kBAAW;AACjB9rC,YAAM,CAAC8rC,MAAP,CAAc,KAAK7tB,GAAnB;AACD,KA1nBc;;AA4nBf;;;AAGArc,UAAM,EAAE,gBAASyuC,iBAAT,EAA4B;AAClChsC,OAAC,CAACzC,MAAF,CAAS,KAAKqc,GAAd,EAAmB,IAAIoyB,iBAAJ,CAAsB,IAAtB,CAAnB;AACD,KAjoBc;;AAmoBf;;;AAGAC,sBAAkB,EAAE,8BAAW;AAC7BpyC,YAAM,CAACqyC,MAAP,GAAgB,KAAKtyB,GAArB;;AACA/f,YAAM,CAACqyC,MAAP,CAAcC,GAAd,GAAoB,UAAS5wC,MAAT,EAAiB80B,IAAjB,EAAuB;AACzC,YAAIjyB,IAAJ;AAAA,YACEguC,QAAQ,GAAG,EADb;AAAA,YAEEC,OAAO,GAAG,EAFZ;;AAIA,aAAKjuC,IAAL,IAAaiyB,IAAb,EAAmB;AACjB,cAAIA,IAAI,CAAC1xB,cAAL,CAAoBP,IAApB,CAAJ,EAA+B;AAC7BguC,oBAAQ,CAACpuC,IAAT,CAAcI,IAAd;AACAiuC,mBAAO,CAACruC,IAAR,CAAaqyB,IAAI,CAACjyB,IAAD,CAAjB;AACD;AACF;;AACD,eAAO83B,UAAU,CAACoW,2BAAX,CAAuC3vC,KAAvC,CAA6C,IAA7C,EAAmDyvC,QAAQ,CAAChb,MAAT,CAAgB71B,MAAhB,CAAnD,EAA4EoB,KAA5E,CAAkF,IAAlF,EAAwF0vC,OAAxF,CAAP;AACD,OAZD;AAaD,KArpBc;;AAupBf;;;;;;;;AASAC,+BAA2B,EAAE,uCAAW;AACtC;AACA,UAAIC,iBAAiB,GAAG/xC,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,EAAyCA,SAAS,CAAChE,MAAV,GAAmB,CAA5D,CAAxB;AAAA,UAEE;AACAmxC,kBAAY,GAAGntC,SAAS,CAACA,SAAS,CAAChE,MAAV,GAAmB,CAApB,CAH1B;AAAA,UAKEoxC,yBALF;AAAA,UAMEC,mBANF;AAAA,UAOEC,cAPF;AASA,UAAI,OAAOH,YAAP,KAAwB,QAA5B,EAAsCA,YAAY,GAAGA,YAAY,CAACxxB,IAAb,CAAkB,UAAlB,CAAf;AAEtCyxB,+BAAyB,GACvB,+BACA,2BADA,GAEA,sBAFA,GAEyBF,iBAAiB,CAACvxB,IAAlB,CAAuB,GAAvB,CAFzB,GAEuD,OAFvD,GAGA,aAHA,GAGgB,YAHhB,GAIA,QAJA,GAIWwxB,YAJX,GAI0B,IAJ1B,GAKA,UALA,GAMA,OANA,GAOA,GARF;;AAUA,UAAI;AACFE,2BAAmB,GAAG,IAAInB,QAAJ,CAAa,iBAAb,EAAgC,cAAhC,EAAgDkB,yBAAhD,CAAtB;AACAE,sBAAc,GAAGD,mBAAmB,CAACxG,eAAD,EAAkBhQ,UAAU,CAACtc,GAA7B,CAApC;AACD,OAHD,CAGE,OAAO3f,CAAP,EAAU;AACViG,+CAAK,CAAC,+BAA+BjG,CAAC,CAAC4B,QAAF,EAA/B,GAA8C,iBAA9C,GAAkE2wC,YAAnE,CAAL;AACA,eAAO,YAAW;AAChB,gBAAM,IAAIvxC,KAAJ,CAAU,gDAAV,CAAN;AACD,SAFD;AAGD,OA/BqC,CAiCtC;;;AACA,aAAO,YAAW;AAChBorC,0BAAkB;;AAClB,YAAI;AACF;AACA,iBAAOsG,cAAc,CAAChwC,KAAf,CAAqB,IAArB,EAA2BnC,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,CAA3B,CAAP;AACD,SAHD,CAGE,OAAOpF,CAAP,EAAU;AACViG,iDAAK,CAAC,6BAA6BjG,CAAC,CAAC4B,QAAF,EAA7B,GAA4C,iBAA5C,GAAgE2wC,YAAjE,CAAL;AACD;AACF,OARD;AASD;AA3sBc,GAAjB;AA8sBA,SAAOtW,UAAP;AACD;AAAA,C;;AC/wBD;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Be,SAAS0W,OAAT,CAAiBC,KAAjB,EAAwBC,MAAxB,EAAgC;AAC7C,WAASC,CAAT,GAAa,CAAE;;AACfA,GAAC,CAACnxC,SAAF,GAAckxC,MAAM,CAAClxC,SAArB;AACAixC,OAAK,CAACjxC,SAAN,GAAkB,IAAImxC,CAAJ,EAAlB;AACAF,OAAK,CAACG,UAAN,GAAmBF,MAAM,CAAClxC,SAA1B;AACAixC,OAAK,CAACjxC,SAAN,CAAgBF,WAAhB,GAA8BmxC,KAA9B;AACD;AAAA,C;;AChCD;;;AAGe;AACbI,aAAW,EAAE,qBAASrM,QAAT,EAAmB;AAC9B,QAAI,CAACA,QAAQ,CAACn1B,QAAT,CAAkB,cAAlB,CAAL,EAAwC;AACtCm1B,cAAQ,CAACt4B,QAAT,CAAkB,cAAlB;AACAs4B,cAAQ,CAAC34B,MAAT,CAAgB,qCAAhB;AACD;AACF,GANY;AAQbilC,YAAU,EAAE,oBAAStM,QAAT,EAAmB;AAC7BA,YAAQ,CAACh1B,WAAT,CAAqB,cAArB;AACAg1B,YAAQ,CAACzmB,IAAT,CAAc,uBAAd,EAAuCtc,MAAvC;AACD;AAXY,CAAf,E;;ACHA;;;;;;AAMA;AAEA,IAAIqvC,UAAU,GAAGC,UAAS,CAACD,UAA3B;AACA,IAAID,WAAW,GAAGE,UAAS,CAACF,WAA5B;AAEe,SAASG,UAAT,CAAoBngB,SAApB,EAA+BsI,YAA/B,EAA6C;AAC1D;AACAtI,WAAS,CAACqc,WAAV,GAAwB,UAASD,CAAT,EAAY;AAClC,QAAIzI,QAAQ,GAAG,KAAK14B,gBAAL,EAAf;;AACA,QAAImhC,CAAJ,EAAO;AACL4D,iBAAW,CAACrM,QAAD,CAAX;AACA,WAAKyM,UAAL,GAAkB,IAAlB;AACD,KAHD,MAGO;AACLH,gBAAU,CAACtM,QAAD,CAAV;AACA,WAAKyM,UAAL,GAAkB,KAAlB;AACD;AACF,GATD,CAF0D,CAa1D;;;AACApgB,WAAS,CAACogB,UAAV,GAAuB,KAAvB,CAd0D,CAgB1D;;AACA,MAAI9X,YAAJ,EAAkB;AAChBtI,aAAS,CAACqc,WAAV,CAAsB/T,YAAY,CAACtN,QAAnC;AACD;AACF;AAAA,C;;AC/BD;AACA;AACA;AACA;AAGA;;;;;;;;;;AASA,SAASqlB,oBAAT,CAA8BrrC,IAA9B,EAAoCgrB,SAApC,EAA+CyE,sBAA/C,EAAuE;AACrE,OAAKoT,uBAAL,GAA+BpT,sBAA/B;AACA,OAAK6b,aAAL,GAAqB,KAAKzI,uBAAL,CAA6B5M,eAA7B,EAArB;AACA,OAAKtG,MAAL,GAAc,KAAKkT,uBAAL,CAA6BjT,QAA7B,EAAd;AAEA;;;;;AAIA,OAAK5E,SAAL,GAAiB6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC+C,IAAD,CAAvC,EAA+CgrB,SAA/C,CAAjB;AACA;;;;;AAIA,OAAK2T,QAAL,GAAgB5gC,CAAC,CAAC,OAAD,CAAD,CAAWya,IAAX,CAAgB,IAAhB,EAAsBwS,SAAS,CAAClmB,EAAhC,EAAoCuB,QAApC,CAA6C,WAA7C,CAAhB,CAdqE,CAgBrE;AACA;AACA;;AACA,MAAI,KAAK2kB,SAAL,CAAezmB,KAAnB,EAA0B;AACxB,SAAKo6B,QAAL,CAAch6B,GAAd,CAAkB,OAAlB,EAA2B,KAAKqmB,SAAL,CAAezmB,KAA1C;AACD;;AACD,MAAI,KAAKymB,SAAL,CAAexmB,MAAnB,EAA2B;AACzB,SAAKm6B,QAAL,CAAch6B,GAAd,CAAkB,QAAlB,EAA4B,KAAKqmB,SAAL,CAAexmB,MAA3C;AACD;;AAED,MAAI,KAAKwmB,SAAL,CAAehF,QAAnB,EAA6B;AAC3B,SAAKqhB,WAAL,CAAiB,KAAKrc,SAAL,CAAehF,QAAhC;AACD;;AAED,OAAKulB,6BAAL,GA9BqE,CAgCrE;;;AACA,MAAI,KAAKvgB,SAAL,CAAenF,OAAf,IAA0B,KAAKmF,SAAL,CAAenF,OAAf,CAAuBzsB,MAArD,EAA6D;AAC3D,SAAKulC,QAAL,CAAct4B,QAAd,CAAuB,KAAK2kB,SAAL,CAAenF,OAAf,CAAuB9M,IAAvB,CAA4B,GAA5B,CAAvB;AACD,GAnCoE,CAqCrE;;;AACA,MAAI,KAAKiS,SAAL,CAAezF,OAAnB,EAA4B;AAC1B,SAAKoZ,QAAL,CAAcnmB,IAAd,CAAmB,OAAnB,EAA4B,KAAKwS,SAAL,CAAezF,OAA3C;AACD,GAxCoE,CA0CrE;;;AACA8N,iBAAe,CAAC,IAAD,EAAO,KAAKrI,SAAZ,EAAuB,KAAK6X,uBAAL,CAA6BtP,UAApD,CAAf;AACD;AAED;;;;;AAGA8X,oBAAoB,CAAC1xC,SAArB,CAA+B6xC,oBAA/B,GAAsD,YAAW;AAC/D,OAAKF,aAAL,GAAqB,KAAKzI,uBAAL,CAA6B5M,eAA7B,EAArB;AACA,OAAKtG,MAAL,GAAc,KAAKkT,uBAAL,CAA6BjT,QAA7B,EAAd;;AACA,OAAK2b,6BAAL;AACD,CAJD;;AAMAF,oBAAoB,CAAC1xC,SAArB,CAA+B8xC,mBAA/B,GAAqD,UAASxB,MAAT,EAAiB;AACpE;AACA,MAAI,OAAOA,MAAP,KAAkB,UAAtB,EAAkC;AAChC,SAAKyB,oBAAL,GAA4B,KAAKJ,aAAL,CAAmBjB,2BAAnB,CAA+CJ,MAA/C,CAA5B;AACD,GAFD,MAEO;AACL,SAAKyB,oBAAL,GAA4BzB,MAA5B;AACD;;AACD,MAAI0B,IAAI,GAAG,IAAX;;AACA,OAAKC,QAAL,CAAc,KAAKne,UAAnB,EAA+B,YAAW;AACxCke,QAAI,CAACD,oBAAL;AACD,GAFD,EARoE,CAWpE;;;AACA,OAAK/M,QAAL,CAAct4B,QAAd,CAAuB,WAAvB;AACD,CAbD;;AAeAglC,oBAAoB,CAAC1xC,SAArB,CAA+B4xC,6BAA/B,GAA+D,YAAW;AACxE;AACA;AACA,MAAI,KAAKvgB,SAAL,CAAe1F,OAAf,KAA2BjtB,SAA/B,EAA0C;AACxC,SAAKozC,mBAAL,CAAyB,KAAKzgB,SAAL,CAAe1F,OAAxC;AACD;;AACD,MAAI,KAAK0F,SAAL,CAAejF,MAAf,KAA0B1tB,SAA9B,EAAyC;AACvC,SAAKozC,mBAAL,CAAyB,KAAKzgB,SAAL,CAAejF,MAAxC;AACD;AACF,CATD;;AAWAslB,oBAAoB,CAAC1xC,SAArB,CAA+BkyC,SAA/B,GAA2C,UAASC,SAAT,EAAoB;AAC7D;AACA;AACA,MAAI,OAAO7B,MAAP,KAAkB,UAAtB,EAAkC;AAChC,SAAKjf,SAAL,CAAejF,MAAf,GAAwB+lB,SAAxB;AACD;;AACD,OAAKL,mBAAL,CAAyBK,SAAzB;AACD,CAPD;;AASAT,oBAAoB,CAAC1xC,SAArB,CAA+BoyC,UAA/B,GAA4C,UAASC,UAAT,EAAqB;AAC/D,MAAI,KAAKhhB,SAAL,CAAe1F,OAAf,KAA2BjtB,SAA/B,EAA0C;AACxC,SAAK2yB,SAAL,CAAe1F,OAAf,GAAyB0mB,UAAzB;;AACA,SAAKP,mBAAL,CAAyB,KAAKzgB,SAAL,CAAe1F,OAAxC;AACD;AACF,CALD;;AAOA+lB,oBAAoB,CAAC1xC,SAArB,CAA+B4gC,aAA/B,GAA+C,UAASC,OAAT,EAAkB;AAC/D,MAAIqJ,IAAI,GAAG,KAAK7Y,SAAhB;AACA,MAAI6Y,IAAI,CAACve,OAAL,KAAiBjtB,SAAjB,IAA8BwrC,IAAI,CAAC9d,MAAL,KAAgB1tB,SAAlD,EAA6D,OAFE,CAEM;;AACrE,MAAIu1B,SAAS,GAAGiW,IAAI,CAAC7jC,IAAL,CAAU,CAAV,EAAaqM,WAAb,KAA6Bw3B,IAAI,CAAC7jC,IAAL,CAAU7F,KAAV,CAAgB,CAAhB,CAA7B,GAAkD,SAAlE;AACA,MAAI2kB,IAAI,GAAG;AACTha,MAAE,EAAE++B,IAAI,CAAC/+B;AADA,GAAX;;AAGA,OAAK8mC,QAAL,CAAc,KAAKne,UAAL,GAAkB,SAAhC,EAA2C,YAAW;AACpD3O,QAAI,CAAC5D,KAAL,GAAa2oB,IAAI,CAAC3oB,KAAL,IAAc2oB,IAAI,CAAC5vB,IAAnB,IAA2B4vB,IAAI,CAAC9pB,KAA7C;AACAygB,WAAO,CAAC5M,SAAD,EAAY9O,IAAZ,CAAP;AACD,GAHD;AAID,CAXD;AAaA;;;;;AAGAusB,oBAAoB,CAAC1xC,SAArB,CAA+BsM,gBAA/B,GAAkD,YAAW;AAC3D,SAAO,KAAK04B,QAAZ;AACD,CAFD;AAIA;;;;;AAGA0M,oBAAoB,CAAC1xC,SAArB,CAA+BiE,SAA/B,GAA2C,YAAW;AACpD,SAAO,KAAKotB,SAAZ;AACD,CAFD;;AAIAqgB,oBAAoB,CAAC1xC,SAArB,CAA+BiyC,QAA/B,GAA0C,UAASpe,SAAT,EAAoBhU,OAApB,EAA6B;AACrE,OAAKmlB,QAAL,CAAcrR,GAAd,CAAkB,WAAWE,SAA7B;AACA,OAAKmR,QAAL,CAAcloB,EAAd,CAAiB,WAAW+W,SAA5B,EAAuC,KAAKye,oBAAL,IAA6B,IAApE,EAA0EzyB,OAA1E;AACD,CAHD,C,CAKA;;;AACA2xB,UAAU,CAACE,oBAAoB,CAAC1xC,SAAtB,CAAV;AAEe0xC,8EAAf,E;;ACnJA;AACA;AACA,IAAIa,qBAAqB,GAAG,CAA5B;;AAEA,SAASC,gBAAT,CAA0BnhB,SAA1B,EAAqCyE,sBAArC,EAA6D;AAC3D,OAAKic,oBAAL,GAA4B,YAAW,CAAE,CAAzC;;AACA,OAAKje,UAAL,GAAkB,WAAY,EAAEye,qBAAhC;AACA,OAAKD,oBAAL,GAA4B,QAA5B,CAH2D,CAI3D;;AACAZ,uBAAoB,CAACxxC,IAArB,CAA0B,IAA1B,EAAgC,QAAhC,EAA0CmxB,SAA1C,EAAqDyE,sBAArD;AACA,OAAKkP,QAAL,CAAct4B,QAAd,CAAuB,oBAAvB;AACA,OAAKyf,MAAL,GAAc/nB,CAAC,CAAC,UAAD,CAAD,CACXquC,IADW,CACNphB,SAAS,CAAC/W,IADJ,EAEXjP,QAFW,CAEF,KAAK25B,QAFH,CAAd;;AAGA,OAAKvF,aAAL,GAAqB,UAASyE,KAAT,EAAgB;AACnC;AACA,QAAIA,KAAK,CAAC5pB,IAAN,IAAc,OAAO4pB,KAAK,CAAC5pB,IAAb,KAAuB,WAAzC,EAAsD;AACpD,WAAK+W,SAAL,CAAe/W,IAAf,GAAsB4pB,KAAK,CAAC5pB,IAA5B;AACA,WAAK6R,MAAL,CAAYsmB,IAAZ,CAAiBvO,KAAK,CAAC5pB,IAAvB;AACD;AACF,GAND;AAOD;;AAED02B,OAAO,CAACwB,gBAAD,EAAmBd,qBAAnB,CAAP;;AAEAc,gBAAgB,CAACxyC,SAAjB,CAA2Bs5B,mBAA3B,GAAiD,YAAW;AAC1DkZ,kBAAgB,CAACpB,UAAjB,CAA4BS,oBAA5B,CAAiD3xC,IAAjD,CAAsD,IAAtD;AACD,CAFD;;AAIesyC,sEAAf,E;;AC7BA;AACA;AACA;AACA;AAGe,SAASE,kBAAT,CAA4BrhB,SAA5B,EAAuCyE,sBAAvC,EAA+D;AAC5E,MAAIwW,YAAJ,EACEqG,YADF,EAEEtpB,YAFF,EAGEupB,SAHF,EAIEC,cAJF,EAKEC,MALF,EAME9N,QANF,EAOE1K,UAPF,EAQElsB,KARF,EASEgtB,YATF,CAD4E,CAY5E;AACA;AACA;AACA;;AACA,WAAS2X,cAAT,GAA0B;AACxBC,eAAW,CAAC5kC,KAAK,CAACmW,GAAN,CAAU+nB,YAAV,CAAD,CAAX;AACD;;AAED,WAAS2G,2BAAT,GAAuC;AACrC,QAAIhb,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6BoU,YAA7B,CAAlB;AACAhS,cAAU,CAACoT,WAAX,CAAuBzV,WAAW,CAACib,SAAZ,EAAvB;AACD;;AAED,WAASF,WAAT,CAAqBzzC,KAArB,EAA4B;AAC1B,QAAIA,KAAJ,EAAW;AACTqzC,eAAS,CAACpwC,IAAV,CAAe,SAAf,EAA0B,IAA1B;AACAqwC,oBAAc,CAACnmC,QAAf,CAAwB,SAAxB;AACD,KAHD,MAGO;AACLkmC,eAAS,CAACpwC,IAAV,CAAe,SAAf,EAA0B,KAA1B;AACAqwC,oBAAc,CAAC7iC,WAAf,CAA2B,SAA3B;AACD;AACF;;AAED,WAASmjC,gBAAT,GAA4B;AAC1B,WAAOP,SAAS,CAACpwC,IAAV,CAAe,SAAf,CAAP;AACD;;AAED,WAAS4wC,gBAAT,CAA0B/0C,CAA1B,EAA6B;AAC3BA,KAAC,CAACg1C,cAAF;;AAEA,QAAIT,SAAS,CAACpwC,IAAV,CAAe,SAAf,CAAJ,EAA+B;AAC7BwwC,iBAAW,CAAC,KAAD,CAAX;AACD,KAFD,MAEO;AACLA,iBAAW,CAAC,IAAD,CAAX;AACD,KAP0B,CAQ3B;;;AACAJ,aAAS,CAAC7f,OAAV,CAAkB,QAAlB;AACD;;AAED3kB,OAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACAmF,cAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf,CApD4E,CAsD5E;;AACAjL,WAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACgpB,QAAxC,EAAkD+E,SAAlD,CAAZ;AACAib,cAAY,GAAGjb,SAAS,CAACnH,QAAzB;AACAyoB,cAAY,GAAGthB,SAAS,CAACjF,MAAzB;AACA/C,cAAY,GAAGgI,SAAS,CAAChI,YAAzB;AAEAypB,QAAM,GAAG1uC,CAAC,CAAC,SAAD,CAAD,CAAaiI,MAAb,CAAoB,WAAWglB,SAAS,CAAC/W,IAArB,GAA4B,SAAhD,CAAT;AACAw4B,QAAM,CAACj0B,IAAP,CAAY,KAAZ,EAAmBwS,SAAS,CAAClmB,EAA7B;AACAynC,WAAS,GAAGxuC,CAAC,CAAC,yBAAD,CAAD,CAA6Bya,IAA7B,CAAkC,IAAlC,EAAwCwS,SAAS,CAAClmB,EAAlD,CAAZ;;AAEA,MAAI2qB,sBAAJ,EAA4B;AAC1B8c,aAAS,CAAC/zB,IAAV,CAAe,UAAf,EAA2BiX,sBAAsB,CAACsJ,eAAvB,EAA3B;AACD;;AAEDyT,gBAAc,GAAGzuC,CAAC,CAAC,6BAAD,CAAlB,CApE4E,CAqE5E;;AACAwuC,WAAS,CAAC5nC,GAAV,CAAc,SAAd,EAAyB,MAAzB,EAtE4E,CAwE5E;;AACA,MAAIqmB,SAAS,CAAC9E,MAAV,KAAqB,MAAzB,EAAiC;AAC/ByY,YAAQ,GAAG5gC,CAAC,CAAC,OAAD,CAAD,CAAWiI,MAAX,CAAkBymC,MAAlB,EAA0BzmC,MAA1B,CAAiCumC,SAAjC,EAA4CvmC,MAA5C,CAAmDwmC,cAAc,CAACnmC,QAAf,CAAwB,OAAxB,CAAnD,CAAX;AACD,GAFD,MAEO;AACLs4B,YAAQ,GAAG5gC,CAAC,CAAC,OAAD,CAAD,CAAWiI,MAAX,CAAkBumC,SAAlB,EAA6BvmC,MAA7B,CAAoCwmC,cAApC,EAAoDxmC,MAApD,CAA2DymC,MAA3D,CAAX;AACD,GA7E2E,CA+E5E;;;AACA9N,UAAQ,CAACt4B,QAAT,CAAkB,sBAAlB,EAhF4E,CAiF5E;;AACAs4B,UAAQ,CAACt4B,QAAT,CAAkB,WAAlB,EAlF4E,CAoF5E;;AACAmmC,gBAAc,CAAC/1B,EAAf,CAAkB,OAAlB,EAA2Bs2B,gBAA3B,EArF4E,CAsF5E;AACA;;AACAN,QAAM,CAACh2B,EAAP,CAAU,OAAV,EAAmBs2B,gBAAnB,EAxF4E,CA0F5E;;AACApO,UAAQ,CAACh6B,GAAT,CAAa;AACXJ,SAAK,EAAEymB,SAAS,CAACzmB,KADN;AAEXC,UAAM,EAAEwmB,SAAS,CAACxmB;AAFP,GAAb,EA3F4E,CAgG5E;;AACA,MAAI8nC,YAAJ,EAAkB;AAChB;AACAA,gBAAY,GAAGvX,YAAY,CAACsV,2BAAb,CAAyC,OAAzC,EAAkDiC,YAAlD,CAAf;AACD,GApG2E,CAsG5E;;;AACAC,WAAS,CAAC91B,EAAV,CAAa,QAAb,EAAuB,YAAW;AAChC,QAAIvd,KAAK,GAAG,KAAZ;AAAA,QACE+zC,OADF,CADgC,CAGhC;;AACA,QAAIlvC,CAAC,CAAC,IAAD,CAAD,CAAQ2iC,EAAR,CAAW,UAAX,CAAJ,EAA4B;AAC1BxnC,WAAK,GAAG,IAAR;AACD,KAN+B,CAOhC;AACA;;;AACA,QAAI+sC,YAAY,KAAK5tC,SAArB,EAAgC;AAC9B40C,aAAO,GAAG,EAAV;AACAA,aAAO,CAAChH,YAAD,CAAP,GAAwB/sC,KAAxB;AACA6O,WAAK,CAACrM,GAAN,CAAUuxC,OAAV;AACD,KAb+B,CAchC;AACA;;;AACA,QAAIX,YAAY,KAAKj0C,SAArB,EAAgC;AAC9Bi0C,kBAAY,CAACpzC,KAAD,CAAZ;AACD;AACF,GAnBD;;AAqBA,MAAI8xB,SAAS,CAACzF,OAAd,EAAuB;AACrBoZ,YAAQ,CAACnmB,IAAT,CAAc,OAAd,EAAuBwS,SAAS,CAACzF,OAAjC;AACD,GA9H2E,CAgI5E;;;AACA,MAAIvC,YAAY,KAAK3qB,SAArB,EAAgC;AAC9Bs0C,eAAW,CAAC3pB,YAAD,CAAX;AACD,GAnI2E,CAqI5E;;;AACAiR,YAAU,GAAG;AACX;AACAhB,uBAAmB,EAAE,+BAAW;AAC9B,UAAIlrB,KAAK,IAAIk+B,YAAY,KAAK5tC,SAA9B,EAAyC;AACvC0P,aAAK,CAACssB,cAAN,CAAqB4R,YAArB,EAAmCyG,cAAnC;AACA3kC,aAAK,CAACmlC,iCAAN,CAAwCjH,YAAxC,EAAsD2G,2BAAtD;AACD;;AACD7kC,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACAmF,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf,CAN8B,CAQ9B;;AACA,UAAIgQ,YAAY,KAAK5tC,SAArB,EAAgC;AAC9B;AACA0P,aAAK,CAACusB,qBAAN,CAA4B,CAAC2R,YAAD,CAA5B,EAA4CyG,cAA5C;AACA3kC,aAAK,CAACwpB,8BAAN,CAAqC0U,YAArC,EAAmD2G,2BAAnD,EAH8B,CAI9B;;AACAF,sBAAc;AACf;AACF,KAlBU;AAoBXnS,iBAAa,EAAE,uBAASC,OAAT,EAAkB;AAC/B+R,eAAS,CAACjf,GAAV,CAAc,gBAAd;AACAif,eAAS,CAAC91B,EAAV,CAAa,gBAAb,EAA+B,YAAW;AACxC,YAAIqI,IAAI,GAAG;AACTha,YAAE,EAAEkmB,SAAS,CAAClmB,EADL;AAEToW,eAAK,EAAE8P,SAAS,CAAC/W,IAFR;AAGT/a,eAAK,EAAE6E,CAAC,CAAC,IAAD,CAAD,CAAQ2iC,EAAR,CAAW,UAAX;AAHE,SAAX;AAKA,YAAIuF,YAAJ,EAAkBnnB,IAAI,CAAC+E,QAAL,GAAgBoiB,YAAhB;AAClBzL,eAAO,CAAC,iBAAD,EAAoB1b,IAApB,CAAP;AACD,OARD;AASD,KA/BU;AAiCX;AACA7Y,oBAAgB,EAAE,4BAAW;AAC3B,aAAO04B,QAAP;AACD,KApCU;AAsCX;AACA/gC,aAAS,EAAE,qBAAW;AACpB,UAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAb;;AAEA,UAAIib,YAAY,KAAK5tC,SAArB,EAAgC;AAC9B;AACA;AACA;AACA6E,cAAM,CAAC8lB,YAAP,GAAsBupB,SAAS,CAAC7L,EAAV,CAAa,UAAb,IAA2B,IAA3B,GAAkC,KAAxD;AACD;;AAED,aAAOxjC,MAAP;AACD;AAlDU,GAAb;AAqDAiuC,YAAU,CAAClX,UAAD,EAAajJ,SAAb,CAAV;AACAqI,iBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf,CA5L4E,CA8L5E;;AACA,SAAOU,UAAP;AACD;AAAA,C;;;;;ACtMD;;;AAGA;AACA,IAAMkZ,UAAU,GAAG,4CAAnB;AAEe,SAASC,cAAT,CAAwBn5B,IAAxB,EAA8B;AAC3C,MAAI2R,OAAO,GAAG,EAAd;AAAA,MACEwmB,IADF;AAEA,MAAI,CAACruC,CAAC,CAAC/B,OAAF,CAAUiY,IAAV,CAAL,EAAsBA,IAAI,GAAG,CAACA,IAAD,CAAP;AACtBA,MAAI,CAACqB,OAAL,CAAa,UAAS5C,IAAT,EAAe;AAC1BkT,WAAO,IAAIlT,IAAI,GAAG,IAAlB;AACD,GAFD;AAGA05B,MAAI,GAAG,sCAAsCiB,eAAQ,CAACC,MAAT,CAAgB1nB,OAAhB,CAAtC,GAAiE,QAAxE;AACA,SAAOwmB,IAAI,CAACnnC,OAAL,CAAa,WAAb,EAA0B,UAAUkoC,UAAV,GAAuB,GAAjD,CAAP;AACD,C;;ACfD;AACA;AACA;AAGA;;;;;;;;;;;AAUA,SAASI,cAAT,CAAwBviB,SAAxB,EAAmCyE,sBAAnC,EAA2D;AACzD;AACA4b,uBAAoB,CAACxxC,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwCmxB,SAAxC,EAAmDyE,sBAAnD,EAFyD,CAGzD;;AACA,OAAKkP,QAAL,CAAct4B,QAAd,CAAuB,kBAAvB,EAJyD,CAKzD;;AACA,OAAKs4B,QAAL,CAAc34B,MAAd,CAAqBonC,cAAc,CAAC,KAAKpiB,SAAL,CAAe/W,IAAhB,CAAnC;AACD;;AACD02B,OAAO,CAAC4C,cAAD,EAAiBlC,qBAAjB,CAAP;;AAEAkC,cAAc,CAAC5zC,SAAf,CAAyBs5B,mBAAzB,GAA+C,YAAW;AACxDsa,gBAAc,CAACxC,UAAf,CAA0BS,oBAA1B,CAA+C3xC,IAA/C,CAAoD,IAApD;AACD,CAFD;;AAIe0zC,kEAAf,E;;AC7BA;AACA;AACA;AAEA,IAAIC,WAAW,GAAG,eAAlB;AAEA;;;;;;;;;;AASA,SAASC,eAAT,CAAyBziB,SAAzB,EAAoCiJ,UAApC,EAAgD;AAC9C;AACAoX,uBAAoB,CAACxxC,IAArB,CAA0B,IAA1B,EAAgC,OAAhC,EAAyCmxB,SAAzC,EAAoDiJ,UAApD;AAEA;;AACA,OAAKyZ,WAAL,GAAmBzZ,UAAnB;AACA;;AACA,OAAK0Z,KAAL,GAAa5vC,CAAC,CAAC,OAAD,CAAd;AACA;;AACA,OAAK6vC,YAAL,GAAoBJ,WAAW,CAAC5yC,IAAZ,CAAiB,KAAKowB,SAAL,CAAevF,GAAhC,CAApB;;AAEA,MAAI,KAAKmoB,YAAT,EAAuB;AACrB;AACA,SAAKD,KAAL,CAAWn1B,IAAX,CAAgB,KAAhB,EAAuB,KAAKwS,SAAL,CAAevF,GAAtC;AACD,GAd6C,CAgB9C;AACA;;;AACA,MAAI,KAAKuF,SAAL,CAAezmB,KAAf,KAAyB,MAA7B,EAAqC;AACnC,SAAKopC,KAAL,CAAWhpC,GAAX,CAAe,OAAf,EAAwB,MAAxB;AACD;;AACD,MAAI,KAAKqmB,SAAL,CAAexmB,MAAf,KAA0B,MAA9B,EAAsC;AACpC,SAAKmpC,KAAL,CAAWhpC,GAAX,CAAe,QAAf,EAAyB,MAAzB;AACD;;AACD,OAAKgpC,KAAL,CAAW3oC,QAAX,CAAoB,KAAK25B,QAAzB;AACD;;AACDgM,OAAO,CAAC8C,eAAD,EAAkBpC,qBAAlB,CAAP;AAEA;;;;AAGAoC,eAAe,CAAC9zC,SAAhB,CAA0Bs5B,mBAA1B,GAAgD,YAAW;AACzD,MAAIxN,GAAJ,EAASooB,QAAT,EAAmBnoB,aAAnB,CADyD,CAEzD;AACA;;AACA,MAAI,CAAC,KAAKkoB,YAAV,EAAwB;AACtBnoB,OAAG,GAAG,KAAKuF,SAAL,CAAevF,GAArB,CADsB,CAEtB;AACA;AACA;AACA;;AACAC,iBAAa,GAAG,KAAKsF,SAAL,CAAetF,aAA/B;;AAEA,YAAQA,aAAR;AACE,WAAK,MAAL;AACEmoB,gBAAQ,GAAG,EAAX;AACA;;AACF,WAAK,OAAL;AACA;AACEA,gBAAQ,GAAG,KAAKH,WAAL,CAAiBrrC,eAAjB,CAAiCwrC,QAAjC,IAA6C,EAAxD;AACA;AAPJ,KARsB,CAkBtB;;;AACAA,YAAQ,GAAGA,QAAQ,CAAC1zC,KAAT,CAAe,CAAf,EAAkB0zC,QAAQ,CAACC,WAAT,CAAqB,GAArB,IAA4B,CAA9C,CAAX;AACAroB,OAAG,GAAGsoB,6BAAS,CAACC,aAAV,GAA0BH,QAA1B,GAAqCpoB,GAA3C;;AACA,SAAKkoB,KAAL,CAAWn1B,IAAX,CAAgB,KAAhB,EAAuBiN,GAAvB;AACD;AACF,CA3BD;;AA6BegoB,oEAAf,E;;AC5EA;AAEA;AACA;AACA;AACA;AAGe,SAASQ,eAAT,CAAyBjjB,SAAzB,EAAoCyE,sBAApC,EAA4D;AACzE;AACA,MAAIwE,UAAJ;AAAA,MACE;AACAia,MAFF;AAAA,MAGE;AACAxmC,SAJF;AAAA,MAKE;AACAymC,SAAO,GAAG,EANZ;AAAA,MAOE;AACAC,UAAQ,GAAG,EARb;AAAA,MASErmC,KATF;AAAA,MAUEgtB,YAVF,CAFyE,CAczE;AACA;AACA;AACA;;AACA,WAASsZ,WAAT,GAAuB;AACrB,QAAIrjB,SAAS,CAACnH,QAAV,KAAuBxrB,SAA3B,EAAsC;AACpC,UAAIa,KAAK,GAAG6O,KAAK,CAACmW,GAAN,CAAU8M,SAAS,CAACnH,QAApB,CAAZ;;AACA,WAAK,IAAI1qB,CAAC,GAAG,CAAR,EAAWc,GAAG,GAAGyN,OAAO,CAACtO,MAA9B,EAAsCD,CAAC,GAAGc,GAA1C,EAA+Cd,CAAC,EAAhD,EAAoD;AAClD,YAAIuO,OAAO,CAACvO,CAAD,CAAP,CAAWD,KAAX,KAAqBA,KAAzB,EAAgC;AAC9Bi1C,iBAAO,CAACh1C,CAAD,CAAP,CAAWqf,IAAX,CAAgB,SAAhB,EAA2B,IAA3B;AACA41B,kBAAQ,CAACj1C,CAAD,CAAR,CAAYkN,QAAZ,CAAqB,SAArB;AACD,SAHD,MAGO;AACL8nC,iBAAO,CAACh1C,CAAD,CAAP,CAAWm1C,UAAX,CAAsB,SAAtB;AACAF,kBAAQ,CAACj1C,CAAD,CAAR,CAAYwQ,WAAZ,CAAwB,SAAxB;AACD;AACF;AACF;AACF;;AAED,WAAS4kC,wBAAT,GAAoC;AAClC,QAAI3c,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B7G,SAAS,CAACnH,QAAvC,CAAlB;AACAoQ,cAAU,CAACoT,WAAX,CAAuBzV,WAAW,CAACib,SAAZ,EAAvB;AACD;;AAGD,WAASE,gBAAT,CAA0B/0C,CAA1B,EAA6B;AAC3B,QAAIsgB,KAAK,GAAGva,CAAC,CAAC,IAAD,CAAb;AAAA,QACEywC,MAAM,GAAGl2B,KAAK,CAACJ,IAAN,CAAW,OAAX,CADX;AAAA,QAEE/e,CAFF;AAAA,QAEKc,GAFL;AAIAjC,KAAC,CAACg1C,cAAF;;AAEA,QAAIwB,MAAM,CAACh2B,IAAP,CAAY,UAAZ,MAA4BngB,SAAhC,EAA2C;AACzC;AACA;AACD;;AAED,SAAKc,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGk0C,OAAO,CAAC/0C,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9Cg1C,aAAO,CAACh1C,CAAD,CAAP,CAAWm1C,UAAX,CAAsB,SAAtB;AACAF,cAAQ,CAACj1C,CAAD,CAAR,CAAYwQ,WAAZ,CAAwB,SAAxB;AACD;;AAED6kC,UAAM,CAACh2B,IAAP,CAAY,SAAZ,EAAuB,SAAvB;AACAF,SAAK,CAACjS,QAAN,CAAe,SAAf,EAlB2B,CAoB3B;;AACAmoC,UAAM,CAAC9hB,OAAP,CAAe,QAAf;AACD;;AAED,WAASjlB,UAAT,GAAsB;AACpB,QAAI+mC,MAAJ,EAAYl2B,KAAZ,EAAmBm0B,MAAnB,EAA2BgC,iBAA3B,EACEC,MADF,EACUv1C,CADV,EACac,GADb;AAGA8N,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACAmF,gBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf,CALoB,CAOpB;;AACAjL,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC4pB,KAAxC,EAA+CmE,SAA/C,CAAZ,CARoB,CASpB;;AACAtjB,WAAO,GAAGsjB,SAAS,CAACtjB,OAApB;;AACA,SAAKvO,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGyN,OAAO,CAACtO,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9CuO,aAAO,CAACvO,CAAD,CAAP,GAAa02B,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC8pB,WAAxC,EAAqDrf,OAAO,CAACvO,CAAD,CAA5D,CAAb;AACD,KAbmB,CAepB;;;AACA+0C,QAAI,GAAGnwC,CAAC,CAAC,OAAD,CAAD,CAAWya,IAAX,CAAgB,IAAhB,EAAsBwS,SAAS,CAAClmB,EAAhC,CAAP;AACAopC,QAAI,CAAC7nC,QAAL,CAAc,mBAAd,EAjBoB,CAkBpB;;AACA6nC,QAAI,CAAC7nC,QAAL,CAAc,WAAd,EAnBoB,CAoBpB;;AACA6nC,QAAI,CAAC7nC,QAAL,CAAc2kB,SAAS,CAAClX,WAAxB,EArBoB,CAsBpB;;AACAo6B,QAAI,CAAC7nC,QAAL,CAAc2kB,SAAS,CAAClE,KAAxB;;AAEA,QAAIkE,SAAS,CAAC9P,KAAd,EAAqB;AACnBuxB,YAAM,GAAG1uC,CAAC,CAAC,QAAD,CAAD,CAAYquC,IAAZ,CAAiBphB,SAAS,CAAC9P,KAA3B,CAAT;AACAuxB,YAAM,CAACpmC,QAAP,CAAgB,OAAhB;AACAomC,YAAM,CAACpmC,QAAP,CAAgB2kB,SAAS,CAACtE,OAAV,KAAsB,KAAtB,GAA8B,QAA9B,GAAyC,SAAzD;AACAwnB,UAAI,CAACloC,MAAL,CAAYymC,MAAZ;AACD;;AAEDgC,qBAAiB,GAAG1wC,CAAC,CAAC,QAAD,CAAD,CAAYsI,QAAZ,CAAqB,SAArB,EAAgCrB,QAAhC,CAAyCkpC,IAAzC,CAApB,CAhCoB,CAkCpB;;AACA,SAAK/0C,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGyN,OAAO,CAACtO,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9Cu1C,YAAM,GAAGhnC,OAAO,CAACvO,CAAD,CAAhB;AACAq1C,YAAM,GAAGzwC,CAAC,CAAC,SAAD,CAAD,CACNya,IADM,CACD,MADC,EACO,OADP,EAENA,IAFM,CAED,MAFC,EAEOwS,SAAS,CAAClmB,EAFjB,EAGN0T,IAHM,CAGD,UAHC,EAGWiX,sBAAsB,CAACsJ,eAAvB,EAHX,EAINvgB,IAJM,CAID,IAJC,EAIKwS,SAAS,CAAClmB,EAAV,GAAe,GAAf,GAAqB3L,CAJ1B,CAAT;AAKAg1C,aAAO,CAACpyC,IAAR,CAAayyC,MAAb;AAEAl2B,WAAK,GAAGva,CAAC,CAAC,QAAD,CAAD,CACLsI,QADK,CACI,QADJ,EAELL,MAFK,CAEEwoC,MAFF,CAAR;AAGAJ,cAAQ,CAACryC,IAAT,CAAcuc,KAAd;AACAm2B,uBAAiB,CAACzoC,MAAlB,CAAyBsS,KAAzB;;AAEA,UAAI0S,SAAS,CAAClE,KAAV,KAAoB,OAAxB,EAAiC;AAC/B/oB,SAAC,CAAC,6BAAD,CAAD,CAAiCiH,QAAjC,CAA0CsT,KAA1C;AACD;;AAEDva,OAAC,CAAC,SAAD,CAAD,CACGya,IADH,CACQ,KADR,EACewS,SAAS,CAAClmB,EAAV,GAAe,GAAf,GAAqB3L,CADpC,EAEGizC,IAFH,CAEQsC,MAAM,CAACz6B,IAFf,EAGGjP,QAHH,CAGYsT,KAHZ;;AAKA,UAAIo2B,MAAM,CAAC1oB,QAAX,EAAqB;AACnBwoB,cAAM,CAACh2B,IAAP,CAAY,UAAZ,EAAwBk2B,MAAM,CAAC1oB,QAA/B;AACA1N,aAAK,CAACjS,QAAN,CAAe,cAAf;AACD;;AACD,UAAIqoC,MAAM,CAAC9nB,QAAX,EAAqB;AACnB4nB,cAAM,CAACh2B,IAAP,CAAY,SAAZ,EAAuBk2B,MAAM,CAAC9nB,QAA9B;AACAtO,aAAK,CAACjS,QAAN,CAAe,SAAf;AACD;;AAEDiS,WAAK,CAAC7B,EAAN,CAAS,kBAAT,EAA6Bs2B,gBAA7B;AAEAyB,YAAM,CAACG,MAAP,CAAe,UAASD,MAAT,EAAiB;AAC9B,eAAO,YAAW;AAChB,cAAIA,MAAM,CAAC3oB,MAAX,EAAmB;AACjBgP,wBAAY,CAACsV,2BAAb,CAAyCqE,MAAM,CAAC3oB,MAAhD;AACD,WAFD,MAEO,IAAI2oB,MAAM,CAACx1C,KAAP,KAAiBb,SAArB,EAAgC;AACrC0P,iBAAK,CAACrM,GAAN,CAAUsvB,SAAS,CAACnH,QAApB,EAA8B6qB,MAAM,CAACx1C,KAArC;AACD;AACF,SAND;AAOD,OARa,CAQXw1C,MARW,CAAd;AASD;;AAED,QAAI1jB,SAAS,CAACzF,OAAd,EAAuB;AACrB2oB,UAAI,CAAC11B,IAAL,CAAU,OAAV,EAAmBwS,SAAS,CAACzF,OAA7B;AACD;;AAED4lB,cAAU,CAAClX,UAAD,EAAajJ,SAAb,CAAV;AACAqI,mBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf;AACD,GAtJwE,CAwJzE;;;AACAU,YAAU,GAAG;AACXhB,uBAAmB,EAAE,+BAAW;AAC9B,UAAIlrB,KAAK,IAAIijB,SAAS,CAACnH,QAAV,KAAuBxrB,SAApC,EAA+C;AAC7C0P,aAAK,CAACssB,cAAN,CAAqBrJ,SAAS,CAACnH,QAA/B,EAAyCwqB,WAAzC;AACAtmC,aAAK,CAACmlC,iCAAN,CAAwCliB,SAAS,CAACnH,QAAlD,EAA4D0qB,wBAA5D;AACD;;AACDxmC,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACAmF,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf,CAN8B,CAO9B;;AACA,UAAIjL,SAAS,CAACnH,QAAV,KAAuBxrB,SAA3B,EAAsC;AACpC;AACA0P,aAAK,CAACusB,qBAAN,CAA4B,CAACtJ,SAAS,CAACnH,QAAX,CAA5B,EAAkDwqB,WAAlD;AACAtmC,aAAK,CAACwpB,8BAAN,CAAqCvG,SAAS,CAACnH,QAA/C,EAAyD0qB,wBAAzD;AACD,OAZ6B,CAa9B;;;AACAF,iBAAW;AACZ,KAhBU;AAkBX9T,iBAAa,EAAE,uBAASC,OAAT,EAAkB;AAC/B2T,aAAO,CAAC74B,OAAR,CAAgB,UAASk5B,MAAT,EAAiB3yC,GAAjB,EAAsB;AACpC,YAAI+yC,UAAU,GAAGlnC,OAAO,CAAC7L,GAAD,CAAxB;AACA2yC,cAAM,CAAClhB,GAAP,CAAW,UAAX;AACAkhB,cAAM,CAAC/3B,EAAP,CAAU,gBAAV,EAA4B,YAAW;AACrC,cAAIqI,IAAI,GAAG;AACTha,cAAE,EAAEkmB,SAAS,CAAClmB,EADL;AAET8hB,oBAAQ,EAAEgoB,UAAU,CAAC36B;AAFZ,WAAX;AAIA,cAAI+W,SAAS,CAAC9P,KAAd,EAAqB4D,IAAI,CAAC5D,KAAL,GAAa8P,SAAS,CAAC9P,KAAvB;;AACrB,cAAI8P,SAAS,CAACnH,QAAd,EAAwB;AACtB/E,gBAAI,CAAC+E,QAAL,GAAgBmH,SAAS,CAACnH,QAA1B;AACA/E,gBAAI,CAAC5lB,KAAL,GAAa01C,UAAU,CAAC11C,KAAxB;AACD;;AACDshC,iBAAO,CAAC,cAAD,EAAiB1b,IAAjB,CAAP;AACD,SAXD;AAYD,OAfD;AAgBD,KAnCU;AAqCX;AACA7Y,oBAAgB,EAAE,4BAAW;AAC3B,aAAOioC,IAAP;AACD,KAxCU;AA0CX;AACAtwC,aAAS,EAAE,qBAAW;AACpB,UAAIzE,CAAJ,EAAOc,GAAP;;AACA,UAAI+wB,SAAS,CAACnH,QAAV,KAAuBxrB,SAA3B,EAAsC;AACpC;AACA;AACA,aAAKc,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGyN,OAAO,CAACtO,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9C,cAAIg1C,OAAO,CAACh1C,CAAD,CAAP,CAAWqf,IAAX,CAAgB,SAAhB,CAAJ,EAAgC;AAC9B9Q,mBAAO,CAACvO,CAAD,CAAP,CAAWytB,QAAX,GAAsB,IAAtB;AACD,WAFD,MAEO;AACL,mBAAOlf,OAAO,CAACvO,CAAD,CAAP,CAAWytB,QAAlB;AACD;AACF;AACF,OAZmB,CAapB;AACA;;;AACA,aAAO7oB,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAP;AACD;AA3DU,GAAb;AA8DAvjB,YAAU,GAvN+D,CAyNzE;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;AClOD;AACA;AACA;AACA;AAGe,SAAS4a,gBAAT,CAA0B7jB,SAA1B,EAAqCyE,sBAArC,EAA6D;AAC1E,MAAIh1B,GAAJ;AAAA,MAASD,GAAT;AAAA,MAAc6rB,KAAd;AAAA,MAAqB4f,YAArB;AAAA,MACE6I,UADF;AAAA,MACc9rB,YADd;AAAA,MAEEjJ,KAFF;AAAA,MAESI,MAFT;AAAA,MAEiBqM,YAFjB;AAAA,MAE+BuoB,WAF/B;AAAA,MAGE51C,CAHF;AAAA,MAGK+hB,KAHL;AAAA,MAIEhB,SAJF;AAAA,MAIaqM,WAJb;AAAA,MAI0ByoB,SAJ1B;AAAA,MAIqCC,sBAAsB,GAAG,IAJ9D;AAAA,MAKE;AACAC,OANF;AAAA,MAOEvvB,MAPF;AAAA,MAQE8sB,MARF;AAAA,MASE0C,OATF;AAAA,MAUEC,aAVF;AAAA,MAWEzrC,UAXF;AAAA,MAYEoE,KAZF;AAAA,MAaEgtB,YAbF;AAAA,MAcE;AACAd,YAfF;AAAA,MAiBE;AACA;AACA;AACA;AACAob,cAAY,GAAG,SAAfA,YAAe,GAAW;AACxB,QAAIn2C,KAAK,GAAGu2B,sBAAsB,CAACG,QAAvB,GAAkC1R,GAAlC,CAAsC+nB,YAAtC,CAAZ;AACAkJ,WAAO,CAAC/oB,MAAR,CAAe,OAAf,EAAwBltB,KAAxB;AACAo2C,kBAAc,CAACp2C,KAAD,CAAd;;AACA,QAAIstB,YAAJ,EAAkB;AAChB4oB,mBAAa,CAACn7B,IAAd,CAAmB86B,WAAW,CAAC71C,KAAD,CAA9B;AACD;AACF,GA5BH;AAAA,MA6BEq2C,yBAAyB,GAAG,SAA5BA,yBAA4B,GAAW;AACrC,QAAI3d,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6BoU,YAA7B,CAAlB;AACAhS,cAAU,CAACoT,WAAX,CAAuBzV,WAAW,CAACib,SAAZ,EAAvB;AACD,GAhCH;;AAkCA,WAAS2C,WAAT,GAAuB;AACrBL,WAAO,CAAC7hB,GAAR,CAAY,kBAAZ,EADqB,CAErB;;AACA,QAAItC,SAAS,CAACjF,MAAd,EAAsB;AACpB;AACA;AACA+oB,gBAAU,GAAG/Z,YAAY,CAACsV,2BAAb,CAAyC,OAAzC,EAAkDrf,SAAS,CAACjF,MAA5D,CAAb;AACAopB,aAAO,CAAC14B,EAAR,CAAW,uBAAX,EAAoC,UAAS2C,KAAT,EAAgBq2B,EAAhB,EAAoB;AACtDX,kBAAU,CAACW,EAAE,CAACv2C,KAAJ,CAAV;;AACA,YAAIstB,YAAJ,EAAkB;AAChB4oB,uBAAa,CAACn7B,IAAd,CAAmB86B,WAAW,CAACU,EAAE,CAACv2C,KAAJ,CAA9B;AACD;AACF,OALD;AAMD;;AAED,QAAI+sC,YAAJ,EAAkB;AAChBkJ,aAAO,CAAC14B,EAAR,CAAW,uBAAX,EAAoC,UAAS2C,KAAT,EAAgBq2B,EAAhB,EAAoB;AACtD;AACA,YAAI7K,GAAG,GAAG,EAAV;AACAA,WAAG,CAACqB,YAAD,CAAH,GAAoBwJ,EAAE,CAACv2C,KAAvB;AACA,YAAI6O,KAAJ,EAAWA,KAAK,CAACrM,GAAN,CAAUkpC,GAAV;;AACX,YAAIpe,YAAJ,EAAkB;AAChB4oB,uBAAa,CAACn7B,IAAd,CAAmB86B,WAAW,CAACU,EAAE,CAACv2C,KAAJ,CAA9B;AACD;AACF,OARD;AASD;;AAED,QAAIstB,YAAJ,EAAkB;AAChBuoB,iBAAW,GAAGha,YAAY,CAACsV,2BAAb,CAAyC,OAAzC,EAAkD7jB,YAAlD,CAAd;AACD;AACF;;AAED,WAAS8oB,cAAT,CAAwBp2C,KAAxB,EAA+B;AAC7B;AACA;AACA,QAAIghB,SAAJ,EAAe;AACb,UAAIw1B,QAAQ,GAAGn1C,IAAI,CAAC4kB,KAAL,CAAW,OAAOjmB,KAAK,GAAGuB,GAAf,KAAuBD,GAAG,GAAGC,GAA7B,CAAX,CAAf;AAAA,UACEk1C,WAAW,GAAG,EADhB;AAAA,UAEEC,iBAAiB,GAAG,EAFtB;AAAA,UAGEC,KAAK,GAAG,EAHV;;AAKA,UAAIZ,sBAAsB,KAAK,IAA/B,EAAqC;AACnCtrC,kBAAU,CAACgB,GAAX,CAAe,YAAf,EAA6B,EAA7B;AACAsqC,8BAAsB,GAAGtrC,UAAU,CAACgB,GAAX,CAAe,kBAAf,CAAzB;AACD,OATY,CAWb;;;AACA,UAAIzL,KAAK,KAAKqtB,WAAd,EAA2B;AACzB;AACA5iB,kBAAU,CAACgB,GAAX,CAAe,YAAf,EAA6B,EAA7B;AACD,OAHD,MAGO;AACL;AACAgrC,mBAAW,IAAIV,sBAAsB,GAAG,OAAxC;AACAW,yBAAiB,IAAI,mBAAmBX,sBAAnB,GAA4C,KAAjE,CAHK,CAKL;;AACA,YAAI1oB,WAAW,IAAIrtB,KAAnB,EAA0B;AACxB22C,eAAK,CAAC9zC,IAAN,CAAWizC,SAAX;AACAa,eAAK,CAAC9zC,IAAN,CAAW2zC,QAAX;AACD,SAHD,MAGO;AACLG,eAAK,CAAC9zC,IAAN,CAAW2zC,QAAX;AACAG,eAAK,CAAC9zC,IAAN,CAAWizC,SAAX;AACD,SAZI,CAcL;;;AACAW,mBAAW,IAAIV,sBAAsB,GAAG,GAAzB,GAA+BY,KAAK,CAAC,CAAD,CAApC,GAA0C,KAAzD;AACAD,yBAAiB,IAAI,gBAAgBC,KAAK,CAAC,CAAD,CAArB,GAA2B,IAA3B,GAAkCZ,sBAAlC,GAA2D,KAAhF;AAEAU,mBAAW,IAAIz1B,SAAS,GAAG,GAAZ,GAAkB21B,KAAK,CAAC,CAAD,CAAvB,GAA6B,KAA5C;AACAD,yBAAiB,IAAI,gBAAgBC,KAAK,CAAC,CAAD,CAArB,GAA2B,IAA3B,GAAkC31B,SAAlC,GAA8C,KAAnE,CAnBK,CAqBL;;AACAy1B,mBAAW,IAAIz1B,SAAS,GAAG,GAAZ,GAAkB21B,KAAK,CAAC,CAAD,CAAvB,GAA6B,KAA5C;AACAD,yBAAiB,IAAI,gBAAgBC,KAAK,CAAC,CAAD,CAArB,GAA2B,IAA3B,GAAkC31B,SAAlC,GAA8C,KAAnE;AAEAy1B,mBAAW,IAAIV,sBAAsB,GAAG,GAAzB,GAA+BY,KAAK,CAAC,CAAD,CAApC,GAA0C,KAAzD;AACAD,yBAAiB,IAAI,gBAAgBC,KAAK,CAAC,CAAD,CAArB,GAA2B,IAA3B,GAAkCZ,sBAAlC,GAA2D,KAAhF,CA1BK,CA4BL;;AACAU,mBAAW,IAAIV,sBAAsB,GAAG,OAAxC;AACAW,yBAAiB,IAAI,qBAAqBX,sBAArB,GAA8C,GAAnE;AAEAtrC,kBAAU,CAACgB,GAAX,CAAe,YAAf,EAA6B,mDAAmDirC,iBAAnD,GAAuE,GAApG;AACAjsC,kBAAU,CAACgB,GAAX,CAAe,YAAf,EAA6B,mCAAmCgrC,WAAnC,GAAiD,GAA9E;AACAhsC,kBAAU,CAACgB,GAAX,CAAe,YAAf,EAA6B,gCAAgCgrC,WAAhC,GAA8C,GAA3E;AACAhsC,kBAAU,CAACgB,GAAX,CAAe,YAAf,EAA6B,8BAA8BgrC,WAA9B,GAA4C,GAAzE;AACAhsC,kBAAU,CAACgB,GAAX,CAAe,YAAf,EAA6B,+BAA+BgrC,WAA/B,GAA6C,GAA1E;AACD;AACF;AACF;;AAED,WAASloC,UAAT,GAAsB;AACpB;AACA;AACA;AACAstB,gBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACAluB,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CALoB,CAMpB;;AACA5E,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACmpB,MAAxC,EAAgD4E,SAAhD,CAAZ;AACAvwB,OAAG,GAAGuwB,SAAS,CAACvwB,GAAhB;AACAD,OAAG,GAAGwwB,SAAS,CAACxwB,GAAhB;AACA6rB,SAAK,GAAG2E,SAAS,CAAC3E,KAAlB;AACA4f,gBAAY,GAAGjb,SAAS,CAACnH,QAAzB;AACAb,gBAAY,GAAGgI,SAAS,CAAChI,YAAzB;AACAjJ,SAAK,GAAGiR,SAAS,CAACjR,KAAlB;AACAI,UAAM,GAAG6Q,SAAS,CAAC7Q,MAAnB;AACAqM,gBAAY,GAAGwE,SAAS,CAACxE,YAAzB;AACAtM,aAAS,GAAG8Q,SAAS,CAAC9Q,SAAtB;AACAqM,eAAW,GAAGyE,SAAS,CAACzE,WAAxB;AAEAxe,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CAnBoB,CAqBpB;;AACA,QAAIn1B,GAAG,KAAKpC,SAAZ,EAAuBoC,GAAG,GAAG,CAAN;AACvB,QAAID,GAAG,KAAKnC,SAAZ,EAAuBmC,GAAG,GAAG,EAAN;AACvB,QAAI6rB,KAAK,KAAKhuB,SAAd,EAAyBguB,KAAK,GAAG,EAAR;AACzB,QAAIE,WAAW,KAAKluB,SAApB,EAA+BkuB,WAAW,GAAG9rB,GAAd;AAE/Bu0C,aAAS,GAAGz0C,IAAI,CAAC4kB,KAAL,CAAW,OAAOoH,WAAW,GAAG9rB,GAArB,KAA6BD,GAAG,GAAGC,GAAnC,CAAX,CAAZ;AAEAklB,UAAM,GAAG5hB,CAAC,CAAC,uBAAuBitB,SAAS,CAAC1E,aAAjC,GAAiD,IAAjD,GAAwDvM,KAAxD,GAAgE,QAAjE,CAAV,CA7BoB,CA8BpB;;AACApW,cAAU,GAAG5F,CAAC,CAAC,yBAAD,CAAd;AACAoxC,WAAO,GAAGpxC,CAAC,CAAC,2BAAD,CAAD,CAA+Bya,IAA/B,CAAoC,IAApC,EAA0CwS,SAAS,CAAClmB,EAApD,CAAV;AACAqqC,WAAO,CAACnqC,QAAR,CAAiBrB,UAAjB;AAEAwrC,WAAO,CAAC/oB,MAAR,CAAe;AACb3rB,SAAG,EAAEA,GADQ;AAEbD,SAAG,EAAEA,GAFQ;AAGbq8B,UAAI,EAAE,CAACr8B,GAAG,GAAGC,GAAP,IAAc4rB;AAHP,KAAf;;AAMA,QAAInM,SAAJ,EAAe;AACbi1B,aAAO,CAAC9oC,QAAR,CAAiB,UAAjB;AACA8oC,aAAO,CAAC14B,EAAR,CAAW,OAAX,EAAoB,UAASsgB,GAAT,EAAc0Y,EAAd,EAAkB;AACpCH,sBAAc,CAACG,EAAE,CAACv2C,KAAJ,CAAd;AACD,OAFD;AAGD;;AAEDk2C,iBAAa,GAAGD,OAAO,CAACj3B,IAAR,CAAa,mBAAb,CAAhB;AAEAk3B,iBAAa,CAAC52B,IAAd,CAAmB,UAAnB,EAA+BiX,sBAAsB,CAACsJ,eAAvB,EAA/B;AAEAmW,SAAK,GAAGnxC,CAAC,CAAC,kCAAD,CAAT;;AACA,QAAIitB,SAAS,CAAC1E,aAAV,KAA4B,OAA5B,IAAuC0E,SAAS,CAAC1E,aAAV,KAA4B,QAAvE,EAAiF;AAC/E4oB,WAAK,CAAClpC,MAAN,CAAarC,UAAb,EACGqC,MADH,CACU2Z,MADV;AAED,KAHD,MAGO;AACLuvB,WAAK,CAAClpC,MAAN,CAAa2Z,MAAb,EACG3Z,MADH,CACUrC,UADV;AAED;;AAED,QAAIqnB,SAAS,CAAC1E,aAAV,KAA4B,MAA5B,IAAsC0E,SAAS,CAAC1E,aAAV,KAA4B,OAAtE,EAA+E;AAC7E3iB,gBAAU,CAACgB,GAAX,CAAe;AACbmrC,eAAO,EAAE;AADI,OAAf;AAGD,KAjEmB,CAmEpB;;;AACAZ,SAAK,CAAC7oC,QAAN,CAAe,WAAf,EApEoB,CAsEpB;AACA;AACA;AACA;;AACA6oC,SAAK,CAACvqC,GAAN,CAAU;AACR,eAASqmB,SAAS,CAACzmB,KADX;AAER,gBAAUymB,SAAS,CAACxmB;AAFZ,KAAV;;AAIA,QAAIwmB,SAAS,CAACzmB,KAAV,KAAoB,MAAxB,EAAgC;AAC9B;AACA;AACA;AACA2qC,WAAK,CAACvqC,GAAN,CAAU,WAAV,EAAuB,MAAvB;AACD;;AAED,QAAIorC,cAAc,GAAG,IAArB;AACA,QAAIC,eAAe,GAAG,IAAtB;;AACA,QAAIC,aAAa,GAAG,SAAhBA,aAAgB,CAASC,aAAT,EAAwB;AAC1C;AACA;AACA;AACA,aAAOhB,KAAK,CAACt3B,OAAN,CAAc,YAAW;AAC9B;AACA;AACA,eAAQ,KAAKrT,KAAL,KAAeyY,UAAU,CAAC,KAAKlF,MAAL,GAAcnT,GAAd,CAAkB,WAAlB,CAAD,CAAjC;AACD,OAJM,EAIJurC,aAJI,EAIWzgB,sBAAsB,CAAC0gB,oBAJlC,CAAP;AAKD,KATD;;AAUA,SAAKh3C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGghB,MAAM,CAAC/gB,MAAvB,EAA+BD,CAAC,EAAhC,EAAoC;AAClC+hB,WAAK,GAAGf,MAAM,CAAChhB,CAAD,CAAd;AACAszC,YAAM,GAAG1uC,CAAC,CAAC,sBAAsBmd,KAAK,CAACA,KAA5B,GAAoC,MAArC,CAAV;AACAvX,gBAAU,CAACqC,MAAX,CAAkBymC,MAAlB;;AACA,UAAIvxB,KAAK,CAAChiB,KAAN,KAAgB,OAApB,EAA6B;AAC3B;AACAuzC,cAAM,CAACpmC,QAAP,CAAgB,YAAhB;AACA2pC,uBAAe,GAAGC,aAAa,CAAC,mBAAD,CAA/B;AACAxD,cAAM,CAAC9nC,GAAP,CAAW;AACT,kBAAQ,MADC;AAET,yBAAe;AAFN,SAAX;AAID,OARD,MAQO,IAAIuW,KAAK,CAAChiB,KAAN,KAAgB,MAApB,EAA4B;AACjC;AACAuzC,cAAM,CAACpmC,QAAP,CAAgB,WAAhB;AACA0pC,sBAAc,GAAGE,aAAa,CAAC,kBAAD,CAA9B;AACAxD,cAAM,CAAC9nC,GAAP,CAAW;AACT,kBAAS,CAACorC,cAAF,GAAoB,IADnB;AAET,yBAAe;AAFN,SAAX;AAID,OARM,MAQA;AACLtD,cAAM,CAAC9nC,GAAP,CAAW,MAAX,EAAmB,CAACuW,KAAK,CAAChiB,KAAN,GAAcuB,GAAf,KAAuBD,GAAG,GAAGC,GAA7B,IAAoC,GAApC,GAA0C,GAA7D;AACD;AACF,KAxHmB,CAyHpB;AACA;AACA;;;AACA,QAAIs1C,cAAJ,EAAoBb,KAAK,CAACvqC,GAAN,CAAU,aAAV,EAAyBorC,cAAc,GAAG,IAA1C;AACpB,QAAIC,eAAJ,EAAqBd,KAAK,CAACvqC,GAAN,CAAU,cAAV,EAA0BqrC,eAAe,GAAG,IAA5C;AAErBR,eAAW;;AAEX,QAAIxkB,SAAS,CAACzF,OAAd,EAAuB;AACrB2pB,WAAK,CAAC12B,IAAN,CAAW,OAAX,EAAoBwS,SAAS,CAACzF,OAA9B;AACD;;AAED4lB,cAAU,CAAClX,UAAD,EAAajJ,SAAb,CAAV;AACAqI,mBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf,CAtIoB,CAwIpB;;AACA6b,iBAAa,CAAC34B,EAAd,CAAiB,uBAAjB,EAA0C,UAAS2C,KAAT,EAAgB;AACxDA,WAAK,CAACg3B,eAAN;AACD,KAFD,EAzIoB,CA6IpB;;AACAnc,cAAU,CAAC5rB,MAAX,GA9IoB,CAgJpB;;AACA,QAAI2a,YAAY,KAAK3qB,SAAjB,IAA8B2qB,YAAY,KAAK,IAAnD,EAAyD;AACvDmsB,aAAO,CAAC/oB,MAAR,CAAe,OAAf,EAAwBpD,YAAxB;AACAssB,oBAAc,CAACtsB,YAAD,CAAd;;AACA,UAAIwD,YAAJ,EAAkB;AAChB4oB,qBAAa,CAACn7B,IAAd,CAAmB86B,WAAW,CAAC/rB,YAAD,CAA9B;AACD;AACF;AACF,GAtRyE,CAwR1E;;;AACAiR,YAAU,GAAG;AACX;AACAhB,uBAAmB,EAAE,+BAAW;AAC9B,UAAIlrB,KAAK,IAAIk+B,YAAb,EAA2B;AACzBl+B,aAAK,CAACssB,cAAN,CAAqB4R,YAArB,EAAmCoJ,YAAnC;AACAtnC,aAAK,CAACmlC,iCAAN,CAAwCjH,YAAxC,EAAsDsJ,yBAAtD;AACD;;AACDxa,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACAluB,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;;AACA,UAAIqW,YAAJ,EAAkB;AAChBl+B,aAAK,CAACusB,qBAAN,CAA4B,CAAC2R,YAAD,CAA5B,EAA4CoJ,YAA5C;AACAtnC,aAAK,CAACwpB,8BAAN,CAAqC0U,YAArC,EAAmDsJ,yBAAnD;AACD;;AAEDC,iBAAW;;AAEX,UAAIvJ,YAAJ,EAAkB;AAChBoJ,oBAAY;AACb;AACF,KAnBU;AAqBX;AACAppC,oBAAgB,EAAE,4BAAW;AAC3B,aAAOipC,KAAP;AACD,KAxBU;AA0BX7mC,UAAM,EAAE,kBAAW;AACjB,UAAIgoC,eAAJ;AAAA,UACEC,MAAM,GAAGtzB,UAAU,CAACoyB,aAAa,CAACzqC,GAAd,CAAkB,WAAlB,CAAD,CADrB;;AAEA,UAAIqmB,SAAS,CAACxmB,MAAV,KAAqB,MAAzB,EAAiC;AAC/B;AACA;AACA;AACA;AACA6rC,uBAAe,GAAGnB,KAAK,CAAC1qC,MAAN,EAAlB;;AACA,YAAIwmB,SAAS,CAAC1E,aAAV,KAA4B,KAA5B,IAAqC0E,SAAS,CAAC1E,aAAV,KAA4B,QAArE,EAA+E;AAC7E+pB,yBAAe,IAAI1wB,MAAM,CAAC5b,WAAP,CAAmB,IAAnB,CAAnB;AACD;;AACD,YAAI0oC,MAAM,KAAKp0C,SAAf,EAA0B;AACxBg4C,yBAAe,IAAI5D,MAAM,CAAC1oC,WAAP,CAAmB,IAAnB,CAAnB;AACD;;AACDJ,kBAAU,CAACgB,GAAX,CAAe,QAAf,EAAyB0rC,eAAzB;AACAlB,eAAO,CAACxqC,GAAR,CAAY,KAAZ,EAAmB,MAAM0rC,eAAzB,EAb+B,CAc/B;;AACAjB,qBAAa,CAACzqC,GAAd,CAAkB,QAAlB,EAA4B0rC,eAAe,GAAGC,MAAM,GAAG,GAAvD;AACAlB,qBAAa,CAACzqC,GAAd,CAAkB,KAAlB,EAAyB,CAAC,GAAD,GAAO0rC,eAAP,GAAyBC,MAAM,GAAG,GAA3D;AACD;;AAED,UAAItlB,SAAS,CAAC1E,aAAV,KAA4B,MAA5B,IAAsC0E,SAAS,CAAC1E,aAAV,KAA4B,OAAtE,EAA+E;AAC7E3iB,kBAAU,CAACgB,GAAX,CAAe;AACbJ,eAAK,EAAE2qC,KAAK,CAAC3qC,KAAN,KAAgBob,MAAM,CAAC1b,UAAP,CAAkB,IAAlB,CAAhB,GAA0C,MAAMqsC;AAD1C,SAAf;AAGD;AACF,KArDU;AAuDX/V,iBAAa,EAAE,uBAASC,OAAT,EAAkB;AAC/B,UAAI1b,IAAI,GAAG;AACTha,UAAE,EAAEkmB,SAAS,CAAClmB,EADL;AAEToW,aAAK,EAAE8P,SAAS,CAAC9P;AAFR,OAAX;;AAIA,UAAI+qB,YAAJ,EAAkB;AAChBnnB,YAAI,CAAC+E,QAAL,GAAgBoiB,YAAhB;AACD;;AACD,UAAIsK,SAAJ;AACApB,aAAO,CAAC7hB,GAAR,CAAY,UAAZ;AACA6hB,aAAO,CAAC14B,EAAR,CAAW,oBAAX,EAAiC,UAAS2C,KAAT,EAAgBq2B,EAAhB,EAAoB;AACnDc,iBAAS,GAAGlR,IAAI,CAACC,GAAL,EAAZ;AACAxgB,YAAI,CAAC0xB,QAAL,GAAgB1xB,IAAI,CAAC2xB,MAAL,GAAc3xB,IAAI,CAAC4xB,MAAL,GAAcjB,EAAE,CAACv2C,KAA/C;AACD,OAHD;AAIAi2C,aAAO,CAAC14B,EAAR,CAAW,eAAX,EAA4B,UAAS2C,KAAT,EAAgBq2B,EAAhB,EAAoB;AAC9C3wB,YAAI,CAAC2xB,MAAL,GAAcl2C,IAAI,CAACE,GAAL,CAASqkB,IAAI,CAAC2xB,MAAd,EAAsBhB,EAAE,CAACv2C,KAAzB,CAAd;AACA4lB,YAAI,CAAC4xB,MAAL,GAAcn2C,IAAI,CAACC,GAAL,CAASskB,IAAI,CAAC4xB,MAAd,EAAsBjB,EAAE,CAACv2C,KAAzB,CAAd;AACD,OAHD;AAIAi2C,aAAO,CAAC14B,EAAR,CAAW,mBAAX,EAAgC,UAAS2C,KAAT,EAAgBq2B,EAAhB,EAAoB;AAClD3wB,YAAI,CAAC6xB,MAAL,GAAclB,EAAE,CAACv2C,KAAjB;AACA4lB,YAAI,CAAC1W,IAAL,GAAY,CAACi3B,IAAI,CAACC,GAAL,KAAaiR,SAAd,IAA2B,IAAvC;AACA/V,eAAO,CAAC,eAAD,EAAkB1b,IAAlB,CAAP;AACD,OAJD;AAKD,KA9EU;AAgFX;AACAlhB,aAAS,EAAE,qBAAW;AACpB,UAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAb;;AAEA,UAAI,CAACib,YAAL,EAAmB;AACjB;AACA;AACA;AACA/oC,cAAM,CAAC8lB,YAAP,GAAsBmsB,OAAO,CAAC/oB,MAAR,CAAe,OAAf,CAAtB;AACD;;AAED,aAAOlpB,MAAP;AACD;AA5FU,GAAb;AA+FAuK,YAAU,GAxXgE,CA0X1E;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;ACnYc,SAAS2c,aAAT,CAAuBnzC,IAAvB,EAA6B;AAC1C,MAAIqH,EAAE,GAAGrH,IAAI,CAACqH,EAAd;AAAA,MACE4C,OAAO,GAAGjK,IAAI,CAACiK,OADjB;AAAA,MAEEwT,KAAK,GAAGzd,IAAI,CAACyd,KAFf;AAAA,MAGEwL,OAAO,GAAGjpB,IAAI,CAACipB,OAHjB;AAAA,MAIEzD,QAAQ,GAAGxlB,IAAI,CAACwlB,QAJlB;AAAA,MAKE4tB,iBALF;AAAA,MAMEC,OANF;AAAA,MAOEC,QAPF;;AASA,WAASC,aAAT,GAAyB;AACvB,QAAIve,KAAJ;;AAEA,QAAIoe,iBAAJ,EAAuB;AACrB;AACA;AACAA,uBAAiB,GAAG,KAApB;AACA;AACD;;AACDpe,SAAK,GAAG10B,CAAC,CAAC,IAAD,CAAD,CAAQ5B,IAAR,CAAa,eAAb,CAAR;AACA8mB,YAAQ,CAACvb,OAAO,CAAC+qB,KAAD,CAAR,EAAiBA,KAAjB,CAAR;AACD;;AAED,SAAO;AAELxU,UAAM,EAAE,gBAASjG,SAAT,EAAoB;AAC1B;AACA;AACA;AACA;AACA64B,uBAAiB,GAAG,IAApB,CAL0B,CAM1B;AACA;AACA;AACA;AACA;;AACAC,aAAO,CAAChyB,IAAR,CAAa,uBAAb,EAAsCmyB,YAAtC,CAAmDj5B,SAAS,CAACpe,QAAV,GAAqBuf,IAArB,EAAnD;AACD,KAdI;AAgBL2D,UAAM,EAAE,gBAAShF,MAAT,EAAiB;AACvB,UAAIs2B,QAAQ,GAAG,EAAf;AAAA,UACE8C,OADF;AAAA,UACWzE,MADX;AAAA,UACmB0E,KADnB;AAAA,UAC0BC,QAD1B;AAAA,UACoCC,YADpC;AAAA,UACkDC,QADlD;AAGAR,aAAO,GAAG/yC,CAAC,CAAC,UAAD,CAAX;AAEA2J,aAAO,CAAC4N,OAAR,CAAgB,UAASo5B,MAAT,EAAiB;AAC/BwC,eAAO,GAAGnzC,CAAC,CAAC,UAAD,CAAD,CAAcquC,IAAd,CAAmBsC,MAAM,CAACz6B,IAA1B,CAAV;AACAm6B,gBAAQ,CAACryC,IAAT,CAAcm1C,OAAd;;AACA,YAAIxC,MAAM,CAAC1oB,QAAX,EAAqB;AACnBkrB,iBAAO,CAAC/0C,IAAR,CAAa,UAAb,EAAyBuyC,MAAM,CAAC1oB,QAAhC;AACD;;AACD,YAAI0oB,MAAM,CAAC9nB,QAAX,EAAqB;AACnBsqB,iBAAO,CAAC/0C,IAAR,CAAa,UAAb,EAAyBuyC,MAAM,CAAC9nB,QAAhC;AACD,SAR8B,CAS/B;;;AACA,YAAI8nB,MAAM,CAACx1C,KAAP,KAAiBb,SAArB,EAAgC;AAC9B64C,iBAAO,CAAC/0C,IAAR,CAAa,OAAb,EAAsBuyC,MAAM,CAACx1C,KAA7B;AACD;;AACD43C,eAAO,CAAC9qC,MAAR,CAAekrC,OAAf;AACD,OAdD;AAgBAJ,aAAO,CAACnC,MAAR,CAAeqC,aAAf,EAtBuB,CAwBvB;;AACAD,cAAQ,GAAGhzC,CAAC,CAAC,OAAD,CAAD,CAAWya,IAAX,CAAgB,IAAhB,EAAsB1T,EAAtB,CAAX;;AACA,UAAIoW,KAAJ,EAAW;AACTuxB,cAAM,GAAG1uC,CAAC,CAAC,QAAD,CAAD,CAAYkW,IAAZ,CAAiBiH,KAAjB,CAAT;AACAuxB,cAAM,CAACpmC,QAAP,CAAgB,OAAhB;AACAomC,cAAM,CAACpmC,QAAP,CAAgBqgB,OAAO,KAAK,KAAZ,GAAoB,QAApB,GAA+B,SAA/C;AACAqqB,gBAAQ,CAAC/qC,MAAT,CAAgBymC,MAAhB;AACD;;AACDsE,cAAQ,CAAC/qC,MAAT,CAAgB8qC,OAAhB,EAhCuB,CAkCvB;;AACAA,aAAO,CAACS,WAAR;AAEAR,cAAQ,CAAC74B,IAAT,CAAc,cAAd,EAA8BvT,GAA9B,CAAkC,OAAlC,EAA2C,MAA3C,EArCuB,CAuCvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA,eAAS6sC,MAAT,CAAgBj1C,KAAhB,EAAuB;AACrB,YAAI+zC,MAAM,GAAGtzB,UAAU,CAAClF,MAAM,CAACnT,GAAP,CAAW,WAAX,CAAD,CAAvB;AACA,eAAOpI,KAAK,GAAG+zC,MAAf;AACD;;AAED,eAAS/rC,KAAT,GAAiB;AACf,eAAO,KAAKA,KAAL,EAAP;AACD;;AAED4sC,WAAK,GAAGK,MAAM,CAACT,QAAQ,CAACn5B,OAAT,CAAiBrT,KAAjB,EAAwB,IAAxB,EAA8BuT,MAA9B,CAAD,CAAd;AACAs5B,cAAQ,GAAGI,MAAM,CAACT,QAAQ,CAACn5B,OAAT,CAAiBrT,KAAjB,EAAwB,8BAAxB,EAAwDuT,MAAxD,CAAD,CAAjB;AAEAu5B,kBAAY,GAAGF,KAAK,GAAG,IAAvB;AACAG,cAAQ,GAAIH,KAAK,GAAGC,QAAR,GAAmB,GAApB,GAA2B,IAAtC;AAEAL,cAAQ,CAAC74B,IAAT,CAAc,cAAd,EAA8BvT,GAA9B,CAAkC,OAAlC,EAA2C2sC,QAA3C;AACAP,cAAQ,CAAC74B,IAAT,CAAc,mBAAd,EAAmCvT,GAAnC,CAAuC,WAAvC,EAAoD0sC,YAApD,EApEuB,CAsEvB;;AACAN,cAAQ,CAAC74B,IAAT,CAAc,+BAAd,EAA+CvT,GAA/C,CAAmD;AACjDJ,aAAK,EAAE+sC,QAD0C;AAEjD9sC,cAAM,EAAE;AAFyC,OAAnD;AAKA,aAAOusC,QAAP;AACD,KA7FI;;AA+FL,QAAIpS,QAAJ,GAAe;AACb,aAAOoS,QAAP;AACD,KAjGI;;AAmGLU,WAAO,EAAE,mBAAW;AAClB;AACAX,aAAO,CAAChyB,IAAR,CAAa,uBAAb,EAAsC2yB,OAAtC;AACD,KAtGI;AAwGLC,WAAO,EAAE,mBAAW;AAClBZ,aAAO,CAAChyB,IAAR,CAAa,uBAAb,EAAsC4yB,OAAtC;AACAX,cAAQ,CAACn1C,MAAT;AACD;AA3GI,GAAP;AA6GD;AAAA,C;;;;;;ACnID;AACA;AACA;AACA;AACA;AACA;AAGA+1C,wBAAwB;AAET,SAASC,kBAAT,CAA4B5mB,SAA5B,EAAuCyE,sBAAvC,EAA+D;AAC5E;AACA,MAAIwE,UAAJ,EACElsB,KADF,EAEEgtB,YAFF,EAGE;AACAoJ,WAJF,EAKE;AACAz2B,SANF,EAOEmqC,IAPF,EAQElT,QARF;;AAUA,WAASmT,cAAT,GAA0B;AACxB,QAAI9mB,SAAS,CAACnH,QAAV,KAAuBxrB,SAA3B,EAAsC;AACpCw5C,UAAI,CAAC5zB,MAAL,CAAYlW,KAAK,CAACmW,GAAN,CAAU8M,SAAS,CAACnH,QAApB,CAAZ;AACD;AACF;;AAED,WAASkuB,2BAAT,GAAuC;AACrC,QAAIngB,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B7G,SAAS,CAACnH,QAAvC,CAAlB;AACAoQ,cAAU,CAACoT,WAAX,CAAuBzV,WAAW,CAACib,SAAZ,EAAvB;AACD;;AAED,WAASmF,SAAT,CAAmBpD,UAAnB,EAA+B;AAC7B,QAAI,CAACzQ,SAAL,EAAgB,OADa,CACL;;AACxB,QAAIrf,IAAI,GAAG;AACTha,QAAE,EAAEkmB,SAAS,CAAClmB,EADL;AAET8hB,cAAQ,EAAEgoB,UAAU,CAAC36B;AAFZ,KAAX;AAIA,QAAI+W,SAAS,CAAC9P,KAAd,EAAqB4D,IAAI,CAAC5D,KAAL,GAAa8P,SAAS,CAAC9P,KAAvB;;AACrB,QAAI8P,SAAS,CAACnH,QAAd,EAAwB;AACtB/E,UAAI,CAAC+E,QAAL,GAAgBmH,SAAS,CAACnH,QAA1B;AACA/E,UAAI,CAAC5lB,KAAL,GAAa01C,UAAU,CAAC11C,KAAxB;AACD;;AACDilC,aAAS,CAAC,iBAAD,EAAoBrf,IAApB,CAAT;AACD;;AAED,WAASrX,UAAT,GAAsB;AACpB,QAAIqQ,MAAM,GAAG2X,sBAAsB,CAAC0gB,oBAApC;AAAA,QACEh3C,CADF;AAAA,QACKc,GADL;AAGA8N,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACAmF,gBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf,CALoB,CAOpB;;AACAjL,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACwpB,QAAxC,EAAkDuE,SAAlD,CAAZ,CARoB,CASpB;;AACAtjB,WAAO,GAAGsjB,SAAS,CAACtjB,OAApB;;AACA,SAAKvO,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGyN,OAAO,CAACtO,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9CuO,aAAO,CAACvO,CAAD,CAAP,GAAa02B,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC0pB,cAAxC,EAAwDjf,OAAO,CAACvO,CAAD,CAA/D,CAAb;AACD;;AAED04C,QAAI,GAAG,IAAIjB,aAAJ,CAAkB;AACvB9rC,QAAE,EAAEkmB,SAAS,CAAClmB,EADS;AAEvB4C,aAAO,EAAEA,OAFc;AAGvBwT,WAAK,EAAE8P,SAAS,CAAC9P,KAHM;AAIvBwL,aAAO,EAAEsE,SAAS,CAACtE,OAJI;AAKvBzD,cAAQ,EAAE,kBAASyrB,MAAT,EAAiB;AACzB,YAAIA,MAAM,CAAC3oB,MAAX,EAAmB;AACjBgP,sBAAY,CAACsV,2BAAb,CAAyCqE,MAAM,CAAC3oB,MAAhD;AACD,SAFD,MAEO,IAAI2oB,MAAM,CAACx1C,KAAP,KAAiBb,SAArB,EAAgC;AACrC08B,sBAAY,CAACpd,GAAb,CAAiBjc,GAAjB,CAAqBsvB,SAAS,CAACnH,QAA/B,EAAyC6qB,MAAM,CAACx1C,KAAhD;AACD;;AACD84C,iBAAS,CAACtD,MAAD,CAAT;AACD;AAZsB,KAAlB,CAAP;AAeA/P,YAAQ,GAAGkT,IAAI,CAAC/0B,MAAL,CAAYhF,MAAZ,CAAX;AAEA6mB,YAAQ,CACLt4B,QADH,CACY,sBADZ,EAEGA,QAFH,CAEY,WAFZ;;AAIA,QAAI2kB,SAAS,CAACzF,OAAd,EAAuB;AACrBoZ,cAAQ,CAACnmB,IAAT,CAAc,OAAd,EAAuBwS,SAAS,CAACzF,OAAjC;AACD;;AAED4lB,cAAU,CAAClX,UAAD,EAAajJ,SAAb,CAAV;AACAqI,mBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf;AACD,GA/E2E,CAiF5E;;;AACAU,YAAU,GAAG;AACXhB,uBAAmB,EAAE,+BAAW;AAC9B8B,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;;AACA,UAAIjL,SAAS,CAACnH,QAAV,KAAuBxrB,SAA3B,EAAsC;AACpC,YAAI0P,KAAJ,EAAW;AACTA,eAAK,CAACssB,cAAN,CAAqBrJ,SAAS,CAACnH,QAA/B,EAAyCiuB,cAAzC;AACA/pC,eAAK,CAACmlC,iCAAN,CAAwCliB,SAAS,CAACnH,QAAlD,EAA4DkuB,2BAA5D;AACD;;AACDhqC,aAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CALoC,CAMpC;;AACA7nB,aAAK,CAACu+B,WAAN,CAAkBtb,SAAS,CAACnH,QAA5B,EAAsCiuB,cAAtC;AACA/pC,aAAK,CAACwpB,8BAAN,CAAqCvG,SAAS,CAACnH,QAA/C,EAAyDkuB,2BAAzD,EARoC,CASpC;AACD,OAVD,MAUO;AACLhqC,aAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACD;;AACDkiB,oBAAc;AACf,KAjBU;AAmBXvX,iBAAa,EAAE,uBAASC,OAAT,EAAkB;AAC/B2D,eAAS,GAAG3D,OAAZ;AACD,KArBU;AAuBX;AACAv0B,oBAAgB,EAAE,4BAAW;AAC3B,aAAO04B,QAAP;AACD,KA1BU;AA4BX;AACA/gC,aAAS,EAAE,qBAAW;AACpB,UAAIzE,CAAJ,EAAOc,GAAP,EAAYm0C,QAAZ;;AACA,UAAIpjB,SAAS,CAACnH,QAAV,KAAuBxrB,SAA3B,EAAsC;AACpC;AACA;AACA+1C,gBAAQ,GAAGzP,QAAQ,CAACzmB,IAAT,CAAc,QAAd,CAAX;;AACA,aAAK/e,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGyN,OAAO,CAACtO,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9C,cAAI4E,CAAC,CAACqwC,QAAQ,CAACj1C,CAAD,CAAT,CAAD,CAAegD,IAAf,CAAoB,UAApB,CAAJ,EAAqC;AACnCuL,mBAAO,CAACvO,CAAD,CAAP,CAAWytB,QAAX,GAAsB,IAAtB;AACD,WAFD,MAEO;AACL,mBAAOlf,OAAO,CAACvO,CAAD,CAAP,CAAWytB,QAAlB;AACD;AACF;AACF,OAbmB,CAcpB;AACA;;;AACA,aAAO7oB,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAP;AACD;AA9CU,GAAb;AAiDAvjB,YAAU,GAnIkE,CAqI5E;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;ACjJD;AACA;AACA;AACA;AAGe,SAASge,kBAAT,CAA4BjnB,SAA5B,EAAuCyE,sBAAvC,EAA+D;AAC5E,MAAIwW,YAAJ;AAAA,MAAkB6I,UAAlB;AAAA,MAA8B9rB,YAA9B;AAAA,MACEjJ,KADF;AAAA,MACSI,MADT;AAAA,MACiBqM,YADjB;AAAA,MAC+BuoB,WAD/B;AAAA,MAEE;AACAG,OAHF;AAAA,MAIEvrC,UAJF;AAAA,MAKEgc,MALF;AAAA,MAMEuyB,OANF;AAAA,MAMWC,OANX;AAAA,MAMoBC,OANpB;AAAA,MAM6BC,OAN7B;AAAA,MAOEC,aAPF;AAAA,MAQEC,eARF;AAAA,MASEC,UATF;AAAA,MAUEzqC,KAVF;AAAA,MAWEgtB,YAXF;AAAA,MAYE;AACAd,YAbF;AAAA,MAcEwe,YAdF;AAAA,MAeEC,YAAY,GAAG,KAfjB;AAAA,MAgBEC,IAAI,GAAG,EAhBT;AAAA,MAiBEtrB,QAAQ,GAAG,EAjBb;AAAA,MAmBE;AACA;AACA;AACA;AACAurB,gBAAc,GAAG,SAAjBA,cAAiB,CAASC,SAAT,EAAoB;AACnC,QAAI35C,KAAK,GAAGu2B,sBAAsB,CAACG,QAAvB,GAAkC1R,GAAlC,CAAsC+nB,YAAtC,CAAZ;;AACA,QAAI4M,SAAJ,EAAe;AAAE;AACfC,oBAAc,CAAC55C,KAAD,CAAd;AACD;;AACD,QAAIstB,YAAJ,EAAkB;AAChBgsB,gBAAU,CAACv+B,IAAX,CAAgB86B,WAAW,CAAC71C,KAAD,CAA3B;AACD;AACF,GA/BH;AAAA,MAgCE65C,2BAA2B,GAAG,SAA9BA,2BAA8B,GAAW;AACvC,QAAInhB,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6BoU,YAA7B,CAAlB;AACAhS,cAAU,CAACoT,WAAX,CAAuBzV,WAAW,CAACib,SAAZ,EAAvB;AACD,GAnCH;;AAqCA,WAAS2C,WAAT,GAAuB;AACrB;AACA,QAAIxkB,SAAS,CAACjF,MAAd,EAAsB;AACpB;AACA;AACA+oB,gBAAU,GAAG/Z,YAAY,CAACsV,2BAAb,CAAyC,OAAzC,EAAkDrf,SAAS,CAACjF,MAA5D,CAAb;;AACA0sB,kBAAY,GAAG,sBAASv5C,KAAT,EAAgB;AAC7B41C,kBAAU,CAAC51C,KAAD,CAAV;;AACA,YAAIstB,YAAJ,EAAkB;AAChBgsB,oBAAU,CAACv+B,IAAX,CAAgB86B,WAAW,CAAC71C,KAAD,CAA3B;AACD;AACF,OALD;AAMD;;AAED,QAAI+sC,YAAJ,EAAkB;AAChBwM,kBAAY,GAAG,sBAASv5C,KAAT,EAAgB;AAC7B,YAAI6O,KAAJ,EAAWA,KAAK,CAACwb,UAAN,CAAiB0iB,YAAjB,IAAiC/sC,KAAjC;;AACX,YAAIstB,YAAJ,EAAkB;AAChBgsB,oBAAU,CAACv+B,IAAX,CAAgB86B,WAAW,CAAC71C,KAAD,CAA3B;AACD;AACF,OALD;AAMD;;AAED,QAAIstB,YAAJ,EAAkB;AAChBuoB,iBAAW,GAAGha,YAAY,CAACsV,2BAAb,CAAyC,OAAzC,EAAkD7jB,YAAlD,CAAd;AACD;AACF;;AAED,WAASwsB,KAAT,GAAiB;AACfT,mBAAe,CAAC/hC,SAAhB,CAA0B;AACxByiC,YAAM,EAAE,KADgB;AACT;AACfh7C,YAAM,EAAE,kBAAW;AACjBooB,YAAI;AACL,OAJuB;AAKxB6yB,UAAI,EAAE,cAAS95B,KAAT,EAAgBq2B,EAAhB,EAAoB;AACxB,YAAI0D,GAAG,GAAGC,OAAO,CAAC3D,EAAE,CAAC5rC,QAAH,CAAYG,IAAZ,GAAmBqjB,QAAQ,CAACgsB,SAA7B,EAAwC5D,EAAE,CAAC5rC,QAAH,CAAYC,GAAZ,GAAkBujB,QAAQ,CAACisB,UAAnE,CAAjB;;AACA,YAAIH,GAAJ,EAAS;AACP1D,YAAE,CAAC5rC,QAAH,CAAYG,IAAZ,GAAmBmvC,GAAG,CAAC74C,CAAJ,GAAQ+sB,QAAQ,CAACgsB,SAApC;AACA5D,YAAE,CAAC5rC,QAAH,CAAYC,GAAZ,GAAkBqvC,GAAG,CAACtjC,CAAJ,GAAQwX,QAAQ,CAACisB,UAAnC;AACD,SALuB,CAOxB;;;AACA,YAAIC,QAAQ,GAAG,CAAC9D,EAAE,CAAC5rC,QAAH,CAAYG,IAAZ,GAAmBqjB,QAAQ,CAACmsB,SAA7B,KAA2Cb,IAAI,CAACjiC,MAAL,GAAc2W,QAAQ,CAACgsB,SAAlE,CAAf;AACA,YAAII,OAAO,GAAG,CAACpsB,QAAQ,CAACqsB,QAAT,GAAoBjE,EAAE,CAAC5rC,QAAH,CAAYC,GAAjC,KAAyC6uC,IAAI,CAACjiC,MAAL,GAAc2W,QAAQ,CAACisB,UAAhE,CAAd;AACAK,qBAAa,CAACJ,QAAD,EAAWE,OAAX,CAAb;AACD,OAhBuB;AAiBxB5N,UAAI,EAAE,gBAAW,CACf;AACD;AAnBuB,KAA1B;AAqBD;;AAED,WAASxlB,IAAT,GAAgB;AACd,QAAIqyB,YAAJ,EAAkB;AAClBA,gBAAY,GAAG,IAAf;AAEAC,QAAI,CAACpuC,KAAL,GAAa+tC,aAAa,CAAC,CAAD,CAAb,CAAiBsB,WAA9B;AACAjB,QAAI,CAACnuC,MAAL,GAAc8tC,aAAa,CAAC,CAAD,CAAb,CAAiBuB,YAA/B;AACAlB,QAAI,CAAC7uC,GAAL,GAAWwuC,aAAa,CAAC,CAAD,CAAb,CAAiBwB,SAA5B;AACAnB,QAAI,CAAC3uC,IAAL,GAAYsuC,aAAa,CAAC,CAAD,CAAb,CAAiByB,UAA7B;AACApB,QAAI,CAACqB,MAAL,GAAc,CAACrB,IAAI,CAACpuC,KAAL,GAAa,CAAd,EAAiBouC,IAAI,CAACnuC,MAAL,GAAc,CAA/B,CAAd;AACAmuC,QAAI,CAACjiC,MAAL,GAAciiC,IAAI,CAACpuC,KAAL,GAAa,CAA3B;AAEA8iB,YAAQ,CAACmsB,SAAT,GAAqB7O,QAAQ,CAAC4N,eAAe,CAAC5tC,GAAhB,CAAoB,MAApB,CAAD,CAA7B;AACA0iB,YAAQ,CAACqsB,QAAT,GAAoB/O,QAAQ,CAAC4N,eAAe,CAAC5tC,GAAhB,CAAoB,KAApB,CAAD,CAA5B;AAEA4tC,mBAAe,CAACzzB,IAAhB,CAAqB,WAArB,EAAkCuI,QAAQ,CAACmsB,SAA3C;AACAjB,mBAAe,CAACzzB,IAAhB,CAAqB,UAArB,EAAiCuI,QAAQ,CAACqsB,QAA1C;AAEArsB,YAAQ,CAACgsB,SAAT,GAAqBd,eAAe,CAAC,CAAD,CAAf,CAAmBqB,WAAnB,GAAiC,CAAtD;AACAvsB,YAAQ,CAACisB,UAAT,GAAsBf,eAAe,CAAC,CAAD,CAAf,CAAmBsB,YAAnB,GAAkC,CAAxD;AACD;;AAED,WAAST,OAAT,CAAiB94C,CAAjB,EAAoBuV,CAApB,EAAuB;AACrB,QAAIokC,IAAI,GAAGC,QAAQ,CAAC,CAAC55C,CAAD,EAAIuV,CAAJ,CAAD,EAAS8iC,IAAI,CAACqB,MAAd,CAAnB;;AACA,QAAIC,IAAI,IAAItB,IAAI,CAACjiC,MAAL,GAAc2W,QAAQ,CAACgsB,SAAnC,EAA8C;AAC5C,aAAO,IAAP;AACD,KAFD,MAEO;AACL/4C,OAAC,GAAGA,CAAC,GAAGq4C,IAAI,CAACqB,MAAL,CAAY,CAAZ,CAAR;AACAnkC,OAAC,GAAGA,CAAC,GAAG8iC,IAAI,CAACqB,MAAL,CAAY,CAAZ,CAAR;AACA,UAAIG,OAAO,GAAG55C,IAAI,CAAC65C,KAAL,CAAWvkC,CAAX,EAAcvV,CAAd,CAAd;AACA,aAAO;AACLA,SAAC,EAAEC,IAAI,CAAC8O,GAAL,CAAS8qC,OAAT,KAAqBxB,IAAI,CAACjiC,MAAL,GAAc2W,QAAQ,CAACgsB,SAA5C,IAAyDV,IAAI,CAACqB,MAAL,CAAY,CAAZ,CADvD;AAELnkC,SAAC,EAAEtV,IAAI,CAAC6O,GAAL,CAAS+qC,OAAT,KAAqBxB,IAAI,CAACjiC,MAAL,GAAc2W,QAAQ,CAACgsB,SAA5C,IAAyDV,IAAI,CAACqB,MAAL,CAAY,CAAZ;AAFvD,OAAP;AAID;AACF;;AAED,WAASE,QAAT,CAAkBG,IAAlB,EAAwBC,IAAxB,EAA8B;AAC5B,QAAI3hC,EAAE,GAAG0hC,IAAI,CAAC,CAAD,CAAb;AAAA,QACEzhC,EAAE,GAAGyhC,IAAI,CAAC,CAAD,CADX;AAAA,QAEExhC,EAAE,GAAGyhC,IAAI,CAAC,CAAD,CAFX;AAAA,QAGExhC,EAAE,GAAGwhC,IAAI,CAAC,CAAD,CAHX;AAIA,WAAO/5C,IAAI,CAAC2O,IAAL,CAAU3O,IAAI,CAACg6C,GAAL,CAAS5hC,EAAE,GAAGE,EAAd,EAAkB,CAAlB,IAAuBtY,IAAI,CAACg6C,GAAL,CAAS3hC,EAAE,GAAGE,EAAd,EAAkB,CAAlB,CAAjC,CAAP;AACD;;AAED,WAAS6gC,aAAT,CAAuBr5C,CAAvB,EAA0BuV,CAA1B,EAA6B;AAC3B,QAAI2kC,SAAS,GAAGj6C,IAAI,CAAC2O,IAAL,CAAU5O,CAAC,GAAGA,CAAJ,GAAQuV,CAAC,GAAGA,CAAtB,IAA2Bmb,SAAS,CAAC9U,KAArD;AAAA,QACE+yB,SAAS,GAAG,CAAC1uC,IAAI,CAAC65C,KAAL,CAAWvkC,CAAX,EAAcvV,CAAd,IAAmB,IAAIC,IAAI,CAAC0O,EAA7B,KAAoC,IAAI1O,IAAI,CAAC0O,EAA7C,CADd;AAAA,QAEE6V,IAAI,GAAG;AACL01B,eAAS,EAAEA,SADN;AAELvL,eAAS,EAAEA;AAFN,KAFT,CAD2B,CAQ3B;;AACA,QAAIwJ,YAAJ,EAAkBA,YAAY,CAAC3zB,IAAD,CAAZ;AACnB;;AAED,WAASg0B,cAAT,CAAwB55C,KAAxB,EAA+B;AAC7B;AACA,QAAIu7C,GAAG,GAAG,CAAC9B,IAAI,CAACjiC,MAAL,GAAc2W,QAAQ,CAACgsB,SAAxB,IAAqCn6C,KAAK,CAACs7C,SAA3C,GAAuDxpB,SAAS,CAAC9U,KAA3E;AAAA,QAAkF;AAChFw+B,MAAE,GAAGD,GAAG,GAAGl6C,IAAI,CAAC8O,GAAL,CAASnQ,KAAK,CAAC+vC,SAAf,CADb;AAAA,QAEE0L,EAAE,GAAGF,GAAG,GAAGl6C,IAAI,CAAC6O,GAAL,CAASlQ,KAAK,CAAC+vC,SAAf,CAFb;AAAA,QAGEuK,SAAS,GAAGb,IAAI,CAACqB,MAAL,CAAY,CAAZ,IAAiB3sB,QAAQ,CAACgsB,SAA1B,GAAsCqB,EAHpD;AAAA,QAIEhB,QAAQ,GAAGf,IAAI,CAACqB,MAAL,CAAY,CAAZ,IAAiB3sB,QAAQ,CAACgsB,SAA1B,GAAsCsB,EAJnD,CAF6B,CAM0B;;AAEvDpC,mBAAe,CAAC5tC,GAAhB,CAAoB;AAClBb,SAAG,EAAE4vC,QADa;AAElB1vC,UAAI,EAAEwvC;AAFY,KAApB;AAID;;AAED,WAAS/rC,UAAT,GAAsB;AACpB;AACA;AACA;AACAstB,gBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACAluB,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CALoB,CAMpB;;AACA5E,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACoqB,QAAxC,EAAkD2D,SAAlD,CAAZ;AACAib,gBAAY,GAAGjb,SAAS,CAACnH,QAAzB;AACAb,gBAAY,GAAGgI,SAAS,CAAChI,YAAzB;AACAjJ,SAAK,GAAGiR,SAAS,CAACjR,KAAlB;AACAI,UAAM,GAAG6Q,SAAS,CAAC7Q,MAAnB;AACAqM,gBAAY,GAAGwE,SAAS,CAACxE,YAAzB;AAEAze,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AAEA,QAAIqW,YAAY,KAAK5tC,SAAjB,IAA8B2qB,YAAY,KAAK3qB,SAAnD,EAA8D2qB,YAAY,GAAG;AAC3EwxB,eAAS,EAAE,CADgE;AAE3EvL,eAAS,EAAE;AAFgE,KAAf,CAhB1C,CAqBpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAtlC,cAAU,GAAG5F,CAAC,CAAC,yBAAD,CAAd;AACA4hB,UAAM,GAAG5hB,CAAC,CAAC,wBAAwBgc,KAAxB,GAAgC,QAAjC,CAAV;AAEAu4B,iBAAa,GAAGv0C,CAAC,CAAC,oBAAD,CAAD,CAAwBya,IAAxB,CAA6B,IAA7B,EAAmCwS,SAAS,CAAClmB,EAA7C,CAAhB;AACAytC,mBAAe,GAAGx0C,CAAC,CAAC,sBAAD,CAAnB;AACAw0C,mBAAe,CAACvtC,QAAhB,CAAyBstC,aAAzB;AAEAJ,WAAO,GAAGn0C,CAAC,CAAC,0BAA0Boc,MAAM,CAACmN,CAAjC,GAAqC,QAAtC,CAAX;AACA6qB,WAAO,GAAGp0C,CAAC,CAAC,0BAA0Boc,MAAM,CAACoN,CAAjC,GAAqC,QAAtC,CAAX;AACA8qB,WAAO,GAAGt0C,CAAC,CAAC,0BAA0Boc,MAAM,CAACqN,CAAjC,GAAqC,QAAtC,CAAX;AACA4qB,WAAO,GAAGr0C,CAAC,CAAC,0BAA0Boc,MAAM,CAACniB,CAAjC,GAAqC,QAAtC,CAAX;AAEA2L,cAAU,CAACqC,MAAX,CAAkBksC,OAAlB,EACGlsC,MADH,CACUqsC,OADV,EAEGrsC,MAFH,CAEUssC,aAFV,EAGGtsC,MAHH,CAGUosC,OAHV,EAIGpsC,MAJH,CAIUmsC,OAJV;AAMAjD,SAAK,GAAGnxC,CAAC,CAAC,oCAAD,CAAD,CACLiI,MADK,CACE2Z,MADF,EAEL3Z,MAFK,CAEErC,UAFF,CAAR,CAnDoB,CAuDpB;;AACAurC,SAAK,CAAC7oC,QAAN,CAAe,WAAf;AAEAmsC,cAAU,GAAGz0C,CAAC,CAAC,2BAAD,CAAd;AACAmxC,SAAK,CAAClpC,MAAN,CAAawsC,UAAb;;AAEA,QAAIxnB,SAAS,CAACzF,OAAd,EAAuB;AACrB2pB,WAAK,CAAC12B,IAAN,CAAW,OAAX,EAAoBwS,SAAS,CAACzF,OAA9B;AACD;;AAED4lB,cAAU,CAAClX,UAAD,EAAajJ,SAAb,CAAV;AACAqI,mBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf,CAlEoB,CAoEpB;AACA;AACA;AACA;;AACA2b,SAAK,CAACvqC,GAAN,CAAU;AACR,eAASqmB,SAAS,CAACzmB,KADX;AAER,gBAAUymB,SAAS,CAACxmB;AAFZ,KAAV,EAxEoB,CA4EpB;;AACAyvB,cAAU,CAAC5rB,MAAX,CAAkB,IAAlB,EA7EoB,CA+EpB;;AACA,QAAI2a,YAAY,KAAK3qB,SAAjB,IAA8B2qB,YAAY,KAAK,IAAnD,EAAyD;AACvD8vB,oBAAc,CAAC9vB,YAAD,CAAd;;AACA,UAAIwD,YAAJ,EAAkB;AAChBgsB,kBAAU,CAACv+B,IAAX,CAAgB86B,WAAW,CAAC/rB,YAAD,CAA3B;AACD;AACF;AACF,GAtP2E,CAwP5E;;;AACAiR,YAAU,GAAG;AACX;AACAhB,uBAAmB,EAAE,+BAAW;AAC9B,UAAIlrB,KAAK,IAAIk+B,YAAb,EAA2B;AACzBl+B,aAAK,CAACssB,cAAN,CAAqB4R,YAArB,EAAmC2M,cAAnC;AACA7qC,aAAK,CAACmlC,iCAAN,CAAwCjH,YAAxC,EAAsD8M,2BAAtD;AACD;;AACDhe,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACAluB,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;;AACA,UAAIqW,YAAJ,EAAkB;AAChBl+B,aAAK,CAACusB,qBAAN,CAA4B,CAAC2R,YAAD,CAA5B,EAA4C2M,cAA5C;AACA7qC,aAAK,CAACwpB,8BAAN,CAAqC0U,YAArC,EAAmD8M,2BAAnD;AACD;;AAEDvD,iBAAW;AAEXwD,WAAK;;AAEL,UAAI/M,YAAJ,EAAkB;AAChB2M,sBAAc,CAAC,IAAD,CAAd;AACD;AACF,KArBU;AAuBX;AACA3sC,oBAAgB,EAAE,4BAAW;AAC3B,aAAOipC,KAAP;AACD,KA1BU;AA4BX7mC,UAAM,EAAE,gBAASusC,SAAT,EAAoB;AAC1B,UAAIA,SAAJ,EAAe;AACf,UAAIrwC,KAAK,GAAG2qC,KAAK,CAAC,CAAD,CAAL,CAAS2F,WAArB;AAAA,UACErwC,MAAM,GAAG0qC,KAAK,CAAC,CAAD,CAAL,CAAS4F,YADpB;AAAA,UAEExE,MAAM,GAAGtzB,UAAU,CAACkyB,KAAK,CAACvqC,GAAN,CAAU,WAAV,CAAD,CAFrB;AAAA,UAGEowC,UAAU,GAAGvwC,MAAM,GAAG,MAAM8rC,MAH9B;AAAA,UAGsC;AACpC0E,iBAAW,GAAG5C,OAAO,CAACnuC,UAAR,CAAmB,IAAnB,IAA2BouC,OAAO,CAACpuC,UAAR,CAAmB,IAAnB,CAJ3C;AAAA,UAKEgxC,SAAS,GAAG1wC,KAAK,GAAGywC,WALtB;AAAA,UAMEE,cAAc,GAAG,CANnB;;AAQA,UAAID,SAAS,GAAG,IAAI3E,MAApB,EAA4B;AAC1B4E,sBAAc,GAAG36C,IAAI,CAAC2M,GAAL,CAAS,IAAIopC,MAAJ,GAAa2E,SAAtB,CAAjB;AACAA,iBAAS,GAAG,IAAI3E,MAAhB;AACD;;AAED,UAAI6E,QAAQ,GAAGF,SAAS,GAAGF,UAAZ,GAAyBE,SAAzB,GAAqCF,UAApD;AAAA,UACEK,UAAU,GAAGD,QAAQ,GAAG,GAD1B;AAAA,UAEEE,eAAe,GAAGF,QAAQ,GAAG,MAAM7E,MAFrC;AAAA,UAGEgF,OAHF;;AAKA,UAAIJ,cAAc,GAAG,CAArB,EAAwB;AACtB,YAAIK,MAAM,GAAG,CAACP,WAAW,GAAGE,cAAd,GAA+B,MAAM5E,MAAtC,IAAgD0E,WAA7D;AACAM,eAAO,GAAGjD,OAAO,CAACpuC,UAAR,CAAmB,IAAnB,IAA2BsxC,MAA3B,GAAoC,MAAMjF,MAA1C,GAAmD6E,QAAQ,GAAG,CAAxE;AACD,OAHD,MAGO;AACLG,eAAO,GAAGjD,OAAO,CAACpuC,UAAR,CAAmB,IAAnB,IAA2B,MAAMqsC,MAAjC,GAA0C6E,QAAQ,GAAG,CAA/D;AACD;;AAEDxxC,gBAAU,CAACgB,GAAX,CAAe;AACbJ,aAAK,EAAEA,KADM;AAEbC,cAAM,EAAE6wC;AAFK,OAAf;AAKAjD,aAAO,CAACztC,GAAR,CAAY;AACVX,YAAI,EAAEsxC,OAAO,GAAGH,QAAQ,GAAG,CAArB,GAAyB,MAAM7E;AAD3B,OAAZ;AAGA+B,aAAO,CAAC1tC,GAAR,CAAY;AACVX,YAAI,EAAEsxC,OAAO,GAAGH,QAAQ,GAAG,CAArB,GAAyB,MAAM7E,MAA/B,GAAwC+B,OAAO,CAAC,CAAD,CAAP,CAAWwC;AAD/C,OAAZ;AAGA3C,aAAO,CAACvtC,GAAR,CAAY;AACVX,YAAI,EAAEsxC,OAAO,GAAGpD,OAAO,CAACjuC,UAAR,CAAmB,IAAnB,IAA2B;AADjC,OAAZ;AAGAkuC,aAAO,CAACxtC,GAAR,CAAY;AACVX,YAAI,EAAEsxC,OAAO,GAAGnD,OAAO,CAACluC,UAAR,CAAmB,IAAnB,IAA2B;AADjC,OAAZ;AAIAquC,mBAAa,CAAC3tC,GAAd,CAAkB;AAChBH,cAAM,EAAE2wC,QADQ;AAEhB5wC,aAAK,EAAE4wC,QAFS;AAGhBnxC,YAAI,EAAEsxC,OAAO,GAAGH,QAAQ,GAAG,CAHX;AAIhBrxC,WAAG,EAAE,MAAMwsC,MAJK;AAKhBkF,oBAAY,EAAEL;AALE,OAAlB;AAOA5C,qBAAe,CAAC5tC,GAAhB,CAAoB;AAClBH,cAAM,EAAE4wC,UADU;AAElB7wC,aAAK,EAAE6wC,UAFW;AAGlBI,oBAAY,EAAEL,QAHI;AAIlBnxC,YAAI,EAAEmxC,QAAQ,GAAG,CAAX,GAAeC,UAAU,GAAG,CAJhB;AAKlBtxC,WAAG,EAAEqxC,QAAQ,GAAG,CAAX,GAAeC,UAAU,GAAG;AALf,OAApB,EApD0B,CA4D1B;;AACA1C,kBAAY,GAAG,KAAf;AACAryB,UAAI,GA9DsB,CAgE1B;;AACA,UAAInnB,KAAK,GAAGu2B,sBAAsB,CAACG,QAAvB,GAAkC1R,GAAlC,CAAsC+nB,YAAtC,CAAZ;AACA6M,oBAAc,CAAC55C,KAAD,CAAd;AACD,KA/FU;AAiGX;AACA0E,aAAS,EAAE,qBAAW;AACpB,UAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAb;;AAEA,UAAI,CAACib,YAAL,EAAmB;AACjB;AACA;AACA;AACA/oC,cAAM,CAAC8lB,YAAP,GAAsB;AACpBwxB,mBAAS,EAAE,CADS;AAEpBvL,mBAAS,EAAE;AAFS,SAAtB;AAID;;AAED,aAAO/rC,MAAP;AACD;AAhHU,GAAb;AAmHAuK,YAAU,GA5WkE,CA8W5E;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;ACtXD;AACA;AACA;AAGe,SAASwhB,wBAAT,CAAkCzqB,SAAlC,EAA6CyE,sBAA7C,EAAqE;AAClF,MAAIwW,YAAJ;AAAA,MAAkBjjB,YAAlB;AAAA,MACEjJ,KADF;AAAA,MACS27B,SADT;AAAA,MAEE;AACAxG,OAHF;AAAA,MAIEvvB,MAJF;AAAA,MAKEg2B,OALF;AAAA,MAME5tC,KANF;AAAA,MAOEgtB,YAPF;AAAA,MAQE;AACAd,YATF;AAAA,MAWE;AACA;AACA;AACA;AACA2hB,sBAAoB,GAAG,SAAvBA,oBAAuB,GAAW;AAChC,QAAI18C,KAAK,GAAGu2B,sBAAsB,CAACG,QAAvB,GAAkC1R,GAAlC,CAAsC+nB,YAAtC,CAAZ,CADgC,CAGhC;;AACA,QAAIz2B,KAAK,GAAGkmC,SAAS,CAACx8C,KAAD,CAArB,CAJgC,CAIF;;AAC9By8C,WAAO,CAAChxC,GAAR,CAAY,kBAAZ,EAAgC6K,KAAhC;AACD,GArBH;;AAuBA,WAAS/H,UAAT,GAAsB;AACpB;AACA;AACA;AACAstB,gBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACAluB,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CALoB,CAMpB;;AACA5E,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACwqB,cAAxC,EAAwDuD,SAAxD,CAAZ;AACAib,gBAAY,GAAGjb,SAAS,CAACnH,QAAzB;AACAb,gBAAY,GAAGgI,SAAS,CAAChI,YAAzB;AACAjJ,SAAK,GAAGiR,SAAS,CAACjR,KAAlB;AAEA27B,aAAS,GAAG3gB,YAAY,CAACsV,2BAAb,CAAyC,OAAzC,EAAkDrf,SAAS,CAACtD,UAA5D,CAAZ;AAEA3f,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AAEAjQ,UAAM,GAAG5hB,CAAC,CAAC,wBAAwBgc,KAAxB,GAAgC,QAAjC,CAAV;AACA47B,WAAO,GAAG53C,CAAC,CAAC,4BAAD,CAAX;AAEAmxC,SAAK,GAAGnxC,CAAC,CAAC,2CAAD,CAAD,CACLiI,MADK,CACE2Z,MADF,EAEL3Z,MAFK,CAEE2vC,OAFF,CAAR,CAnBoB,CAuBpB;;AACAzG,SAAK,CAAC7oC,QAAN,CAAe,WAAf;;AAEA,QAAI2kB,SAAS,CAACzF,OAAd,EAAuB;AACrB2pB,WAAK,CAAC12B,IAAN,CAAW,OAAX,EAAoBwS,SAAS,CAACzF,OAA9B;AACD;;AAED8N,mBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf,CA9BoB,CAgCpB;AACA;AACA;AACA;;AACA2b,SAAK,CAACvqC,GAAN,CAAU;AACR,eAASqmB,SAAS,CAACzmB,KADX;AAER,gBAAUymB,SAAS,CAACxmB;AAFZ,KAAV,EApCoB,CAwCpB;;AACAyvB,cAAU,CAAC5rB,MAAX;AACD,GAlEiF,CAoElF;;;AACA4rB,YAAU,GAAG;AACX;AACAhB,uBAAmB,EAAE,+BAAW;AAC9B,UAAIlrB,KAAK,IAAIk+B,YAAb,EAA2B;AACzBl+B,aAAK,CAACssB,cAAN,CAAqB4R,YAArB,EAAmC2P,oBAAnC;AACD;;AACD7gB,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACAluB,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;;AACA,UAAIqW,YAAJ,EAAkB;AAChBl+B,aAAK,CAACusB,qBAAN,CAA4B,CAAC2R,YAAD,CAA5B,EAA4C2P,oBAA5C;AACD;;AAED,UAAI3P,YAAJ,EAAkB;AAChB2P,4BAAoB;AACrB;AACF,KAfU;AAiBX;AACA3vC,oBAAgB,EAAE,4BAAW;AAC3B,aAAOipC,KAAP;AACD,KApBU;AAsBX7mC,UAAM,EAAE,kBAAW,CAAE,CAtBV;AAwBX;AACAzK,aAAS,EAAE,qBAAW;AACpB,aAAOG,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAP;AACD;AA3BU,GAAb;AA8BAvjB,YAAU,GAnGwE,CAqGlF;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;AC5GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAGA;;AAEe,SAAS4hB,mBAAT,CAA6BC,YAA7B,EAA2CpuC,OAA3C,EAAoD;AACjEA,SAAO,GAAGA,OAAO,IAAI,EAArB,CADiE,CAGjE;;AACA,MAAIkB,GAAG,GAAG;AACR;AACA1O,SAAK,EAAE,iBAAW;AAChB,UAAIJ,IAAI,GAAG,EAAX;AAAA,UACEqC,IADF;;AAGA,WAAKA,IAAL,IAAa25C,YAAb,EAA2B;AACzB,YAAIA,YAAY,CAACp5C,cAAb,CAA4BP,IAA5B,CAAJ,EAAuC;AACrCrC,cAAI,CAACqC,IAAD,CAAJ,GAAa1E,yBAAM,CAACyC,KAAP,CAAa47C,YAAY,CAAC35C,IAAD,CAAzB,CAAb;AACD;AACF;;AAED,aAAOrC,IAAP;AACD;AAbO,GAAV,CAJiE,CAoBjE;;AACA,MAAI4N,OAAO,CAACquC,mBAAZ,EAAiC;AAC/BntC,OAAG,CAACotC,OAAJ,GAAc,UAAS3V,KAAT,EAAgB;AAC5B,UAAIlkC,IAAJ,EAAU6yB,MAAV,EAAkB71B,CAAlB,EAAqByM,CAArB;;AAEA,WAAKzJ,IAAL,IAAa25C,YAAb,EAA2B;AACzB,YAAIA,YAAY,CAACp5C,cAAb,CAA4BP,IAA5B,CAAJ,EAAuC;AACrC6yB,gBAAM,GAAG8mB,YAAY,CAAC35C,IAAD,CAArB;AACA1E,mCAAM,CAACqC,IAAP,CAAYumC,KAAK,CAAClkC,IAAD,CAAjB,EAAyB6yB,MAAzB;;AACA,eAAK71B,CAAC,GAAGknC,KAAK,CAAClkC,IAAD,CAAL,CAAY/C,MAAhB,EAAwBwM,CAAC,GAAGopB,MAAM,CAAC51B,MAAxC,EAAgDD,CAAC,GAAGyM,CAApD,EAAuDzM,CAAC,EAAxD,EAA4D;AAC1D61B,kBAAM,CAAC71B,CAAD,CAAN,GAAY,CAAZ;AACD;AACF;AACF;AACF,KAZD;AAaD,GAdD,MAcO;AACLyP,OAAG,CAACotC,OAAJ,GAAc,UAAS3V,KAAT,EAAgB;AAC5B,UAAIlkC,IAAJ;;AAEA,WAAKA,IAAL,IAAa25C,YAAb,EAA2B;AACzB,YAAIA,YAAY,CAACp5C,cAAb,CAA4BP,IAA5B,CAAJ,EAAuC;AACrC1E,mCAAM,CAACqC,IAAP,CAAYumC,KAAK,CAAClkC,IAAD,CAAjB,EAAyB25C,YAAY,CAAC35C,IAAD,CAArC;AACD;AACF;AACF,KARD;AASD;;AAED,SAAOyM,GAAP;AACD;AAAA,C;;;;;AC7DD;AAGA;;;;;;AAKe;AACbqtC,cAAY,EAAE,sBAASC,cAAT,EAAyB36C,SAAzB,EAAoC;AAChD,QAAIpC,CAAJ,EAAOc,GAAP;;AACA,QAAI1B,KAAK,CAACyD,OAAN,CAAck6C,cAAd,CAAJ,EAAmC;AACjC;AACA,WAAK/8C,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGi8C,cAAc,CAAC98C,MAAjC,EAAyCD,CAAC,GAAGc,GAA7C,EAAkDd,CAAC,EAAnD,EAAuD;AACrD,YAAI1B,yBAAM,CAACuE,OAAP,CAAek6C,cAAc,CAAC/8C,CAAD,CAA7B,CAAJ,EACE+8C,cAAc,CAAC/8C,CAAD,CAAd,GAAoB1B,yBAAM,CAAC6D,MAAP,CAAc46C,cAAc,CAAC/8C,CAAD,CAA5B,EAAiCoC,SAAjC,CAApB;AACH;AACF,KAND,MAMO;AACL;AACA,WAAKpC,CAAL,IAAU+8C,cAAV,EAA0B;AACxB,YAAIA,cAAc,CAACx5C,cAAf,CAA8BvD,CAA9B,CAAJ,EAAsC;AACpC,cAAI1B,yBAAM,CAACuE,OAAP,CAAek6C,cAAc,CAAC/8C,CAAD,CAA7B,CAAJ,EACE+8C,cAAc,CAAC/8C,CAAD,CAAd,GAAoB1B,yBAAM,CAAC6D,MAAP,CAAc46C,cAAc,CAAC/8C,CAAD,CAA5B,EAAiCoC,SAAjC,CAApB;AACH;AACF;AACF;AACF;AAlBY,CAAf,E;;ACPA;AACA;AACA;AACA;CAGA;;AACA,IAAI;AACF46C,SAAS,GAAI,YAAW;AACtB;AACA,MAAI,OAAOC,SAAP,KAAqB,WAAzB,EACE,OAAO,IAAP,CAHoB,CAItB;;AACA,MAAIC,WAAW,GAAG,4GAAlB;AAAA,MACEhvC,KAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BgvC,WAA1B,CADV;AAEA,SAAO,CAAChvC,KAAD,IAAU,CAACA,KAAK,CAAC,CAAD,CAAvB;AACD,CARY,EADf;AAAA,IAWEkvC,QAAQ,GAAG9+C,yBAAM,CAACK,KAAP,IAAgBq+C,SAX7B,C,CAaA;AACA;;;AACe;AACbK,WAAS,EAAED,QAAQ,GAAG,cAAH,GAAoB,SAD1B;AAEbE,WAAS,EAAEF,QAAQ,GAAG,YAAH,GAAkB,SAFxB;AAGbG,WAAS,EAAEH,QAAQ,GAAG,YAAH,GAAkB,SAHxB;AAIbI,UAAQ,EAAEJ,QAAQ,GAAG,WAAH,GAAiB,SAJtB;AAKbK,YAAU,EAAEL,QAAQ,GAAG,aAAH,GAAmB,SAL1B;AAMbM,WAAS,EAAEN,QAAQ,GAAG,YAAH,GAAkB;AANxB,CAAf,E;;;;;ACtBA;;;;;;;;;;;;;;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;CAGA;;AACA,IAAI;AACFO,eAAe,GAAG3/B,4BAAS,CAACvX,OAAV,CAAkB,GAAlB,EAAuB;AACvCyB,MAAI,EAAE8V,4BAAS,CAACzX,IAAV,CAAegB,EADkB;AAEvCY,IAAE,EAAE6V,4BAAS,CAACzX,IAAV,CAAec;AAFoB,CAAvB,CADpB;AAAA,IAME;AACA;AACAu2C,oBAAoB,GAAG5/B,4BAAS,CAACvX,OAAV,CAAkB,IAAlB,EAAwB;AAC7CyB,MAAI,EAAE8V,4BAAS,CAACzX,IAAV,CAAegB,EADwB;AAE7CY,IAAE,EAAE6V,4BAAS,CAACzX,IAAV,CAAec;AAF0B,CAAxB,CARzB;AAAA,IAaE;AACA;AACAw2C,CAAC,GAAG,KAfN;AAAA,IAgBEC,MAAM,GAAG,IAAI18C,IAAI,CAAC0O,EAhBpB;AAAA,IAkBE;AACAiuC,QAAQ,GAAG,GAnBb;AAAA,IAoBEC,2BAA2B,GAAG,IAAID,QApBpC;AAAA,IAsBEE,QAAQ,GAAG,GAtBb;AAAA,IAuBEC,WAAW,GAAG,IAvBhB;AAAA,IAyBE;AACAC,eAAe,GAAG,CA1BpB;AAAA,IA2BEC,cAAc,GAAG,CA3BnB;;AA6BA,SAASC,eAAT,CAAyBC,MAAzB,EAAiC9U,WAAjC,EAA8C;AAE5C,MAAIpf,UAAU,GAAGsM,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACmZ,eAAxC,EAAyDusB,WAAzD,CAAjB;AAAA,MAEEhrB,GAFF;AAAA,MAGE+W,QAAQ,GAAG,IAAIL,eAAJ,CAAoB,gBAApB,CAHb;AAAA,MAKEhY,mBAAmB,GAAGkN,UAAU,CAAClN,mBALnC;AAAA,MAMEqhC,cAAc,GAAGn0B,UAAU,CAAChN,gCAN9B;AAAA,MAOEohC,mBAAmB,GAAG,CAPxB;AAAA,MASEnhC,WAAW,GAAG+M,UAAU,CAAC/M,WAT3B;AAAA,MAWEomB,UAAU,GAAG6a,MAAM,CAACG,aAAP,EAXf;AAAA,MAaEC,cAAc,GAAG,EAbnB;AAAA,MAeEC,SAfF;AAAA,MAiBEC,KAjBF;AAAA,MAkBEC,QAlBF;AAAA,MAmBE1hC,OAnBF;AAAA,MAqBE2hC,YAAY,GAAG,CArBjB;AAAA,MAuBEC,kBAAkB,GAAG,SAArBA,kBAAqB,GAAW;AAC9B,WAAOd,QAAQ,GAAI,CAACC,WAAW,GAAGD,QAAf,IAA2B78C,IAAI,CAACyO,MAAL,EAA9C;AACD,GAzBH;AAAA,MA2BEmvC,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAW;AAC5B,QAAI/+C,MAAM,GAAG2+C,KAAK,CAACz9C,CAAN,CAAQlB,MAArB;AAEA2+C,SAAK,CAAChnC,UAAN,GAAmBtZ,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAACzB,QAApC,CAAnB;AACD,GA/BH;AAAA,MAiCE0B,kBAAkB,GAAG,SAArBA,kBAAqB,CAASC,iBAAT,EAA4B;AAC/C,QAAIl/C,MAAM,GAAG,CAAb;;AAEA,QAAIk/C,iBAAiB,CAACh+C,CAAtB,EAAyB;AACvBlB,YAAM,GAAGmB,IAAI,CAACg+C,IAAL,CAAUD,iBAAiB,CAACh+C,CAAlB,CAAoBlB,MAApB,GAA6B,EAAvC,IAA6C,EAAtD;AACD;;AAEDkd,WAAO,GAAG;AACRxR,QAAE,EAAErN,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAACxB,UAApC,CADI;AAERt8C,OAAC,EAAE7C,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAAC5B,SAApC,CAFK;AAGR3mC,OAAC,EAAEpY,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAAC5B,SAApC,CAHK;AAIR1mC,QAAE,EAAErY,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAAC5B,SAApC,CAJI;AAKRzmC,QAAE,EAAEtY,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAAC5B,SAApC,CALI;AAMRx/B,sBAAgB,EAAEvf,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAAC5B,SAApC;AANV,KAAV;AAQD,GAhDH;AAAA,MAkDEgC,sBAAsB,GAAG,EAlD3B;AAAA,MAkD+B;AAE7BC,UApDF;AAAA,MAoDYC,QApDZ;AAAA,MAoDsB;AAEpB5vC,IAtDF;AAAA,MAsDMC,EAtDN;AAAA,MAsDU;AACR4vC,IAvDF;AAAA,MAuDMC,EAvDN;AAAA,MAwDEC,UAxDF;AAAA,MAwDcC,UAxDd;AAAA,MA0DEC,UAAU,GAAG,CA1Df;AAAA,MA4DEC,cAAc,GAAG,SAAjBA,cAAiB,CAASV,iBAAT,EAA4B;AAC3C,QAAI,CAACA,iBAAD,IAAsB,CAACA,iBAAiB,CAACh+C,CAA7C,EAAgD;AAC9C;AACD;;AACD,KAAC,GAAD,EAAM,GAAN,EAAW,IAAX,EAAiB,IAAjB,EAAuB,kBAAvB,EAA2Cgb,OAA3C,CAAmD,UAASC,GAAT,EAAc;AAC/D9d,+BAAM,CAACqC,IAAP,CAAYw+C,iBAAiB,CAAC/iC,GAAD,CAA7B,EAAoCe,OAAO,CAACf,GAAD,CAA3C;AACD,KAFD;;AAIA,SAAK,IAAIpc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmd,OAAO,CAAChc,CAAR,CAAUlB,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,UAAImd,OAAO,CAACxG,EAAR,CAAW3W,CAAX,KAAiBmd,OAAO,CAACvG,EAAR,CAAW5W,CAAX,CAArB,EAAoC;AAClC4/C,kBAAU;AACVziC,eAAO,CAACxR,EAAR,CAAW3L,CAAX,IAAgB8+C,YAAY,EAA5B;AACD;AACF;AACF,GA1EH;AAAA,MA4EE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAgB,4BAA0B,GAAG,SAA7BA,0BAA6B,GAAW;AACtC,QAAIC,QAAQ,GAAGzB,MAAM,CAAC0B,gBAAP,EAAf;AAAA,QACEhgD,CADF;AAAA,QACKc,GADL;AAAA,QAEEK,CAFF;AAAA,QAEKuV,CAFL;AAAA,QAGE4D,SAHF;AAAA,QAIE9K,CAJF;AAAA,QAIKywC,GAJL;AAAA,QAKE1E,EALF;AAAA,QAKMC,EALN;AAAA,QAME0E,eANF;;AAQA,SAAKlgD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGqc,OAAO,CAAChc,CAAR,CAAUlB,MAA5B,EAAoCD,CAAC,GAAGc,GAAxC,EAA6Cd,CAAC,EAA9C,EAAkD;AAChD,UAAI,CAACmd,OAAO,CAACxG,EAAR,CAAW3W,CAAX,CAAD,IAAkB,CAACmd,OAAO,CAACvG,EAAR,CAAW5W,CAAX,CAAvB,EAAsC;AACpC;AACD;;AAEDmB,OAAC,GAAGgc,OAAO,CAAChc,CAAR,CAAUnB,CAAV,CAAJ;AACA0W,OAAC,GAAGyG,OAAO,CAACzG,CAAR,CAAU1W,CAAV,CAAJ,CANgD,CAQhD;AACA;;AACA,WAAKsa,SAAS,GAAG,CAAjB,EAAoBA,SAAS,GAAGylC,QAAhC,EAA0CzlC,SAAS,EAAnD,EAAuD;AACrDihC,UAAE,GAAGqD,KAAK,CAACz9C,CAAN,CAAQmZ,SAAR,IAAqBnZ,CAA1B;AACAq6C,UAAE,GAAGoD,KAAK,CAACloC,CAAN,CAAQ4D,SAAR,IAAqB5D,CAA1B;AACAlH,SAAC,GAAGovC,KAAK,CAACrnC,MAAN,CAAa+C,SAAb,CAAJ,CAHqD,CAIrD;;AACA2lC,WAAG,GAAGzwC,CAAC,GAAGA,CAAV;;AAEA,YAAI+rC,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAf,GAAoByE,GAAxB,EAA6B;AAC3BC,yBAAe,GAAGC,yBAAyB,CAACngD,CAAD,EAAIsa,SAAJ,CAA3C;;AACA,cAAI4lC,eAAe,KAAK/B,eAAxB,EAAyC;AACvC;AACA;AACD,WAL0B,CAM3B;AACA;;AACD;AACF;AACF;AACF,GA1HH;AAAA,MA4HEgC,yBAAyB,GAAG,SAA5BA,yBAA4B,CAASC,WAAT,EAAsB9lC,SAAtB,EAAiC;AAC3D,QAAIlZ,IAAI,CAACyO,MAAL,KAAgB2uC,mBAApB,EAAyC;AACvC;AACA,aAAOJ,cAAP;AACD,KAHD,MAGO;AACL,UAAIiC,aAAa,GAAGC,iBAAiB,CAACF,WAAD,EAAc9lC,SAAd,CAArC;;AACA,UAAI+lC,aAAa,KAAK,KAAlB,IAA2BA,aAAa,GAAG,CAA/C,EAAkD;AAChDE,oBAAY,CAACH,WAAD,CAAZ,CADgD,CAEhD;AACA;;AACA,YAAII,OAAO,GAAGH,aAAa,GAAG1C,eAA9B;AACApoB,gBAAQ,CAACkrB,cAAT,CAAwBD,OAAxB;AACA,eAAOrC,eAAP;AACD;AACF,KAd0D,CAe3D;;AACD,GA5IH;AAAA,MA8IE;AACA;AACAmC,mBAAiB,GAAG,SAApBA,iBAAoB,CAASF,WAAT,EAAsB9lC,SAAtB,EAAiC;AACnD,QAAI,CAAC4C,mBAAL,EAA0B;AAE1B,QAAIwjC,YAAY,GAAGxjC,mBAAmB,CAAC0hC,KAAK,CAACttC,OAAN,CAAcgJ,SAAd,CAAD,CAAtC;AAAA,QACEqmC,gBAAgB,GAAG/B,KAAK,CAAChnC,UAAN,CAAiB0C,SAAjB,CADrB;AAAA,QAEEsmC,cAAc,GAAGF,YAAY,CAACC,gBAAD,CAF/B;AAAA,QAGEE,YAAY,GAAG1jC,OAAO,CAACU,gBAAR,CAAyBuiC,WAAzB,IAAwCzC,eAHzD;AAAA,QAIE39C,CAJF;AAAA,QAKE8gD,OALF;;AAOA,SAAK9gD,CAAC,GAAG2gD,gBAAgB,GAAG,CAAvB,EAA0BG,OAAO,GAAGJ,YAAY,CAACzgD,MAAtD,EAA8DD,CAAC,GAAG8gD,OAAlE,EAA2E9gD,CAAC,EAA5E,EAAgF;AAC9E,UAAIoB,IAAI,CAAC2M,GAAL,CAAS2yC,YAAY,CAAC1gD,CAAD,CAAZ,GAAkB4gD,cAAlB,GAAmCC,YAA5C,IAA4DjD,oBAAhE,EAAsF;AACpFgB,aAAK,CAAChnC,UAAN,CAAiB0C,SAAjB,IAA8Bta,CAA9B;AACA0+C,sBAAc,CAACpkC,SAAD,CAAd,GAA4BqkC,SAA5B;AACA,eAAO+B,YAAY,CAAC1gD,CAAD,CAAZ,GAAkB4gD,cAAzB;AACD;AACF;;AACD,WAAO,KAAP;AACD,GAlKH;AAAA,MAoKE;AACA;AACA;AACAG,iCAA+B,GAAG,SAAlCA,+BAAkC,CAASC,YAAT,EAAuB;AACvD,QAAIhV,CAAC,GAAGsS,MAAM,CAAC0B,gBAAP,EAAR;AAAA,QACEiB,KAAK,GAAGD,YAAY,CAACE,OAAb,EADV;AAAA,QAEEC,mBAAmB,GAAG,EAFxB;AAAA,QAGEC,EAHF;AAAA,QAGMC,EAHN;AAAA,QAIErhD,CAJF;AAAA,QAIKc,GAJL;AAAA,QAKEwgD,GALF;AAAA,QAKOC,GALP;AAAA,QAMEC,aANF;AAAA,QAMiBC,aANjB;AAAA,QAOEC,EAPF;AAAA,QAOMC,EAPN;AAAA,QAOUC,GAPV;AAAA,QAOeC,GAPf;AAAA,QAOoBC,IAPpB;AAAA,QAQEC,QARF;AAAA,QAQYC,UARZ;AAAA,QASEC,cATF;AAAA,QASkBC,gBATlB;AAWA,QAAI,CAAChlC,mBAAL,EAA0B,OAZ6B,CAcvD;;AACA,SAAKkkC,EAAE,GAAG,CAAV,EAAaA,EAAE,GAAGpV,CAAlB,EAAqBoV,EAAE,EAAvB,EAA2B;AAEzBM,QAAE,GAAG9C,KAAK,CAACz9C,CAAN,CAAQigD,EAAR,CAAL;AACAO,QAAE,GAAG/C,KAAK,CAACloC,CAAN,CAAQ0qC,EAAR,CAAL;;AAEA,WAAKphD,CAAC,GAAGghD,YAAY,CAACmB,cAAb,CAA4Bf,EAA5B,CAAJ,EAAqCtgD,GAAG,GAAGkgD,YAAY,CAACoB,YAAb,CAA0BhB,EAA1B,CAAhD,EAA+EphD,CAAC,GAAGc,GAAnF,EAAwFd,CAAC,EAAzF,EAA6F;AAC3FqhD,UAAE,GAAGJ,KAAK,CAACjhD,CAAD,CAAV;AAEAshD,WAAG,GAAG1C,KAAK,CAACttC,OAAN,CAAc8vC,EAAd,CAAN;AACAG,WAAG,GAAG3C,KAAK,CAACttC,OAAN,CAAc+vC,EAAd,CAAN;AACAG,qBAAa,GAAGtkC,mBAAmB,CAACokC,GAAD,CAAnC;AACAG,qBAAa,GAAGvkC,mBAAmB,CAACqkC,GAAD,CAAnC,CAN2F,CAQ3F;;AACA,YAAI,CAACC,aAAa,CAACvhD,MAAf,IAAyB,CAACwhD,aAAa,CAACxhD,MAA5C,EAAoD;AAClD;AACD,SAX0F,CAa3F;;;AACA2hD,WAAG,GAAGF,EAAE,GAAG9C,KAAK,CAACz9C,CAAN,CAAQkgD,EAAR,CAAX;AACAQ,WAAG,GAAGF,EAAE,GAAG/C,KAAK,CAACloC,CAAN,CAAQ2qC,EAAR,CAAX;AACAS,YAAI,GAAGF,GAAG,GAAGA,GAAN,GAAYC,GAAG,GAAGA,GAAzB;AACAE,gBAAQ,GAAG,QAAQlD,QAAQ,CAAC/mC,KAAT,CAAewpC,GAAf,IAAsBzC,QAAQ,CAAC/mC,KAAT,CAAeypC,GAAf,CAA9B,CAAX;AACAS,kBAAU,GAAGD,QAAQ,GAAGA,QAAxB;;AAEA,YAAID,IAAI,IAAIE,UAAZ,EAAwB;AACtB;AACD;;AAEDb,2BAAmB,CAACC,EAAD,CAAnB,GAA0BC,EAA1B,CAxB2F,CAwB7D;;AAE9B,YAAIhC,sBAAsB,CAAC+B,EAAD,CAAtB,KAA+BC,EAAnC,EAAuC;AACrC;AACA;AACA;AACA;AACD,SA/B0F,CAiC3F;;;AACAY,sBAAc,GAAGI,yBAAyB,CAACjB,EAAD,EAAKC,EAAL,CAA1C,CAlC2F,CAoC3F;;AACA,YAAI,CAACY,cAAL,EAAqB;AACnBC,0BAAgB,GAAGI,2BAA2B,CAAClB,EAAD,EAAKC,EAAL,CAA9C;AACD;;AAED,YAAIY,cAAc,IAAIC,gBAAtB,EAAwC;AACtC;AACA7C,gCAAsB,CAAC+B,EAAD,CAAtB,GAA6BC,EAA7B;AACAhC,gCAAsB,CAACgC,EAAD,CAAtB,GAA6BD,EAA7B;AACD;AACF;AACF,KAnEsD,CAqEvD;AACA;AACA;;;AACA,SAAKA,EAAE,GAAG,CAAL,EAAQtgD,GAAG,GAAGu+C,sBAAsB,CAACp/C,MAA1C,EAAkDmhD,EAAE,GAAGtgD,GAAvD,EAA4DsgD,EAAE,EAA9D,EAAkE;AAChEC,QAAE,GAAGhC,sBAAsB,CAAC+B,EAAD,CAA3B;;AACA,UAAI,CAACpzC,KAAK,CAACqzC,EAAD,CAAV,EAAgB;AACd,YAAI,EAAEF,mBAAmB,CAACC,EAAD,CAAnB,KAA4BC,EAA5B,IAAkCF,mBAAmB,CAACE,EAAD,CAAnB,KAA4BD,EAAhE,CAAJ,EAAyE;AACvE,iBAAO/B,sBAAsB,CAAC+B,EAAD,CAA7B;AACA,iBAAO/B,sBAAsB,CAACgC,EAAD,CAA7B;AACD;AACF;AACF;AACF,GAxPH;AAAA,MA0PE;AACA;AACA;AACA;AACAgB,2BAAyB,GAAG,SAA5BA,yBAA4B,CAASjB,EAAT,EAAaC,EAAb,EAAiB;AAC3C,QAAIY,cAAJ,EACEpjC,SADF;AAGAygC,YAAQ,GAAG8B,EAAX;AACA7B,YAAQ,GAAG8B,EAAX,CAL2C,CAO3C;;AACAxiC,aAAS,GAAGzd,IAAI,CAACyO,MAAL,KAAgB,GAAhB,GAAsByvC,QAAtB,GAAiCC,QAA7C;AACA0C,kBAAc,GAAGM,eAAe,CAAC1jC,SAAD,CAAhC;;AACA,QAAI,CAACojC,cAAL,EAAqB;AACnB;AACAA,oBAAc,GAAGM,eAAe,CAACjD,QAAQ,GAAGC,QAAX,GAAsB1gC,SAAvB,CAAhC;AACD;;AAED,WAAOojC,cAAP;AACD,GA9QH;AAAA,MAgRE;AACA;AACAM,iBAAe,GAAG,SAAlBA,eAAkB,CAASviD,CAAT,EAAY;AAC5B,QAAI0gD,YAAY,GAAGxjC,mBAAmB,CAAC0hC,KAAK,CAACttC,OAAN,CAActR,CAAd,CAAD,CAAtC;AAAA,QACEwiD,kBADF;AAAA,QAEEC,qBAFF;AAAA,QAGEC,UAHF;AAAA,QAIEC,cAJF;AAAA,QAIkBC,OAJlB;AAAA,QAKEC,eALF;AAAA,QAKmBC,cALnB;AAAA,QAMEr2C,CANF;AAAA,QAMKC,EANL;AAQA,QAAI,CAACg0C,YAAL,EAAmB;AAEnBqC,6BAAyB;AAEzBL,cAAU,GAAGM,aAAa,EAA1B;AAEAR,sBAAkB,GAAG5D,KAAK,CAAChnC,UAAN,CAAiB5X,CAAjB,CAArB;AACAyiD,yBAAqB,GAAG/B,YAAY,CAAC8B,kBAAD,CAApC,CAhB4B,CAkB5B;;AACA,SAAK/1C,CAAC,GAAG+1C,kBAAkB,GAAG,CAAzB,EAA4B91C,EAAE,GAAGg0C,YAAY,CAACzgD,MAAnD,EAA2DwM,CAAC,GAAGC,EAA/D,EAAmED,CAAC,EAApE,EAAwE;AACtEk2C,oBAAc,GAAGjC,YAAY,CAACj0C,CAAD,CAAZ,GAAkBg2C,qBAAnC;;AACA,UAAIC,UAAU,GAAGC,cAAjB,EAAiC;AAC/B;AACD;;AACDC,aAAO,GAAGn2C,CAAV;AACD;;AACD,QAAI,CAACm2C,OAAL,EAAc;AACZ;AACA,aAAO,KAAP;AACD,KA7B2B,CA+B5B;AACA;;;AACAA,WAAO,GAAGA,OAAO,GAAGJ,kBAApB;AACAK,mBAAe,GAAGzhD,IAAI,CAACg+C,IAAL,CAAUh+C,IAAI,CAACyO,MAAL,KAAgB+yC,OAA1B,IAAqCJ,kBAAvD;AAEA5D,SAAK,CAAChnC,UAAN,CAAiB5X,CAAjB,IAAsB6iD,eAAtB;AACAnE,kBAAc,CAAC1+C,CAAD,CAAd,GAAoB2+C,SAApB;AACAmE,kBAAc,GAAGpC,YAAY,CAACmC,eAAD,CAAZ,GAAgCJ,qBAAjD;AACAQ,oBAAgB,CAACH,cAAD,CAAhB;AACA,WAAO,IAAP;AACD,GA3TH;AAAA,MA6TEC,yBAAyB,GAAG,SAA5BA,yBAA4B,GAAW;AACrC,QAAIxH,EAAE,GAAGqD,KAAK,CAACz9C,CAAN,CAAQo+C,QAAR,IAAoBX,KAAK,CAACz9C,CAAN,CAAQm+C,QAAR,CAA7B;AAAA,QACE9D,EAAE,GAAGoD,KAAK,CAACloC,CAAN,CAAQ6oC,QAAR,IAAoBX,KAAK,CAACloC,CAAN,CAAQ4oC,QAAR,CAD3B;AAAA,QAEE4D,mBAAmB,GAAG,IAAI9hD,IAAI,CAAC2O,IAAL,CAAUwrC,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAF5B;AAIAkE,cAAU,GAAGnE,EAAE,GAAG2H,mBAAlB;AACAvD,cAAU,GAAGnE,EAAE,GAAG0H,mBAAlB,CANqC,CAQrC;;AACAvzC,MAAE,GAAGivC,KAAK,CAACjoC,EAAN,CAAS2oC,QAAT,IAAqBI,UAArB,GAAkCd,KAAK,CAAChoC,EAAN,CAAS0oC,QAAT,IAAqBK,UAA5D;AACAH,MAAE,GAAGZ,KAAK,CAAChoC,EAAN,CAAS0oC,QAAT,IAAqBI,UAArB,GAAkCd,KAAK,CAACjoC,EAAN,CAAS2oC,QAAT,IAAqBK,UAA5D,CAVqC,CAYrC;;AACA/vC,MAAE,GAAGgvC,KAAK,CAACjoC,EAAN,CAAS4oC,QAAT,IAAqBG,UAArB,GAAkCd,KAAK,CAAChoC,EAAN,CAAS2oC,QAAT,IAAqBI,UAA5D;AACAF,MAAE,GAAGb,KAAK,CAAChoC,EAAN,CAAS2oC,QAAT,IAAqBG,UAArB,GAAkCd,KAAK,CAACjoC,EAAN,CAAS4oC,QAAT,IAAqBI,UAA5D;AACD,GA5UH;AAAA,MA8UEqD,aAAa,GAAG,SAAhBA,aAAgB,GAAW;AACzB,QAAIG,EAAE,GAAGvzC,EAAE,GAAGD,EAAd;AAAA,QACEyzC,EAAE,GAAGxE,KAAK,CAACjnC,IAAN,CAAW2nC,QAAX,CADP;AAAA,QAEE+D,EAAE,GAAGzE,KAAK,CAACjnC,IAAN,CAAW4nC,QAAX,CAFP;AAIA,WAAO,MAAM4D,EAAN,GAAWA,EAAX,GAAgBC,EAAhB,GAAqBC,EAArB,IAA2BD,EAAE,GAAGC,EAAhC,CAAP;AACD,GApVH;AAAA,MAsVEJ,gBAAgB,GAAG,SAAnBA,gBAAmB,CAASK,WAAT,EAAsB;AACvC,QAAIF,EAAE,GAAGxE,KAAK,CAACjnC,IAAN,CAAW2nC,QAAX,CAAT;AAAA,QACE+D,EAAE,GAAGzE,KAAK,CAACjnC,IAAN,CAAW4nC,QAAX,CADP;AAAA,QAEE9yC,CAAC,GAAG22C,EAAE,GAAGzzC,EAAL,GAAUA,EAAV,GAAe0zC,EAAE,GAAGzzC,EAAL,GAAUA,EAAzB,GAA8B0zC,WAFpC;AAAA,QAGEl9B,CAAC,GAAGg9B,EAAE,GAAGzzC,EAAL,GAAU0zC,EAAE,GAAGzzC,EAHrB;AAAA,QAIE2zC,EAAE,GAAG,CAACn9B,CAAC,GAAGhlB,IAAI,CAAC2O,IAAL,CAAUszC,EAAE,GAAGD,EAAL,IAAW32C,CAAC,IAAI22C,EAAE,GAAGC,EAAT,CAAD,GAAgBj9B,CAAC,GAAGA,CAA/B,CAAV,CAAL,KAAsDg9B,EAAE,GAAGC,EAA3D,CAJP;AAAA,QAKEG,EAAE,GAAG,CAACp9B,CAAC,GAAGhlB,IAAI,CAAC2O,IAAL,CAAUqzC,EAAE,GAAGC,EAAL,IAAW52C,CAAC,IAAI22C,EAAE,GAAGC,EAAT,CAAD,GAAgBj9B,CAAC,GAAGA,CAA/B,CAAV,CAAL,KAAsDg9B,EAAE,GAAGC,EAA3D,CALP;AAOAzE,SAAK,CAACjoC,EAAN,CAAS2oC,QAAT,IAAqBiE,EAAE,GAAG7D,UAAL,GAAkBF,EAAE,GAAGG,UAA5C;AACAf,SAAK,CAAChoC,EAAN,CAAS0oC,QAAT,IAAqBiE,EAAE,GAAG5D,UAAL,GAAkBH,EAAE,GAAGE,UAA5C;AACAd,SAAK,CAACjoC,EAAN,CAAS4oC,QAAT,IAAqBiE,EAAE,GAAG9D,UAAL,GAAkBD,EAAE,GAAGE,UAA5C;AACAf,SAAK,CAAChoC,EAAN,CAAS2oC,QAAT,IAAqBiE,EAAE,GAAG7D,UAAL,GAAkBF,EAAE,GAAGC,UAA5C;AACD,GAlWH;AAAA,MAoWE;AACA;AACA;AACA;AACA4C,6BAA2B,GAAG,SAA9BA,2BAA8B,CAASlB,EAAT,EAAaC,EAAb,EAAiB;AAC7C,QAAIxiC,SAAJ;AAAA,QACE4kC,WAAW,GAAG7E,KAAK,CAAChnC,UAAN,CAAiBwpC,EAAjB,CADhB;AAAA,QAEEsC,WAAW,GAAG9E,KAAK,CAAChnC,UAAN,CAAiBypC,EAAjB,CAFhB;AAIA/B,YAAQ,GAAG8B,EAAX;AACA7B,YAAQ,GAAG8B,EAAX;;AAEA,QAAI,CAACoC,WAAD,IAAgB,CAACC,WAArB,EAAkC;AAChC,aAAO,KAAP;AACD,KAV4C,CAY7C;;;AACA,QAAI,CAACD,WAAL,EAAkB;AAChB,UAAI,CAACE,wBAAwB,CAACpE,QAAD,CAA7B,EAAyC,OAAO,KAAP;AACzC1gC,eAAS,GAAG0gC,QAAZ;AACD,KAHD,MAGO,IAAI,CAACmE,WAAL,EAAkB;AACvB,UAAI,CAACC,wBAAwB,CAACrE,QAAD,CAA7B,EAAyC,OAAO,KAAP;AACzCzgC,eAAS,GAAGygC,QAAZ;AACD,KAHM,MAGA;AACLzgC,eAAS,GAAGzd,IAAI,CAACyO,MAAL,KAAgB,GAAhB,GAAsByvC,QAAtB,GAAiCC,QAA7C;;AACA,UAAI,CAACoE,wBAAwB,CAAC9kC,SAAD,CAA7B,EAA0C;AACxCA,iBAAS,GAAGygC,QAAQ,GAAGC,QAAX,GAAsB1gC,SAAlC;;AACA,YAAI,CAAC8kC,wBAAwB,CAAC9kC,SAAD,CAA7B,EAA0C;AACxC,iBAAO,KAAP;AACD;AACF;AACF;;AACD+kC,gBAAY,CAAC/kC,SAAD,CAAZ;AACA,WAAO,IAAP;AACD,GAtYH;AAAA,MAwYE8kC,wBAAwB,GAAG,SAA3BA,wBAA2B,CAAS3jD,CAAT,EAAY;AACrC,QAAI2+C,SAAS,GAAGD,cAAc,CAAC1+C,CAAD,CAAd,GAAoB+9C,QAApC,EAA8C;AAC5C,aAAO,IAAP;AACD;AACF,GA5YH;AAAA,MA8YE6F,YAAY,GAAG,SAAfA,YAAe,CAAS5jD,CAAT,EAAY;AACzB,QAAI0gD,YAAY,GAAGxjC,mBAAmB,CAAC0hC,KAAK,CAACttC,OAAN,CAActR,CAAd,CAAD,CAAtC;AAAA,QACE6jD,YAAY,GAAGjF,KAAK,CAAChnC,UAAN,CAAiB5X,CAAjB,CADjB;AAAA,QAEE8jD,QAAQ,GAAG1iD,IAAI,CAACwqC,KAAL,CAAWxqC,IAAI,CAACyO,MAAL,KAAgBg0C,YAA3B,CAFb;AAAA,QAGEE,cAAc,GAAGrD,YAAY,CAACoD,QAAD,CAAZ,GAAyBpD,YAAY,CAACmD,YAAD,CAHxD;AAKAjF,SAAK,CAAChnC,UAAN,CAAiB5X,CAAjB,IAAsB8jD,QAAtB;;AAEA,QAAI1iD,IAAI,CAACyO,MAAL,KAAgB0uC,cAApB,EAAoC;AAClC;AACAwE,+BAAyB;AACzBE,sBAAgB,CAACc,cAAD,CAAhB;AACD,KAJD,MAIO;AACLC,wBAAkB,CAAChkD,CAAD,EAAI,CAAC+jD,cAAL,CAAlB;AACD;AACF,GA7ZH;AAAA,MA+ZEE,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAW;AAChC,QAAIhkD,MAAM,GAAGkd,OAAO,CAAChc,CAAR,CAAUlB,MAAvB;AAAA,QACED,CADF;;AAGA,QAAI4/C,UAAU,GAAG,CAAb,GAAiB3/C,MAArB,EAA6B;AAC3BikD,WAAK,CAACpH,YAAN,CAAmB3/B,OAAnB,EAA4Bld,MAAM,GAAG,EAArC;AACA,aAAOA,MAAP;AACD;;AAED,SAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGC,MAAhB,EAAwBD,CAAC,EAAzB,EAA6B;AAC3B,UAAI,CAACmd,OAAO,CAACxG,EAAR,CAAW3W,CAAX,CAAD,IAAkB,CAACmd,OAAO,CAACvG,EAAR,CAAW5W,CAAX,CAAvB,EAAsC;AACpC,eAAOA,CAAP;AACD;AACF;AACF,GA7aH;AAAA,MA+aEugD,YAAY,GAAG,SAAfA,YAAe,CAASvgD,CAAT,EAAY;AACzB4/C,cAAU;AACVziC,WAAO,CAAChc,CAAR,CAAUnB,CAAV,IAAemd,OAAO,CAACzG,CAAR,CAAU1W,CAAV,IAAemd,OAAO,CAACxG,EAAR,CAAW3W,CAAX,IAAgBmd,OAAO,CAACvG,EAAR,CAAW5W,CAAX,IAAgBmd,OAAO,CAACU,gBAAR,CAAyB7d,CAAzB,IAA8B,CAA5F;AACD,GAlbH;AAAA,MAobEmkD,UAAU,GAAG,SAAbA,UAAa,CAAShjD,CAAT,EAAYuV,CAAZ,EAAe0D,KAAf,EAAsBgqC,MAAtB,EAA8B;AACzC,QAAIC,IAAI,GAAGjjD,IAAI,CAAC8O,GAAL,CAASkK,KAAT,CAAX;AAAA,QACEkqC,IAAI,GAAGljD,IAAI,CAAC6O,GAAL,CAASmK,KAAT,CADT;AAAA,QAEEzD,EAAE,GAAGknC,CAAC,GAAGwG,IAFX;AAAA,QAGEztC,EAAE,GAAGinC,CAAC,GAAGyG,IAHX;AAAA,QAIEC,WAAW,GAAGH,MAAM,GAAGzG,eAJzB;AAAA,QAKEyC,WAAW,GAAG6D,oBAAoB,EALpC;AAOArE,cAAU;AACVziC,WAAO,CAACxR,EAAR,CAAWy0C,WAAX,IAA0BtB,YAAY,EAAtC;AACA3hC,WAAO,CAAChc,CAAR,CAAUi/C,WAAV,IAAyBj/C,CAAzB;AACAgc,WAAO,CAACzG,CAAR,CAAU0pC,WAAV,IAAyB1pC,CAAzB;AACAyG,WAAO,CAACxG,EAAR,CAAWypC,WAAX,IAA0BzpC,EAA1B;AACAwG,WAAO,CAACvG,EAAR,CAAWwpC,WAAX,IAA0BxpC,EAA1B;AACAuG,WAAO,CAACU,gBAAR,CAAyBuiC,WAAzB,IAAwCmE,WAAxC;AACD,GAncH;AAAA,MAqcEP,kBAAkB,GAAG,SAArBA,kBAAqB,CAAS1pC,SAAT,EAAoB8pC,MAApB,EAA4B;AAC/C,QAAIhqC,KAAK,GAAGhZ,IAAI,CAACyO,MAAL,KAAgBiuC,MAAhB,GAAyB18C,IAAI,CAAC0O,EAA1C;AAAA,QACEu0C,IAAI,GAAGjjD,IAAI,CAAC8O,GAAL,CAASkK,KAAT,CADT;AAAA,QAEEkqC,IAAI,GAAGljD,IAAI,CAAC6O,GAAL,CAASmK,KAAT,CAFT;AAAA,QAGEtC,KAAK,GAAG+mC,QAAQ,CAAC/mC,KAAT,CAAe8mC,KAAK,CAACttC,OAAN,CAAcgJ,SAAd,CAAf,CAHV;AAAA,QAKE;AACAnZ,KAAC,GAAGy9C,KAAK,CAACz9C,CAAN,CAAQmZ,SAAR,IAAsBxC,KAAK,GAAG,IAAR,GAAeusC,IAN3C;AAAA,QAOE3tC,CAAC,GAAGkoC,KAAK,CAACloC,CAAN,CAAQ4D,SAAR,IAAsBxC,KAAK,GAAG,IAAR,GAAewsC,IAP3C;AASAH,cAAU,CAAChjD,CAAD,EAAIuV,CAAJ,EAAO0D,KAAP,EAAcgqC,MAAd,CAAV;AACD,GAhdH;AAAA,MAkdEI,WAAW,GAAG,SAAdA,WAAc,CAASC,EAAT,EAAa;AACzB,QAAIzkD,CAAJ,EAAO4L,EAAP,EACEzK,CADF,EACKuV,CADL;;AAGA,SAAK1W,CAAC,GAAG,CAAJ,EAAO4L,EAAE,GAAGuR,OAAO,CAAChc,CAAR,CAAUlB,MAA3B,EAAmCD,CAAC,GAAG4L,EAAvC,EAA2C5L,CAAC,EAA5C,EAAgD;AAC9C,UAAI,CAACmd,OAAO,CAACxG,EAAR,CAAW3W,CAAX,CAAD,IAAkB,CAACmd,OAAO,CAACvG,EAAR,CAAW5W,CAAX,CAAvB,EAAsC;AAEtCmB,OAAC,GAAGgc,OAAO,CAAChc,CAAR,CAAUnB,CAAV,KAAgBmd,OAAO,CAACxG,EAAR,CAAW3W,CAAX,IAAgBykD,EAApC;AACA/tC,OAAC,GAAGyG,OAAO,CAACzG,CAAR,CAAU1W,CAAV,KAAgBmd,OAAO,CAACvG,EAAR,CAAW5W,CAAX,IAAgBykD,EAApC;;AAEA,UAAItjD,CAAC,GAAGsiC,UAAU,CAAC,CAAD,CAAd,IAAqBtiC,CAAC,GAAGsiC,UAAU,CAAC,CAAD,CAAnC,IAA0C/sB,CAAC,GAAG+sB,UAAU,CAAC,CAAD,CAAxD,IAA+D/sB,CAAC,GAAG+sB,UAAU,CAAC,CAAD,CAAjF,EAAsF;AACpF8c,oBAAY,CAACvgD,CAAD,CAAZ;AACD;AACF;AACF,GAheH;AAAA,MAkeE0kD,wBAAwB,GAAG,SAA3BA,wBAA2B,CAASD,EAAT,EAAa;AACtC,QAAI,CAACvnC,mBAAL,EAA0B;AACxB;AACD;;AAED,SAAK,IAAIld,CAAC,GAAG,CAAR,EAAWgsC,CAAC,GAAGsS,MAAM,CAAC0B,gBAAP,EAApB,EAA+ChgD,CAAC,GAAGgsC,CAAnD,EAAsDhsC,CAAC,EAAvD,EAA2D;AACzD2kD,kCAA4B,CAAC3kD,CAAD,EAAIykD,EAAJ,CAA5B;AACD;AACF,GA1eH;AAAA,MA4eEE,4BAA4B,GAAG,SAA/BA,4BAA+B,CAASrqC,SAAT,EAAoBmqC,EAApB,EAAwB;AAErD,QAAI7F,KAAK,CAAChnC,UAAN,CAAiB0C,SAAjB,MAAgC,CAApC,EAAuC;AACrC;AACD,KAJoD,CAMrD;AACA;AACA;;;AAEA,QAAIlZ,IAAI,CAACyO,MAAL,KAAgB40C,EAAE,GAAGzG,2BAAzB,EAAsD;AACpD;AACD,KAZoD,CAcrD;AACA;;;AAEA,QAAI4G,EAAE,GAAGxjD,IAAI,CAACyO,MAAL,EAAT;AAAA,QACEg1C,EAAE,GAAGzjD,IAAI,CAACyO,MAAL,EADP;AAAA,QAEE6wC,YAFF;AAAA,QAGEoE,YAHF;AAAA,QAIE9kD,CAJF;AAAA,QAKE+kD,CAAC,GAAGnG,KAAK,CAAChnC,UAAN,CAAiB0C,SAAjB,CALN;AAAA,QAME0qC,QAAQ,GAAG,IAAID,CANjB;;AAQA,SAAK/kD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+kD,CAAhB,EAAmB/kD,CAAC,EAApB,EAAwB;AACtB,UAAIA,CAAC,GAAGglD,QAAJ,IAAgBJ,EAAhB,IAAsBA,EAAE,GAAG,CAAC5kD,CAAC,GAAG,CAAL,IAAUglD,QAArC,IAAiDzG,cAAc,GAAGsG,EAAtE,EAA0E;AACxEnE,oBAAY,GAAGxjC,mBAAmB,CAAC0hC,KAAK,CAACttC,OAAN,CAAcgJ,SAAd,CAAD,CAAlC;AACAwqC,oBAAY,GAAGpE,YAAY,CAACqE,CAAD,CAAZ,GAAkBrE,YAAY,CAAC1gD,CAAD,CAA7C;AACA4+C,aAAK,CAAChnC,UAAN,CAAiB0C,SAAjB,IAA8Bta,CAA9B;AACAgkD,0BAAkB,CAAC1pC,SAAD,EAAYwqC,YAAZ,CAAlB;AACA;AACD;AACF;AACF,GA9gBH;AAAA,MAghBEG,cAAc,GAAG,SAAjBA,cAAiB,CAAS1+B,CAAT,EAAY;AAC3BA,KAAC,GAAGA,CAAC,GAAGu3B,MAAR;AACA,QAAIv3B,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAGu3B,MAAjB,EACE,OAAO18C,IAAI,CAAC2M,GAAL,CAAU+vC,MAAD,GAAW18C,IAAI,CAAC2M,GAAL,CAASwY,CAAT,CAApB,CAAP;AACF,WAAOA,CAAP;AACD,GArhBH;AAAA,MAuhBE;AACA2+B,wBAAsB,GAAG,SAAzBA,sBAAyB,GAAW;AAClC,QAAI/jD,CAAC,GAAGsiC,UAAU,CAAC,CAAD,CAAlB;AAAA,QACE/sB,CAAC,GAAG+sB,UAAU,CAAC,CAAD,CADhB;AAAA,QAEEpV,CAAC,GAAGoV,UAAU,CAAC,CAAD,CAAV,GAAgBtiC,CAFtB;AAAA,QAGEgkD,CAAC,GAAG1hB,UAAU,CAAC,CAAD,CAAV,GAAgB/sB,CAHtB;AAAA,QAKE0D,KAAK,GAAG6qC,cAAc,CAAC5nC,WAAW,CAACM,gBAAb,CALxB;AAAA,QAMEynC,MAAM,GAAG/nC,WAAW,CAACK,aANvB;AAAA,QAOE2nC,OAPF;AAAA,QAQEj3B,CARF;AAAA,QAQKk3B,CARL;AAAA,QAQQrlD,MARR;AAAA,QAQgBs7C,EARhB;AAAA,QAQoBC,EARpB;AAAA,QAQwBuJ,CARxB;AAAA,QAQ2B52B,CAR3B;AAAA,QAQ8BnuB,CAR9B;AAAA,QAUEulD,SAAS,GAAG,SAAZA,SAAY,GAAW;AACrB,aAAO,CAACloC,WAAW,CAACE,aAAZ,GAA4BF,WAAW,CAACG,SAAxC,GAAoDuhC,kBAAkB,EAAvE,IAA6EpB,eAApF;AACD,KAZH;;AAcA,QAAIvjC,KAAK,IAAI,CAAb,EAAgB;AACdirC,aAAO,GAAGF,CAAC,IAAIC,MAAM,GAAG,CAAb,CAAX;;AACA,WAAKplD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIolD,MAAjB,EAAyBplD,CAAC,EAA1B,EAA8B;AAC5BmkD,kBAAU,CAAChjD,CAAD,EAAIuV,CAAC,GAAG2uC,OAAO,GAAGrlD,CAAlB,EAAqBoa,KAArB,EAA4BmrC,SAAS,EAArC,CAAV;AACD;AACF,KALD,MAKO,IAAInrC,KAAK,CAACorC,OAAN,CAAc,CAAd,KAAoB,CAACpkD,IAAI,CAAC0O,EAAL,GAAU,CAAX,EAAc01C,OAAd,CAAsB,CAAtB,CAAxB,EAAkD;AACvDH,aAAO,GAAGh3B,CAAC,IAAI+2B,MAAM,GAAG,CAAb,CAAX;;AACA,WAAKplD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIolD,MAAjB,EAAyBplD,CAAC,EAA1B,EAA8B;AAC5BmkD,kBAAU,CAAChjD,CAAC,GAAGkkD,OAAO,GAAGrlD,CAAf,EAAkB0W,CAAlB,EAAqB0D,KAArB,EAA4BmrC,SAAS,EAArC,CAAV;AACD;AACF,KALM,MAKA,IAAInrC,KAAK,CAACorC,OAAN,CAAc,CAAd,KAAqBpkD,IAAI,CAAC0O,EAAN,CAAU01C,OAAV,CAAkB,CAAlB,CAAxB,EAA8C;AACnDH,aAAO,GAAGF,CAAC,IAAIC,MAAM,GAAG,CAAb,CAAX;;AACA,WAAKplD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIolD,MAAjB,EAAyBplD,CAAC,EAA1B,EAA8B;AAC5BmkD,kBAAU,CAAChjD,CAAC,GAAGktB,CAAL,EAAQ3X,CAAC,GAAG2uC,OAAO,GAAGrlD,CAAtB,EAAyBoa,KAAzB,EAAgCmrC,SAAS,EAAzC,CAAV;AACD;AACF,KALM,MAKA,IAAInrC,KAAK,CAACorC,OAAN,CAAc,CAAd,KAAoB,CAACpkD,IAAI,CAAC0O,EAAL,GAAU,CAAV,GAAc,CAAf,EAAkB01C,OAAlB,CAA0B,CAA1B,CAAxB,EAAsD;AAC3DH,aAAO,GAAGh3B,CAAC,IAAI+2B,MAAM,GAAG,CAAb,CAAX;;AACA,WAAKplD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIolD,MAAjB,EAAyBplD,CAAC,EAA1B,EAA8B;AAC5BmkD,kBAAU,CAAChjD,CAAC,GAAGkkD,OAAO,GAAGrlD,CAAf,EAAkB0W,CAAC,GAAGyuC,CAAtB,EAAyB/qC,KAAzB,EAAgCmrC,SAAS,EAAzC,CAAV;AACD;AACF,KALM,MAKA;AACL;AACA;AACAn3B,OAAC,GAAGhtB,IAAI,CAAC2M,GAAL,CAAS3M,IAAI,CAAC6O,GAAL,CAASmK,KAAT,CAAT,CAAJ;AACAkrC,OAAC,GAAGlkD,IAAI,CAAC2M,GAAL,CAAS3M,IAAI,CAAC8O,GAAL,CAASkK,KAAT,CAAT,CAAJ;AACAna,YAAM,GAAGmuB,CAAC,GAAG+2B,CAAJ,GAAQG,CAAC,GAAGj3B,CAAZ,GAAgB82B,CAAC,GAAGG,CAApB,GAAwBj3B,CAAC,GAAGD,CAArC;AACAi3B,aAAO,GAAGplD,MAAM,GAAGmlD,MAAnB;AACA7J,QAAE,GAAG8J,OAAO,GAAGj3B,CAAf;AACAotB,QAAE,GAAG6J,OAAO,GAAGC,CAAf;AACAP,OAAC,GAAG3jD,IAAI,CAACwqC,KAAL,CAAWvd,CAAC,GAAGktB,EAAf,CAAJ;AACAptB,OAAC,GAAG/sB,IAAI,CAACwqC,KAAL,CAAWuZ,CAAC,GAAG3J,EAAf,CAAJ,CAVK,CAYL;AACA;;AACA,UAAIphC,KAAK,IAAI,CAAT,IAAcA,KAAK,GAAG,MAAMhZ,IAAI,CAAC0O,EAArC,EAAyC;AACvC,aAAK9P,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+kD,CAAjB,EAAoB/kD,CAAC,EAArB;AACEmkD,oBAAU,CAAChjD,CAAC,GAAGo6C,EAAE,GAAGv7C,CAAV,EAAa0W,CAAb,EAAgB0D,KAAhB,EAAuBmrC,SAAS,EAAhC,CAAV;AADF;;AAEA,aAAKvlD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAImuB,CAAjB,EAAoBnuB,CAAC,EAArB;AACEmkD,oBAAU,CAAChjD,CAAD,EAAIuV,CAAC,GAAGyuC,CAAJ,GAAQ3J,EAAE,GAAGx7C,CAAjB,EAAoBoa,KAApB,EAA2BmrC,SAAS,EAApC,CAAV;AADF;AAED,OALD,MAKO,IAAInrC,KAAK,IAAIhZ,IAAI,CAAC0O,EAAL,GAAU,CAAV,GAAc,CAA3B,EAA8B;AACnC,aAAK9P,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+kD,CAAjB,EAAoB/kD,CAAC,EAArB;AACEmkD,oBAAU,CAAChjD,CAAC,GAAGo6C,EAAE,GAAGv7C,CAAV,EAAa0W,CAAC,GAAGyuC,CAAjB,EAAoB/qC,KAApB,EAA2BmrC,SAAS,EAApC,CAAV;AADF;;AAEA,aAAKvlD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAImuB,CAAjB,EAAoBnuB,CAAC,EAArB;AACEmkD,oBAAU,CAAChjD,CAAD,EAAIuV,CAAC,GAAG8kC,EAAE,GAAGx7C,CAAb,EAAgBoa,KAAhB,EAAuBmrC,SAAS,EAAhC,CAAV;AADF;AAED,OALM,MAKA,IAAInrC,KAAK,GAAGhZ,IAAI,CAAC0O,EAAb,IAAmBsK,KAAK,IAAI,MAAMhZ,IAAI,CAAC0O,EAA3C,EAA+C;AACpD,aAAK9P,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+kD,CAAjB,EAAoB/kD,CAAC,EAArB;AACEmkD,oBAAU,CAAChjD,CAAC,GAAGktB,CAAJ,GAAQktB,EAAE,GAAGv7C,CAAd,EAAiB0W,CAAjB,EAAoB0D,KAApB,EAA2BmrC,SAAS,EAApC,CAAV;AADF;;AAEA,aAAKvlD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAImuB,CAAjB,EAAoBnuB,CAAC,EAArB;AACEmkD,oBAAU,CAAChjD,CAAC,GAAGktB,CAAL,EAAQ3X,CAAC,GAAGyuC,CAAJ,GAAQ3J,EAAE,GAAGx7C,CAArB,EAAwBoa,KAAxB,EAA+BmrC,SAAS,EAAxC,CAAV;AADF;AAED,OALM,MAKA,IAAInrC,KAAK,IAAIhZ,IAAI,CAAC0O,EAAd,IAAoBsK,KAAK,GAAGhZ,IAAI,CAAC0O,EAAL,GAAU,CAAV,GAAc,CAA9C,EAAiD;AACtD,aAAK9P,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+kD,CAAjB,EAAoB/kD,CAAC,EAArB;AACEmkD,oBAAU,CAAChjD,CAAC,GAAGktB,CAAJ,GAAQktB,EAAE,GAAGv7C,CAAd,EAAiB0W,CAAC,GAAGyuC,CAArB,EAAwB/qC,KAAxB,EAA+BmrC,SAAS,EAAxC,CAAV;AADF;;AAEA,aAAKvlD,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAImuB,CAAjB,EAAoBnuB,CAAC,EAArB;AACEmkD,oBAAU,CAAChjD,CAAC,GAAGktB,CAAL,EAAQ3X,CAAC,GAAG8kC,EAAE,GAAGx7C,CAAjB,EAAoBoa,KAApB,EAA2BmrC,SAAS,EAApC,CAAV;AADF;AAED;AACF;AACF,GA/lBH,CAF4C,CAomB5C;;;AACA/mC,KAAG,GAAG;AACJlQ,cAAU,EAAE,oBAASm3C,UAAT,EAAqB;AAC/B7G,WAAK,GAAG6G,UAAU,CAAC7G,KAAnB;AACAC,cAAQ,GAAG4G,UAAU,CAAC5G,QAAtB;AACAG,sBAAgB;AAChBE,wBAAkB,CAAC90B,UAAU,CAACjN,OAAZ,CAAlB;AACA0iC,oBAAc,CAACz1B,UAAU,CAACjN,OAAZ,CAAd;AACD,KAPG;AASJuoC,sCAAkC,EAAE,4CAAS1E,YAAT,EAAuByD,EAAvB,EAA2Bx1C,IAA3B,EAAiC;AACnE0vC,eAAS,GAAG1vC,IAAZ;AACAu1C,iBAAW,CAACC,EAAD,CAAX;AACA3E,gCAA0B;AAC1BiB,qCAA+B,CAACC,YAAD,CAA/B;AACA0D,8BAAwB,CAACD,EAAD,CAAxB,CALmE,CAMnE;;AAEA,UAAIpnC,WAAW,CAACC,EAAZ,IAAkBrO,IAAI,GAAGoO,WAAW,CAACI,eAAnB,GAAqCgnC,EAA3D,EAA+D;AAC7DS,8BAAsB;AACvB;AACF,KApBG;AAsBJS,qBAAiB,EAAE,6BAAW;AAC5BtoC,iBAAW,CAACC,EAAZ,GAAiB,IAAjB;AACD,KAxBG;AA0BJsoC,sBAAkB,EAAE,8BAAW;AAC7BvoC,iBAAW,CAACC,EAAZ,GAAiB,KAAjB;AACD,KA5BG;AA8BJuoC,uBAAmB,EAAE,6BAASzrC,KAAT,EAAgB;AACnCiD,iBAAW,CAACM,gBAAZ,GAA+BvD,KAA/B;AACD,KAhCG;AAkCJ0rC,2BAAuB,EAAE,iCAASC,IAAT,EAAe;AACtC1oC,iBAAW,CAACG,SAAZ,GAAwBuoC,IAAxB;AACD,KApCG;AAsCJC,wBAAoB,EAAE,8BAASr7B,MAAT,EAAiB;AACrCtN,iBAAW,CAACI,eAAZ,GAA8BkN,MAA9B;AACD,KAxCG;AA0CJs7B,wBAAoB,EAAE,8BAASC,MAAT,EAAiB;AACrC7oC,iBAAW,CAACK,aAAZ,GAA4BwoC,MAA5B;AACD,KA5CG;AA8CJC,cAAU,EAAE,sBAAW;AACrB,aAAOhpC,OAAP;AACD,KAhDG;AAkDJipC,iBAAa,EAAE,yBAAW;AACxB,aAAOxG,UAAP;AACD,KApDG;AAsDJ;AACA;AACA;AACA;AACAyG,kBAAc,EAAG,YAAW;AAC1B,UAAIC,WAAW,GAAG,EAAlB;AAAA,UACEC,kBAAkB,GAAG,EADvB;;AAGA,eAASC,cAAT,CAAwBrpC,OAAxB,EAAiCnd,CAAjC,EAAoC;AAClC,YAAI2W,EAAE,GAAGwG,OAAO,CAACxG,EAAR,CAAW3W,CAAX,CAAT;AAAA,YACE4W,EAAE,GAAGuG,OAAO,CAACvG,EAAR,CAAW5W,CAAX,CADP;AAAA,YAEE;AACAoa,aAAK,GAAG,CAAC,GAAD,GAAOhZ,IAAI,CAAC65C,KAAL,CAAWrkC,EAAX,EAAeD,EAAf,CAAP,GAA4BvV,IAAI,CAAC0O,EAH3C;AAKA,eAAO;AACLnE,YAAE,EAAEwR,OAAO,CAACxR,EAAR,CAAW3L,CAAX,CADC;AAELmB,WAAC,EAAEgc,OAAO,CAAChc,CAAR,CAAUnB,CAAV,CAFE;AAGL0W,WAAC,EAAEyG,OAAO,CAACzG,CAAR,CAAU1W,CAAV,CAHE;AAIL2W,YAAE,EAAEA,EAJC;AAKLC,YAAE,EAAEA,EALC;AAMLwD,eAAK,EAAEA,KANF;AAOLyD,0BAAgB,EAAEV,OAAO,CAACU,gBAAR,CAAyB7d,CAAzB;AAPb,SAAP;AASD;;AAED,aAAO,YAAW;AAChB;AACA;AACA,YAAImd,OAAO,GAAG,KAAKgpC,UAAL,EAAd;AAAA,YACEh4B,CAAC,GAAG,CADN;AAAA,YAEEnuB,CAFF;AAAA,YAGEc,GAHF;AAAA,YAIE2lD,UAJF;AAMAH,mBAAW,CAACrmD,MAAZ,GAAqB,KAAKmmD,aAAL,EAArB;AACAG,0BAAkB,CAACtmD,MAAnB,GAA4Bkd,OAAO,CAAChc,CAAR,CAAUlB,MAAtC;;AAEA,aAAKD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGqc,OAAO,CAAChc,CAAR,CAAUlB,MAA5B,EAAoCD,CAAC,GAAGc,GAAxC,EAA6Cd,CAAC,EAA9C,EAAkD;AAChD,cAAImd,OAAO,CAACxG,EAAR,CAAW3W,CAAX,KAAiBmd,OAAO,CAACvG,EAAR,CAAW5W,CAAX,CAArB,EAAoC;AAClCymD,sBAAU,GAAGF,kBAAkB,CAACvmD,CAAD,CAA/B,CADkC,CAGlC;AACA;AACA;AACA;AACA;;AACA,gBAAIymD,UAAU,IAAIA,UAAU,CAAC96C,EAAX,KAAkBwR,OAAO,CAACxR,EAAR,CAAW3L,CAAX,CAApC,EAAmD;AACjDymD,wBAAU,CAACtlD,CAAX,GAAegc,OAAO,CAAChc,CAAR,CAAUnB,CAAV,CAAf;AACAymD,wBAAU,CAAC/vC,CAAX,GAAeyG,OAAO,CAACzG,CAAR,CAAU1W,CAAV,CAAf;AACD,aAHD,MAGO;AACLymD,wBAAU,GAAGD,cAAc,CAACrpC,OAAD,EAAUnd,CAAV,CAA3B;AACAumD,gCAAkB,CAACvmD,CAAD,CAAlB,GAAwBymD,UAAxB;AACD;;AACDH,uBAAW,CAACn4B,CAAC,EAAF,CAAX,GAAmBs4B,UAAnB;AACD,WAhBD,MAgBO;AACL;AACAF,8BAAkB,CAACvmD,CAAD,CAAlB,GAAwB,IAAxB;AACD;AACF;;AAED,eAAOsmD,WAAP;AACD,OApCD;AAqCD,KA1DgB,EA1Db;AAsHJI,0BAAsB,EAAE,kCAAW;AACjC,aAAOxpC,mBAAP;AACD,KAxHG;AA0HJypC,uCAAmC,EAAE,+CAAW;AAC9C,aAAOpI,cAAP;AACD,KA5HG;AA8HJqI,kBAAc,EAAE,0BAAW;AACzB,UAAI,CAACvpC,WAAL,EAAkB,OAAOne,SAAP;AAClB,aAAOme,WAAP;AACD,KAjIG;AAmIJwpC,YAAQ,EAAE,oBAAW;AACnB,aAAO,CACL,IAAInK,mBAAJ,CAAwBv/B,OAAxB,EAAiC;AAC/By/B,2BAAmB,EAAE;AADU,OAAjC,CADK,EAGD;AACF77C,aAAK,EAAE,iBAAW;AAChB,iBAAO;AACL6+C,sBAAU,EAAEA;AADP,WAAP;AAGD,SALC;AAMF/C,eAAO,EAAE,iBAAS3V,KAAT,EAAgB;AACvB0Y,oBAAU,GAAG1Y,KAAK,CAAC0Y,UAAnB;AACD;AARC,OAHC,CAAP;AAcD;AAlJG,GAAN;AAqJArqB,UAAQ,CAACK,OAAT,CAAiBpX,GAAjB;AAEA,SAAOA,GAAP;AACD,C,CAED;;;AACA6/B,eAAe,CAACJ,QAAhB,GAA2BA,QAA3B;AACAI,eAAe,CAACH,WAAhB,GAA8BA,WAA9B;AAEeG,oEAAf,E;;AC3zBA;AACA;AACA;AACA,IAAIJ,gCAAQ,GAAGI,gBAAe,CAACJ,QAA/B;AAAA,IACEC,mCAAW,GAAGG,gBAAe,CAACH,WADhC;AAAA,IAGE;AACA;AACA4I,sBAAsB,GAAG,CAL3B;AAAA,IAOE;AACA;AACAC,sBAAsB,GAAG,wFACzB,qFADyB,GAEzB,qFAFyB,GAGzB,uDAZF;;AAcA,SAASC,sBAAT,CAAgCn1B,SAAhC,EAA2CyE,sBAA3C,EAAmE;AACjE;AACA4b,uBAAoB,CAACxxC,IAArB,CAA0B,IAA1B,EAAgC,cAAhC,EAAgDmxB,SAAhD,EAA2DyE,sBAA3D;AAEA,OAAKkP,QAAL,CACGt4B,QADH,CACY,0BADZ,EAEG1B,GAFH,CAEO,QAFP,EAEiB,KAAKqmB,SAAL,CAAejD,MAFhC;AAIA,OAAKF,UAAL,GAAkB,KAAKmD,SAAL,CAAenD,UAAjC;AACA,OAAKD,UAAL,GAAkB,KAAKoD,SAAL,CAAepD,UAAjC,CATiE,CAWjE;;AACA,OAAKw4B,oBAAL,GAA4B,EAA5B;AAEA,OAAKC,gBAAL;AACA,OAAKC,eAAL;AACA,OAAKC,qBAAL,GAA6BxiD,CAAC,CAAC,OAAD,CAAD,CAAWiH,QAAX,CAAoB,KAAK25B,QAAzB,CAA7B;AACD;;AAEDgM,OAAO,CAACwV,sBAAD,EAAyB9U,qBAAzB,CAAP;;AAEA8U,sBAAsB,CAACxmD,SAAvB,CAAiCs5B,mBAAjC,GAAuD,YAAW;AAChEktB,wBAAsB,CAACpV,UAAvB,CAAkCS,oBAAlC,CAAuD3xC,IAAvD,CAA4D,IAA5D;;AACA,OAAK81B,MAAL,CAAY6wB,gBAAZ,CAA6B,KAAKA,gBAAL,CAAsBzkB,IAAtB,CAA2B,IAA3B,CAA7B;;AACA,MAAI,KAAK/Q,SAAL,CAAelD,gBAAnB,EAAqC;AACnC,SAAKy4B,qBAAL,CAA2B9hC,KAA3B;AACD;AACF,CAND;;AAQA0hC,sBAAsB,CAACxmD,SAAvB,CAAiC0mD,gBAAjC,GAAoD,YAAW;AAC7D,MAAIx8C,QAAQ,GAAG,CAACuzC,gCAAQ,GAAG,KAAKvvB,UAAjB,KAAgC,KAAKD,UAAL,GAAkB,KAAKC,UAAvD,IAAqE,GAApF;AACA,MAAItjB,KAAK,GAAG,CAAC8yC,mCAAW,GAAGD,gCAAf,KAA4B,KAAKxvB,UAAL,GAAkB,KAAKC,UAAnD,IAAiE,GAA7E;AACA9pB,GAAC,CAAC,OAAD,CAAD,CACGsI,QADH,CACY,iBADZ,EAEGmS,IAFH,CAEQ,KAFR,EAEe0nC,sBAFf,EAGGv7C,GAHH,CAGO,MAHP,EAGed,QAAQ,GAAG,GAH1B,EAIGc,GAJH,CAIO,OAJP,EAIgBJ,KAAK,GAAG,GAJxB,EAKGS,QALH,CAKY,KAAK25B,QALjB;AAMD,CATD;;AAWAwhB,sBAAsB,CAACxmD,SAAvB,CAAiC2mD,eAAjC,GAAmD,YAAW;AAC5D,MAAI,CAAC,KAAKt1B,SAAL,CAAehQ,KAAhB,IAAyB,KAAKgQ,SAAL,CAAehQ,KAAf,GAAuB,CAApD,EAAuD;AAEvD,MAAIylC,mBAAmB,GAAG1iD,CAAC,CAAC,OAAD,CAAD,CAAWiH,QAAX,CAAoB,KAAK25B,QAAzB,CAA1B;AACA,MAAI6f,OAAO,GAAG,MAAM,KAAKxzB,SAAL,CAAehQ,KAAnC;;AACA,OAAK,IAAI7hB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK6xB,SAAL,CAAehQ,KAAnC,EAA0C7hB,CAAC,EAA3C,EAA+C;AAC7C4E,KAAC,CAAC,yBAAD,CAAD,CAA6B4G,GAA7B,CAAiC,MAAjC,EAA0CxL,CAAC,GAAGqlD,OAAL,GAAgB,GAAzD,EAA8Dx5C,QAA9D,CAAuEy7C,mBAAvE;AACD;AACF,CARD;;AAUAN,sBAAsB,CAACxmD,SAAvB,CAAiC6mD,gBAAjC,GAAoD,UAAS7pC,SAAT,EAAoB;AACtE,MAAIA,SAAS,GAAG,KAAKiR,UAAjB,IAA+BjR,SAAS,GAAG,KAAKkR,UAApD,EAAgE;AAEhE,MAAIhkB,QAAQ,GAAG,CAAC8S,SAAS,GAAG,KAAKkR,UAAlB,KAAiC,KAAKD,UAAL,GAAkB,KAAKC,UAAxD,IAAsE,GAArF,CAHsE,CAItE;;AACA,MAAI,CAAC,KAAK64B,gBAAL,CAAsB78C,QAAtB,CAAL,EAAsC;AACpC,SAAK88C,aAAL,CAAmB98C,QAAnB;AACD;AACF,CARD;;AAUAs8C,sBAAsB,CAACxmD,SAAvB,CAAiC+mD,gBAAjC,GAAoD,UAAS78C,QAAT,EAAmB;AACrE,SAAO,CAAC,CAAC,KAAKu8C,oBAAL,CAA0Bv8C,QAAQ,CAAC86C,OAAT,CAAiBsB,sBAAjB,CAA1B,CAAT;AACD,CAFD;;AAIAE,sBAAsB,CAACxmD,SAAvB,CAAiCgnD,aAAjC,GAAiD,UAAS98C,QAAT,EAAmB;AAClE9F,GAAC,CAAC,2BAAD,CAAD,CAA+B4G,GAA/B,CAAmC,MAAnC,EAA2Cd,QAAQ,GAAG,GAAtD,EAA2DmB,QAA3D,CAAoE,KAAKu7C,qBAAzE;AACA,OAAKH,oBAAL,CAA0Bv8C,QAAQ,CAAC86C,OAAT,CAAiBsB,sBAAjB,CAA1B,IAAsE,IAAtE;AACD,CAHD;;AAKeE,kFAAf,E;;ACvFA;AACA,IAAIS,SAAS,GAAG,EAAhB,C,CAAoB;AAEpB;;AACA,IAAIC,QAAQ,GAAG;AACbC,QAAM,EAAE,QADK;AAEbC,SAAO,EAAE,IAFI;AAGbra,UAAQ,EAAE,GAHG;AAIbsa,UAAQ,EAAE;AAJG,CAAf;AAOA,IAAIC,UAAU,GAAG,EAAjB;AACA,IAAIC,OAAO,GAAG,EAAd;;AAEA,SAASC,SAAT,CAAmB78C,IAAnB,EAAyB;AACvB,MAAI88C,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAb;AACA,MAAIC,GAAG,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAV;AACA,MAAI59C,GAAG,GAAGg9C,SAAS,GAAG,GAAtB;AAEAQ,QAAM,CAAC78C,KAAP,GAAeX,GAAf;AACAw9C,QAAM,CAAC58C,MAAP,GAAgBZ,GAAhB;AAEA29C,KAAG,CAACj9C,IAAJ,GAAWA,IAAX;AACAi9C,KAAG,CAACE,QAAJ,CAAa,GAAb,EAAkB,CAAlB,EAAqB79C,GAArB;AACA,SAAOw9C,MAAM,CAACM,SAAP,EAAP;AACD;;AAED,SAAStb,YAAT,CAAsB9hC,IAAtB,EAA4B;AAC1B1M,QAAM,CAAC6xC,aAAP,CAAqByX,OAAO,CAAC58C,IAAD,CAAP,CAAcq9C,eAAnC;AACA,SAAOT,OAAO,CAAC58C,IAAD,CAAd;AACD;;AAED,SAASs9C,WAAT,CAAqBt9C,IAArB,EAA2BisC,SAA3B,EAAsCwQ,OAAtC,EAA+C;AAC7CG,SAAO,CAAC58C,IAAD,CAAP,CAAcu9C,MAAd,GAAuBV,SAAS,CAAC78C,IAAD,CAAhC;AAEA,SAAO,YAAW;AAChB,QAAI68C,SAAS,CAAC78C,IAAD,CAAT,KAAoB48C,OAAO,CAAC58C,IAAD,CAAP,CAAcu9C,MAAtC,EAA8C;AAC5CX,aAAO,CAAC58C,IAAD,CAAP,CAAcw9C,eAAd,CAA8BxsC,OAA9B,CAAsC,UAASysC,EAAT,EAAa;AACjDA,UAAE;AACH,OAFD;AAGAd,gBAAU,CAAC38C,IAAD,CAAV,GAAmB,IAAnB;AACA8hC,kBAAY,CAAC9hC,IAAD,CAAZ;AACA;AACD;;AAED,QAAI+6B,IAAI,CAACC,GAAL,KAAaiR,SAAb,GAAyBwQ,OAA7B,EAAsC;AACpC3a,kBAAY,CAAC9hC,IAAD,CAAZ;AACD;AACF,GAbD;AAcD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Ce,SAAS09C,gBAAT,CAA0BC,QAA1B,EAAoC;AACjD,MAAIv6C,OAAO,GAAG,EAAd,CADiD,CAGjD;;AACAhO,QAAM,CAAC2b,IAAP,CAAY4sC,QAAZ,EAAsB9yB,MAAtB,CAA6Bz1B,MAAM,CAAC2b,IAAP,CAAYwrC,QAAZ,CAA7B,EAAoDvrC,OAApD,CAA4D,UAASC,GAAT,EAAc;AACxE7N,WAAO,CAAC6N,GAAD,CAAP,GAAe0sC,QAAQ,CAAC1sC,GAAD,CAAR,IAAiB,IAAjB,GAAwB0sC,QAAQ,CAAC1sC,GAAD,CAAhC,GAAwCsrC,QAAQ,CAACtrC,GAAD,CAA/D;AACD,GAFD;AAIA,MAAI2sC,aAAa,GAAGx6C,OAAO,CAACpD,IAAR,CAAakD,KAAb,CAAmB,GAAnB,CAApB;;AACA,MAAI06C,aAAa,CAAC9oD,MAAd,GAAuB,CAA3B,EAA8B;AAC5B,QAAI8D,MAAM,GAAG,KAAb;AACAglD,iBAAa,CAAC5sC,OAAd,CAAsB,UAAS6sC,QAAT,EAAmB;AACvCz6C,aAAO,CAACpD,IAAR,GAAe69C,QAAQ,CAAChpC,IAAT,EAAf;;AACA,UAAI6oC,gBAAgB,CAACt6C,OAAD,CAApB,EAA+B;AAC7B;AACAxK,cAAM,GAAG,IAAT;AACD;AACF,KAND;AAOA,WAAOA,MAAP;AACD,GAnBgD,CAqBjD;;;AACA,MAAIoH,IAAI,GAAGoD,OAAO,CAACo5C,MAAR,GAAiB,GAAjB,GAAuBF,SAAvB,GAAmC,KAAnC,GAA2Cl5C,OAAO,CAACpD,IAA9D;;AAEA,MAAI28C,UAAU,CAAC38C,IAAD,CAAd,EAAsB;AACpB;AACA,WAAO,KAAP;AACD;;AAED,MAAI,CAAC48C,OAAO,CAAC58C,IAAD,CAAZ,EAAoB;AAClB48C,WAAO,CAAC58C,IAAD,CAAP,GAAgB;AACdu9C,YAAM,EAAE,IADM;AAEdF,qBAAe,EAAE,IAFH;AAGdG,qBAAe,EAAE;AAHH,KAAhB;AAKD;;AAED,MAAIp6C,OAAO,CAACs5C,QAAZ,EAAsB;AACpBE,WAAO,CAAC58C,IAAD,CAAP,CAAcw9C,eAAd,CAA8B/lD,IAA9B,CAAmC2L,OAAO,CAACs5C,QAA3C;AACD;;AAED,MAAI,CAACE,OAAO,CAAC58C,IAAD,CAAP,CAAcq9C,eAAnB,EAAoC;AAClCT,WAAO,CAAC58C,IAAD,CAAP,CAAcq9C,eAAd,GAAgC/pD,MAAM,CAAC2xC,WAAP,CAC9BqY,WAAW,CAACt9C,IAAD,EAAO+6B,IAAI,CAACC,GAAL,EAAP,EAAmB53B,OAAO,CAACq5C,OAA3B,CADmB,EAE9Br5C,OAAO,CAACg/B,QAFsB,CAAhC;AAID;;AAED,SAAO,IAAP;AACD;AAAA,C;;AC/IA;AAED,IAAI0b,UAAU,GAAG,CAAjB;AAEe,SAASC,iBAAT,CAA2B5kD,IAA3B,EAAiC;AAE9C,MAAIqH,EAAE,GAAGrH,IAAI,CAACqH,EAAd;AACA,MAAIoW,KAAK,GAAGzd,IAAI,CAACyd,KAAjB;AACA,MAAIhE,KAAK,GAAGzZ,IAAI,CAACiC,IAAjB;AAEA,MAAI4iD,cAAJ;AACA,MAAI7V,MAAJ;AACA,MAAI8V,OAAJ;AACA,MAAIC,OAAJ;AACA,MAAIC,MAAJ;AAEA,MAAIC,SAAJ;AACA,MAAIC,eAAJ;AAEA,MAAIC,OAAJ;AACA,MAAIC,SAAS,GAAG,CAAhB;AACA,MAAIC,KAAJ;AACA,MAAIvB,GAAJ;AACA,MAAIwB,kBAAJ,EAAwBC,mBAAxB;AACA,MAAIC,mBAAJ,EAAyBC,oBAAzB;AAEA,MAAIvrC,GAAJ;;AAEA,WAASwrC,YAAT,CAAsB5+C,KAAtB,EAA6B;AAC3B,QAAI6+C,mBAAJ;AAEAL,sBAAkB,GAAGx+C,KAArB;AACAy+C,uBAAmB,GAAGR,OAAO,CAACh+C,MAAR,EAAtB;AAEAo+C,WAAO,CAACr+C,KAAR,CAAcw+C,kBAAd;AACAH,WAAO,CAACp+C,MAAR,CAAew+C,mBAAf,EAP2B,CAS3B;;AACAC,uBAAmB,GAAGb,UAAU,GAAGW,kBAAnC;AACAG,wBAAoB,GAAGd,UAAU,GAAGY,mBAApC;AAEAJ,WAAO,CAACpqC,IAAR,CAAa,OAAb,EAAsByqC,mBAAtB;AACAL,WAAO,CAACpqC,IAAR,CAAa,QAAb,EAAuB0qC,oBAAvB,EAd2B,CAgB3B;;AACAE,uBAAmB,GAAGhB,UAAU,GAAGzd,QAAQ,CAAC6d,OAAO,CAAC79C,GAAR,CAAY,WAAZ,CAAD,EAA2B,EAA3B,CAA3C;AAEA48C,OAAG,CAACj9C,IAAJ,GAAW,CACTk+C,OAAO,CAAC79C,GAAR,CAAY,YAAZ,CADS,EAET69C,OAAO,CAAC79C,GAAR,CAAY,cAAZ,CAFS,EAGT69C,OAAO,CAAC79C,GAAR,CAAY,aAAZ,CAHS,EAITy+C,mBAAmB,GAAG,KAAtB,GAA8BZ,OAAO,CAAC79C,GAAR,CAAY,aAAZ,CAJrB,EAKT69C,OAAO,CAAC79C,GAAR,CAAY,aAAZ,CALS,EAMToU,IANS,CAMJ,GANI,CAAX;AAQAwoC,OAAG,CAAC8B,SAAJ,GAAgBb,OAAO,CAAC79C,GAAR,CAAY,OAAZ,CAAhB;AACA48C,OAAG,CAAC3sC,SAAJ,GAAgB,OAAhB;AACA2sC,OAAG,CAAC+B,YAAJ,GAAmB,QAAnB;AAEAR,SAAK,GAAGI,oBAAoB,GAAG,CAA/B;AACD;;AAED,WAASK,gBAAT,GAA4B;AAC1B,QAAI1/C,QAAQ,GAAG0+C,OAAO,CAAC1+C,QAAR,EAAf;AACA++C,WAAO,CAACj+C,GAAR,CAAY;AACVX,UAAI,EAAEH,QAAQ,CAACG,IAAT,GAAgB2gC,QAAQ,CAAC6d,OAAO,CAAC79C,GAAR,CAAY,cAAZ,CAAD,EAA8B,EAA9B,CAAxB,GAA4D69C,OAAO,CAACj+C,KAAR,EAA5D,GAA8Ew+C,kBAD1E;AAEVj/C,SAAG,EAAED,QAAQ,CAACC,GAAT,GAAe6gC,QAAQ,CAAC4d,OAAO,CAAC59C,GAAR,CAAY,aAAZ,CAAD,EAA6B,EAA7B;AAFlB,KAAZ;AAID;;AAEDgT,KAAG,GAAG;AAEJ;;;;;;;;;;;;;AAgBAsG,UAAM,EAAE,gBAAS/kB,KAAT,EAAgB;AACtB,UAAIA,KAAK,IAAI,IAAb,EAAmB;AACjBA,aAAK,GAAG,EAAR;AACD,OAFD,MAEO;AACLA,aAAK,GAAG,KAAKA,KAAb;AACD;;AACDwpD,eAAS,GAAGxpD,KAAZ;AAEA,UAAIi4B,eAAe,GAAG,KAAtB;AAEA0xB,eAAS,GAAGtoD,IAAI,CAAC4kB,KAAL,CAAWoiC,GAAG,CAACiC,WAAJ,CAAgBtqD,KAAhB,EAAuBqL,KAAvB,GAA+B69C,UAA1C,CAAZ;;AAEA,UAAIW,kBAAkB,GAAGF,SAAzB,EAAoC;AAClCM,oBAAY,CAAC,IAAIN,SAAL,CAAZ;AACA1xB,uBAAe,GAAG,IAAlB;AACD,OAfqB,CAiBtB;;;AACA,UAAI52B,IAAI,CAAC2M,GAAL,CAASs7C,OAAO,CAACj+C,KAAR,KAAkBs+C,SAA3B,IAAwC,CAAxC,IAA6CA,SAAS,GAAGF,eAA7D,EAA8E;AAC5EH,eAAO,CAACj+C,KAAR,CAAcs+C,SAAd;AACA1xB,uBAAe,GAAG,IAAlB;AACD;;AAED,UAAIA,eAAJ,EAAqB;AACnBoyB,wBAAgB;AACjB;;AAEDhC,SAAG,CAACkC,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBR,mBAApB,EAAyCC,oBAAzC;AACA3B,SAAG,CAACE,QAAJ,CAAavoD,KAAb,EAAoB+pD,mBAApB,EAAyCH,KAAzC;AACD,KA/CG;AAiDJY,eAAW,EAAE,qBAASxqD,KAAT,EAAgB;AAC3BuzC,YAAM,CAACL,IAAP,CAAYlzC,KAAZ;AACD,KAnDG;AAqDJyqD,eAAW,EAAE,qBAASzqD,KAAT,EAAgB;AAC3BupD,YAAM,CAACrW,IAAP,CAAYlzC,KAAZ;AACD,KAvDG;AAyDJ0qD,aAAS,EAAE,qBAAW;AACpB;AACAnB,YAAM,CAAC99C,GAAP,CAAW,SAAX,EAAsB,CAAtB;AACD,KA5DG;AA8DJk/C,aAAS,EAAE,qBAAW;AACpBpB,YAAM,CAAC99C,GAAP,CAAW,SAAX,EAAsB,CAAtB;AACD,KAhEG;AAkEJmY,UAAM,EAAE,kBAAW;AACjB8lC,aAAO,GAAG7kD,CAAC,CAAC,UAAD,CAAD,CAAc4G,GAAd,CAAkB,UAAlB,EAA8B,UAA9B,CAAV;AACA48C,SAAG,GAAGqB,OAAO,CAAC,CAAD,CAAP,CAAWpB,UAAX,CAAsB,IAAtB,CAAN;AAEAc,oBAAc,GAAGvkD,CAAC,CAAC,8BAAD,CAAlB;AACA0uC,YAAM,GAAG1uC,CAAC,CAAC,6BAAD,CAAV;AACAwkD,aAAO,GAAGxkD,CAAC,CAAC,8BAAD,CAAX,CANiB,CAOjB;;AACAykD,aAAO,GAAGzkD,CAAC,CAAC,gCAAD,CAAD,CAAoC4G,GAApC,CAAwC,SAAxC,EAAmD,CAAnD,CAAV;AACA89C,YAAM,GAAG1kD,CAAC,CAAC,6BAAD,CAAV;;AAEA,UAAImd,KAAJ,EAAW;AACTuxB,cAAM,CAACL,IAAP,CAAYlxB,KAAZ;AACD;;AACD,UAAIhE,KAAJ,EAAW;AACTurC,cAAM,CAACrW,IAAP,CAAYl1B,KAAZ;AACD;;AAEDorC,oBAAc,CAAC9pC,IAAf,CAAoB,IAApB,EAA0B1T,EAA1B,EACGkB,MADH,CACUymC,MADV,EAEGzmC,MAFH,CAEUu8C,OAAO,CACZv8C,MADK,CACE48C,OADF,EAEL58C,MAFK,CAEEw8C,OAFF,EAGLx8C,MAHK,CAGEy8C,MAHF,CAFV;AAQA,aAAOH,cAAP;AACD,KA7FG;;AA+FJ;;;;AAIAj6C,UAAM,EAAE,kBAAW;AACjBs6C,qBAAe,GACbhe,QAAQ,CAAC6d,OAAO,CAAC79C,GAAR,CAAY,WAAZ,CAAD,EAA2B,EAA3B,CAAR,GACAggC,QAAQ,CAAC6d,OAAO,CAAC79C,GAAR,CAAY,cAAZ,CAAD,EAA8B,EAA9B,CADR,GAEAggC,QAAQ,CAAC6d,OAAO,CAAC79C,GAAR,CAAY,eAAZ,CAAD,EAA+B,EAA/B,CAHV;AAKAw+C,kBAAY,CAAC,IAAIN,SAAL,CAAZ;AACAlrC,SAAG,CAACsG,MAAJ,CAAWykC,SAAX;AACAa,sBAAgB;AAEhBvB,sBAAgB,CAAC;AACf19C,YAAI,EAAEi9C,GAAG,CAACj9C,IADK;AAEf08C,gBAAQ,EAAE,oBAAW;AACnBrpC,aAAG,CAACtP,MAAJ;AACD;AAJc,OAAD,CAAhB;AAMD;AAnHG,GAAN;AAsHA,SAAOsP,GAAP;AACD;AAAA,C;;AC5LD;AACA;AACA;AACA;AAGe,SAASmsC,uBAAT,CAAiC94B,SAAjC,EAA4CyE,sBAA5C,EAAoE;AACjF,MAAIwW,YAAJ,EACE/qB,KADF,EAEEhE,KAFF,EAGEsP,YAHF,EAIEqrB,IAJF,EAKElT,QALF,EAMEolB,mBANF,EAOE9vB,UAPF,EAQElsB,KARF,EASEgtB,YATF;;AAWA,WAASivB,WAAT,GAAuB;AACrB,QAAI9qD,KAAK,GAAG6O,KAAK,CAACwb,UAAN,CAAiB0iB,YAAjB,CAAZ;;AAEA,QAAIzf,YAAJ,EAAkB;AAChBttB,WAAK,GAAGstB,YAAY,CAACttB,KAAD,CAApB;AACD;;AACD24C,QAAI,CAAC5zB,MAAL,CAAY/kB,KAAZ;AACD,GAnBgF,CAqBjF;AACA;AACA;;;AACA6O,OAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACAmF,cAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf,CAzBiF,CA2BjF;;AACAjL,WAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC+pB,aAAxC,EAAuDgE,SAAvD,CAAZ;AAEAib,cAAY,GAAGjb,SAAS,CAACnH,QAAzB;AACA3M,OAAK,GAAG8T,SAAS,CAAC9T,KAAlB;AACAgE,OAAK,GAAG8P,SAAS,CAAC9P,KAAlB;AACAsL,cAAY,GAAGwE,SAAS,CAACxE,YAAzB;AAEAqrB,MAAI,GAAG,IAAIwQ,iBAAJ,CAAsB;AAC3Bv9C,MAAE,EAAEkmB,SAAS,CAAClmB,EADa;AAE3BoS,SAAK,EAAEA,KAFoB;AAG3BgE,SAAK,EAAEA;AAHoB,GAAtB,CAAP;AAMAyjB,UAAQ,GAAGkT,IAAI,CAAC/0B,MAAL,EAAX,CAzCiF,CA2CjF;;AACA6hB,UAAQ,CAACt4B,QAAT,CAAkB,WAAlB,EA5CiF,CA8CjF;;AACAs4B,UAAQ,CAACt4B,QAAT,CAAkB2kB,SAAS,CAAClX,WAA5B,EA/CiF,CAiDjF;;AACA6qB,UAAQ,CAACh6B,GAAT,CAAa;AACXJ,SAAK,EAAEymB,SAAS,CAACzmB,KADN;AAEXC,UAAM,EAAEwmB,SAAS,CAACxmB;AAFP,GAAb;;AAKA,MAAIgiB,YAAJ,EAAkB;AAChBA,gBAAY,GAAGuO,YAAY,CAACsV,2BAAb,CAAyC,OAAzC,EAAkD7jB,YAAlD,CAAf;AACD;;AAED,MAAIwE,SAAS,CAACzF,OAAd,EAAuB;AACrBoZ,YAAQ,CAACnmB,IAAT,CAAc,OAAd,EAAuBwS,SAAS,CAACzF,OAAjC;AACD,GA7DgF,CA+DjF;;;AACA0O,YAAU,GAAG;AACX;AACAhB,uBAAmB,EAAE,+BAAW;AAC9B,UAAIlrB,KAAJ,EAAW;AACTA,aAAK,CAACssB,cAAN,CAAqB4R,YAArB,EAAmC+d,WAAnC;AACD;;AACDj8C,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACAmF,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;;AACA,UAAIgQ,YAAJ,EAAkB;AAChB8d,2BAAmB,GAAGh8C,KAAK,CAAC8pB,sBAAN,CAA6BoU,YAA7B,CAAtB;;AACA,YAAI8d,mBAAJ,EAAyB;AACvB,cAAI,CAAC7oC,KAAL,EAAY;AACV22B,gBAAI,CAAC6R,WAAL,CAAiBK,mBAAmB,CAACjyB,QAApB,EAAjB;AACD;;AACD,cAAI,CAAC5a,KAAL,EAAY;AACV26B,gBAAI,CAAC8R,WAAL,CAAiBI,mBAAmB,CAAChyB,mBAApB,EAAjB;AACD;AACF;;AACDiyB,mBAAW;AACXj8C,aAAK,CAACu+B,WAAN,CAAkBL,YAAlB,EAAgC+d,WAAhC;AACD;AACF,KArBU;AAuBX;AACA/9C,oBAAgB,EAAE,4BAAW;AAC3B,aAAO04B,QAAP;AACD,KA1BU;AA4BXt2B,UAAM,EAAE,kBAAW;AACjBwpC,UAAI,CAACxpC,MAAL;AACA27C,iBAAW;AACZ,KA/BU;AAiCX;AACApmD,aAAS,EAAE,qBAAW;AACpB;AACA;AACA;AACA,aAAOG,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAP;AACD;AAvCU,GAAb,CAhEiF,CA0GjF;;AACAqI,iBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf,CA3GiF,CA6GjF;;AACA,SAAOU,UAAP;AACD;AAAA,C;;ACtHc,SAASgwB,SAAT,CAAmBxmD,IAAnB,EAAyBymD,eAAzB,EAA0C;AACvD,MAAIvsC,GAAJ;AAAA,MACE7S,EAAE,GAAGrH,IAAI,CAACqH,EADZ;AAAA,MAEEq/C,OAAO,GAAG1mD,IAAI,CAAC0mD,OAFjB;AAAA,MAGEC,UAAU,GAAG3mD,IAAI,CAAC2mD,UAHpB;AAAA,MAIEj8B,WAAW,GAAG1qB,IAAI,CAAC0qB,WAJrB;AAAA,MAKEk8B,QAAQ,GAAG5mD,IAAI,CAAC2qB,YALlB;AAAA,MAMErO,KAAK,GAAGtc,IAAI,CAACsc,KANf;AAAA,MAOExV,KAAK,GAAG9G,IAAI,CAAC8G,KAPf;AAAA,MAQEC,MAAM,GAAG/G,IAAI,CAAC+G,MARhB;AAAA,MASE+gB,OAAO,GAAG9nB,IAAI,CAAC8nB,OATjB;AAAA,MAUE++B,OAAO,GAAG7mD,IAAI,CAAC6mD,OAAL,IAAgB,EAV5B;AAAA,MAWEC,YAXF;AAAA,MAYElsC,GAZF;AAAA,MAaEmsC,aAbF;AAAA,MAcEC,MAdF;AAAA,MAeEC,MAfF;AAAA,MAgBEC,SAhBF;AAAA,MAiBEC,MAjBF;AAAA,MAkBEC,SAlBF;AAAA,MAmBEC,QAnBF;AAAA,MAoBEC,WApBF;AAAA,MAqBEn+B,QAAQ,GAAG,EArBb;;AAuBA,WAASo+B,kBAAT,GAA8B;AAC5B,QAAI7rD,CAAJ,EAAO8rD,GAAP;AACAN,aAAS,CAACzsC,IAAV,CAAe,IAAf,EAAqBtc,MAArB,CAA4B,IAA5B;;AACA,SAAKzC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgrD,OAAO,CAAC/qD,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC8rD,SAAG,GAAGlnD,CAAC,CAAC,MAAD,CAAP;AACAknD,SAAG,CAAChxC,IAAJ,CAASkwC,OAAO,CAAChrD,CAAD,CAAP,CAAW4G,IAApB;AACAklD,SAAG,CAACxkB,KAAJ,CAAUykB,UAAV;AACAP,eAAS,CAAC3+C,MAAV,CAAiBi/C,GAAjB;AACD;AACF;;AAED,WAASE,gBAAT,CAA0BC,GAA1B,EAA+BC,KAA/B,EAAsCC,MAAtC,EAA8C;AAC5C,QAAI,OAAOD,KAAP,KAAiB,WAAjB,IAAgCA,KAAK,KAAK,IAA9C,EAAoD;AAClD,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7BD,WAAG,CAACnxC,IAAJ,CAASoxC,KAAT;AACD,OAFD,MAEO,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AACpCD,WAAG,CAACnxC,IAAJ,CAASmwC,UAAU,CAACkB,MAAD,CAAV,CAAmBD,KAAnB,CAAT;AACD;AACF,KAND,MAMO;AACLD,SAAG,CAAChZ,IAAJ,CAAS,QAAT;AACD;AACF;;AAED,WAASmZ,mBAAT,GAA+B;AAC7BX,UAAM,CAAC1sC,IAAP,CAAY,IAAZ,EAAkBk0B,IAAlB,CAAuB,YAAW;AAChC,UAAIgZ,GAAG,GAAGrnD,CAAC,CAAC,IAAD,CAAX;AACA,UAAIsnD,KAAK,GAAGD,GAAG,CAACtmC,IAAJ,CAAS,OAAT,CAAZ;AACA,UAAIwmC,MAAM,GAAGF,GAAG,CAACtmC,IAAJ,CAAS,OAAT,CAAb;AACAqmC,sBAAgB,CAACC,GAAD,EAAMC,KAAN,EAAaC,MAAb,CAAhB;AACD,KALD;AAMD;;AAED,WAASJ,UAAT,CAAoBltD,CAApB,EAAuB;AACrB,QAAI2nB,MAAM,GAAG5hB,CAAC,CAAC,IAAD,CAAd;AAAA,QACEynD,SAAS,GAAG,KADd;AAAA,QAEEC,UAAU,GAAG,MAFf;AAAA,QAGEC,SAHF,CADqB,CAMrB;AACA;;AACAC,kBAAc;AACdD,aAAS,GAAGF,SAAZ;;AACA,QAAI7lC,MAAM,CAACnW,QAAP,CAAgBg8C,SAAhB,CAAJ,EAAgC;AAC9B7lC,YAAM,CAAChW,WAAP,CAAmB67C,SAAnB;AACA7lC,YAAM,CAACtZ,QAAP,CAAgBo/C,UAAhB;AACAC,eAAS,GAAGD,UAAZ;AACD,KAJD,MAIO,IAAI9lC,MAAM,CAACnW,QAAP,CAAgBi8C,UAAhB,CAAJ,EAAiC;AACtC9lC,YAAM,CAAChW,WAAP,CAAmB87C,UAAnB;AACA9lC,YAAM,CAACtZ,QAAP,CAAgBm/C,SAAhB;AACAE,eAAS,GAAGF,SAAZ;AACD,KAJM,MAIA;AACL7lC,YAAM,CAACtZ,QAAP,CAAgBo/C,UAAhB;AACAC,eAAS,GAAGD,UAAZ;AACD;;AACD9lC,UAAM,CAACimC,QAAP,GAAkBj8C,WAAlB,CAA8B,QAA9B;AACAk7C,aAAS,GAAGD,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,CAAZ;AACA2sC,aAAS,CAACgB,KAAV,CAAgB,WAAWlmC,MAAM,CAAC8S,KAAP,EAAX,GAA4B,GAA5C,EAAiD;AAC/CqzB,kBAAY,EAAE,sBAASxtD,CAAT,EAAY+B,CAAZ,EAAe;AAC3B,YAAI0rD,IAAI,GAAGxrD,IAAI,CAAC2M,GAAL,CAAS8V,UAAU,CAAC1kB,CAAC,CAACivB,CAAH,CAAnB,CAAX;AAAA,YACEy+B,IAAI,GAAGzrD,IAAI,CAAC2M,GAAL,CAAS8V,UAAU,CAAC3iB,CAAC,CAACktB,CAAH,CAAnB,CADT;;AAEA,YAAIm+B,SAAS,KAAKF,SAAlB,EAA6B;AAC3B,iBAAOO,IAAI,KAAKC,IAAT,GAAgB,CAAhB,GAAqBD,IAAI,GAAGC,IAAP,GAAc,CAAd,GAAkB,CAAC,CAA/C;AACD,SAFD,MAEO;AACL,iBAAOD,IAAI,KAAKC,IAAT,GAAgB,CAAhB,GAAqBD,IAAI,GAAGC,IAAP,GAAc,CAAd,GAAkB,CAAC,CAA/C;AACD;AACF;AAT8C,KAAjD;AAWArmC,UAAM,CAACtZ,QAAP,CAAgB,QAAhB;AACA4/C,iBAAa;AACbjuD,KAAC,CAACg1C,cAAF;AACD;;AAED,WAASkZ,iBAAT,GAA6B;AAC3B3B,gBAAY,GAAGG,MAAM,CAACxsC,IAAP,CAAY,aAAZ,EAA2B0hB,GAA3B,CAA+B,YAAW;AACvD,aAAO77B,CAAC,CAAC,IAAD,CAAD,CAAQkG,UAAR,EAAP;AACD,KAFc,CAAf;AAIA2gD,UAAM,CAAC1sC,IAAP,CAAY,aAAZ,EAA2Bc,IAA3B,CAAgC,UAAS7f,CAAT,EAAY;AAC1C4E,OAAC,CAAC,IAAD,CAAD,CAAQkG,UAAR,CAAmBsgD,YAAY,CAACprD,CAAD,CAA/B;AACD,KAFD;AAGD;;AAED,WAASgtD,aAAT,CAAuBC,QAAvB,EAAiC;AAC/B,WAAOroD,CAAC,CAAC6mD,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,CAAD,CAAD,CAAqBypB,MAArB,CAA4B,YAAW;AAC5C,aAAO5jC,CAAC,CAAC,IAAD,CAAD,CAAQ+gB,IAAR,CAAa,OAAb,MAA0BsnC,QAAjC;AACD,KAFM,CAAP;AAGD;;AAED,WAASC,kBAAT,CAA4BC,GAA5B,EAAiC;AAC/B,WAAOA,GAAG,CAACxnC,IAAJ,CAAS,OAAT,CAAP;AACD;;AAED,WAASynC,eAAT,CAAyBD,GAAzB,EAA8B;AAC5B,QAAI9wC,CAAC,GAAG8wC,GAAG,CAACziD,QAAJ,EAAR;AACA,QAAI,CAAC2R,CAAD,IAAM,CAACsvC,QAAX,EAAqB,OAAO,CAAP;AACrB,QAAItvC,CAAC,CAAC1R,GAAF,GAAQghD,QAAQ,CAAChhD,GAArB,EAA0B,OAAO,CAAC,CAAR;AAC1B,QAAI0R,CAAC,CAAC1R,GAAF,GAAQihD,WAAZ,EAAyB,OAAO,CAAP;AACzB,WAAO,CAAP;AACD;;AAED,WAASyB,eAAT,CAAyBJ,QAAzB,EAAmC;AACjC,QAAIjtD,CAAC,GAAGytB,QAAQ,CAAC/N,OAAT,CAAiButC,QAAjB,CAAR;;AACA,QAAIjtD,CAAC,KAAK,CAAC,CAAX,EAAc;AACZytB,cAAQ,CAAC6/B,MAAT,CAAgBttD,CAAhB,EAAmB,CAAnB;AACA,aAAOgtD,aAAa,CAACC,QAAD,CAAb,CAAwBz8C,WAAxB,CAAoC,UAApC,CAAP;AACD;AACF;;AAED,WAAS+8C,YAAT,CAAsBN,QAAtB,EAAgC;AAC9B,QAAIE,GAAJ;;AACA,QAAI1/B,QAAQ,CAAC/N,OAAT,CAAiButC,QAAjB,MAA+B,CAAC,CAApC,EAAuC;AACrCx/B,cAAQ,CAAC7qB,IAAT,CAAcqqD,QAAd;AACAE,SAAG,GAAGH,aAAa,CAACC,QAAD,CAAnB;AACAE,SAAG,CAACjgD,QAAJ,CAAa,UAAb;AACA,aAAOigD,GAAP;AACD;AACF;;AAED,WAASK,kBAAT,GAA8B;AAC5B,QAAIxtD,CAAJ;AAAA,QAAOyM,CAAP;AAAA,QAAUghD,OAAO,GAAG,EAApB;;AACA,SAAKztD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGytB,QAAQ,CAACxtB,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCyM,OAAC,GAAGghB,QAAQ,CAACztB,CAAD,CAAZ;AACAytD,aAAO,CAAC7qD,IAAR,CAAa,CAAC6J,CAAD,EAAIugD,aAAa,CAACvgD,CAAD,CAAb,CAAiB6sB,KAAjB,EAAJ,CAAb;AACD;;AACD,WAAOm0B,OAAO,CAACC,IAAR,CAAa,UAASvuD,CAAT,EAAY+B,CAAZ,EAAe;AACjC,aAAO/B,CAAC,CAAC,CAAD,CAAD,GAAO+B,CAAC,CAAC,CAAD,CAAf;AACD,KAFM,CAAP;AAGD;;AAED,WAASysD,aAAT,GAAyB;AACvB,QAAI3tD,CAAJ,EAAO4tD,eAAP,EAAwBjf,KAAxB,EAA+Bkf,GAA/B;AACAD,mBAAe,GAAGJ,kBAAkB,EAApC;AACA7e,SAAK,GAAGif,eAAe,CAAC,CAAD,CAAvB;AACAC,OAAG,GAAGD,eAAe,CAACA,eAAe,CAAC3tD,MAAhB,GAAyB,CAA1B,CAArB;AACAyrD,aAAS,GAAGD,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,CAAZ;;AACA,SAAK/e,CAAC,GAAG2uC,KAAK,CAAC,CAAD,CAAd,EAAmB3uC,CAAC,IAAI6tD,GAAG,CAAC,CAAD,CAA3B,EAAgC7tD,CAAC,EAAjC,EAAqC;AACnCutD,kBAAY,CAAC3oD,CAAC,CAAC8mD,SAAS,CAAC1rD,CAAD,CAAV,CAAD,CAAgB2lB,IAAhB,CAAqB,OAArB,CAAD,CAAZ;AACD;AACF;;AAED,WAASmoC,cAAT,GAA0B;AACxB,QAAI9tD,CAAJ;;AACA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGytB,QAAQ,CAACxtB,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCgtD,mBAAa,CAACv/B,QAAQ,CAACztB,CAAD,CAAT,CAAb,CAA2BwQ,WAA3B,CAAuC,UAAvC;AACD;;AACDid,YAAQ,GAAG,EAAX;AACD;;AAED,WAASsgC,eAAT,CAAyBC,OAAzB,EAAkC10B,KAAlC,EAAyC;AACvC,QAAIt5B,CAAJ,EAAOksD,KAAP,EAAciB,GAAd,EAAmBlB,GAAnB;AACAkB,OAAG,GAAGvoD,CAAC,CAAC,mBAAD,CAAP;AACAA,KAAC,CAACuoD,GAAD,CAAD,CAAOxnC,IAAP,CAAY,OAAZ,EAAqB2T,KAArB;;AACA,SAAKt5B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgrD,OAAO,CAAC/qD,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnCisD,SAAG,GAAGrnD,CAAC,CAAC,MAAD,CAAP;AACAA,OAAC,CAACqnD,GAAD,CAAD,CAAOtmC,IAAP,CAAY,OAAZ,EAAqB3lB,CAArB;AACAksD,WAAK,GAAG8B,OAAO,CAAChuD,CAAD,CAAf;AACAisD,SAAG,CAACtmC,IAAJ,CAAS,OAAT,EAAkBumC,KAAlB;AACAF,sBAAgB,CAACC,GAAD,EAAMC,KAAN,EAAalsD,CAAb,CAAhB;AACAmtD,SAAG,CAACtgD,MAAJ,CAAWo/C,GAAX;AACD;;AACDR,UAAM,CAAC5+C,MAAP,CAAcsgD,GAAd;;AACA,QAAI1B,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,EAAkB9e,MAAlB,GAA2B,CAA/B,EAAkC;AAChC8sD,uBAAiB;AAClB;AACF;;AAED,WAASP,cAAT,GAA0B;AACxBf,UAAM,CAAC1sC,IAAP,CAAY,QAAZ,EAAsBtc,MAAtB;AACD;;AAED,WAASqqD,aAAT,GAAyB;AACvB;AACAN,kBAAc;AACd,QAAI,CAACtB,QAAL,EAAe;AACf,QAAI5xB,KAAK,GAAGmyB,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,EAAkB9e,MAA9B;AACA,QAAID,CAAJ,EAAOmtD,GAAP,EAAYlB,GAAZ;AACAkB,OAAG,GAAGvoD,CAAC,CAAC,yBAAD,CAAP;AACAA,KAAC,CAACuoD,GAAD,CAAD,CAAOxnC,IAAP,CAAY,OAAZ,EAAqB2T,KAArB;;AACA,SAAKt5B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgrD,OAAO,CAAC/qD,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnCisD,SAAG,GAAGrnD,CAAC,CAAC,MAAD,CAAP;AACAA,OAAC,CAACqnD,GAAD,CAAD,CAAOtmC,IAAP,CAAY,OAAZ,EAAqB3lB,CAArB;AACAisD,SAAG,CAAChZ,IAAJ,CAAS,QAAT;AACAka,SAAG,CAACtgD,MAAJ,CAAWo/C,GAAX;AACD;;AACDR,UAAM,CAAC5+C,MAAP,CAAcsgD,GAAd;;AACA,QAAI1B,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,EAAkB9e,MAAlB,GAA2B,CAA/B,EAAkC;AAChC8sD,uBAAiB;AAClB;AACF;;AAED,WAASkB,cAAT,GAA0B;AACxB;AACAxC,UAAM,CAACyC,SAAP,CAAiB,QAAjB;AACD;;AAED,WAASC,cAAT,CAAwBH,OAAxB,EAAiC10B,KAAjC,EAAwC;AACtC,QAAI4yB,KAAJ;;AAEA,QAAIT,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,EAAkB9e,MAAlB,KAA6B,CAAjC,EAAoC;AAClCue,SAAG,CAAC4vC,aAAJ,CAAkBJ,OAAlB,EAA2B10B,KAA3B;AACA;AACD;;AAED,QAAI6zB,GAAG,GAAGvoD,CAAC,CAAC6mD,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,CAAD,CAAD,CAAqBypB,MAArB,CAA4B,YAAW;AAC7C,aAAO5jC,CAAC,CAAC,IAAD,CAAD,CAAQ+gB,IAAR,CAAa,OAAb,MAA0B2T,KAAjC;AACD,KAFO,CAAV;AAAA,QAGE+0B,aAAa,GAAGzpD,CAAC,CAACuoD,GAAD,CAAD,CAAOpuC,IAAP,CAAY,IAAZ,CAHlB;AAAA,QAIEuvC,gBAAgB,GAAGD,aAAa,CAACpuD,MAJnC;AAAA,QAKEgsD,GALF;AAAA,QAKOjsD,CALP;;AAOA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGguD,OAAO,CAAC/tD,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,UAAIA,CAAC,GAAGsuD,gBAAR,EAA0B;AACxBrC,WAAG,GAAGrnD,CAAC,CAACypD,aAAa,CAACruD,CAAD,CAAd,CAAP;AACAksD,aAAK,GAAG8B,OAAO,CAAChuD,CAAD,CAAf;AACAisD,WAAG,CAACtmC,IAAJ,CAAS,OAAT,EAAkBumC,KAAlB;AACAF,wBAAgB,CAACC,GAAD,EAAMC,KAAN,EAAalsD,CAAb,CAAhB;AACD;AACF;AACF;;AAED,WAASuuD,wBAAT,GAAoC;AAClC5C,YAAQ,GAAGF,MAAM,CAAC/gD,QAAP,EAAX;AACAkhD,eAAW,GAAGH,MAAM,CAACpgD,MAAP,EAAd;AACD;;AAED,WAASmjD,aAAT,GAAyB;AACvB,QAAInZ,MAAM,GAAGoW,MAAM,CAAC1sC,IAAP,CAAY,OAAZ,CAAb;AAEAs2B,UAAM,CAACx1B,IAAP,CAAY,YAAW;AACrB,UAAIosC,GAAG,GAAGrnD,CAAC,CAAC,IAAD,CAAD,CAAQ+Z,MAAR,EAAV;AAAA,UACEsuC,QAAQ,GAAGhB,GAAG,CAACttC,MAAJ,GAAagH,IAAb,CAAkB,OAAlB,CADb;AAAA,UAEE8oC,QAAQ,GAAGxC,GAAG,CAACtmC,IAAJ,CAAS,OAAT,CAFb;AAAA,UAGEld,GAAG,GAAG7D,CAAC,CAAC,IAAD,CAAD,CAAQ6D,GAAR,EAHR;;AAKA,UAAI,CAACuF,KAAK,CAAC6V,UAAU,CAACpb,GAAD,CAAX,CAAN,IAA2Bm4B,QAAQ,CAACn4B,GAAD,CAAvC,EAA8C;AAC5CA,WAAG,GAAGob,UAAU,CAACpb,GAAD,CAAhB;AACD;;AACDsiD,qBAAe,CAAC2D,aAAhB,CAA8BzB,QAA9B,EAAwCwB,QAAxC,EAAkDhmD,GAAlD;AACAwjD,SAAG,CAAC3mC,KAAJ,GAAY2tB,IAAZ,CAAiBxqC,GAAjB;AACD,KAXD;AAaAskD,qBAAiB;AACjBwB,4BAAwB;AACzB;;AAED,WAASI,YAAT,CAAsB1B,QAAtB,EAAgCwB,QAAhC,EAA0C;AACxC,QAAIxC,GAAG,GAAGrnD,CAAC,CAACooD,aAAa,CAACC,QAAD,CAAb,CAAwBluC,IAAxB,CAA6B,IAA7B,EAAmC0vC,QAAnC,CAAD,CAAX;AAAA,QACEG,UAAU,GAAGnD,MAAM,CAAC1sC,IAAP,CAAY,OAAZ,CADf;AAAA,QAEE4G,IAFF;AAAA,QAGE0vB,MAHF;AAAA,QAIEwZ,YAJF;;AAMA,QAAI,CAAC5C,GAAD,IAAS,CAACjB,OAAO,CAACyD,QAAD,CAAP,CAAkBK,QAA5B,IAA0C7C,GAAG,CAACltC,IAAJ,CAAS,OAAT,EAAkB9e,MAAhE,EAAyE;AACvE;AACD;;AAED,QAAI2uD,UAAU,CAAC3uD,MAAf,EAAuB;AACrBuuD,mBAAa;AACd;;AAED7oC,QAAI,GAAGolC,eAAe,CAACgE,aAAhB,CAA8B9B,QAA9B,EAAwCwB,QAAxC,CAAP;AACApZ,UAAM,GAAGzwC,CAAC,CAAC,6BAAD,CAAD,CAAiC6D,GAAjC,CAAqCkd,IAArC,CAAT;AAEAsmC,OAAG,CAAC3mC,KAAJ,GAAYzY,MAAZ,CAAmBwoC,MAAnB;AAEA0X,qBAAiB;AAEjB1X,UAAM,CAACzS,IAAP,CAAY,SAAZ,EAAuB,UAAS/jC,CAAT,EAAY;AACjC,UAAImwD,IAAI,GAAInwD,CAAC,CAACowD,OAAF,GAAYpwD,CAAC,CAACowD,OAAd,GAAwBpwD,CAAC,CAACqwD,KAAtC;;AACA,UAAIF,IAAI,KAAK,EAAb,EAAiB;AAAE;AACjBR,qBAAa;AACd,OAFD,MAEO,IAAIQ,IAAI,KAAK,CAAb,EAAgB;AAAE;AACvBR,qBAAa,GADQ,CAErB;;AACAK,oBAAY,GAAGJ,QAAf;;AACA,eAAO,EAAEI,YAAF,GAAiB7D,OAAO,CAAC/qD,MAAhC,EAAwC;AACtC,cAAI+qD,OAAO,CAAC6D,YAAD,CAAP,CAAsBC,QAA1B,EAAoC;AAClCH,wBAAY,CAAC1B,QAAD,EAAW4B,YAAX,CAAZ;AACA;AACD;AACF;AACF;;AACDhwD,OAAC,CAACo4C,eAAF;AACD,KAhBD;AAkBA5B,UAAM,CAAC/3B,EAAP,CAAU,MAAV,EAAkBkxC,aAAlB;AAEAte,cAAU,CAAC,YAAW;AACpBmF,YAAM,CAAC8Z,KAAP;AACD,KAFS,EAEP,CAFO,CAAV;AAGD;;AAED3wC,KAAG,GAAG;AACJmF,UAAM,EAAE,kBAAW;AACjB,UAAI3jB,CAAJ,EAAOwmB,MAAP;AACAtH,SAAG,GAAGta,CAAC,CAAC,OAAD,CAAP;AACA0mD,YAAM,GAAG1mD,CAAC,CAAC,SAAD,CAAV;AACA6mD,YAAM,GAAG7mD,CAAC,CAAC,SAAD,CAAV;AACA4mD,eAAS,GAAG5mD,CAAC,CAAC,qBAAD,CAAb;AACA2mD,YAAM,GAAG3mD,CAAC,CAAC,SAAD,CAAD,CAAaiI,MAAb,CAAoB2+C,SAApB,CAAT;AACAF,YAAM,CACHz+C,MADH,CACU0+C,MADV,EAEG1+C,MAFH,CAEU4+C,MAFV;AAGAI,wBAAkB;AAClBR,mBAAa,GAAGzmD,CAAC,CAAC,OAAD,CAAD,CACbsI,QADa,CACJ,eADI,EAEbL,MAFa,CAENy+C,MAFM,CAAhB;AAGApsC,SAAG,CAACG,IAAJ,CAAS,IAAT,EAAe1T,EAAf;;AACA,UAAIiV,KAAJ,EAAW;AACT4F,cAAM,GAAG5hB,CAAC,CAAC,OAAD,CAAD,CACNsI,QADM,CACG,OADH,EAEN4N,IAFM,CAED8F,KAFC,CAAT;AAGA1B,WAAG,CAACrS,MAAJ,CAAW2Z,MAAX;AACD;;AACDtH,SAAG,CAACrS,MAAJ,CAAWw+C,aAAX;;AACA,WAAKrrD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmrD,OAAO,CAAClrD,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnCkf,WAAG,CAAChS,QAAJ,CAAai+C,OAAO,CAACnrD,CAAD,CAApB;AACD;;AACD,UAAIosB,OAAJ,EAAa;AACXlN,WAAG,CAACG,IAAJ,CAAS,OAAT,EAAkB+M,OAAlB;AACD;;AACD,UAAIhhB,KAAJ,EAAW;AACT8T,WAAG,CAAC1T,GAAJ,CAAQ,OAAR,EAAiBJ,KAAjB;AACD;;AACD,UAAIC,MAAJ,EAAY;AACV6T,WAAG,CAAC1T,GAAJ,CAAQ,QAAR,EAAkBH,MAAlB;AACD;;AACDogD,YAAM,CAAC/1B,QAAP,CAAgB,IAAhB,EAAsB,OAAtB,EAA+B,UAAS72B,CAAT,EAAY;AACzC,YAAIuwD,EAAE,GAAGlC,kBAAkB,CAACtoD,CAAC,CAAC/F,CAAC,CAACwwD,aAAH,CAAF,CAA3B;;AACA,YAAI,CAACxwD,CAAC,CAACywD,QAAH,IAAe,CAACzwD,CAAC,CAAC0wD,OAAtB,EAA+B;AAC7BzB,wBAAc;AACf;;AACDP,oBAAY,CAAC6B,EAAD,CAAZ;;AACA,YAAIvwD,CAAC,CAACywD,QAAN,EAAgB;AACd3B,uBAAa;AACd;AACF,OATD;AAUAlC,YAAM,CAAC/1B,QAAP,CAAgB,IAAhB,EAAsB,OAAtB,EAA+B,UAAS72B,CAAT,EAAY;AACzC,YAAIotD,GAAG,GAAGrnD,CAAC,CAAC/F,CAAC,CAACwwD,aAAH,CAAX;AAAA,YACEpC,QAAQ,GAAGhB,GAAG,CAACttC,MAAJ,GAAagH,IAAb,CAAkB,OAAlB,CADb;AAAA,YAEE8oC,QAAQ,GAAGxC,GAAG,CAACtmC,IAAJ,CAAS,OAAT,CAFb;AAIAgpC,oBAAY,CAAC1B,QAAD,EAAWwB,QAAX,CAAZ;AACD,OAND;AAOAF,8BAAwB;AACxB,aAAOrvC,GAAP;AACD,KAtDG;AAwDJhQ,UAAM,EAAE,kBAAW;AACjB,UAAIgoC,eAAJ;AACAoU,YAAM,CAACjgD,MAAP,CAAcggD,aAAa,CAAChgD,MAAd,EAAd;AACA6rC,qBAAe,GAAGoU,MAAM,CAACjgD,MAAP,KAAmBkgD,MAAM,CAAC3gD,WAAP,CAAmB,IAAnB,CAArC;AACA6gD,YAAM,CAACpgD,MAAP,CAAc6rC,eAAe,GAAG,CAAhC;AACA6V,uBAAiB;AACjBwB,8BAAwB;AACzB,KA/DG;AAiEJiB,SAAK,EAAE,iBAAW;AAChB/D,YAAM,CAAC1sC,IAAP,CAAY,OAAZ,EAAqBtc,MAArB;AACD,KAnEG;AAqEJ2rD,iBAAa,EAAE,uBAASJ,OAAT,EAAkB10B,KAAlB,EAAyB;AACtCy0B,qBAAe,CAACC,OAAD,EAAU10B,KAAV,CAAf;AACAwzB,mBAAa;AACbmB,oBAAc;AACf,KAzEG;AA2EJwB,kBAAc,EAAE,wBAASC,IAAT,EAAeC,UAAf,EAA2B;AACzC,UAAIr2B,KAAK,GAAGq2B,UAAZ;AACAD,UAAI,CAACvzC,OAAL,CAAa,UAASyzC,GAAT,EAAc;AACzB7B,uBAAe,CAAC6B,GAAD,EAAMt2B,KAAK,EAAX,CAAf;AACD,OAFD;AAGAwzB,mBAAa;AACbmB,oBAAc;AACf,KAlFG;AAoFJ4B,kBAAc,EAAE,wBAASC,QAAT,EAAmB;AACjC,UAAI3C,GAAG,GAAG1B,MAAM,CAAC1sC,IAAP,CAAY,IAAZ,EAAkBypB,MAAlB,CAAyB,YAAW;AAC5C,YAAI9lC,GAAG,GAAGkC,CAAC,CAAC,IAAD,CAAD,CAAQ+gB,IAAR,CAAa,OAAb,CAAV;AACA,eAAOjjB,GAAG,IAAIotD,QAAd;AACD,OAHS,CAAV;AAIA3C,SAAG,CAAC1qD,MAAJ;AACAqqD,mBAAa;AACd,KA3FG;AA6FJqB,kBAAc,EAAEA,cA7FZ;AA+FJd,mBAAe,EAAEA,eA/Fb;AAgGJE,gBAAY,EAAEA,YAhGV;AAiGJO,kBAAc,EAAEA,cAjGZ;AAmGJiC,eAAW,EAAE,qBAASzrD,IAAT,EAAe;AAC1B0mD,aAAO,GAAG1mD,IAAI,CAAC0mD,OAAL,IAAgBA,OAA1B;AACAC,gBAAU,GAAG3mD,IAAI,CAAC2mD,UAAL,IAAmBA,UAAhC;AACAY,wBAAkB;AAClBO,yBAAmB;AACnBW,uBAAiB;AACjBwB,8BAAwB;AACzB;AA1GG,GAAN;AA6GA,SAAO/vC,GAAP;AACD;AAAA,C;;ACzaD;AACA;AACA;AACA;AACA;AACA;AACA,IAAIwxC,oBAAoB,GAAG,CAA3B;AAEe,SAASC,eAAT,CAAyBp+B,SAAzB,EAAoCyE,sBAApC,EAA4D;AACzE;AACA,MAAIwE,UAAJ;AAAA,MACElsB,KADF;AAAA,MAEEub,OAFF;AAAA,MAGE4N,aAHF;AAAA,MAIE2gB,IAJF;AAAA,MAKElT,QALF;AAAA,MAMEynB,QANF;AAAA,MAOEjC,OAPF;AAAA,MAQEC,UARF;AAAA,MASE77B,UATF;AAAA,MAUEhF,UAVF;AAAA,MAWEiK,SAAS,GAAG,oBAAqB,EAAE27B,oBAXrC;;AAaA,WAAS1hD,UAAT,GAAsB;AACpBM,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CADoB,CAGpB;;AACA5E,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC+qB,KAAxC,EAA+CgD,SAA/C,CAAZ;AAEAzH,cAAU,GAAGyH,SAAS,CAAC1C,eAAV,CAA0BnuB,KAA1B,EAAb,CANoB,CAOpB;;AACA,SAAK,IAAIhB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoqB,UAAU,CAACnqB,MAA/B,EAAuCD,CAAC,EAAxC,EAA4C;AAC1C,UAAIoqB,UAAU,CAACpqB,CAAD,CAAV,CAAc4G,IAAlB,EAAwB;AACtBwjB,kBAAU,CAACpqB,CAAD,CAAV,GAAgBoqB,UAAU,CAACpqB,CAAD,CAAV,CAAc4G,IAA9B;AACD;AACF;;AAEDmxB,iBAAa,GAAG,IAAI3D,cAAJ,CAAkBC,SAAlB,CAAhB;AACA8H,eAAW;AAEX+zB,qCAAiC;AACjCjD,YAAQ,GAAG,CAAX;AACA79B,cAAU,GAAGxqB,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAS,CAACzC,UAA7B,CAAb;AAEAspB,QAAI,GAAG,IAAIoS,SAAJ,CAAc;AACnBn/C,QAAE,EAAEkmB,SAAS,CAAClmB,EADK;AAEnBiV,WAAK,EAAEiR,SAAS,CAACjR,KAFE;AAGnBoqC,aAAO,EAAEA,OAHU;AAInBC,gBAAU,EAAEA,UAJO;AAKnBj8B,iBAAW,EAAE6C,SAAS,CAAC7C,WALJ;AAMnBC,kBAAY,EAAE4C,SAAS,CAAC5C,YANL;AAOnB7jB,WAAK,EAAEymB,SAAS,CAACzmB,KAPE;AAQnBC,YAAM,EAAEwmB,SAAS,CAACxmB,MARC;AASnB+gB,aAAO,EAAEyF,SAAS,CAACzF,OATA;AAUnB++B,aAAO,EAAE,CAAC,mBAAD,EAAsB,WAAtB;AAVU,KAAd,EAWJrwB,UAXI,CAAP;AAaA0K,YAAQ,GAAGkT,IAAI,CAAC/0B,MAAL,EAAX;AAEAuW,mBAAe,CAACY,UAAD,EAAajJ,SAAb,EAAwByE,sBAAsB,CAAC8D,UAA/C,CAAf,CApCoB,CAsCpB;AACA;AACA;;AACAjQ,WAAO,CAAC6M,SAAR;AACD;;AAED,WAASmF,WAAT,GAAuB;AACrB;AACA;AACAhS,WAAO,GAAG0H,SAAS,CAAC1H,OAAV,GAAoBmM,sBAAsB,CAAC8F,UAAvB,CAAkCvK,SAAS,CAAC1H,OAA5C,CAApB,GACR,IAAIkM,QAAJ,CAAY;AACVzvB,UAAI,EAAEirB,SAAS,CAAClmB,EAAV,GAAe,cADX;AAEVye,gBAAU,EAAEA,UAAU,CAACppB,KAAX,EAFF;AAGVqvB,eAAS,EAAEwB,SAAS,CAACxB,SAHX;AAIV7F,iBAAW,EAAEqH,SAAS,CAAC/C,SAJb;AAKVxE,yBAAmB,EAAEuH,SAAS,CAACvH,mBALrB;AAMVC,uBAAiB,EAAEsH,SAAS,CAACtH;AANnB,KAAZ,EAOG+L,sBAPH,EAO2B,IAP3B,CADF,CAHqB,CAarB;;AACAyB,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeG,YAA7C,EAA2Di5B,kBAA3D;AACAp4B,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeI,cAA7C,EAA6Di5B,oBAA7D;AACAr4B,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeO,UAA7C,EAAyD+4B,gBAAzD;AACAt4B,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeM,cAA7C,EAA6Di5B,oBAA7D;AACAv4B,iBAAa,CAACrD,MAAd,CAAqBvK,OAArB,EAA8BkM,QAAO,CAACU,MAAR,CAAeQ,iBAA7C,EAAgEg5B,uBAAhE;AACD;;AAED,WAASL,iCAAT,GAA6C;AAC3C,QAAIlwD,CAAJ,EAAO8sC,YAAP,EAAqB0jB,UAArB,EAAiC5F,mBAAjC,EAAsD6F,aAAtD,EAAqEC,SAArE;AACA,QAAI5B,QAAJ,EAAczsC,MAAd;AAEA2oC,WAAO,GAAG,EAAV;AACAC,cAAU,GAAG,EAAb;;AAEA,QAAIp5B,SAAS,CAAC3C,WAAd,EAA2B;AACzB87B,aAAO,CAACpoD,IAAR,CAAa;AACXgE,YAAI,EAAE,GADK;AAEXkoD,gBAAQ,EAAE;AAFC,OAAb;AAIA7D,gBAAU,CAACroD,IAAX,CAAgB0f,EAAE,CAACD,MAAH,CAAU,GAAV,CAAhB;AACD;;AAED,SAAKriB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6xB,SAAS,CAAC1C,eAAV,CAA0BlvB,MAA1C,EAAkDD,CAAC,EAAnD,EAAuD;AACrDywD,mBAAa,GAAG,IAAhB;AACA3B,cAAQ,GAAG,KAAX;AACAzsC,YAAM,GAAG,KAAT;;AAEA,UAAI,OAAOwP,SAAS,CAAC1C,eAAV,CAA0BnvB,CAA1B,CAAP,KAAwC,QAA5C,EAAsD;AACpDwwD,kBAAU,GAAG;AACX5pD,cAAI,EAAEirB,SAAS,CAAC1C,eAAV,CAA0BnvB,CAA1B;AADK,SAAb;AAGD,OAJD,MAIO;AACLwwD,kBAAU,GAAG3+B,SAAS,CAAC1C,eAAV,CAA0BnvB,CAA1B,CAAb;AACD;;AAED,UAAI,OAAO4O,KAAP,KAAiB,WAArB,EAAkC;AAChCk+B,oBAAY,GAAG0jB,UAAU,CAAC5pD,IAA1B;;AACA,YAAIgI,KAAK,CAACwb,UAAN,CAAiB7mB,cAAjB,CAAgCupC,YAAhC,CAAJ,EAAmD;AACjD8d,6BAAmB,GAAGh8C,KAAK,CAAC8pB,sBAAN,CAA6BoU,YAA7B,CAAtB;;AACA,cAAI8d,mBAAJ,EAAyB;AACvB6F,yBAAa,GAAG7F,mBAAmB,CAACjyB,QAApB,EAAhB;AACA+3B,qBAAS,GAAG9F,mBAAmB,CAAChyB,mBAApB,EAAZ;;AACA,gBAAI83B,SAAJ,EAAe;AACbD,2BAAa,IAAI,OAAOC,SAAP,GAAmB,GAApC;AACD;AACF;AACF;AACF;;AACD,UAAI,CAACD,aAAL,EAAoB;AAClBA,qBAAa,GAAGD,UAAU,CAAC5pD,IAA3B;;AACA,YAAI4pD,UAAU,CAACzyC,KAAf,EAAsB;AACpB0yC,uBAAa,IAAI,OAAOD,UAAU,CAACzyC,KAAlB,GAA0B,GAA3C;AACD;;AACD+wC,gBAAQ,GAAG0B,UAAU,CAACjtD,cAAX,CAA0B,UAA1B,IAAwCitD,UAAU,CAAC1B,QAAnD,GAA8D,IAAzE;AACAzsC,cAAM,GAAGmuC,UAAU,CAACjtD,cAAX,CAA0B,QAA1B,IAAsCitD,UAAU,CAACnuC,MAAjD,GAA0DA,MAAnE;AACD;;AACD2oC,aAAO,CAACpoD,IAAR,CAAa;AACXgE,YAAI,EAAE6pD,aADK;AAEX3B,gBAAQ,EAAEA;AAFC,OAAb;AAIA7D,gBAAU,CAACroD,IAAX,CAAgB0f,EAAE,CAACD,MAAH,CAAUA,MAAV,CAAhB;AACD;AACF;;AAED,WAAS0tC,WAAT,GAAuB;AACrBG,qCAAiC;AACjCxX,QAAI,CAACqX,WAAL,CAAiB;AACf/E,aAAO,EAAEA,OADM;AAEfC,gBAAU,EAAEA;AAFG,KAAjB;AAID;;AAED,WAAS0F,iBAAT,GAA6B;AAC3BxmC,WAAO,CAAC+N,eAAR;AACD;;AAED,WAASq4B,uBAAT,CAAiC3yB,GAAjC,EAAsC;AACpC,QAAIgzB,SAAS,GAAGhzB,GAAG,CAACjY,IAApB;;AACA,QAAIkM,SAAS,CAAC9C,UAAd,EAA0B;AACxB2pB,UAAI,CAACoV,cAAL;AACApV,UAAI,CAAC6U,YAAL,CAAkBqD,SAAlB;AACD,KAHD,MAGO;AACL,UAAIjrC,IAAI,GAAGwE,OAAO,CAAC4O,OAAR,EAAX;AACA2f,UAAI,CAACyV,cAAL,CAAoB0C,MAAM,CAAClrC,IAAD,EAAOirC,SAAP,CAA1B,EAA6C,CAA7C;AACD;AACF;;AAED,WAASE,QAAT,CAAkBr3B,SAAlB,EAA6BH,KAA7B,EAAoC;AAClC,QAAIy3B,OAAO,GAAG,EAAd;;AACA,QAAIl/B,SAAS,CAAC3C,WAAd,EAA2B;AACzB,UAAIoK,KAAK,IAAI,IAAb,EAAmB;AACjBA,aAAK,GAAG2zB,QAAR;AACD;;AACD8D,aAAO,CAACnuD,IAAR,CAAa02B,KAAb;AACD;;AACDlP,cAAU,CAACjO,OAAX,CAAmB,UAASnZ,IAAT,EAAe;AAChC+tD,aAAO,CAACnuD,IAAR,CAAa62B,SAAS,CAACz2B,IAAD,CAAtB;AACD,KAFD;AAGA,WAAO+tD,OAAP;AACD;;AAED,WAASF,MAAT,CAAgBlrC,IAAhB,EAAsB2T,KAAtB,EAA6B;AAC3B,QAAIy3B,OAAO,GAAG,EAAd;;AACA,QAAIl/B,SAAS,CAAC3C,WAAd,EAA2B;AACzB6hC,aAAO,CAACnuD,IAAR,CAAa02B,KAAb;AACD;;AACDlP,cAAU,CAACjO,OAAX,CAAmB,UAASnZ,IAAT,EAAe;AAChC+tD,aAAO,CAACnuD,IAAR,CAAa+iB,IAAI,CAAC3iB,IAAD,CAAJ,CAAWs2B,KAAX,CAAb;AACD,KAFD;AAGA,WAAOy3B,OAAP;AACD;;AAED,WAASC,OAAT,CAAiBpB,GAAjB,EAAsB;AACpB,SAAK,IAAI5vD,CAAC,GAAG6xB,SAAS,CAAC3C,WAAV,GAAwB,CAAxB,GAA4B,CAApC,EAAuCpuB,GAAG,GAAG8uD,GAAG,CAAC3vD,MAAtD,EAA8DD,CAAC,GAAGc,GAAlE,EAAuEd,CAAC,EAAxE,EAA4E;AAC1E,UAAI4vD,GAAG,CAAC5vD,CAAD,CAAH,IAAU,IAAd,EAAoB,OAAO,KAAP;AACrB;;AACD,WAAO,IAAP;AACD;;AAED,WAASixD,gBAAT,CAA0Bx3B,SAA1B,EAAqC;AACnC,QAAIs3B,OAAO,GAAGD,QAAQ,CAACr3B,SAAD,CAAtB;AACA,QAAIu3B,OAAO,CAACD,OAAD,CAAX,EAAsB;;AACtB,QAAIl/B,SAAS,CAAC9C,UAAd,EAA0B;AACxB2pB,UAAI,CAAC0V,aAAL,CAAmB2C,OAAnB,EAA4B9D,QAA5B;AACAA,cAAQ;AACT,KAHD,MAGO;AACLvU,UAAI,CAACyV,cAAL,CAAoB4C,OAApB,EAA6B,CAA7B;AACA9D,cAAQ;AACT;AACF;;AAED,WAASkD,kBAAT,CAA4BvyB,GAA5B,EAAiC;AAC/BqzB,oBAAgB,CAACrzB,GAAG,CAACjY,IAAL,CAAhB;AACD;;AAED,WAASyqC,oBAAT,CAA8BxyB,GAA9B,EAAmC;AACjC,QAAIqvB,QAAQ,GAAGrvB,GAAG,CAACjY,IAAJ,CAAS2T,KAAxB;AACA,QAAIy3B,OAAO,GAAGD,QAAQ,CAAClzB,GAAG,CAACjY,IAAJ,CAAS8T,SAAV,EAAqBwzB,QAArB,CAAtB;;AACA,QAAIp7B,SAAS,CAAC9C,UAAd,EAA0B;AACxB2pB,UAAI,CAACyV,cAAL,CAAoB4C,OAApB,EAA6B9D,QAA7B;AACD,KAFD,MAEO;AACLvU,UAAI,CAACyV,cAAL,CAAoB4C,OAApB,EAA6B,CAA7B;AACD;AACF;;AAED,WAASV,gBAAT,CAA0BzyB,GAA1B,EAA+B;AAC7B,QAAIjY,IAAI,GAAGiY,GAAG,CAACjY,IAAf;AACA,QAAI1lB,MAAM,GAAGkqB,OAAO,CAAC0N,SAAR,CAAkBzN,UAAlB,CAAb;AACA,QAAI2mC,OAAJ;;AAEA,QAAIl/B,SAAS,CAAC9C,UAAd,EAA0B;AACxB,UAAImiC,QAAQ,GAAG,EAAf;AACAjE,cAAQ,GAAG,CAAX;;AACA,aAAOA,QAAQ,GAAGhtD,MAAlB,EAA0BgtD,QAAQ,EAAlC,EAAsC;AACpCiE,gBAAQ,CAACtuD,IAAT,CAAciuD,MAAM,CAAClrC,IAAD,EAAOsnC,QAAP,CAApB;AACD;;AACDvU,UAAI,CAAC8W,KAAL;AACA9W,UAAI,CAAC+W,cAAL,CAAoByB,QAApB,EAA8B,CAA9B;AACD,KARD,MAQO;AACLH,aAAO,GAAGF,MAAM,CAAClrC,IAAD,EAAO1lB,MAAM,GAAG,CAAhB,CAAhB;AACAy4C,UAAI,CAACyV,cAAL,CAAoB4C,OAApB,EAA6B,CAA7B;AACA9D,cAAQ,GAAGhtD,MAAX;AACD;AACF;;AAED,WAASqwD,oBAAT,CAA8B1yB,GAA9B,EAAmC;AACjC,QAAIuzB,UAAU,GAAGhnC,OAAO,CAAC0N,SAAR,CAAkBzN,UAAlB,CAAjB;AACA6iC,YAAQ,GAAGkE,UAAX;;AACA,QAAIt/B,SAAS,CAAC9C,UAAd,EAA0B;AACxB2pB,UAAI,CAACmX,cAAL,CAAoBsB,UAApB;AACD,KAFD,MAEO;AACLzY,UAAI,CAACyV,cAAL,CAAoB0C,MAAM,CAACjzB,GAAG,CAACjY,IAAL,EAAWwrC,UAAU,GAAG,CAAxB,CAA1B,EAAsD,CAAtD;AACD;AACF;;AAED,WAAS5xB,sBAAT,GAAkC,CAkBjC;AAjBC;;;;;;;;;;;;;;AAmBF;;;AACAzE,YAAU,GAAG;AACX;;;AAGAhB,uBAAmB,EAAE,+BAAW;AAC9BlrB,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACA8I,4BAAsB;AACtBwwB,iBAAW;AACZ,KARU;AAUX7gD,UAAM,EAAE,kBAAW;AACjB,UAAIwpC,IAAJ,EAAUA,IAAI,CAACxpC,MAAL;AACX,KAZU;AAcX6pB,WAAO,EAAE,iBAASq4B,SAAT,EAAoB;AAC3B,UAAIzrC,IAAI,GAAGwE,OAAO,CAAC4O,OAAR,EAAX;AACA,UAAIh1B,MAAM,GAAG,EAAb;AACAqtD,eAAS,CAACj1C,OAAV,CAAkB,UAASnZ,IAAT,EAAe;AAC/Be,cAAM,CAACf,IAAD,CAAN,GAAe2iB,IAAI,CAAC3iB,IAAD,CAAnB;AACD,OAFD;AAGA,aAAOe,MAAP;AACD,KArBU;;AAuBX;;;AAGA+7B,mCAA+B,EAAE6wB,iBA1BtB;AA4BXjC,iBAAa,EAAE,uBAASkB,GAAT,EAAcyB,GAAd,EAAmB5oD,GAAnB,EAAwB;AACrC;AACA,UAAIopB,SAAS,CAAC3C,WAAd,EAA2BmiC,GAAG;AAC9B,UAAI3mC,QAAQ,GAAGN,UAAU,CAACinC,GAAD,CAAzB;;AAEA,UAAIzB,GAAG,KAAK3C,QAAZ,EAAsB;AACpB;AACA,YAAIxkD,GAAG,KAAK,EAAZ,EAAgB;AAChB,YAAIqZ,MAAM,GAAG,EAAb;AACAA,cAAM,CAAC4I,QAAD,CAAN,GAAmBjiB,GAAnB;AACA0hB,eAAO,CAAC+N,eAAR,CAAwB9N,UAAxB,EAAoCtI,MAApC;AACA;AACD;;AACDqI,aAAO,CAACwP,aAAR,CAAsBi2B,GAAtB,EAA2BllC,QAA3B,EAAqCjiB,GAArC;AACD,KA1CU;AA4CXsmD,iBAAa,EAAE,uBAAS9B,QAAT,EAAmBwB,QAAnB,EAA6B;AAC1C;AACA,UAAI58B,SAAS,CAAC3C,WAAd,EAA2Bu/B,QAAQ;AACnC,UAAI/jC,QAAQ,GAAGN,UAAU,CAACqkC,QAAD,CAAzB;AACA,aAAOtkC,OAAO,CAACyP,gBAAR,CAAyBqzB,QAAzB,EAAmCviC,QAAnC,CAAP;AACD,KAjDU;AAmDX;AACA5d,oBAAgB,EAAE,4BAAW;AAC3B,aAAO04B,QAAP;AACD,KAtDU;AAwDX;AACA1E,WAAO,EAAE,mBAAW;AAClB,aAAO4X,IAAP;AACD,KA3DU;AA6DX;AACAj0C,aAAS,EAAE,qBAAW;AACpB;AACA,UAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB0vB,SAAnB,CAAb,CAFoB,CAGpB;;AACA9tB,YAAM,CAACqrB,UAAP,GAAoB47B,OAApB;;AACA,UAAI,CAACn5B,SAAS,CAAC1H,OAAf,EAAwB;AACtB;AACA;AACApmB,cAAM,CAAC+qB,SAAP,GAAmB3E,OAAO,CAAC4P,aAAR,EAAnB;AACD;;AACD,aAAOh2B,MAAP;AACD;AAzEU,GAAb;AA4EAuK,YAAU,GAzV+D,CA2VzE;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;ACtWD;AACA;AAEA,IAAIw2B,sBAAsB,GAAG;AAC3B,oBAAkB,WADS;AAE3B,oBAAkB,WAFS;AAG3B,oBAAkB,eAHS;AAI3B,oBAAkB,6CAJS;AAK3B,oBAAkB,YALS;AAM3B,qBAAmB,oCANQ;AAO3B,oBAAkB,cAPS;AAQ3B,oBAAkB;AARS,CAA7B;;AAWA,SAASC,WAAT,GAAuB;AACrB,MAAIrjD,KAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0B,eAA1B,CAAZ;;AACA,MAAI,CAACA,KAAL,EAAY;AACV,WAAO,IAAP;AACD;;AACD,MAAIsjD,UAAU,GAAGtjD,KAAK,CAAC,CAAD,CAAtB;AACA,MAAIujD,eAAe,GAAGD,UAAU,CAACnjD,KAAX,CAAiB,IAAjB,CAAtB;;AAEA,MAAIojD,eAAe,CAAC,CAAD,CAAf,KAAuB,WAA3B,EAAwC;AACtC,WAAOA,eAAe,CAAC,CAAD,CAAtB;AACD,GAFD,MAEO,IAAIA,eAAe,CAAC,CAAD,CAAf,CAAmBvjD,KAAnB,CAAyB,UAAzB,CAAJ,EAA0C;AAC/C,QAAIwjD,KAAK,GAAGzU,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0B,0BAA1B,CAAZ;AAAA,QACEyjD,IAAI,GAAG,EADT;;AAEA,QAAIH,UAAU,CAACtjD,KAAX,CAAiB,OAAjB,CAAJ,EAA+B;AAC7ByjD,UAAI,GAAG,OAAP;AACD,KAFD,MAEO,IAAIH,UAAU,CAACtjD,KAAX,CAAiB,aAAjB,CAAJ,EAAqC;AAC1CyjD,UAAI,GAAG,IAAP;AACD,KAFM,MAEA,IAAIH,UAAU,CAACtjD,KAAX,CAAiB,YAAjB,CAAJ,EAAoC;AACzCyjD,UAAI,GAAG,IAAP;AACD;;AACD,WAAOL,sBAAsB,CAACI,KAAK,CAAC,CAAD,CAAN,CAAtB,GAAmC,GAAnC,GAAyCC,IAAhD;AACD,GAXM,MAWA,IAAIF,eAAe,CAAC,CAAD,CAAf,CAAmBvjD,KAAnB,CAAyB,MAAzB,CAAJ,EAAsC;AAC3C,WAAOujD,eAAe,CAAC7xC,IAAhB,CAAqB,GAArB,CAAP;AACD;;AAED,SAAO,IAAP;AACD;;AAEc;AACb;AACA;AACAgyC,UAAQ,EAAG,UAASzyD,CAAT,EAAY;AACrB,WAAQ,6UAAD,CAAgVsC,IAAhV,CAAqVtC,CAArV,KAA4V,ykDAAD,CAA4kDsC,IAA5kD,CAAilDtC,CAAC,CAAC0yD,MAAF,CAAS,CAAT,EAAY,CAAZ,CAAjlD,CAAlW;AACD,GAFS,CAEP5U,SAAS,CAACE,SAAV,IAAuBF,SAAS,CAAC6U,MAAjC,IAA2CrzD,MAAM,CAACszD,KAF3C,CAHG;AAObC,cAAY,EAAE,SAASA,YAAT,GAAwB;AACpC,QAAIC,WAAW,GAAG,mBAAlB;AAAA,QACEC,OAAO,GAAG,gCADZ;AAAA,QAEEhV,WAAW,GAAG,4GAFhB;AAAA,QAGEiV,OAAO,GAAG,2BAHZ;AAAA,QAIEC,UAAU,GAAG,0CAJf;AAAA,QAKEC,WAAW,GAAG,uDALhB;AAAA,QAMEC,SAAS,GAAG,qDANd;AAAA,QAOEC,SAAS,GAAG,kEAPd;AAAA,QAQEC,kBAAkB,GAAG,uEARvB;AAAA,QASEC,mBAAmB,GAAG,gDATxB;AAAA,QAUEC,YAAY,GAAG,6CAVjB;AAAA,QAWExkD,KAXF;AAaAA,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BskD,kBAA1B,CAAR;;AACA,QAAItkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAE,oBADJ;AAELp0D,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAE1kD,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiBA,KAAK,CAAC,CAAD,CAAtB,GAA4B,GAA5B,GAAkCA,KAAK,CAAC,CAAD;AAHzC,OAAP;AAKD;;AACDA,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0B+jD,WAA1B,CAAR;;AACA,QAAI/jD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAEzkD,KAAK,CAAC,CAAD,CADT;AAEL3P,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAErB,WAAW;AAHb,OAAP;AAKD;;AACDrjD,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BgkD,OAA1B,CAAR;;AACA,QAAIhkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,UAAI2kD,OAAO,GAAG5V,SAAS,CAAC4V,OAAxB;AAAA,UACEC,SAAS,GAAG,EADd;;AAEA,UAAID,OAAO,IAAIA,OAAO,CAAC5yD,MAAR,IAAkB,CAAjC,EAAoC;AAClC6yD,iBAAS,GAAG,MAAMD,OAAO,CAAC7xD,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAAN,GAA4B,GAA5B,GAAkC6xD,OAAO,CAAC7xD,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAAlC,GAAwD,GAAxD,GAA8D6xD,OAAO,CAAC7xD,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAA9D,GAAoF,GAAhG;AACD;;AACD,aAAO;AACL2xD,eAAO,EAAEzkD,KAAK,CAAC,CAAD,CADT;AAEL3P,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiB4kD,SAFrB;AAGLF,aAAK,EAAErB,WAAW;AAHb,OAAP;AAKD;;AACDrjD,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BukD,mBAA1B,CAAR;;AACA,QAAIvkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAE,SADJ;AAELp0D,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAE1kD,KAAK,CAAC,CAAD;AAHP,OAAP;AAKD;;AACDA,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BwkD,YAA1B,CAAR;;AACA,QAAIxkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAE,SADJ;AAELp0D,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAE1kD,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiBA,KAAK,CAAC,CAAD,CAAtB,GAA4B,GAA5B,GAAkCA,KAAK,CAAC,CAAD;AAHzC,OAAP;AAKD;;AACDA,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BgvC,WAA1B,CAAR;;AACA,QAAIhvC,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAEzkD,KAAK,CAAC,CAAD,CADT;AAEL3P,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiBA,KAAK,CAAC,CAAD,CAF1B;AAGL0kD,aAAK,EAAErB,WAAW;AAHb,OAAP;AAKD;;AACDrjD,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BikD,OAA1B,CAAR;;AACA,QAAIjkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,UAAI6kD,cAAc,GAAG9V,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0B,gCAA1B,CAArB;AACA,aAAO;AACLykD,eAAO,EAAEzkD,KAAK,CAAC,CAAD,CADT;AAEL3P,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAEtB,sBAAsB,CAACyB,cAAc,CAAC,CAAD,CAAf,CAAtB,GAA4C,GAA5C,GAAkD9V,SAAS,CAAC+V,QAA5D,GAAuE,GAAvE,GAA6E/V,SAAS,CAACgW;AAHzF,OAAP;AAKD;;AACD/kD,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BkkD,UAA1B,CAAR;;AACA,QAAIlkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAEzkD,KAAK,CAAC,CAAD,CADT;AAEL3P,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAErB,WAAW;AAHb,OAAP;AAKD;;AACDrjD,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BmkD,WAA1B,CAAR;;AACA,QAAInkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAE,eADJ;AAELp0D,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAE1kD,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiB,KAAjB,GAAyB,GAAzB,GAA+BA,KAAK,CAAC,CAAD;AAHtC,OAAP;AAKD;;AACDA,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BokD,SAA1B,CAAR;;AACA,QAAIpkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAE,eADJ;AAELp0D,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAE1kD,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiB,KAAjB,GAAyB,GAAzB,GAA+BA,KAAK,CAAC,CAAD;AAHtC,OAAP;AAKD;;AACDA,SAAK,GAAG+uC,SAAS,CAACE,SAAV,CAAoBjvC,KAApB,CAA0BqkD,SAA1B,CAAR;;AACA,QAAIrkD,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAlB,EAAuB;AACrB,aAAO;AACLykD,eAAO,EAAE,eADJ;AAELp0D,eAAO,EAAE2P,KAAK,CAAC,CAAD,CAFT;AAGL0kD,aAAK,EAAE1kD,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiB,KAAjB,GAAyB,GAAzB,GAA+BA,KAAK,CAAC,CAAD;AAHtC,OAAP;AAKD;;AACD,WAAO;AACLykD,aAAO,EAAE,EADJ;AAELp0D,aAAO,EAAE0+C,SAAS,CAACiW,UAFd;AAGLN,WAAK,EAAE;AAHF,KAAP;AAKD;AAxHY,CAAf,E;;AC1CA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuHA;;AACA,IAAIZ,aAAY,GAAGmB,cAAc,CAACnB,YAAlC;AAAA,IAEEoB,SAAS,GAAGD,cAAc,CAACvB,QAF7B;AAAA,IAGEyB,QAAQ,GAAGF,cAAc,CAACnB,YAAf,EAHb;AAAA,IAKEsB,WALF;;AAOA,SAASC,cAAT,CAAuBC,gBAAvB,EAAyCC,qBAAzC,EAAgEnhC,OAAhE,EAAyE;AACvE,MAAItyB,CAAC,GAAG,CAAR;AAAA,MACE0zD,WADF;AAAA,MAEE3vD,MAFF;AAAA,MAGE4vD,UAAU,GAAG,CAHf;AAAA,MAIEC,WAAW,GAAG,EAJhB;AAAA,MAKEC,SALF;AAAA,MAMEC,WANF;AAAA,MAOEhzD,GAPF;AAAA,MAQE4uD,IAAI,GAAG8D,gBAAgB,CAACO,oBAAjB,CAAsC,IAAtC,CART;AAUAP,kBAAgB,CAAC7lC,KAAjB,CAAuBgpB,OAAvB,GAAiC,EAAjC;;AAEA,WAASqd,UAAT,CAAoBpzC,KAApB,EAA2B;AACzB,QAAIizC,SAAS,GAAGL,gBAAgB,CAACO,oBAAjB,CAAsC,IAAtC,EAA4C,CAA5C,CAAhB;AAAA,QACEE,IAAI,GAAGJ,SAAS,CAACK,WAAV,CAAsBhM,QAAQ,CAACC,aAAT,CAAuB,IAAvB,CAAtB,CADT;AAGA8L,QAAI,CAACE,SAAL,GAAiBvzC,KAAjB;AACAgzC,eAAW,CAAChzC,KAAD,CAAX,GAAqB+yC,UAAU,EAA/B;AACD;;AAED,WAASS,OAAT,CAAiBC,QAAjB,EAA2B;AACzBA,YAAQ,GAAGA,QAAQ,IAAI,CAAvB;AACA,QAAIC,EAAE,GAAGd,gBAAgB,CAACU,WAAjB,CAA6BhM,QAAQ,CAACC,aAAT,CAAuB,IAAvB,CAA7B,CAAT;AAAA,QACEnoD,CADF;;AAGA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGq0D,QAAhB,EAA0Br0D,CAAC,EAA3B,EAA+B;AAC7Bs0D,QAAE,CAACJ,WAAH,CAAehM,QAAQ,CAACC,aAAT,CAAuB,IAAvB,CAAf;AACD;;AACD,WAAOmM,EAAP;AACD;;AAED,WAASC,UAAT,CAAoB3tD,IAApB,EAA0B6lB,OAA1B,EAAmCmjC,GAAnC,EAAwC;AACtC,QAAIqE,IAAJ;AACArE,OAAG,GAAGA,GAAG,IAAI8D,WAAb;AACAO,QAAI,GAAGrE,GAAG,CAACmE,oBAAJ,CAAyB,IAAzB,EAA+BH,WAAW,CAAChtD,IAAD,CAA1C,CAAP;;AACA,QAAI,OAAO6lB,OAAP,KAAmB,QAAnB,IAA+BA,OAAO,CAACzrB,KAAR,CAAc,CAAd,EAAiB,CAAjB,MAAwB,GAA3D,EAAgE;AAC9DizD,UAAI,CAACE,SAAL,GAAiB1nC,OAAjB;AACD,KAFD,MAEO;AACLwnC,UAAI,CAACO,WAAL,GAAmB/nC,OAAnB;AACD;AACF;;AAED,WAASgoC,eAAT,GAA2B;AACzB,QAAIz0D,CAAJ;AAAA,QAAOyM,CAAP;AAAA,QACEvL,CADF;AAAA,QAEE0uD,GAFF;AAAA,QAGE8E,QAAQ,GAAGhF,IAAI,CAACzvD,MAHlB;AAAA,QAIEg0D,IAJF;AAAA,QAKEU,UALF;AAAA,QAMEC,gBAAgB,GAAGtB,WAAW,CAACS,oBAAZ,CAAiC,IAAjC,CANrB;AAAA,QAOEc,KAPF;AAAA,QAQE5yD,OARF;AAAA,QASE6yD,uBAAuB,GAAGxyC,EAAE,CAACD,MAAH,CAAU,MAAV,CAT5B;AAAA,QAUE0yC,uBAAuB,GAAGzyC,EAAE,CAACD,MAAH,CAAU,GAAV,CAV5B;;AAYA,aAASkpB,SAAT,CAAmBvrC,CAAnB,EAAsB;AACpB,aAAOoB,IAAI,CAACwqC,KAAL,CAAW5rC,CAAX,MAAkBA,CAAzB;AACD;;AAED,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGyzD,qBAAqB,CAACxzD,MAAtC,EAA8CD,CAAC,EAA/C,EAAmD;AACjDkB,OAAC,GAAGuyD,qBAAqB,CAACzzD,CAAD,CAAzB;AACA20D,gBAAU,GAAGf,WAAW,CAAC1yD,CAAC,CAAC0F,IAAH,CAAxB;;AACA,UAAI1F,CAAC,CAAC8zD,OAAF,KAAc,KAAlB,EAAyB;AACvBpF,WAAG,GAAGF,IAAI,CAAC,CAAD,CAAV;AACAuE,YAAI,GAAGrE,GAAG,CAACmE,oBAAJ,CAAyB,IAAzB,EAA+BY,UAA/B,CAAP;AACAC,wBAAgB,CAACD,UAAD,CAAhB,CAA6BR,SAA7B,GAAyCF,IAAI,CAACE,SAA9C;AACD,OAJD,MAIO;AACLU,aAAK,GAAG,CAAR;;AACA,aAAKpoD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGioD,QAAhB,EAA0BjoD,CAAC,EAA3B,EAA+B;AAC7BmjD,aAAG,GAAGF,IAAI,CAACjjD,CAAD,CAAV;AACAwnD,cAAI,GAAGrE,GAAG,CAACmE,oBAAJ,CAAyB,IAAzB,EAA+BY,UAA/B,CAAP;AACAE,eAAK,IAAK,CAACZ,IAAI,CAACO,WAAhB;AACD;;AACDvyD,eAAO,GAAG4yD,KAAK,IAAIH,QAAQ,GAAG,CAAf,CAAf;;AACA,YAAIxzD,CAAC,CAAC+zD,SAAN,EAAiB;AACfhzD,iBAAO,GAAGf,CAAC,CAAC+zD,SAAF,CAAYhzD,OAAZ,CAAV;AACD,SAFD,MAEO;AACL,cAAIspC,SAAS,CAACtpC,OAAD,CAAb,EAAwB;AACtBA,mBAAO,GAAG8yD,uBAAuB,CAACF,KAAK,IAAIH,QAAQ,GAAG,CAAf,CAAN,CAAjC;AACD,WAFD,MAEO;AACLzyD,mBAAO,GAAG6yD,uBAAuB,CAACD,KAAK,IAAIH,QAAQ,GAAG,CAAf,CAAN,CAAjC;AACD;AACF;;AACDE,wBAAgB,CAACD,UAAD,CAAhB,CAA6BH,WAA7B,GAA2CvyD,OAA3C;AACD;AACF;AACF;;AAED,MAAIytD,IAAI,CAACzvD,MAAL,KAAgB,CAApB,EAAuB;AACrBm0D,WAAO;AACPJ,cAAU,CAAC,SAAD,CAAV;AACAA,cAAU,CAAC,SAAD,CAAV;AACAA,cAAU,CAAC,QAAD,CAAV;AACAA,cAAU,CAAC,MAAD,CAAV;AACAA,cAAU,CAAC,QAAD,CAAV;AACAA,cAAU,CAAC,QAAD,CAAV;;AACA,SAAKh0D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGyzD,qBAAqB,CAACxzD,MAAtC,EAA8CD,CAAC,EAA/C,EAAmD;AACjDg0D,gBAAU,CAACP,qBAAqB,CAACzzD,CAAD,CAArB,CAAyB4G,IAA1B,CAAV;AACD;;AACD0sD,eAAW,GAAGc,OAAO,CAACT,UAAD,CAArB;AACAL,eAAW,CAAC5iD,SAAZ,GAAwB,SAAxB;AACD,GAbD,MAaO;AACLmjD,aAAS,GAAGnE,IAAI,CAAC,CAAD,CAAhB;AACAoE,eAAW,GAAGD,SAAS,CAACE,oBAAV,CAA+B,IAA/B,CAAd;;AACA,SAAK/zD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGgzD,WAAW,CAAC7zD,MAA9B,EAAsCD,CAAC,GAAGc,GAA1C,EAA+Cd,CAAC,EAAhD,EAAoD;AAClD4zD,iBAAW,CAACE,WAAW,CAAC9zD,CAAD,CAAX,CAAem0D,SAAhB,CAAX,GAAwCR,UAAU,EAAlD;AACD;AACF;;AAEDD,aAAW,GAAGU,OAAO,CAACT,UAAD,CAArB;AACAD,aAAW,CAAChjD,SAAZ,GAAwB,QAAxB;;AAEA,OAAK1Q,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,CAAhB,EAAmBA,CAAC,EAApB,EAAwB;AACtB+D,UAAM,GAAGuuB,OAAO,CAACtyB,CAAD,CAAhB;AACAu0D,cAAU,CAACxwD,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,CAAV;AACAwwD,cAAU,CAACxwD,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,EAAuBuvD,WAAvB,CAAV;AACD;;AAED,OAAKtzD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsyB,OAAO,CAACryB,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC+D,UAAM,GAAGuuB,OAAO,CAACtyB,CAAD,CAAhB;AACAu0D,cAAU,CAACxwD,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,CAAV;AACD;;AACD0wD,iBAAe;AAChB;;AAED,SAASS,MAAT,CAAeC,iBAAf,EAAkCC,eAAlC,EAAmDC,cAAnD,EAAmEC,YAAnE,EAAiF;AAC/E,MAAIC,eAAe,GAAGJ,iBAAiB,CAACn0D,KAAlB,EAAtB;AAAA,MACEsxB,OAAO,GAAG,EADZ;AAAA,MAEEkjC,YAAY,GAAGxD,aAAY,EAF7B;AAAA,MAGEiD,SAAS,GAAG3yC,EAAE,CAACrT,IAAH,CAAQoT,MAAR,CAAe,gBAAf,CAHd;AAAA,MAIEozC,WAJF;;AAMAnjC,SAAO,CAAC1vB,IAAR,CAAa,CAAC,SAAD,EAAY4yD,YAAY,CAAC7C,OAAzB,CAAb;AACArgC,SAAO,CAAC1vB,IAAR,CAAa,CAAC,SAAD,EAAY4yD,YAAY,CAACj3D,OAAzB,CAAb;AACA+zB,SAAO,CAAC1vB,IAAR,CAAa,CAAC,QAAD,EAAW4yD,YAAY,CAAC5C,KAAxB,CAAb;AACAtgC,SAAO,CAAC1vB,IAAR,CAAa,CAAC,MAAD,EAASqyD,SAAS,CAAC,IAAI/uB,IAAJ,EAAD,CAAlB,CAAb;AAEAuvB,aAAW,GAAG,cAAcC,GAAG,CAACn3D,OAAJ,CAAYo3D,IAAZ,CAAiBC,MAAjB,CAAwBnsC,GAAtC,GAA4C,gDAA5C,GAA+FisC,GAAG,CAACn3D,OAAJ,CAAYo3D,IAAZ,CAAiBC,MAAjB,CAAwBC,SAAvH,GAAmI,MAAjJ;;AACA,MAAIH,GAAG,CAACn3D,OAAJ,CAAYo3D,IAAZ,CAAiBG,KAArB,EAA4B;AAC1BL,eAAW,IAAI,eAAf;AACD;;AACDnjC,SAAO,CAAC1vB,IAAR,CAAa,CAAC,QAAD,EAAW6yD,WAAX,CAAb;AACAnjC,SAAO,CAAC1vB,IAAR,CAAa,CAAC,QAAD,EAAW8yD,GAAG,CAACn3D,OAAJ,CAAYo3D,IAAZ,CAAiBI,MAA5B,CAAb;AAEA,MAAIV,cAAJ,EAAoBA,cAAc;AAElCW,cAAY,CAACT,eAAe,CAAC9vC,KAAhB,EAAD,CAAZ;;AAEA,WAASuwC,YAAT,CAAsB90D,CAAtB,EAAyB;AACvBA,KAAC,CAAC6vC,GAAF,CAAMklB,YAAN;;AAEA,aAASA,YAAT,CAAsBlyD,MAAtB,EAA8B;AAC5B,UAAI7C,CAAC,CAAC+zD,SAAN,EAAiB;AACf3iC,eAAO,CAAC1vB,IAAR,CAAa,CAAC1B,CAAC,CAAC0F,IAAH,EAAS1F,CAAC,CAAC+zD,SAAF,CAAYlxD,MAAZ,CAAT,CAAb;AACD,OAFD,MAEO;AACLuuB,eAAO,CAAC1vB,IAAR,CAAa,CAAC1B,CAAC,CAAC0F,IAAH,EAAS7C,MAAT,CAAb;AACD;;AAED,UAAIwxD,eAAe,CAACt1D,MAAhB,GAAyB,CAA7B,EAAgC;AAC9B+1D,oBAAY,CAACT,eAAe,CAAC9vC,KAAhB,EAAD,CAAZ;AACD,OAFD,MAEO;AACL,YAAI6vC,YAAJ,EAAkBA,YAAY;AAC9B,YAAIF,eAAJ,EAAqBA,eAAe,CAAC9iC,OAAD,CAAf;AACtB;AACF;AACF;;AAED,SAAOA,OAAP;AACD;;AAED,SAASye,IAAT,CAAaokB,iBAAb,EAAgC3B,gBAAhC,EAAkD4B,eAAlD,EAAmEC,cAAnE,EAAmFC,YAAnF,EAAiG;AAC/F,MAAIhjC,OAAJ;;AACA4iC,QAAK,CAACC,iBAAD,EAAoB,UAAS7iC,OAAT,EAAkB;AACzCihC,kBAAa,CAACC,gBAAD,EAAmB2B,iBAAnB,EAAsC7iC,OAAtC,CAAb;;AACA8iC,mBAAe,CAAC9iC,OAAD,CAAf;AACD,GAHI,EAGF+iC,cAHE,EAGcC,YAHd,CAAL;;AAIA,SAAOhjC,OAAP;AACD,C,CAED;;;AACe;AACb;;;AAGA,MAAIqgC,OAAJ,GAAc;AACZ,WAAOU,QAAP;AACD,GANY;;AAOb;;;;AAIArB,cAAY,EAAE,wBAAW;AACvBqB,YAAQ,GAAGrB,aAAY,EAAvB;AACA,WAAOqB,QAAP;AACD,GAdY;;AAeb,MAAIzB,QAAJ,GAAe;AACb,WAAOwB,SAAP;AACD,GAjBY;;AAkBb;AACAriB,KAAG,EAAE,aAASokB,iBAAT,EAA4B3B,gBAA5B,EAA8C4B,eAA9C,EAA+DC,cAA/D,EAA+EC,YAA/E,EAA6F;AAChGvkB,QAAG,CAACokB,iBAAD,EAAoB3B,gBAApB,EAAsC4B,eAAtC,EAAuDC,cAAvD,EAAuEC,YAAvE,CAAH;AACD,GArBY;AAsBb;AACAJ,OAAK,EAAE,eAASC,iBAAT,EAA4BC,eAA5B,EAA6CC,cAA7C,EAA6DC,YAA7D,EAA2E;AAChF,WAAOJ,MAAK,CAACC,iBAAD,EAAoBC,eAApB,EAAqCC,cAArC,EAAqDC,YAArD,CAAZ;AACD,GAzBY;AA0Bb;AACA/B,eAAa,EAAE,uBAASC,gBAAT,EAA2BC,qBAA3B,EAAkDnhC,OAAlD,EAA2D;AACxEihC,kBAAa,CAACC,gBAAD,EAAmBC,qBAAnB,EAA0CnhC,OAA1C,CAAb;AACD;AA7BY,CAAf,E;;ACrTA;AACA;;AAEA,IAAI4jC,QAAQ,GAAG,SAAXA,QAAW,CAASC,MAAT,EAAiB/5C,GAAjB,EAAsBrc,KAAtB,EAA6B;AAC1C,MAAIo2D,MAAM,CAACl2D,MAAP,GAAgB,CAApB,EAAuB;AACrB,WAAOk2D,MAAM,GAAG,GAAT,GAAe/5C,GAAf,GAAqB,GAArB,GAA2Brc,KAAlC;AACD;;AACD,SAAO,MAAMqc,GAAN,GAAY,GAAZ,GAAkBrc,KAAzB;AACD,CALD;;AAOe;AACbq2D,iBAAe,EAAE,2BAAW;AAC1B,QAAIpkC,6BAAM,CAACqkC,aAAP,IAAwB93D,8BAAO,CAACo3D,IAAR,CAAaW,QAAzC,EAAmD;AACjD,aAAOtkC,6BAAM,CAACqkC,aAAP,CAAqB93D,8BAAO,CAACo3D,IAAR,CAAaW,QAAlC,CAAP;AACD;;AACD,QAAIC,IAAI,GAAG93D,MAAM,CAAC+3D,QAAP,CAAgBD,IAA3B;AACA,QAAIE,IAAI,GAAGh4D,MAAM,CAAC+3D,QAAP,CAAgBE,QAA3B;AACA,QAAIC,MAAM,GAAGl4D,MAAM,CAAC+3D,QAAP,CAAgBG,MAA7B;AACA,QAAIC,QAAQ,GAAGn4D,MAAM,CAAC+3D,QAAP,CAAgBI,QAA/B;AACAD,UAAM,GAAGT,QAAQ,CAACS,MAAD,EAAS,mBAAT,EAA8B,MAA9B,CAAjB;AACA,WAAOC,QAAQ,GAAG,IAAX,GAAkBL,IAAlB,GAAyBE,IAAzB,GAAgCE,MAAvC;AACD;AAXY,CAAf,E;;ACVA;AACA;CAGA;;AACe,iEAAS77B,UAAT,EAAqB;AAClC,MAAIlsB,KAAJ,CADkC,CAElC;;AACA,MAAIioD,cAAc,GAAGp0B,cAAW,CAACmH,iBAAZ,EAArB;;AAEA,WAASktB,iBAAT,CAA2BhqB,YAA3B,EAAyC;AACvC+pB,kBAAc,CAACzsB,IAAf,CAAoB,eAApB,EAAqC;AACnCxjC,UAAI,EAAEkmC,YAD6B;AAEnC/sC,WAAK,EAAE6O,KAAK,CAACmW,GAAN,CAAU+nB,YAAV;AAF4B,KAArC;AAID;;AAED,WAASiqB,WAAT,CAAqBC,WAArB,EAAkC;AAChCH,kBAAc,CAACzsB,IAAf,CAAoB,SAApB,EAA+B;AAC7BxjC,UAAI,EAAEowD,WADuB;AAE7Bj3D,WAAK,EAAE+6B,UAAU,CAACsB,UAAX,CAAsB46B,WAAtB,EAAmCvyD,SAAnC;AAFsB,KAA/B;AAID,GAjBiC,CAmBlC;;;AACAoyD,gBAAc,CAACI,WAAf,CAA2B,UAA3B,EAAuC,YAAW;AAChD,QAAIve,IAAI,GAAG5d,UAAU,CAAC5xB,eAAX,CAA2BwkC,cAAtC;;AACA,QAAIgL,IAAI,IAAIA,IAAI,CAACwe,QAAjB,EAA2B;AACzBxe,UAAI,CAACwe,QAAL;AACD;AACF,GALD,EApBkC,CA2BlC;;AACAL,gBAAc,CAACI,WAAf,CAA2B,eAA3B,EAA4C,YAAW;AACrDJ,kBAAc,CAACzsB,IAAf,CAAoB,eAApB,EAAqC+sB,UAAS,CAACf,eAAV,EAArC;AACD,GAFD,EA5BkC,CAgClC;;AACAS,gBAAc,CAACI,WAAf,CAA2B,iBAA3B,EAA8C,UAASxqC,OAAT,EAAkB;AAC9D,QAAIqO,UAAU,IAAIA,UAAU,CAACs8B,eAA7B,EAA8C;AAC5Ct8B,gBAAU,CAACs8B,eAAX,CAA2B3qC,OAA3B;AACD;AACF,GAJD,EAjCkC,CAuClC;;AACAoqC,gBAAc,CAACI,WAAf,CAA2B,WAA3B,EAAwC,UAASxqC,OAAT,EAAkB;AACxD,QAAIqO,UAAU,IAAIA,UAAU,CAAC0R,SAA7B,EAAwC;AACtC1R,gBAAU,CAAC0R,SAAX,CAAqB/f,OAAO,CAACggB,OAA7B,EAAsChgB,OAAO,CAAC4qC,WAA9C;AACD;AACF,GAJD,EAxCkC,CA8ClC;;AACAR,gBAAc,CAACI,WAAf,CAA2B,eAA3B,EAA4C,YAAW;AACrD,QAAIn8B,UAAU,IAAIA,UAAU,CAAC5xB,eAA7B,EAA8C;AAC5C2tD,oBAAc,CAACzsB,IAAf,CAAoB,YAApB,EAAkCtP,UAAU,CAAC5xB,eAAX,CAA2Bg+B,KAA3B,EAAlC;AACD;AACF,GAJD,EA/CkC,CAqDlC;;AACA2vB,gBAAc,CAACI,WAAf,CAA2B,qBAA3B,EAAkD,YAAW;AAC3D,QAAIn8B,UAAU,IAAIA,UAAU,CAAC5xB,eAA7B,EAA8C;AAC5C2tD,oBAAc,CAACzsB,IAAf,CAAoB,kBAApB,EAAwCtP,UAAU,CAACr2B,SAAX,EAAxC;AACD;AACF,GAJD,EAtDkC,CA4DlC;;AACAoyD,gBAAc,CAACI,WAAf,CAA2B,eAA3B,EAA4C,YAAW;AACrD,QAAI/tD,eAAJ,EAAqBouD,UAArB;;AACA,QAAIx8B,UAAU,IAAIA,UAAU,CAAC5xB,eAA7B,EAA8C;AAC5CA,qBAAe,GAAG4xB,UAAU,CAAC5xB,eAA7B;AACAouD,gBAAU,GAAGx8B,UAAU,CAACw8B,UAAX,CAAsBthC,MAAtB,CAA6B9sB,eAAe,CAACouD,UAA7C,CAAb;AACAC,eAAS,CAACrC,KAAV,CAAgBoC,UAAhB,EAA4B,UAAShlC,OAAT,EAAkB;AAC5CvtB,eAAO,CAACiL,GAAR,CAAYsiB,OAAZ;AACAukC,sBAAc,CAACzsB,IAAf,CAAoB,kBAApB,EAAwC;AACtC9X,iBAAO,EAAEA,OAD6B;AAEtCglC,oBAAU,EAAEA;AAF0B,SAAxC;AAID,OAND;AAOD;AACF,GAbD,EA7DkC,CA4ElC;AACA;AACA;AACA;;AACAT,gBAAc,CAACI,WAAf,CAA2B,wBAA3B,EAAqD,UAASxqC,OAAT,EAAkB;AACrE,QAAIgI,SAAS,GAAGhI,OAAO,CAACgI,SAAxB;AAAA,QACErK,UAAU,GAAGqC,OAAO,CAACrC,UADvB;AAAA,QAEEtI,MAAM,GAAG,EAFX;AAAA,QAGE9hB,CAAC,GAAG,CAHN;AAAA,QAIE8sC,YAAY,GAAG,IAJjB;AAMAl+B,SAAK,CAAC0O,EAAN,CAASmX,SAAT,EAAoB,YAAW;AAC7B,UAAIrK,UAAJ,EAAgB;AACd,aAAKpqB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGoqB,UAAU,CAACnqB,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC8sC,sBAAY,GAAG1iB,UAAU,CAACpqB,CAAD,CAAzB;AACA8hB,gBAAM,CAACgrB,YAAD,CAAN,GAAuBl+B,KAAK,CAACmW,GAAN,CAAU+nB,YAAV,CAAvB;AACD;AACF;;AACD+pB,oBAAc,CAACzsB,IAAf,CAAoB3V,SAApB,EAA+B3S,MAA/B;AACD,KARD;AASD,GAhBD;AAkBA,MAAI01C,iBAAiB,GAAG,IAAxB,CAlGkC,CAmGlC;AACA;;AACAX,gBAAc,CAACI,WAAf,CAA2B,uBAA3B,EAAoD,UAASxqC,OAAT,EAAkB;AACpE,QAAIgI,SAAS,GAAGhI,OAAO,CAACgI,SAAxB;AAAA,QACEuiC,WAAW,GAAGvqC,OAAO,CAACuqC,WADxB;AAAA,QAEES,OAAO,GAAG38B,UAAU,CAACsB,UAAX,CAAsB46B,WAAtB,CAFZ;;AAIA,QAAI,CAACS,OAAL,EAAc;AACZ;AACD;;AACD1yD,WAAO,CAACiL,GAAR,CAAY,6BAA6BgnD,WAA7B,GAA2C,IAA3C,GAAkDviC,SAA9D;AAEAgjC,WAAO,CAACn6C,EAAR,CAAWmX,SAAX,EAAsB,UAASmJ,GAAT,EAAc;AAClC,UAAI45B,iBAAJ,EAAuB;AACrBX,sBAAc,CAACzsB,IAAf,CAAoB4sB,WAAW,GAAG,GAAd,GAAoBviC,SAAxC,EAAmDmJ,GAAnD;AACD;AACF,KAJD;AAKD,GAfD;AAiBAi5B,gBAAc,CAACI,WAAf,CAA2B,kBAA3B,EAA+C,UAASxqC,OAAT,EAAkB;AAC/D,QAAIgI,SAAS,GAAGhI,OAAO,CAACgI,SAAxB;AAAA,QACEuiC,WAAW,GAAGvqC,OAAO,CAACuqC,WADxB;AAAA,QAEErxC,IAAI,GAAG8G,OAAO,CAAC9G,IAFjB;AAAA,QAGE8xC,OAAO,GAAG38B,UAAU,CAACsB,UAAX,CAAsB46B,WAAtB,CAHZ;;AAKA,QAAI,CAACS,OAAL,EAAc;AACZ;AACD;;AAEDD,qBAAiB,GAAG,KAApB;AACAC,WAAO,CAACz9B,mBAAR,CAA4BvF,SAA5B,EAAuC9O,IAAvC;AACA6xC,qBAAiB,GAAG,IAApB;AACD,GAbD,EAtHkC,CAqIlC;;AACAX,gBAAc,CAACI,WAAf,CAA2B,gCAA3B,EAA6D,UAASxqC,OAAT,EAAkB;AAC7E7d,SAAK,CAAC0O,EAAN,CAASmP,OAAT,EAAkB,IAAlB;AACD,GAFD,EAtIkC,CA0IlC;;AACAoqC,gBAAc,CAACI,WAAf,CAA2B,YAA3B,EAAyC,UAASxqC,OAAT,EAAkB;AACzDsqC,eAAW,CAACtqC,OAAD,CAAX;AACD,GAFD,EA3IkC,CA+IlC;;AACAoqC,gBAAc,CAACI,WAAf,CAA2B,KAA3B,EAAkC,UAASxqC,OAAT,EAAkB;AAClDqqC,qBAAiB,CAACrqC,OAAD,CAAjB;AACD,GAFD,EAhJkC,CAoJlC;AACA;;AACAoqC,gBAAc,CAACI,WAAf,CAA2B,SAA3B,EAAsC,UAASxqC,OAAT,EAAkB;AACtD7d,SAAK,CAACusB,qBAAN,CAA4B1O,OAA5B,EAAqC,YAAW;AAC9CqqC,uBAAiB,CAACrqC,OAAD,CAAjB;AACD,KAFD,EADsD,CAItD;;AACAqqC,qBAAiB,CAACrqC,OAAD,CAAjB;AACD,GAND,EAtJkC,CA8JlC;;AACAoqC,gBAAc,CAACI,WAAf,CAA2B,KAA3B,EAAkC,UAASxqC,OAAT,EAAkB;AAClD7d,SAAK,CAACrM,GAAN,CAAUkqB,OAAO,CAAC7lB,IAAlB,EAAwB6lB,OAAO,CAAC1sB,KAAhC;AACD,GAFD;AAIA82D,gBAAc,CAACI,WAAf,CAA2B,MAA3B,EAAmC,UAASxqC,OAAT,EAAkB;AACnD7d,SAAK,CAACugC,IAAN,CAAWztC,MAAM,CAAC+qB,OAAD,CAAjB;AACD,GAFD;AAIAoqC,gBAAc,CAACI,WAAf,CAA2B,MAA3B,EAAmC,YAAW;AAC5CroD,SAAK,CAAC+/B,KAAN;AACD,GAFD;AAIAkoB,gBAAc,CAACI,WAAf,CAA2B,MAA3B,EAAmC,YAAW;AAC5CroD,SAAK,CAAC89B,IAAN;AACD,GAFD;AAIAmqB,gBAAc,CAACI,WAAf,CAA2B,aAA3B,EAA0C,YAAW;AACnDn8B,cAAU,CAAC+T,WAAX;AACD,GAFD;AAIAgoB,gBAAc,CAACI,WAAf,CAA2B,mBAA3B,EAAgD,YAAW;AACzDn8B,cAAU,CAACgU,iBAAX;AACD,GAFD;AAIA+nB,gBAAc,CAACvoD,UAAf;AAEAwsB,YAAU,CAACxd,EAAX,CAAc,8BAAd,EAA8C,YAAW;AACvDu5C,kBAAc,CAACzsB,IAAf,CAAoB,aAApB;AACD,GAFD;AAIA,SAAO;AACL;AACA;AACAsG,aAAS,EAAE,mBAASC,QAAT,EAAmB;AAC5B/hC,WAAK,GAAG+hC,QAAR;AACD;AALI,GAAP;AAOD;AAAA,C;;;;;;AC1Mc,yGAAyD,IAAI,uKAAuK,WAAW,0DAA0D,SAAS,sDAAsD,UAAU,KAAK,OAAO,eAAe,SAAS,mBAAmB,E;;ACCxb;AACA;AACA;AACA;AACA;AAEA6H,wBAAwB;AAExB;;;;;;;;;;;AAUe,SAASkf,qBAAT,CAA+B7lC,SAA/B,EAA0CyE,sBAA1C,EAAkE;AAC/E,MAAIvY,KAAJ;AAAA,MACEkQ,MADF;AAAA,MAEE;AACA0pC,WAHF;AAAA,MAIE;AACAC,WALF;AAAA,MAOE7pC,cAPF;AAAA,MAQE8pC,QARF;AAAA,MASE9hB,KATF;AAAA,MAUE+hB,YAVF;AAAA,MAWEC,gBAXF;AAAA,MAYEC,YAZF;AAAA,MAaEC,gBAbF;AAAA,MAeEn9B,UAfF;AAAA,MAgBElsB,KAhBF;AAAA,MAkBE27C,WAAW,GAAG,SAAdA,WAAc,CAAS2N,WAAT,EAAsB;AAClCA,eAAW,GAAGP,SAAS,CAACO,WAAD,CAAvB;AACAF,gBAAY,CAACl9C,IAAb,CAAkBo9C,WAAW,CAAC1S,OAAZ,CAAoBv3B,MAApB,IAA8B,GAA9B,GAAoClQ,KAAtD;AACD,GArBH;AAAA,MAuBE;AACA;AACAo6C,mBAAiB,GAAG,SAApBA,iBAAoB,GAAW;AAC7B,QAAI5xC,CAAC,GAAG3X,KAAK,CAACmW,GAAN,CAAU,mBAAV,CAAR;AACAgzC,oBAAgB,CAACvsD,GAAjB,CAAqB,QAArB,EAA+BosD,SAAS,CAACD,SAAS,CAACpxC,CAAD,CAAV,CAAxC;AACA,QAAIwH,cAAJ,EAAoBw8B,WAAW,CAAChkC,CAAD,CAAX;AACrB,GA7BH,CAD+E,CAgC/E;AACA;AACA;;;AACA,WAASjY,UAAT,GAAsB;AACpB,QAAI0f,OAAJ,EAAajK,MAAb,EAAqBhH,KAArB,EACE27B,IADF,EACQ0f,SADR,EACmBp3C,MADnB,EAEEq3C,eAFF,EAEmBxgC,SAFnB,EAGEx2B,GAHF,EAGOC,GAHP,EAGYtB,CAHZ,EAGec,GAHf;AAKA8N,SAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AAEA5E,aAAS,GAAG6E,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACgqB,WAAxC,EAAqD+D,SAArD,CAAZ;AACA7D,WAAO,GAAG6D,SAAS,CAAC7D,OAApB;AACAjQ,SAAK,GAAGiQ,OAAO,CAACjQ,KAAhB;AACAgG,UAAM,GAAGiK,OAAO,CAACjK,MAAjB;AACAhH,SAAK,GAAGiR,OAAO,CAACjR,KAAhB;AACAkR,UAAM,GAAGD,OAAO,CAACC,MAAjB;AACA3sB,OAAG,GAAGuwB,SAAS,CAACvwB,GAAhB;AACAD,OAAG,GAAGwwB,SAAS,CAACxwB,GAAhB;;AAEAs2D,aAAS,GAAG,mBAASlvD,GAAT,EAAc;AACxB,aAAOsU,KAAK,GAAGtU,GAAR,GAAcsb,MAArB;AACD,KAFD;;AAIA6zC,aAAS,GAAG,mBAASnvD,GAAT,EAAc;AACxB,aAAQ,CAACA,GAAG,GAAGnH,GAAP,KAAeD,GAAG,GAAGC,GAArB,IAA4B,GAA7B,GAAoC,GAA3C;AACD,KAFD;;AAIAysB,kBAAc,GAAG8D,SAAS,CAAC9D,cAA3B;AACAqqC,aAAS,GAAGrqC,cAAc,GAAG,EAAH,GAAQ,aAAlC,CA1BoB,CA4BpB;;AACA2qB,QAAI,GAAG;AACL/sC,QAAE,EAAEkmB,SAAS,CAAClmB,EADT;AAELysD,eAAS,EAAErqC,cAAc,GAAG,EAAH,GAAQ;AAF5B,KAAP,CA7BoB,CAiCpB;;AACA/M,UAAM,GAAG6Q,SAAS,CAAC7Q,MAAnB;AACA6W,aAAS,GAAG,CAAClqB,QAAb;AACA+qC,QAAI,CAAC13B,MAAL,GAAc,EAAd;;AACA,SAAKhhB,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGkgB,MAAM,CAAC/gB,MAAzB,EAAiCD,CAAC,GAAGc,GAArC,EAA0Cd,CAAC,EAA3C,EAA+C;AAC7C04C,UAAI,CAAC13B,MAAL,CAAYpe,IAAZ,CAAiB;AACfmf,aAAK,EAAEf,MAAM,CAAChhB,CAAD,CAAN,CAAU+hB,KADF;AAEfrX,gBAAQ,EAAEktD,SAAS,CAACD,SAAS,CAAC32C,MAAM,CAAChhB,CAAD,CAAN,CAAUD,KAAX,CAAV;AAFJ,OAAjB;;AAIA,UAAIihB,MAAM,CAAChhB,CAAD,CAAN,CAAU+hB,KAAV,CAAgB9hB,MAAhB,GAAyB43B,SAA7B,EAAwC;AACtCA,iBAAS,GAAG7W,MAAM,CAAChhB,CAAD,CAAN,CAAU+hB,KAAV,CAAgB9hB,MAA5B;AACAo4D,uBAAe,GAAGr4D,CAAlB;AACD;AACF,KA9CmB,CA+CpB;;;AACA+1C,SAAK,GAAGnxC,CAAC,CAAC0zD,kBAAQ,CAAC30C,MAAT,CAAgB40C,WAAhB,EAAgC7f,IAAhC,CAAD,CAAT,CAhDoB,CAiDpB;;AACAof,gBAAY,GAAG/hB,KAAK,CAACh3B,IAAN,CAAW,cAAX,CAAf;AACAg5C,oBAAgB,GAAGhiB,KAAK,CAACh3B,IAAN,CAAW,mBAAX,CAAnB;AACAi5C,gBAAY,GAAGjiB,KAAK,CAACh3B,IAAN,CAAW,QAAX,CAAf;AACAk5C,oBAAgB,GAAGliB,KAAK,CAACh3B,IAAN,CAAW,mBAAX,CAAnB,CArDoB,CAuDpB;AACA;AACA;AACA;AACA;;AACA8Y,aAAS,GAAGke,KAAK,CAACt3B,OAAN,CAAc,YAAW;AACnC;AACA,aAAQ,KAAKrT,KAAL,KAAeyY,UAAU,CAAC,KAAKrY,GAAL,CAAS,WAAT,CAAD,CAA1B,GAAqD,IAA5D;AACD,KAHW,EAGT,qBAAqB6sD,eAArB,GAAuC,GAH9B,EAGmC/hC,sBAAsB,CAAC0gB,oBAH1D,CAAZ;AAIAihB,oBAAgB,CAACzsD,GAAjB,CAAqB,OAArB,EAA8BqsB,SAA9B,EAhEoB,CAkEpB;AACA;AACA;AACA;;AACAke,SAAK,CAACvqC,GAAN,CAAU,QAAV,EAAoBqmB,SAAS,CAACxmB,MAA9B,EAtEoB,CAuEpB;;AACAwsD,YAAQ,GAAG,KAAX;;AACA,QAAI,CAAC,KAAKp2D,IAAL,CAAUowB,SAAS,CAACzmB,KAApB,CAAL,EAAiC;AAC/B;AACA0sD,kBAAY,CAACtsD,GAAb,CAAiB,OAAjB,EAA0BqmB,SAAS,CAACzmB,KAApC;AACD,KAHD,MAGO;AACL;AACA;AACA;AACA2qC,WAAK,CAACvqC,GAAN,CAAU,OAAV,EAAmBqmB,SAAS,CAACzmB,KAA7B;AACAysD,cAAQ,GAAG,IAAX;AACD;AACF,GAtH8E,CAwH/E;;;AACA/8B,YAAU,GAAG;AACX;AACAhB,uBAAmB,EAAE,+BAAW;AAC9B,UAAIlrB,KAAJ,EAAW;AACTA,aAAK,CAACssB,cAAN,CAAqB,mBAArB,EAA0Ci9B,iBAA1C;AACD;;AACDvpD,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR,CAJ8B,CAK9B;;AACA7nB,WAAK,CAACusB,qBAAN,CAA4B,mBAA5B,EAAiDg9B,iBAAjD;AACAA,uBAAiB;AAClB,KAVU;AAYX;AACArrD,oBAAgB,EAAE,4BAAW;AAC3B,aAAOipC,KAAP;AACD,KAfU;AAiBX7mC,UAAM,EAAE,kBAAW;AACjB,UAAIspD,iBAAiB,GAAGziB,KAAK,CAAC1qC,MAAN,KAAiB2sD,YAAY,CAAC3sD,MAAb,EAAzC;AACAysD,kBAAY,CAACzsD,MAAb,CAAoBmtD,iBAApB;AACAP,sBAAgB,CAAC5sD,MAAjB,CAAwBmtD,iBAAxB;;AACA,UAAIX,QAAJ,EAAc;AACZ;AACA;AACA;AACAC,oBAAY,CAAC1sD,KAAb,CAAmB2qC,KAAK,CAAC3qC,KAAN,KAAgB6sD,gBAAgB,CAAC7sD,KAAjB,EAAnC;AACD;AACF,KA3BU;AA6BX;AACA3G,aAAS,EAAE,qBAAW;AACpB;AACA;AACA;AACA,aAAOotB,SAAP;AACD;AAnCU,GAAb;AAsCAvjB,YAAU,GA/JqE,CAiK/E;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;ACrLD;AACA;AACA;AACA;AACA;;AAGA,SAAS29B,OAAT,CAAiBv5C,GAAjB,EAAsB;AACpBA,KAAG,CAACG,IAAJ,CAAS,UAAT,EAAqB,IAArB,EAA2BnS,QAA3B,CAAoC,cAApC,EAAoD1B,GAApD,CAAwD,QAAxD,EAAkE,SAAlE;AACD;;AAED,SAASikC,MAAT,CAAgBvwB,GAAhB,EAAqB;AACnBA,KAAG,CAACG,IAAJ,CAAS,UAAT,EAAqB,KAArB,EAA4B7O,WAA5B,CAAwC,cAAxC,EAAwDhF,GAAxD,CAA4D,QAA5D,EAAsE,SAAtE;AACD;;AAED,SAASktD,UAAT,CAAoBC,SAApB,EAA+Bz5C,GAA/B,EAAoC;AAClC,MAAIy5C,SAAJ,EAAe;AACblpB,UAAM,CAACvwB,GAAD,CAAN;AACD,GAFD,MAEO;AACLu5C,WAAO,CAACv5C,GAAD,CAAP;AACD;AACF;;AAED,SAAS05C,WAAT,CAAqBD,SAArB,EAAgCz5C,GAAhC,EAAqC;AACnCw5C,YAAU,CAAC,CAACC,SAAF,EAAaz5C,GAAb,CAAV;AACD;AAED;;;;;;;;;;AAQA,SAAS25C,kBAAT,CAA4BhnC,SAA5B,EAAuCyE,sBAAvC,EAA+D;AAC7D;AACA4b,uBAAoB,CAACxxC,IAArB,CAA0B,IAA1B,EAAgC,UAAhC,EAA4CmxB,SAA5C,EAAuDyE,sBAAvD;AAEA,OAAKkP,QAAL,CAAct4B,QAAd,CAAuB,sBAAvB;AAEA,OAAK4rD,aAAL,GAAqB,IAArB;AACA,OAAKC,cAAL,GAAsB,IAAtB;AACA,OAAKC,eAAL,GAAuB,KAAvB;AACA,OAAKC,0BAAL,GAAkC,KAAlC;AACA,OAAKC,SAAL,GAAiB,IAAjB;AACA,OAAK1iC,MAAL,GAAc,IAAd;AACA,OAAK2b,aAAL,GAAqB,IAArB;AACA,OAAKzI,uBAAL,GAA+BpT,sBAA/B,CAb6D,CAc7D;;AACA,OAAK6iC,SAAL,GAAiB,SAAS7iC,sBAAsB,CAAC8iC,UAAjD;AAEAvQ,kBAAgB,CAAC;AACf19C,QAAI,EAAEmrB,sBAAsB,CAAC8iC,UADd;AAEfvR,YAAQ,EAAE,KAAKwR,sBAAL,CAA4Bz2B,IAA5B,CAAiC,IAAjC;AAFK,GAAD,CAAhB;AAID;;AACD4O,OAAO,CAACqnB,kBAAD,EAAqB3mB,qBAArB,CAAP,C,CAEA;;AACA,IAAIonB,oBAAoB,GAAG;AACzBC,OAAK,EAAE;AACLC,kBAAc,EAAE,0BAAW;AACzB,UAAI59B,YAAY,GAAG,KAAKuW,aAAxB;AACA,UAAIprB,IAAI,GAAG,KAAK2iB,uBAAL,CAA6B3iB,IAAxC;AAEA,WAAKye,QAAL,CAAclgB,KAAd;AACA,WAAKkgB,QAAL,CAAch1B,WAAd,CAA0B,MAA1B,EAAkCtD,QAAlC,CAA2C,OAA3C;AAEA;;AACA,WAAKusD,OAAL,GAAe70D,CAAC,CAAC,mEAAD,CAAD,CAAuEiH,QAAvE,CAAgF,KAAK25B,QAArF,CAAf;AACA;;AACA,WAAKk0B,WAAL,GAAmB90D,CAAC,CAAC,yFAAD,CAAD,CAA6FiH,QAA7F,CAAsG,KAAK25B,QAA3G,CAAnB;AACA;;AACA,WAAKm0B,aAAL,GAAqB/0D,CAAC,CAAC,6BAAD,CAAD,CAAiCiH,QAAjC,CAA0C,KAAK6tD,WAA/C,CAArB,CAZyB,CAczB;AACA;;AACA;;AACA,WAAKE,YAAL,GAAoBh1D,CAAC,CAAC,UAAD,CAAD,CAAciH,QAAd,CAAuB,KAAK8tD,aAA5B,CAApB;AACA;;AACA,WAAKE,QAAL,GAAgB,KAAKD,YAAL,CAAkB,CAAlB,EAAqBvR,UAArB,CAAgC,IAAhC,CAAhB;AAEA;;AACA,WAAKyR,cAAL,GAAsBl1D,CAAC,CAAC,6DAAD,CAAD,CAAiEm1D,YAAjE,CAA8E,KAAKL,WAAnF,CAAtB;AACA;;AACA,WAAKM,aAAL,GAAqBp1D,CAAC,CAAC,4DAAD,CAAD,CAAgEq1D,WAAhE,CAA4E,KAAKP,WAAjF,CAArB;;AAEA,WAAKD,OAAL,CAAaS,KAAb,CAAmB,4BAAnB;;AACA,WAAKJ,cAAL,CAAoBI,KAApB,CAA0B,2BAA1B;;AACA,WAAKF,aAAL,CAAmBG,MAAnB,CAA0B,2BAA1B,EA5ByB,CA8BzB;;;AACA,WAAKV,OAAL,CAAan8C,EAAb,CAAgB,OAAhB,EAAyBse,YAAY,CAACiT,WAAtC;;AAEA,WAAK6qB,WAAL,CAAiBp8C,EAAjB,CAAoB,OAApB,EAA6B,YAAW;AACtC,YAAI,KAAKw7C,aAAT,EAAwB;AACtB,cAAI,KAAKC,cAAT,EAAyB;AACvBn9B,wBAAY,CAAC+S,KAAb;AACD;AACF,SAJD,MAIO;AACL/S,sBAAY,CAAC8Q,IAAb;AACD;AACF,OAR4B,CAQ3B9J,IAR2B,CAQtB,IARsB,CAA7B;;AAUA,WAAKk3B,cAAL,CAAoBx8C,EAApB,CAAuB,OAAvB,EAAgCse,YAAY,CAACsT,QAA7C;;AACA,WAAK8qB,aAAL,CAAmB18C,EAAnB,CAAsB,OAAtB,EAA+Bse,YAAY,CAACmT,WAA5C;;AAEA,WAAK2qB,WAAL,CAAiBr6C,IAAjB,CAAsB,OAAtB,EAA+B0H,IAAI,CAACR,CAAL,CAAO,iCAAP,CAA/B;;AACA,WAAKkzC,OAAL,CAAap6C,IAAb,CAAkB,OAAlB,EAA2B0H,IAAI,CAACR,CAAL,CAAO,4BAAP,CAA3B;;AACA,WAAKuzC,cAAL,CAAoBz6C,IAApB,CAAyB,OAAzB,EAAkC0H,IAAI,CAACR,CAAL,CAAO,gCAAP,CAAlC;;AACA,WAAKyzC,aAAL,CAAmB36C,IAAnB,CAAwB,OAAxB,EAAiC0H,IAAI,CAACR,CAAL,CAAO,mCAAP,CAAjC;AACD,KAnDI;AAqDL6zC,sBAAkB,EAAE,4BAASC,OAAT,EAAkBC,QAAlB,EAA4B;AAC9C,UAAIC,OAAO,GAAG,CAACF,OAAf;;AACA,WAAKX,WAAL,CAAiBc,WAAjB,CAA6B,SAA7B,EAAwCD,OAAxC;;AACA3B,iBAAW,CAACyB,OAAO,IAAI,CAACC,QAAb,EAAuB,KAAKZ,WAA5B,CAAX;AACD,KAzDI;AA2DLe,8BAA0B,EAAE,oCAASC,IAAT,EAAe;AACzC,UAAIC,QAAJ;;AAEA,UAAI,CAACD,IAAL,EAAW;AAAE;AACX,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,4BAAnB,EAAiD7R,QAAjD,CAA0D,QAA1D;AACD,OAFD,MAEO,IAAIwtD,IAAI,KAAK,MAAb,EAAqB;AAC1B,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,aAAnB,EAAkCvO,WAAlC,CAA8C,QAA9C;AACA,aAAKg1B,QAAL,CAAczmB,IAAd,CAAmB,wBAAnB,EAA6C7R,QAA7C,CAAsD,QAAtD;AACD,OAHM,MAGA,IAAIwtD,IAAI,KAAK,OAAb,EAAsB;AAC3B,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,QAAnB,EAA6BvO,WAA7B,CAAyC,QAAzC;AACA,aAAKg1B,QAAL,CAAczmB,IAAd,CAAmB,6BAAnB,EAAkD7R,QAAlD,CAA2D,QAA3D;AACD,OAHM,MAGA,IAAIwtD,IAAI,KAAK,YAAb,EAA2B;AAChC,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,8BAAnB,EAAmDvO,WAAnD,CAA+D,QAA/D;AACA,aAAKg1B,QAAL,CAAczmB,IAAd,CAAmB,OAAnB,EAA4B7R,QAA5B,CAAqC,QAArC;AACD,OAHM,MAGA,IAAIwtD,IAAI,KAAK,iBAAb,EAAgC;AACrC,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,qCAAnB,EAA0DvO,WAA1D,CAAsE,QAAtE;AACD;;AACDmqD,cAAQ,GAAG,KAAKn1B,QAAL,CAAczmB,IAAd,CAAmB,QAAnB,CAAX;AACA47C,cAAQ,CAACnqD,WAAT,CAAqB,OAArB;AACAmqD,cAAQ,CAACnqD,WAAT,CAAqB,MAArB;AACAmqD,cAAQ,GAAGA,QAAQ,CAACC,GAAT,CAAa,SAAb,CAAX;AACAD,cAAQ,CAACE,KAAT,GAAiB3tD,QAAjB,CAA0B,OAA1B;AACAytD,cAAQ,CAAC1tD,IAAT,GAAgBC,QAAhB,CAAyB,MAAzB;AACD,KAlFI;AAoFL4tD,sBAAkB,EAAE,4BAAS7mD,SAAT,EAAoB;AACtC,UAAIA,SAAJ,EAAe;AACb,aAAKylD,WAAL,CAAiBxsD,QAAjB,CAA0B,YAA1B,EADa,CAEb;;;AACA,aAAKgsD,SAAL,GAAiB,KAAK1iC,MAAL,CAAYkC,sBAAZ,CAAmC,aAAnC,CAAjB,CAHa,CAIb;;AACA,aAAKqiC,YAAL;AACD,OAND,MAMO;AACL,aAAKrB,WAAL,CAAiBlpD,WAAjB,CAA6B,YAA7B;AACD;AACF,KA9FI;AAgGLwqD,iBAAa,EAAE,uBAASj7D,KAAT,EAAgB;AAC7B;AACA;AACA,WAAK85D,QAAL,CAAcvP,SAAd,CAAwB,CAAxB,EAA2B,CAA3B,EAA8B,KAAK2Q,UAAnC,EAA+C,KAAKC,WAApD;;AACA,WAAKrB,QAAL,CAAcvR,QAAd,CACE,KAAK4Q,SAAL,CAAe72C,MAAf,CAAsBtiB,KAAtB,CADF,EACgC,KAAKk7D,UADrC,EACiD,KAAKC,WAAL,GAAmB,IADpE;AAED;AAtGI,GADkB;AA0GzBpgD,MAAI,EAAE;AACJ0+C,kBAAc,EAAE,0BAAW;AACzB,UAAI59B,YAAY,GAAG,KAAKuW,aAAxB;AACA,UAAIprB,IAAI,GAAG,KAAK2iB,uBAAL,CAA6B3iB,IAAxC;AAEA,WAAKye,QAAL,CAAclgB,KAAd;AACA,WAAKkgB,QAAL,CAAch1B,WAAd,CAA0B,OAA1B,EAAmCtD,QAAnC,CAA4C,MAA5C;AAEA,WAAKiuD,OAAL,GAAev2D,CAAC,CAAC,wBAAD,CAAD,CAA4BkW,IAA5B,CAAiCiM,IAAI,CAACR,CAAL,CAAO,mBAAP,CAAjC,EAA8D1a,QAA9D,CAAuE,KAAK25B,QAA5E,CAAf;AACA,WAAK41B,MAAL,GAAcx2D,CAAC,CAAC,uBAAD,CAAD,CAA2BkW,IAA3B,CAAgCiM,IAAI,CAACR,CAAL,CAAO,kBAAP,CAAhC,EAA4D1a,QAA5D,CAAqE,KAAK25B,QAA1E,CAAd;AACA,WAAKi0B,OAAL,GAAe70D,CAAC,CAAC,wBAAD,CAAD,CAA4BkW,IAA5B,CAAiCiM,IAAI,CAACR,CAAL,CAAO,mBAAP,CAAjC,EAA8D1a,QAA9D,CAAuE,KAAK25B,QAA5E,CAAf,CATyB,CAWzB;;AACA,WAAKi0B,OAAL,CAAan8C,EAAb,CAAgB,OAAhB,EAAyBse,YAAY,CAACiT,WAAtC;;AACA,WAAKssB,OAAL,CAAa79C,EAAb,CAAgB,OAAhB,EAAyBse,YAAY,CAAC+S,KAAtC;;AACA,WAAKysB,MAAL,CAAY99C,EAAZ,CAAe,OAAf,EAAwBse,YAAY,CAAC8Q,IAArC;;AAEA,WAAKyuB,OAAL,CAAa97C,IAAb,CAAkB,OAAlB,EAA2B0H,IAAI,CAACR,CAAL,CAAO,2BAAP,CAA3B;;AACA,WAAK60C,MAAL,CAAY/7C,IAAZ,CAAiB,OAAjB,EAA0B0H,IAAI,CAACR,CAAL,CAAO,0BAAP,CAA1B;;AACA,WAAKkzC,OAAL,CAAap6C,IAAb,CAAkB,OAAlB,EAA2B0H,IAAI,CAACR,CAAL,CAAO,2BAAP,CAA3B;AACD,KApBG;AAsBJ6zC,sBAAkB,EAAE,4BAASC,OAAT,EAAkBC,QAAlB,EAA4B;AAC9C1B,iBAAW,CAACyB,OAAD,EAAU,KAAKe,MAAf,CAAX;AACA1C,gBAAU,CAAC4B,QAAD,EAAW,KAAKa,OAAhB,CAAV;AACD,KAzBG;AA2BJV,8BAA0B,EAAE,oCAASC,IAAT,EAAe;AACzC,UAAI,CAACA,IAAL,EAAW;AAAE;AACX,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,uBAAnB,EAA4C7R,QAA5C,CAAqD,QAArD;AACD,OAFD,MAEO,IAAIwtD,IAAI,KAAK,MAAb,EAAqB;AAC1B,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,eAAnB,EAAoCvO,WAApC,CAAgD,QAAhD;AACA,aAAKg1B,QAAL,CAAczmB,IAAd,CAAmB,QAAnB,EAA6B7R,QAA7B,CAAsC,QAAtC;AACD,OAHM,MAGA,IAAIwtD,IAAI,KAAK,OAAb,EAAsB;AAC3B,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,QAAnB,EAA6BvO,WAA7B,CAAyC,QAAzC;AACA,aAAKg1B,QAAL,CAAczmB,IAAd,CAAmB,eAAnB,EAAoC7R,QAApC,CAA6C,QAA7C;AACD,OAHM,MAGA,IAAIwtD,IAAI,KAAK,YAAb,EAA2B;AAChC,aAAKl1B,QAAL,CAAczmB,IAAd,CAAmB,uBAAnB,EAA4CvO,WAA5C,CAAwD,QAAxD;AACD,OAFM,MAEA;AACL;AACA,cAAM,IAAI3Q,KAAJ,CAAU,6BAA6B66D,IAA7B,GACd,4EADI,CAAN;AAED;AACF,KA3CG;AA6CJI,sBAAkB,EAAE,8BAAW,CAC7B;AACD,KA/CG;AAiDJE,iBAAa,EAAE,yBAAW,CACxB;AACD;AAnDG,GA1GmB;AAgKzBK,OAAK,EAAE;AACL7B,kBAAc,EAAE,0BAAW;AACzB,UAAI59B,YAAY,GAAG,KAAKuW,aAAxB;AACA,UAAIprB,IAAI,GAAG,KAAK2iB,uBAAL,CAA6B3iB,IAAxC;AAEA,WAAKye,QAAL,CAAch1B,WAAd,CAA0B,OAA1B,EAAmCtD,QAAnC,CAA4C,WAA5C;AACA,WAAKs4B,QAAL,CAAclgB,KAAd;AAEA,WAAK61C,OAAL,GAAev2D,CAAC,CAAC,wBAAD,CAAD,CACfkW,IADe,CACViM,IAAI,CAACR,CAAL,CAAO,mBAAP,CADU,EAEflH,IAFe,CAEV,OAFU,EAED0H,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFC,EAGf1a,QAHe,CAGN,KAAK25B,QAHC,CAAf;AAKA,WAAK41B,MAAL,GAAcx2D,CAAC,CAAC,uBAAD,CAAD,CACdkW,IADc,CACTiM,IAAI,CAACR,CAAL,CAAO,kBAAP,CADS,EAEdlH,IAFc,CAET,OAFS,EAEA0H,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFA,EAGd1a,QAHc,CAGL,KAAK25B,QAHA,CAAd;AAKA,WAAK81B,aAAL,GAAqB12D,CAAC,CAAC,+BAAD,CAAD,CACrBkW,IADqB,CAChBiM,IAAI,CAACR,CAAL,CAAO,0BAAP,CADgB,EAErBlH,IAFqB,CAEhB,OAFgB,EAEP0H,IAAI,CAACR,CAAL,CAAO,kCAAP,CAFO,EAGrB1a,QAHqB,CAGZ,KAAK25B,QAHO,CAArB;AAKA,WAAK+1B,QAAL,GAAgB32D,CAAC,CAAC,0BAAD,CAAD,CAChBkW,IADgB,CACXiM,IAAI,CAACR,CAAL,CAAO,qBAAP,CADW,EAEhBlH,IAFgB,CAEX,OAFW,EAEF0H,IAAI,CAACR,CAAL,CAAO,6BAAP,CAFE,EAGhB1a,QAHgB,CAGP,KAAK25B,QAHE,CAAhB,CAtByB,CA2BzB;;AACA,WAAK21B,OAAL,CAAa79C,EAAb,CAAgB,OAAhB,EAAyBse,YAAY,CAAC+S,KAAtC;;AACA,WAAKysB,MAAL,CAAY99C,EAAZ,CAAe,OAAf,EAAwBse,YAAY,CAAC8Q,IAArC;;AACA,WAAK4uB,aAAL,CAAmBh+C,EAAnB,CAAsB,OAAtB,EAA+B,YAAW;AACxCse,oBAAY,CAAC+H,UAAb,GADwC,CAExC;AACA;;AACA,aAAKs1B,0BAAL,GAAkCr9B,YAAY,CAACgN,yBAAb,EAAlC;;AACA,YAAI,CAAC,KAAKqwB,0BAAV,EAAsC;AACpCR,iBAAO,CAAC7zD,CAAC,CAAC,IAAD,CAAF,CAAP;AACD;AACF,OARD;;AAUA,WAAK22D,QAAL,CAAcj+C,EAAd,CAAiB,OAAjB,EAA0B,YAAW;AACnCse,oBAAY,CAACiT,WAAb,CAAyB;AACvBzG,eAAK,EAAE;AADgB,SAAzB;AAGD,OAJD;AAKD,KA9CI;AAgDLgyB,sBAAkB,EAAE,4BAASC,OAAT,EAAkBC,QAAlB,EAA4BzxB,SAA5B,EAAuCD,yBAAvC,EAAkE;AACpFgwB,iBAAW,CAAC/vB,SAAD,EAAY,KAAKsyB,OAAjB,CAAX;AACAvC,iBAAW,CAACyB,OAAD,EAAU,KAAKe,MAAf,CAAX;AACA1C,gBAAU,CAAC7vB,SAAS,IAAIwxB,OAAd,EAAuB,KAAKkB,QAA5B,CAAV;AACA7C,gBAAU,CAAC9vB,yBAAD,EAA4B,KAAK0yB,aAAjC,CAAV;AACD,KArDI;AAuDLb,8BAA0B,EAAE,oCAASC,IAAT,EAAe;AACzC;AACA;AACA;AACA;AAEA,UAAIA,IAAI,IAAIA,IAAI,CAACh7C,OAAL,CAAa,MAAb,KAAwB,CAApC,EAAuC;AACrC,aAAKy7C,OAAL,CAAaK,IAAb;;AACA,aAAKJ,MAAL,CAAYI,IAAZ;;AACA,YAAId,IAAI,CAACh7C,OAAL,CAAa,OAAb,KAAyB,CAA7B,EAAgC;AAC9B,eAAK67C,QAAL,CAAcC,IAAd;AACD,SAFD,MAEO;AACL,eAAKD,QAAL,CAAcE,IAAd;AACD;AACF,OARD,MAQO;AACL,aAAKN,OAAL,CAAaM,IAAb;;AACA,aAAKL,MAAL,CAAYK,IAAZ;;AACA,aAAKF,QAAL,CAAcE,IAAd;AACD;AACF,KA1EI;AA4ELX,sBAAkB,EAAE,8BAAW,CAC7B;AACD,KA9EI;AAgFLE,iBAAa,EAAE,yBAAW,CACxB;AACD;AAlFI;AAhKkB,CAA3B;;AAsPAnC,kBAAkB,CAACr4D,SAAnB,CAA6Bk7D,eAA7B,GAA+C,YAAW;AACxD,OAAKC,qBAAL,CAA2BnC,cAA3B,CAA0Cj4D,KAA1C,CAAgD,IAAhD,EAAsD0C,SAAtD;;AACA,OAAK23D,mBAAL;;AACA,OAAKC,WAAL;AACD,CAJD;;AAMAhD,kBAAkB,CAACr4D,SAAnB,CAA6Bo7D,mBAA7B,GAAmD,YAAW;AAC5D,OAAKD,qBAAL,CAA2BvB,kBAA3B,CAA8C15D,IAA9C,CAAmD,IAAnD,EACE,KAAKo4D,aADP,EACsB,KAAKC,cAD3B,EAC2C,KAAKC,eADhD,EACiE,KAAKC,0BADtE;AAED,CAHD;;AAKAJ,kBAAkB,CAACr4D,SAAnB,CAA6Bs7D,2BAA7B,GAA2D,YAAW;AACpE,OAAKH,qBAAL,CAA2BlB,0BAA3B,CAAsDl5D,KAAtD,CAA4D,IAA5D,EAAkE0C,SAAlE;;AACA,OAAK43D,WAAL;AACD,CAHD;;AAKAhD,kBAAkB,CAACr4D,SAAnB,CAA6Bu7D,mBAA7B,GAAmD,YAAW;AAC5D,OAAKJ,qBAAL,CAA2Bb,kBAA3B,CAA8Cv5D,KAA9C,CAAoD,IAApD,EAA0D0C,SAA1D;AACD,CAFD;;AAIA40D,kBAAkB,CAACr4D,SAAnB,CAA6Bw7D,cAA7B,GAA8C,YAAW;AACvD,OAAKL,qBAAL,CAA2BX,aAA3B,CAAyCz5D,KAAzC,CAA+C,IAA/C,EAAqD0C,SAArD;AACD,CAFD;;AAIA40D,kBAAkB,CAACr4D,SAAnB,CAA6By7D,4BAA7B,GAA4D,YAAW;AACrE,MAAIC,YAAY,GAAG,KAAK1lC,MAAL,CAAYsS,SAAZ,EAAnB,CADqE,CAErE;;;AACA,MAAIqzB,aAAa,GAAG,KAAK3lC,MAAL,CAAYpM,UAAZ,CAAuBgyC,UAAvB,KAAsC,KAAtC,GAA8C,KAA9C,GAAsD,IAA1E;AACA,MAAIC,cAAc,GAAG,KAAK7lC,MAAL,CAAYpM,UAAZ,CAAuBye,SAA5C;;AACA,MAAID,yBAAyB,GAAG,KAAKuJ,aAAL,CAAmBvJ,yBAAnB,EAAhC,CALqE,CAOrE;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAIszB,YAAY,KAAK,KAAKpD,aAAtB,IACFqD,aAAa,KAAK,KAAKpD,cADrB,IAEFsD,cAAc,KAAK,KAAKrD,eAFtB,IAGFpwB,yBAAyB,KAAK,KAAKqwB,0BAHrC,EAGiE;AAC/D,SAAKH,aAAL,GAAqBoD,YAArB;AACA,SAAKnD,cAAL,GAAsBoD,aAAtB;AACA,SAAKnD,eAAL,GAAuBqD,cAAvB;AACA,SAAKpD,0BAAL,GAAkCrwB,yBAAlC;AAEA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD,CAzBD;AA2BA;;;;;;AAIAiwB,kBAAkB,CAACr4D,SAAnB,CAA6B87D,uBAA7B,GAAuD,YAAW;AAChE,MAAI,KAAKL,4BAAL,EAAJ,EAAyC;AACvC,SAAKL,mBAAL;AACD;AACF,CAJD;AAMA;;;;;;AAIA/C,kBAAkB,CAACr4D,SAAnB,CAA6Bu6D,YAA7B,GAA4C,YAAW;AACrD,MAAI,KAAKvkC,MAAL,CAAYpM,UAAZ,CAAuBnW,SAA3B,EAAsC;AACpC,SAAK+nD,cAAL,CAAoB,KAAKxlC,MAAL,CAAYpM,UAAZ,CAAuBmyC,WAA3C;AACD;AACF,CAJD;;AAMA1D,kBAAkB,CAACr4D,SAAnB,CAA6Bg8D,mBAA7B,GAAmD,YAAW;AAC5D;AACA;AACA;AAEA,MAAI,KAAKC,YAAL,KAAsB,KAAKjmC,MAAL,CAAYpM,UAAZ,CAAuBsyC,iBAAjD,EAAoE;AAClE,SAAKD,YAAL,GAAoB,KAAKjmC,MAAL,CAAYpM,UAAZ,CAAuBsyC,iBAA3C;;AACA,SAAKC,sBAAL;AACD;AACF,CATD;;AAWA9D,kBAAkB,CAACr4D,SAAnB,CAA6Bm8D,sBAA7B,GAAsD,YAAW;AAC/D,MAAI/tD,KAAK,GAAG,KAAK4nB,MAAjB;AACA,MAAIljB,WAAW,GAAG,KAAKmpD,YAAvB;AACA,MAAIG,eAAe,GAAGhuD,KAAK,CAACwb,UAAN,CAAiBwyC,eAAvC;AACA,MAAIC,cAAc,GAAGjuD,KAAK,CAACwb,UAAN,CAAiByyC,cAAtC;AACA,MAAIC,aAAa,GAAG,EAApB;;AAEA,MAAI,KAAKC,eAAT,EAA0B;AACxB,SAAKA,eAAL,CAAqBxkB,OAArB;AACA,SAAKwkB,eAAL,GAAuB,IAAvB;AACD;;AAED,MAAIzpD,WAAW,IAAIspD,eAAe,CAAC38D,MAAhB,GAAyB,CAA5C,EAA+C;AAE7C28D,mBAAe,CAACzgD,OAAhB,CAAwB,UAAS6gD,QAAT,EAAmB;AACzC;AACA;AACA,UAAIH,cAAc,GAAGG,QAAjB,KACDF,aAAa,CAAC78D,MAAd,KAAyB,CAAzB,IAA8B48D,cAAc,GAAGC,aAAa,CAACA,aAAa,CAAC78D,MAAd,GAAuB,CAAxB,CAAb,CAAwCF,KADtF,CAAJ,EACkG;AAEhG+8D,qBAAa,CAACl6D,IAAd,CAAmB;AACjB7C,eAAK,EAAE88D,cADU;AAEjB/hD,cAAI,EAAElM,KAAK,CAACquD,UAAN,CAAiBJ,cAAjB,CAFW;AAGjBpvC,kBAAQ,EAAE;AAHO,SAAnB;AAKD;;AAEDqvC,mBAAa,CAACl6D,IAAd,CAAmB;AACjB7C,aAAK,EAAEi9D,QADU;AAEjBliD,YAAI,EAAElM,KAAK,CAACquD,UAAN,CAAiBD,QAAjB,CAFW;AAGjBvvC,gBAAQ,EAAEuvC,QAAQ,KAAKH;AAHN,OAAnB;AAKD,KAlBD;AAoBA,SAAKE,eAAL,GAAuB,IAAItlB,aAAJ,CAAkB;AACvC9rC,QAAE,EAAE,kBADmC;AAEvC4C,aAAO,EAAEuuD,aAF8B;AAGvChzC,cAAQ,EAAE,UAASyrB,MAAT,EAAiB;AACzB;AACA,aAAK/e,MAAL,CAAYpM,UAAZ,CAAuB7W,iBAAvB,GAA2CgiC,MAAM,CAACx1C,KAAlD;AACD,OAHS,CAGR6iC,IAHQ,CAGH,IAHG;AAH6B,KAAlB,CAAvB;AASA,SAAKm6B,eAAL,CAAqBp5C,MAArB,CAA4B,KAAK6hB,QAAL,CAAc7mB,MAAd,EAA5B;AACA,SAAKo+C,eAAL,CAAqBv3B,QAArB,CAA8Bt4B,QAA9B,CAAuC,mEAAvC;AACA,SAAKs4B,QAAL,CAAc7mB,MAAd,GAAuB9R,MAAvB,CAA8B,KAAKkwD,eAAL,CAAqBv3B,QAAnD;AACD;;AAED,OAAKq2B,WAAL;AACD,CAjDD;AAmDA;;;;;;AAIAhD,kBAAkB,CAACr4D,SAAnB,CAA6B08D,4BAA7B,GAA4D,YAAW;AACrE,OAAKpB,2BAAL,CAAiC,KAAKtlC,MAAL,CAAYpM,UAAZ,CAAuBvU,cAAxD;AACD,CAFD;AAIA;;;;;;AAIAgjD,kBAAkB,CAACr4D,SAAnB,CAA6B28D,0BAA7B,GAA0D,YAAW;AACnE;AACA,MAAIxvC,KAAK,GAAG,KAAK6I,MAAL,CAAYpM,UAAZ,CAAuBtU,kBAAvB,IAA6C,OAAzD;;AACA,MAAI,KAAKA,kBAAL,KAA4B6X,KAAhC,EAAuC;AACrC;AACD;;AACD,OAAK7X,kBAAL,GAA0B6X,KAA1B;AACA,OAAK6X,QAAL,CAAclgB,KAAd;;AAEA,MAAI,CAACg0C,oBAAoB,CAAC3rC,KAAD,CAAzB,EAAkC;AAChC,UAAM,IAAI9tB,KAAJ,CAAU,kCAAkC8tB,KAAlC,GAA0C,IAApD,CAAN;AACD;;AAED,OAAKguC,qBAAL,GAA6BrC,oBAAoB,CAAC3rC,KAAD,CAAjD;;AACA,OAAKsuC,4BAAL;;AACA,OAAKP,eAAL;;AACA,OAAKwB,4BAAL;AACD,CAjBD;;AAmBArE,kBAAkB,CAACr4D,SAAnB,CAA6B64D,sBAA7B,GAAsD,YAAW;AAC/D,OAAK0C,mBAAL,CAAyB,KAAKvlC,MAAL,CAAYpM,UAAZ,CAAuBnW,SAAhD;AACD,CAFD;AAIA;;;;;;;;;;;;;;;;;AAeA4kD,kBAAkB,CAACr4D,SAAnB,CAA6Bq7D,WAA7B,GAA2C,YAAW;AACpD;AACA,MAAIuB,WAAW,GAAG,KAAK53B,QAAL,CAAc7mB,MAAd,GAAuBvT,KAAvB,EAAlB;AACA,MAAIiyD,aAAa,GAAG,EAApB,CAHoD,CAG5B;;AACxB,MAAIC,gBAAJ;AACA,MAAIC,gBAAJ;AACA,MAAIC,aAAJ;AAEA,MAAIC,gBAAgB,GAAG,KAAKV,eAAL,IAAwB,KAAKA,eAAL,CAAqBv3B,QAApE,CARoD,CAUpD;;AACA,OAAKA,QAAL,CAAch6B,GAAd,CAAkB,MAAlB,EAA0B,EAA1B,EAXoD,CAapD;AACA;;AACA,MAAIkyD,YAAY,GAAG,KAAKl4B,QAAL,CAAc/mB,OAAd,CAAsB,YAAW;AAClD;AACA,QAAIg/C,gBAAJ,EAAsB;AACpB,WAAKE,OAAL,CAAaF,gBAAgB,CAAC18D,KAAjB,EAAb;AACD;;AACD,SAAKyP,WAAL,CAAiB,mBAAjB;AACA,WAAO,KAAKpF,KAAL,EAAP;AACD,GAPkB,EAOhB,IAPgB,EAOVxG,CAAC,CAAC,aAAD,CAPS,CAAnB;AASA,OAAK4gC,QAAL,CAAc7mB,MAAd,GAAuBnT,GAAvB,CAA2B,UAA3B,EAAuC,EAAvC;;AAEA,MAAIkyD,YAAY,GAAGN,WAAnB,EAAgC;AAC9B,SAAK53B,QAAL,CAAch1B,WAAd,CAA0B,mBAA1B;AACD,GAFD,MAEO;AACL8sD,oBAAgB,GAAGF,WAAW,GAAGM,YAAjC;AACAH,oBAAgB,GAAG15C,UAAU,CAAC,KAAK2hB,QAAL,CAAc7mB,MAAd,GAAuBnT,GAAvB,CAA2B,WAA3B,CAAD,CAAV,GAAsD8xD,gBAAzE;AACAE,iBAAa,GAAGD,gBAAgB,GAAGF,aAAnB,GAAoCA,aAAa,GAAG,IAApD,GAA6DC,gBAAgB,GAAG,IAAhG;AACA,SAAK93B,QAAL,CAAc7mB,MAAd,GAAuBnT,GAAvB,CAA2B,UAA3B,EAAuCgyD,aAAvC,EAJK,CAML;;AACA,SAAKh4B,QAAL,CAAch1B,WAAd,CAA0B,mBAA1B,EAPK,CASL;AACA;AACA;AACA;;AACA,QAAI,KAAKg1B,QAAL,CAAcp6B,KAAd,KAAwB,EAAxB,IAA8BgyD,WAAlC,EAA+C;AAC7C,WAAK53B,QAAL,CAAct4B,QAAd,CAAuB,mBAAvB;AACD;AACF,GA5CmD,CA8CpD;AACA;;;AACA,MAAIuwD,gBAAJ,EAAsB;AACpB,QAAIG,EAAE,GAAG,KAAKp4B,QAAL,CAAczmB,IAAd,CAAmB,gBAAnB,EAAqC87C,KAArC,EAAT;;AAEA,QAAI+C,EAAE,CAAC39D,MAAH,GAAY,CAAhB,EAAmB;AACjB,UAAImN,KAAK,GAAGwwD,EAAE,CAAC75C,MAAH,GAAYlZ,IAAZ,GAAmBgZ,UAAU,CAAC+5C,EAAE,CAACpyD,GAAH,CAAO,cAAP,CAAD,CAA7B,GAAwDqY,UAAU,CAAC+5C,EAAE,CAACpyD,GAAH,CAAO,aAAP,CAAD,CAA9E;AACA,UAAIX,IAAI,GAAG4yD,gBAAgB,CAAC15C,MAAjB,GAA0BlZ,IAA1B,GAAiC4yD,gBAAgB,CAAC3yD,UAAjB,CAA4B,IAA5B,CAA5C;;AAEA,UAAIsC,KAAK,GAAGvC,IAAZ,EAAkB;AAChB,aAAK26B,QAAL,CAAch6B,GAAd,CAAkB,MAAlB,EAA0BX,IAAI,GAAGuC,KAAP,GAAe,IAAzC;AACD;AACF;AACF;AACF,CA5DD;;AA8DAyrD,kBAAkB,CAACr4D,SAAnB,CAA6Bq9D,mBAA7B,GAAmD,YAAW;AAC5D,MAAI,CAAC,KAAKC,oBAAV,EAAgC;AAC9B,SAAKA,oBAAL,GAA4BC,oBAAC,CAACC,QAAF,CAAW,KAAKnC,WAAL,CAAiBj5B,IAAjB,CAAsB,IAAtB,CAAX,EAAwC,GAAxC,CAA5B;AACD,GAH2D,CAK5D;AACA;;;AACA,OAAK4C,QAAL,CAAc7mB,MAAd,GAAuBnT,GAAvB,CAA2B,UAA3B,EAAuC,KAAKg6B,QAAL,CAAc7mB,MAAd,GAAuBnT,GAAvB,CAA2B,UAA3B,CAAvC,EAP4D,CAS5D;;AACA,OAAKsyD,oBAAL;AACD,CAXD;AAaA;;;;;AAGAjF,kBAAkB,CAACr4D,SAAnB,CAA6Bs5B,mBAA7B,GAAmD,YAAW;AAE5D,OAAKtD,MAAL,GAAc,KAAKkT,uBAAL,CAA6BjT,QAA7B,EAAd;AACA,OAAK0b,aAAL,GAAqB,KAAKzI,uBAAL,CAA6B5M,eAA7B,GAA+Cte,GAApE;;AAEA,MAAIy/C,sBAAsB,GAAG,KAAK3B,uBAAL,CAA6B15B,IAA7B,CAAkC,IAAlC,CAA7B,CAL4D,CAO5D;AACA;;;AACA,OAAKpM,MAAL,CAAYlZ,EAAZ,CAAe,UAAU,KAAKuU,SAAL,CAAelmB,EAAxC,EAA4CsyD,sBAA5C;;AACA,OAAKznC,MAAL,CAAYlZ,EAAZ,CAAe,UAAU,KAAKuU,SAAL,CAAelmB,EAAxC,EAA4CsyD,sBAA5C;;AACA,OAAKznC,MAAL,CAAY2W,WAAZ,CAAwB,YAAxB,EAAsC8wB,sBAAtC;;AACA,OAAKznC,MAAL,CAAY2W,WAAZ,CAAwB,WAAxB,EAAqC,KAAKksB,sBAAL,CAA4Bz2B,IAA5B,CAAiC,IAAjC,CAArC;;AACA,OAAKpM,MAAL,CAAY2W,WAAZ,CAAwB,aAAxB,EAAuC,KAAK4tB,YAAL,CAAkBn4B,IAAlB,CAAuB,IAAvB,CAAvC,EAb4D,CAe5D;;;AACA,OAAKpM,MAAL,CAAY2W,WAAZ,CAAwB,mBAAxB,EAA6C,KAAKqvB,mBAAL,CAAyB55B,IAAzB,CAA8B,IAA9B,CAA7C;;AACA,OAAKpM,MAAL,CAAY2W,WAAZ,CAAwB,gBAAxB,EAA0C,KAAK+vB,4BAAL,CAAkCt6B,IAAlC,CAAuC,IAAvC,CAA1C;;AACA,OAAKpM,MAAL,CAAY2W,WAAZ,CAAwB,oBAAxB,EAA8C,KAAKgwB,0BAAL,CAAgCv6B,IAAhC,CAAqC,IAArC,CAA9C;;AAEA,OAAK65B,YAAL,GAAoB,IAApB;;AACA,OAAKD,mBAAL;;AACA,OAAKW,0BAAL;;AACA,OAAKD,4BAAL;;AACA,OAAKZ,uBAAL;;AACA,OAAKjD,sBAAL;AACD,CA1BD;AA4BA;;;;;;AAIAR,kBAAkB,CAACr4D,SAAnB,CAA6B0O,MAA7B,GAAsC,YAAW;AAE/C,OAAK2uD,mBAAL;;AAEA,MAAI,CAAC,KAAKjE,YAAV,EAAwB;AACtB;AACD,GAN8C,CAQ/C;;;AACA,OAAKqB,UAAL,GAAkB,KAAKrB,YAAL,CAAkBxuD,KAAlB,KAA4B,CAA9C;AACA,OAAK8vD,WAAL,GAAmB,KAAKtB,YAAL,CAAkBvuD,MAAlB,KAA6B,CAAhD;;AACA,OAAKuuD,YAAL,CAAkBv6C,IAAlB,CAAuB,OAAvB,EAAgC,KAAK47C,UAArC;;AACA,OAAKrB,YAAL,CAAkBv6C,IAAlB,CAAuB,QAAvB,EAAiC,KAAK67C,WAAtC;;AAEA,OAAKrB,QAAL,CAAc1uD,IAAd,GAAqB,KAAKguD,SAA1B;AACA,OAAKU,QAAL,CAAc3P,SAAd,GAA0B,SAA1B;AACA,OAAK2P,QAAL,CAAcp+C,SAAd,GAA0B,OAA1B;;AAEA,OAAK49C,sBAAL;AACD,CAnBD;;AAqBeR,0EAAf,E;;AC5mBA;AACA;AACA;AAGA;;;;;;;;;AAQA,SAASqF,aAAT,CAAuBrsC,SAAvB,EAAkC+J,YAAlC,EAAgDd,UAAhD,EAA4D;AAC1D;AACAoX,uBAAoB,CAACxxC,IAArB,CAA0B,IAA1B,EAAgC,KAAhC,EAAuCmxB,SAAvC,EAAkD+J,YAAlD,EAAgEd,UAAhE;AACA,MAAIrO,OAAO,GAAGoF,SAAS,CAACpF,OAAxB;AACA,MAAI0xC,aAAa,GAAG,IAApB;;AACA,MAAItsC,SAAS,CAACpI,GAAd,EAAmB;AACjB;AACA;AACA,QAAIoI,SAAS,CAACzmB,KAAV,KAAoB,MAApB,IAA8BymB,SAAS,CAACxmB,MAAV,KAAqB,MAAvD,EAA+D;AAC7DvG,6CAAK,CAAC,mDACJ,uCADI,GAEJ,uCAFG,CAAL;AAGD;;AAGDF,KAAC,CAACw5D,IAAF,CAAOvsC,SAAS,CAACpI,GAAjB,EAAsB;AACpB40C,cAAQ,EAAE,MADU;AAEpBC,cAAQ,EAAE,kBAAS34C,IAAT,EAAe;AACvBw4C,qBAAa,CAAC34B,QAAd,CAAuB34B,MAAvB,CAA8B8Y,IAAI,CAAC44C,YAAnC;AACD;AAJmB,KAAtB;AAMD,GAhBD,MAgBO;AACL,QAAI9xC,OAAO,IAAIA,OAAO,CAAC7M,IAAvB,EAA6B;AAC3B6M,aAAO,GAAGA,OAAO,CAAC7M,IAAR,CAAa,IAAb,CAAV;AACD;;AACD,SAAK4lB,QAAL,CAAc34B,MAAd,CAAqB4f,OAArB;AACD;AACF;;AACD+kB,OAAO,CAAC0sB,aAAD,EAAgBhsB,qBAAhB,CAAP;AAEegsB,gEAAf,E;;AC5CA;AACA;AAEA,IAAIM,UAAU,GAAG,CACb,eADa,EAEb,aAFa,EAGb,YAHa,EAIb,cAJa,CAAjB;AAAA,IAOEC,UAAU,GAAG,CACX,cADW,EAEX,gBAFW,EAGX,iBAHW,EAIX,eAJW,CAPf;AAAA,IAcEC,eAAe,GAAG,qBAdpB;AAgBe,SAASC,UAAT,CAAoBn1C,QAApB,EAA8Bhf,UAA9B,EAA0C;AACvD,MAAIgU,GAAJ;AAAA,MACE+W,QAAQ,GAAG,IAAIL,eAAJ,CAAoB,OAApB,EAA6B,MAA7B,CADb;AAAA,MAEEoF,SAAQ,GAAG,KAFb;AAAA,MAGEskC,MAAM,GAAG,CAAC,CAHZ;AAAA,MAIEC,IAJF;AAAA,MAKEC,aALF;AAAA,MAMEC,QAAQ,GAAG,EANb;;AAQA,WAASC,OAAT,GAAmB;AACjB,QAAIC,GAAG,GAAGz1C,QAAQ,CAACo1C,MAAD,CAAlB;AAAA,QACEM,UADF;AAAA,QAEEC,aAFF;AAAA,QAGEp7C,MAHF;AAKA,QAAI,CAACk7C,GAAL,EAAU,OANO,CAOjB;;AACAJ,QAAI,CAAC1P,KAAL,GARiB,CASjB;;AACA0P,QAAI,CAAC5rB,IAAL,CAAUgB,cAAc,CAACgrB,GAAG,CAACnkD,IAAL,CAAxB,EAViB,CAWjB;;AACA,QAAImkD,GAAG,CAACptC,SAAR,EAAmB;AACjBqtC,gBAAU,GAAG1hC,YAAY,CAACyhC,GAAG,CAACptC,SAAL,CAAzB;AACAstC,mBAAa,GAAGD,UAAU,CAACt0D,WAAX,KAA2B,EAA3C,CAFiB,CAE8B;;AAC/CmZ,YAAM,GAAGF,UAAU,CAACg7C,IAAI,CAACrzD,GAAL,CAAS,WAAT,CAAD,CAAnB;AACAqzD,UAAI,CAACn0D,QAAL,CAAc;AACZmpB,UAAE,EAAEqrC,UADQ;AAEZprC,iBAAS,EAAE,iBAFC;AAGZsrC,cAAM,EAAE50D,UAHI;AAIZ;AACAmpB,UAAE,EAAE,UAAW5P,MAAM,GAAG,CAApB,GAAyB,OAAzB,GAAmCA,MAL3B;AAMZ6P,UAAE,EAAE,cANQ;AAOZyrC,aAAK,EAAE,eAAS30D,QAAT,EAAmB40D,QAAnB,EAA6B;AAClC,cAAIC,KAAK,GAAGD,QAAQ,CAAChuD,OAAT,CAAiBzG,IAA7B;AAAA,cACE20D,MAAM,GAAGF,QAAQ,CAAChuD,OAAT,CAAiBlG,KAD5B;AAAA,cAEEq0D,KAAK,GAAGH,QAAQ,CAACzpC,MAAT,CAAgBhrB,IAF1B;AAAA,cAGE60D,MAAM,GAAGJ,QAAQ,CAACzpC,MAAT,CAAgBzqB,KAH3B;AAAA,cAIEu0D,MAJF;AAAA,cAIUC,UAJV;AAKAh7D,WAAC,CAAC,IAAD,CAAD,CAAQ4G,GAAR,CAAYd,QAAZ;AACAi1D,gBAAM,GAAG/6D,CAAC,CAAC,OAAD,CAAD,CACNsI,QADM,CACG,gBADH,EAENA,QAFM,CAEGoyD,QAAQ,CAACO,QAFZ,EAGNh0D,QAHM,CAGG,IAHH,CAAT;;AAIA,cAAI4zD,KAAK,GAAGF,KAAZ,EAAmB;AACjBK,sBAAU,GAAGH,KAAK,GAAGF,KAAR,GAAgBG,MAAM,GAAG,CAAtC;AACAE,sBAAU,GAAGx+D,IAAI,CAACC,GAAL,CAASm+D,MAAM,GAAG,GAAlB,EAAuBp+D,IAAI,CAACE,GAAL,CAASk+D,MAAM,GAAG,GAAlB,EAAuBI,UAAvB,CAAvB,CAAb;AACAD,kBAAM,CAACn0D,GAAP,CAAW,MAAX,EAAmBo0D,UAAnB;AACD;AACF;AAvBW,OAAd;AAyBAb,cAAQ,CAAC5iD,OAAT,CAAiB,UAAS2jD,QAAT,EAAmBp9D,GAAnB,EAAwB;AACvC;AACA,YAAIA,GAAG,KAAK,CAAR,IAAaA,GAAG,KAAK,CAAzB,EAA4Bo9D,QAAQ,CAACt0D,GAAT,CAAa,QAAb,EAAuB2zD,aAAvB;AAC5BW,gBAAQ,CAACp1D,QAAT,CAAkB;AAChBmpB,YAAE,EAAEqrC,UADY;AAEhBprC,mBAAS,EAAE,WAFK;AAGhBH,YAAE,EAAE6qC,UAAU,CAAC97D,GAAD,CAHE;AAIhBkxB,YAAE,EAAE6qC,UAAU,CAAC/7D,GAAD;AAJE,SAAlB;AAMD,OATD;;AAUA,UAAIw8D,UAAU,CAACv5C,IAAX,CAAgB+4C,eAAhB,CAAJ,EAAsC;AACpC;AACAQ,kBAAU,CAACz8D,MAAX;AACD;AACF,KA3CD,MA2CO;AACLo8D,UAAI,CAACn0D,QAAL,CAAc;AACZmpB,UAAE,EAAErpB,UADQ;AAEZspB,iBAAS,EAAE,iBAFC;AAGZsrC,cAAM,EAAE50D,UAHI;AAIZmpB,UAAE,EAAE,eAJQ;AAKZC,UAAE,EAAE;AALQ,OAAd;AAOAmrC,cAAQ,CAAC5iD,OAAT,CAAiB,UAAS2jD,QAAT,EAAmBp9D,GAAnB,EAAwB;AACvCo9D,gBAAQ,CAACp1D,QAAT,CAAkB;AAChBmpB,YAAE,EAAErpB,UADY;AAEhBspB,mBAAS,EAAE,WAFK;AAGhB;AACA;AACAH,YAAE,EAAEjxB,GAAG,GAAG,UAAH,GAAgB,eALP;AAMhBkxB,YAAE,EAAElxB,GAAG,GAAG,cAAH,GAAoB;AANX,SAAlB;AAQD,OATD;AAUD;AACF;;AAED,WAAS86B,YAAT,CAAsBuiC,OAAtB,EAA+B;AAC7B,QAAIb,UAAJ;;AACA,QAAIa,OAAO,KAAK,OAAhB,EAAyB;AACvBb,gBAAU,GAAGt6D,CAAC,CAAC,kBAAD,CAAd;AACD,KAFD,MAEO,IAAI,OAAOm7D,OAAP,KAAmB,QAAvB,EAAiC;AACtCb,gBAAU,GAAGt6D,CAAC,CAAC,MAAMm7D,OAAP,CAAD,CAAiBC,OAAjB,CAAyB,YAAzB,CAAb;AACD,KAFM,MAEA;AAAE;AACPd,gBAAU,GAAGt6D,CAAC,CAACm7D,OAAO,CAACt/B,GAAR,CAAY,UAAS90B,EAAT,EAAa;AACtC,eAAO,MAAMA,EAAb;AACD,OAFc,EAEZiU,IAFY,CAEP,IAFO,CAAD,CAAD,CAEEogD,OAFF,CAEU,YAFV,CAAb;AAGAd,gBAAU,GAAGe,cAAc,CAACf,UAAD,CAA3B;AACD;;AACD,WAAOA,UAAP;AACD;;AAED,WAASe,cAAT,CAAwBC,SAAxB,EAAmC;AACjC,QAAIr1D,IAAI,GAAG,EAAX;AAAA,QACEuC,KAAK,GAAG,EADV;AAAA,QAEEzC,GAAG,GAAG,EAFR;AAAA,QAGEoC,MAAM,GAAG,EAHX;AAAA,QAIEozD,OAJF;AAAA,QAIWC,QAJX;AAAA,QAIqBC,MAJrB;AAAA,QAI6BC,SAJ7B;AAAA,QAIwCC,GAJxC;AAMAL,aAAS,CAACrgD,IAAV,CAAe,YAAW;AACxB,UAAMX,GAAG,GAAGta,CAAC,CAAC,IAAD,CAAb;AACA,UAAM0hB,GAAG,GAAGpH,GAAG,CAAC6E,MAAJ,EAAZ;AACA,UAAMy8C,OAAO,GAAGh2D,UAAU,CAACuZ,MAAX,EAAhB;AACAlZ,UAAI,CAACjI,IAAL,CAAU0jB,GAAG,CAACzb,IAAJ,GAAW21D,OAAO,CAAC31D,IAA7B;AACAuC,WAAK,CAACxK,IAAN,CAAW0jB,GAAG,CAACzb,IAAJ,GAAW21D,OAAO,CAAC31D,IAAnB,GAA0BqU,GAAG,CAAC9T,KAAJ,EAArC;AACAT,SAAG,CAAC/H,IAAJ,CAAS0jB,GAAG,CAAC3b,GAAJ,GAAU61D,OAAO,CAAC71D,GAA3B;AACAoC,YAAM,CAACnK,IAAP,CAAY0jB,GAAG,CAAC3b,GAAJ,GAAU61D,OAAO,CAAC71D,GAAlB,GAAwBuU,GAAG,CAAC7T,MAAJ,EAApC;AACD,KARD;AAUA80D,WAAO,GAAG/+D,IAAI,CAACE,GAAL,CAASC,KAAT,CAAe,IAAf,EAAqBsJ,IAArB,CAAV;AACAu1D,YAAQ,GAAGh/D,IAAI,CAACC,GAAL,CAASE,KAAT,CAAe,IAAf,EAAqB6L,KAArB,CAAX;AACAizD,UAAM,GAAGj/D,IAAI,CAACE,GAAL,CAASC,KAAT,CAAe,IAAf,EAAqBoJ,GAArB,CAAT;AACA21D,aAAS,GAAGl/D,IAAI,CAACC,GAAL,CAASE,KAAT,CAAe,IAAf,EAAqBwL,MAArB,CAAZ;AAEAwzD,OAAG,GAAG37D,CAAC,CAAC,OAAD,CAAD,CACH+gB,IADG,CACE+4C,eADF,EACmB,IADnB,EACyB;AADzB,KAEHlzD,GAFG,CAEC;AACHd,cAAQ,EAAE,UADP;AAEHG,UAAI,EAAEs1D,OAFH;AAGHx1D,SAAG,EAAE01D,MAHF;AAIHj1D,WAAK,EAAEg1D,QAAQ,GAAGD,OAJf;AAKH90D,YAAM,EAAEi1D,SAAS,GAAGD;AALjB,KAFD,EASHx0D,QATG,CASMrB,UATN,CAAN;AAWA,WAAO+1D,GAAP;AACD;;AAED/hD,KAAG,GAAG;AACJmwB,SAAK,EAAE,eAASmhB,QAAT,EAAmB2Q,MAAnB,EAA2B;AAChC,UAAInmC,SAAJ,EAAc;AACZ9b,WAAG,CAACkuB,IAAJ;AACA;AACD;;AACD,WAAK,IAAI1sC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AAC1B++D,gBAAQ,CAACn8D,IAAT,CAAcgC,CAAC,CAAC,oDAAD,CAAD,CAAwDiH,QAAxD,CAAiErB,UAAjE,CAAd;AACD;;AACDq0D,UAAI,GAAGj6D,CAAC,CAAC,8DAAD,CAAD,CAAkEiH,QAAlE,CAA2ErB,UAA3E,CAAP;;AACA,UAAIi2D,MAAJ,EAAY;AACV3B,qBAAa,GAAGl6D,CAAC,CAAC,wCAChB,mEADgB,GAEhB,QAFe,CAAD,CAEJiH,QAFI,CAEKrB,UAFL,CAAhB;AAGAA,kBAAU,CAAC8S,EAAX,CAAc,qBAAd,EAAqC,gBAArC,EAAuDkB,GAAG,CAACkuB,IAA3D;AACD,OALD,MAKO;AACLoyB,qBAAa,GAAGl6D,CAAC,CAAC,wCAChB,0CADgB,GAEhB,uEAFgB,GAGhB,0CAHgB,GAIhB,QAJe,CAAD,CAIJiH,QAJI,CAIKrB,UAJL,CAAhB;AAKAA,kBAAU,CAAC8S,EAAX,CAAc,qBAAd,EAAqC,gBAArC,EAAuDkB,GAAG,CAACnP,IAA3D;AACA7E,kBAAU,CAAC8S,EAAX,CAAc,qBAAd,EAAqC,gBAArC,EAAuDkB,GAAG,CAACkiD,IAA3D;AACA7B,YAAI,CAACvhD,EAAL,CAAQ,kBAAR,EAA4B,UAAS2C,KAAT,EAAgB;AAC1C,kBAAQA,KAAK,CAAC0gD,OAAN,IAAiB1gD,KAAK,CAACivC,KAA/B;AACE,iBAAK,EAAL;AAAS;AACP1wC,iBAAG,CAACkiD,IAAJ;AACA;;AACF,iBAAK,EAAL;AAAS;AACPliD,iBAAG,CAACnP,IAAJ;AACA;AANJ;;AAQA4Q,eAAK,CAAC4zB,cAAN;AACA5zB,eAAK,CAACg3B,eAAN;AACD,SAXD;AAYD;;AACD3c,eAAQ,GAAG,IAAX;AACAskC,YAAM,GAAG9O,QAAQ,IAAI,IAAZ,GAAmBA,QAAnB,GAA8B,CAAvC;;AACA,UAAI2Q,MAAJ,EAAY;AACVzB,eAAO;AACR,OAFD,MAEO;AACL;AACAJ,cAAM;AACNpgD,WAAG,CAACnP,IAAJ;AACD;;AACDkmB,cAAQ,CAACoZ,KAAT;AACD,KA9CG;AAgDJpU,cAAU,EAAE,oBAASqmC,aAAT,EAAwB;AAClC,WAAK,IAAI5gE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwpB,QAAQ,CAACvpB,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxC,YAAI0qC,IAAI,GAAGlhB,QAAQ,CAACxpB,CAAD,CAAR,CAAY6xB,SAAvB,CADwC,CAExC;;AACA,YAAI,OAAO6Y,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAKk2B,aAArC,IAAsDl2B,IAAI,CAAChrB,OAAL,CAAakhD,aAAb,MAAgC,CAAC,CAA3F,EAA8F;AAC5FpiD,aAAG,CAACmwB,KAAJ,CAAU3uC,CAAV,EAAa,IAAb;AACA;AACD;AACF;AACF,KAzDG;AA2DJ0sC,QAAI,EAAE,gBAAW;AACfmyB,UAAI,CAACp8D,MAAL;AACAq8D,mBAAa,CAACr8D,MAAd;AACAs8D,cAAQ,CAAC5iD,OAAT,CAAiB,UAAS2jD,QAAT,EAAmB;AAClCA,gBAAQ,CAACr9D,MAAT;AACD,OAFD;AAGAs8D,cAAQ,CAAC9+D,MAAT,GAAkB,CAAlB;AACAuK,gBAAU,CAAC2pB,GAAX,CAAe,qBAAf,EAAsC,gBAAtC;AACA3pB,gBAAU,CAAC2pB,GAAX,CAAe,qBAAf,EAAsC,gBAAtC;AACAmG,eAAQ,GAAG,KAAX;AACA/E,cAAQ,CAACmX,IAAT;AACD,KAtEG;AAwEJr9B,QAAI,EAAE,gBAAW;AACfuvD,YAAM,GADS,CAEf;;AACA,aAAOA,MAAM,GAAGp1C,QAAQ,CAACvpB,MAAlB,IAA4B,CAACupB,QAAQ,CAACo1C,MAAD,CAAR,CAAiB9sC,QAArD,EAA+D;AAC7D8sC,cAAM;AACP;;AACD,UAAIA,MAAM,IAAIp1C,QAAQ,CAACvpB,MAAvB,EAA+B;AAC7Bue,WAAG,CAACkuB,IAAJ;AACA;AACD;;AACDsyB,aAAO;AACR,KAnFG;AAqFJ0B,QAAI,EAAE,gBAAW;AACf9B,YAAM,GADS,CAEf;;AACA,aAAO,CAACA,MAAD,IAAW,CAAX,IAAgBp1C,QAAQ,CAACo1C,MAAD,CAAR,CAAiB9sC,QAAxC,EAAkD;AAChD8sC,cAAM;AACP;;AACD,UAAIA,MAAM,GAAG,CAAb,EAAgB;AACdpgD,WAAG,CAACkuB,IAAJ;AACA;AACD;;AACDsyB,aAAO;AACR,KAhGG;AAkGJ1kC,YAAQ,EAAE,oBAAW;AACnB,aAAOA,SAAP;AACD,KApGG;AAsGJumC,eAAW,EAAE,uBAAW;AACtB,aAAOr3C,QAAQ,CAACgf,MAAT,CAAgB,UAAS2c,CAAT,EAAY;AACjC,eAAOA,CAAC,CAACrzB,QAAT;AACD,OAFM,EAEJ7xB,MAFI,GAEK,CAFZ;AAGD,KA1GG;AA4GJmhC,iBAAa,EAAE,uBAASC,OAAT,EAAkB;AAC/B,UAAI+V,SAAS,GAAG,IAAhB;AACA7hB,cAAQ,CAACjY,EAAT,CAAY,UAAZ,EAAwB,IAAxB;AACAiY,cAAQ,CAACjY,EAAT,CAAY,eAAZ,EAA6B,YAAW;AACtC+jB,eAAO,CAAC,gBAAD,CAAP;AACA+V,iBAAS,GAAGlR,IAAI,CAACC,GAAL,EAAZ;AACD,OAHD;AAIA5Q,cAAQ,CAACjY,EAAT,CAAY,cAAZ,EAA4B,YAAW;AACrC+jB,eAAO,CAAC,gBAAD,EAAmB;AACxB+E,oBAAU,EAAE,CAACF,IAAI,CAACC,GAAL,KAAaiR,SAAd,IAA2B;AADf,SAAnB,CAAP;AAGD,OAJD;AAKD;AAxHG,GAAN;AA2HA7hB,UAAQ,CAACK,OAAT,CAAiBpX,GAAjB;AAEA,SAAOA,GAAP;AACD;AAAA,C;;ACxRD;;;;;;;;;;;;;;;;;;;;;AAqBA;;AAEA,IAAIsiD,SAAS,GAAG,CAAhB;AAAA,IAEEC,qBAAqB,GAAI,YAAW;AAClC;AACA;AACA,MAAIxJ,SAAS,CAAC3F,QAAd,EAAwB,OAAO,KAAP,CAHU,CAIlC;AACA;AACA;;AACA,MAAIe,OAAO,GAAG4E,SAAS,CAAC5E,OAAV,CAAkBA,OAAhC,CAPkC,CAQlC;;AACA,MAAIp0D,OAAO,GAAGitC,QAAQ,CAAC+rB,SAAS,CAAC5E,OAAV,CAAkBp0D,OAAnB,EAA4B,EAA5B,CAAtB;AACA,MAAIo0D,OAAO,KAAK,QAAZ,IAAwBp0D,OAAO,GAAG,CAAtC,EAAyC,OAAO,KAAP,CAVP,CAWlC;;AACA,SAAO,IAAP;AACD,CAbwB,EAF3B;;AAiBA,SAAS6tB,OAAT,CAAiB40C,OAAjB,EAA0B;AACxB,MAAI,CAACD,qBAAL,EAA4B;AAE5B,MAAIE,QAAQ,GAAG,IAAf;AAAA,MACEC,QAAQ,GAAG,IADb;AAAA,MAEEC,SAAS,GAAG,IAFd;AAAA,MAGEC,QAAQ,GAAG,KAHb;;AAKA,WAAS12D,QAAT,CAAkBmrB,MAAlB,EAA0B;AACxB;AACA;AACA,QAAIva,QAAQ,GAAG0lD,OAAO,CAACx1D,GAAR,CAAY,WAAZ,CAAf;AAAA,QACE61D,UAAU,GAAG,CAACx9C,UAAU,CAACvI,QAAD,CAAX,GAAwB,IADvC;AAAA,QAEE;AACAgmD,cAAU,GAAG18D,CAAC,CAACixB,MAAD,CAAD,CAAUmqC,OAAV,CAAkB,6BAAlB,CAHf;AAIAiB,YAAQ,CAACz1D,GAAT,CAAa,WAAb,EAA0B8P,QAA1B,EAPwB,CAQxB;AACA;;AACA,QAAI,CAAC2lD,QAAQ,CAAC15B,EAAT,CAAY,UAAZ,CAAL,EAA8B;AAC5B;AACA05B,cAAQ,CAACzF,IAAT;AACD;;AACDyF,YAAQ,CAACv2D,QAAT,CAAkB;AAChBmpB,QAAE,EAAEytC,UADY;AAEhBxtC,eAAS,EAAE,iBAFK;AAGhBsrC,YAAM,EAAE4B,OAHQ;AAIhB;AACArtC,QAAE,EAAE,gBAAgB0tC,UALJ;AAMhBztC,QAAE,EAAE,eANY;AAOhByrC,WAAK,EAAE,eAAS30D,QAAT,EAAmB40D,QAAnB,EAA6B;AAClC16D,SAAC,CAAC,IAAD,CAAD,CAAQ4G,GAAR,CAAYd,QAAZ,EADkC,CAElC;;AACA9F,SAAC,CAAC,OAAD,CAAD,CACGsI,QADH,CACY,kBADZ,EAEGA,QAFH,CAEYoyD,QAAQ,CAACO,QAFrB,EAGG3yD,QAHH,CAGYoyD,QAAQ,CAACiC,UAHrB,EAIG11D,QAJH,CAIY,IAJZ;AAKD;AAfe,KAAlB;AAiBD;;AAED,WAAS21D,iBAAT,GAA6B;AAC3B,QAAIP,QAAJ,EAAc;AACZA,cAAQ,CAACxF,IAAT;AACD;;AACDnrB,iBAAa,CAAC4wB,QAAD,CAAb;AACA5wB,iBAAa,CAAC6wB,SAAD,CAAb;AACAC,YAAQ,GAAG,KAAX;AACAH,YAAQ,GAAG,IAAX;AACD;;AAEDD,SAAO,CAAC50C,OAAR,CAAgB;AACdovC,QAAI,EAAE,KADQ;AAEdC,QAAI,EAAE,KAFQ;AAGd71B,QAAI,EAAE,cAAS3lB,KAAT,EAAgBq2B,EAAhB,EAAoB;AACxB,UAAImrB,QAAQ,GAAG,IAAIrgE,IAAI,CAACE,GAAL,CAAS,GAAT,EAAc4kC,IAAI,CAACC,GAAL,KAAa26B,SAA3B,CAAnB,CADwB,CAGxB;AACA;AACA;AACA;;AACA,UAAIG,QAAQ,KAAK,IAAjB,EAAuB;AACrBO,yBAAiB;AAClB;;AAEDP,cAAQ,GAAG3qB,EAAE,CAAClqB,OAAd;AACA1hB,cAAQ,CAACuV,KAAK,CAACyhD,aAAN,CAAoB7rC,MAArB,CAAR,CAZwB,CAaxB;;AACAorC,cAAQ,CAACxF,IAAT;AACAyF,cAAQ,GAAGhxB,UAAU,CAAC,YAAW;AAC/B+wB,gBAAQ,CAACU,MAAT;AACAP,gBAAQ,GAAG,IAAX;AACD,OAHoB,EAGlBK,QAHkB,CAArB;AAIAN,eAAS,GAAGjxB,UAAU,CAAC,YAAW;AAChC+wB,gBAAQ,CAACW,OAAT;AACD,OAFqB,EAEnBH,QAAQ,GAAG,IAFQ,CAAtB;AAGD,KAzBa;AA0Bd37B,SAAK,EAAE,eAAS7lB,KAAT,EAAgBq2B,EAAhB,EAAoB;AACzB,UAAI,CAAC2qB,QAAD,IAAa3qB,EAAE,CAAClqB,OAAH,CAAW,CAAX,MAAkB60C,QAAQ,CAAC,CAAD,CAA3C,EAAgD;AAC9C;AACD;;AAED,UAAIG,QAAJ,EAAc;AACZN,iBAAS,GAAG56B,IAAI,CAACC,GAAL,EAAZ;AACD;;AACDq7B,uBAAiB;AAClB;AAnCa,GAAhB;AAqCD;;AAEcp1C,yDAAf,E;;AClIA;;;;AAIe;AACby1C,SAAO,EAAE,iBAASC,IAAT,EAAe;AACtB,WAAOC,QAAQ,CAAC7Z,QAAQ,CAAC8Z,MAAT,CAAgBl2D,OAAhB,CAAwB,IAAI6E,MAAJ,CAAW,qBAAqBsxD,MAAM,CAACH,IAAD,CAAN,CAAah2D,OAAb,CAAqB,aAArB,EAAoC,MAApC,CAArB,GAAmE,6BAA9E,CAAxB,EAAsI,IAAtI,CAAD,CAAR,IAAyJ,IAAhK;AACD,GAHY;AAIbo2D,SAAO,EAAE,iBAASJ,IAAT,EAAeK,MAAf,EAAuBC,IAAvB,EAA6BC,KAA7B,EAAoCC,OAApC,EAA6CC,OAA7C,EAAsD;AAC7D,QAAI,CAACT,IAAD,IAAS,6CAA6CrgE,IAA7C,CAAkDqgE,IAAlD,CAAb,EAAsE;AACpE,aAAO,KAAP;AACD;;AACD,QAAIU,QAAQ,GAAG,EAAf;;AACA,QAAIJ,IAAJ,EAAU;AACR,cAAQA,IAAI,CAAC9hE,WAAb;AACE,aAAKoB,MAAL;AACE8gE,kBAAQ,GAAGJ,IAAI,KAAKz0D,QAAT,GAAoB,yCAApB,GAAgE,eAAey0D,IAA1F;AACA;;AACF,aAAKx8C,MAAL;AACE48C,kBAAQ,GAAG,eAAeJ,IAA1B;AACA;;AACF,aAAKl8B,IAAL;AACEs8B,kBAAQ,GAAG,eAAeJ,IAAI,CAACK,WAAL,EAA1B;AACA;AATJ;AAWD;;AACDva,YAAQ,CAAC8Z,MAAT,GAAkBC,MAAM,CAACH,IAAD,CAAN,GAAe,GAAf,GAAqBG,MAAM,CAACE,MAAD,CAA3B,GAAsCK,QAAtC,IAAkDF,OAAO,GAAG,cAAcA,OAAjB,GAA2B,EAApF,KAA2FD,KAAK,GAAG,YAAYA,KAAf,GAAuB,EAAvH,KAA8HE,OAAO,GAAG,UAAH,GAAgB,EAArJ,CAAlB;AACA,WAAO,IAAP;AACD,GAxBY;AAyBbG,YAAU,EAAE,oBAASZ,IAAT,EAAeO,KAAf,EAAsB;AAChC,QAAI,CAACP,IAAD,IAAS,CAAC,KAAKa,OAAL,CAAab,IAAb,CAAd,EAAkC;AAChC,aAAO,KAAP;AACD;;AACD5Z,YAAQ,CAAC8Z,MAAT,GAAkBC,MAAM,CAACH,IAAD,CAAN,GAAe,0CAAf,IAA6DO,KAAK,GAAG,YAAYA,KAAf,GAAuB,EAAzF,CAAlB;AACA,WAAO,IAAP;AACD,GA/BY;AAgCbM,SAAO,EAAE,iBAASb,IAAT,EAAe;AACtB,WAAQ,IAAInxD,MAAJ,CAAW,gBAAgBsxD,MAAM,CAACH,IAAD,CAAN,CAAah2D,OAAb,CAAqB,aAArB,EAAoC,MAApC,CAAhB,GAA8D,SAAzE,CAAD,CAAsFrK,IAAtF,CAA2FymD,QAAQ,CAAC8Z,MAApG,CAAP;AACD,GAlCY;AAmCb9lD,MAAI;AAAE;AAAiD,kBAAW;AAChE,QAAI0mD,KAAK,GAAG1a,QAAQ,CAAC8Z,MAAT,CAAgBl2D,OAAhB,CAAwB,yDAAxB,EAAmF,EAAnF,EAAuFuC,KAAvF,CAA6F,qBAA7F,CAAZ;;AACA,SAAK,IAAIw0D,IAAI,GAAG,CAAhB,EAAmBA,IAAI,GAAGD,KAAK,CAAC3iE,MAAhC,EAAwC4iE,IAAI,EAA5C,EAAgD;AAC9CD,WAAK,CAACC,IAAD,CAAL,GAAcd,QAAQ,CAACa,KAAK,CAACC,IAAD,CAAN,CAAtB;AACD;;AACD,WAAOD,KAAP;AACD;AAzCY,CAAf,E;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIE,YAAY,GAAG,GAAnB;AAAA,IACEC,eAAe,GAAGD,YAAY,GAAG,IADnC;AAAA,IAEEE,qBAAqB,GAAGF,YAAY,GAAG,EAFzC;AAIA;;;;;;;;;;;;;;AAae,SAASG,WAAT,CAAqBnoC,UAArB,EAAiChT,WAAjC,EAA8Co7C,aAA9C,EAA6DC,WAA7D,EAA0EC,WAA1E,EAAuF;AACpG,MAAI30D,UAAU,GAAG,EAAjB;AAAA,MACE8a,QAAQ,GAAG,EADb;AAAA,MAEE3gB,MAAM,GAAG,EAFX;AAAA,MAGEme,IAAI,GAAG+T,UAAU,CAAC/T,IAHpB;AAAA,MAIEs8C,IAJF;AAAA,MAIQC,uBAJR;;AAMA,WAASC,wBAAT,CAAkCjyD,OAAlC,EAA2C5F,SAA3C,EAAsD;AACpD,QAAI83D,UAAJ;;AAEA,QAAIlyD,OAAO,CAACzK,IAAR,KAAiB,MAArB,EAA6B;AAC3B28D,gBAAU,GAAGpvB,eAAb;AACD,KAFD,MAEO,IAAI9iC,OAAO,CAACzK,IAAR,KAAiB,OAArB,EAA8B;AACnC28D,gBAAU,GAAGlvB,gBAAb;AACD,KAFM,MAEA,IAAIhjC,OAAO,CAACzK,IAAR,KAAiB,KAArB,EAA4B;AACjC28D,gBAAU,GAAGtF,cAAb;AACD,KAFM,MAEA,IAAI5sD,OAAO,CAACzK,IAAR,KAAiB,UAArB,EAAiC;AACtC28D,gBAAU,GAAG3K,mBAAb;AACD;;AAEDpqD,cAAU,CAAC6C,OAAO,CAAC3F,EAAT,CAAV,GAAyB,IAAI63D,UAAJ,CAAelyD,OAAf,EAAwBwpB,UAAxB,CAAzB;AACAvR,YAAQ,CAAC3mB,IAAT,CAAc8I,SAAd;AACA9C,UAAM,CAAC8C,SAAS,CAACC,EAAX,CAAN,GAAuB,CAAC2F,OAAO,CAAC3F,EAAT,CAAvB;AACD,GAvBmG,CAyBpG;;;AACA,WAAS83D,yBAAT,GAAqC;AACnC,SAAK,IAAIzjE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8nB,WAAW,CAACrZ,UAAZ,CAAuBxO,MAA3C,EAAmDD,CAAC,EAApD,EAAwD;AACtD,UAAI8nB,WAAW,CAACrZ,UAAZ,CAAuBzO,CAAvB,EAA0B6G,IAA1B,KAAmC,UAAvC,EAAmD,OAAO,IAAP;AACpD;;AACD,WAAO,KAAP;AACD;;AAED,WAAS68D,WAAT,GAAuB;AACrBn6C,YAAQ,CAAC3mB,IAAT,CAAc;AACZ,YAAM,SADM;AAEZ,aAAO,GAFK;AAGZ,cAAQ,GAHI;AAIZ,gBAAUkgE,YAAY,GAAG,IAJb;AAKZ,qBAAeE,qBAAqB,GAAG,IAL3B;AAMZ,wBAAkBA,qBAAqB,GAAG,IAN9B;AAOZ,eAAS,iBAPG;AAQZ,qBAAe;AARH,KAAd;;AAWA,QAAIl7C,WAAW,CAACG,YAAhB,EAA8B;AAC5Bs7C,8BAAwB,CAAC;AACvB,gBAAQ,KADe;AAEvB,cAAM,WAFiB;AAGvB,iBAAS,OAHc;AAIvB,kBAAU,QAJa;AAKvB,mBAAWx8C,IAAI,CAACR,CAAL,CAAO,qBAAP;AALY,OAAD,EAMrB;AACD,cAAM,aADL;AAED,eAAO,GAFN;AAGD,kBAAUu8C,YAAY,GAAG,IAHxB;AAID,iBAAS,iBAJR;AAKD,uBAAeE,qBAAqB,GAAG,IALtC;AAMD,0BAAkBA,qBAAqB,GAAG,IANzC;AAOD,wBAAgB,QAPf;AAQD,yBAAiB,QARhB;AASD,uBAAe;AATd,OANqB,CAAxB;AAiBD;;AAEDO,4BAAwB,CAAC;AACvB,cAAQ,MADe;AAEvB,YAAM,YAFiB;AAGvB,cAAQx8C,IAAI,CAACR,CAAL,CAAO,cAAP,CAHe;AAIvB,iBAAW,mBAAW;AACpB48C,mBAAW,CAACv9B,IAAZ;AACD,OANsB;AAOvB,iBAAW7e,IAAI,CAACR,CAAL,CAAO,sBAAP;AAPY,KAAD,EAQrB;AACD,YAAM,cADL;AAED,mBAAaw8C,eAFZ;AAGD,aAAO,GAHN;AAID,gBAAUD,YAAY,GAAG,IAJxB;AAKD,qBAAeE,qBAAqB,GAAG,IALtC;AAMD,wBAAkBA,qBAAqB,GAAG,IANzC;AAOD,eAASl7C,WAAW,CAACG,YAAZ,GAA2B,kBAA3B,GAAgD,mBAPxD;AAQD,sBAAgB,KARf;AASD,uBAAiB,QAThB;AAUD,eAAS,OAVR;AAWD,qBAAe;AAXd,KARqB,CAAxB,CAhCqB,CAsDrB;AACA;AACA;AACA;;AACA,QAAI2sB,6BAAS,CAAC+uB,OAAd,EAAuB;AACrBJ,8BAAwB,CAAC;AACvB,gBAAQ,MADe;AAEvB,cAAM,YAFiB;AAGvB,gBAAQzoC,UAAU,CAAC/T,IAAX,CAAgBR,CAAhB,CAAkB,cAAlB,CAHe;AAIvB,mBAAW,mBAAW;AACpB68C,qBAAW,CAACx9B,IAAZ;AACD,SANsB;AAOvB,mBAAW7e,IAAI,CAACR,CAAL,CAAO,sBAAP;AAPY,OAAD,EAQrB;AACD,cAAM,eADL;AAED,qBAAaw8C,eAFZ;AAGD,eAAO,GAHN;AAID,kBAAUD,YAAY,GAAG,IAJxB;AAKD,uBAAeE,qBAAqB,GAAG,IALtC;AAMD,0BAAkBA,qBAAqB,GAAG,IANzC;AAOD,iBAAS,mBAPR;AAQD,yBAAiB,KARhB;AASD,iBAAS,OATR;AAUD,uBAAe;AAVd,OARqB,CAAxB;AAoBD;;AAEDO,4BAAwB,CAAC;AACvB,cAAQ,KADe;AAEvB,YAAM,yBAFiB;AAGvB,iBAAW,6BAHY;AAIvB,iBAAW,mBAAW;AACpBzoC,kBAAU,CAACgU,iBAAX;AACD,OANsB;AAOvB,iBAAW/nB,IAAI,CAACR,CAAL,CAAO,uBAAP;AAPY,KAAD,EAQrB;AACD,YAAM,eADL;AAED,mBAAaw8C,eAFZ;AAGD,aAAO,GAHN;AAID,gBAAUD,YAAY,GAAG,IAJxB;AAKD,qBAAeE,qBAAqB,GAAG,IALtC;AAMD,wBAAkBA,qBAAqB,GAAG,IANzC;AAOD,cAAQ,OAPP;AAQD,uBAAiB,KARhB;AASD,eAAS,MATR;AAUD,qBAAe;AAVd,KARqB,CAAxB;;AAqBA,QAAIloC,UAAU,CAACV,UAAX,IAAyBU,UAAU,CAACV,UAAX,CAAsBymC,WAAtB,EAA7B,EAAkE;AAChE0C,8BAAwB,CAAC;AACvB,gBAAQ,KADe;AAEvB,cAAM,gBAFiB;AAGvB,mBAAW,kDAHY;AAIvB,mBAAW,mBAAW;AACpB,cAAI,CAACzoC,UAAU,CAACV,UAAX,CAAsBE,QAAtB,EAAL,EAAuC;AACrCQ,sBAAU,CAACV,UAAX,CAAsBuU,KAAtB;AACD,WAFD,MAEO;AACL7T,sBAAU,CAACV,UAAX,CAAsBsS,IAAtB;AACD;AACF,SAVsB;AAWvB,mBAAW3lB,IAAI,CAACR,CAAL,CAAO,qBAAP;AAXY,OAAD,EAYrB;AACD,cAAM,aADL;AAED,qBAAaw8C,eAFZ;AAGD,eAAO,GAHN;AAID,kBAAUD,YAAY,GAAG,IAJxB;AAKD,uBAAeE,qBAAqB,GAAG,IALtC;AAMD,0BAAkBA,qBAAqB,GAAG,IANzC;AAOD;AACA,gBAAQ,qBARP;AASD,yBAAiB,KAThB;AAUD,iBAAS,MAVR;AAWD,uBAAe;AAXd,OAZqB,CAAxB,CADgE,CA2BhE;;AACAloC,gBAAU,CAACV,UAAX,CAAsB9c,EAAtB,CAAyB,YAAzB,EAAuC,YAAW;AAChD,YAAI+V,KAAK,GAAGzuB,CAAC,CAAC,gCAAD,CAAb;AACAyuB,aAAK,CAACnmB,QAAN,CAAe,yBAAf;AACAmmB,aAAK,CAAC7iB,WAAN,CAAkB,oBAAlB;AACD,OAJD;AAKAsqB,gBAAU,CAACV,UAAX,CAAsB9c,EAAtB,CAAyB,WAAzB,EAAsC,YAAW;AAC/C,YAAI+V,KAAK,GAAGzuB,CAAC,CAAC,gCAAD,CAAb;AACAyuB,aAAK,CAACnmB,QAAN,CAAe,oBAAf;AACAmmB,aAAK,CAAC7iB,WAAN,CAAkB,yBAAlB;AACD,OAJD;AAKD;AACF;;AAED,WAASozD,cAAT,GAA0B;AACxBr6C,YAAQ,CAAC3mB,IAAT,CAAc;AACZ,YAAM,YADM;AAEZ,gBAAU,kBAFE;AAGZ,cAAQ,GAHI;AAIZ,eAAS,iBAJG;AAKZ,gBAAU,OALE;AAMZ,qBAAe;AANH,KAAd;AASA2gE,4BAAwB,CAAC;AACvB,cAAQ,KADe;AAEvB,YAAM,cAFiB;AAGvB,gBAAU,OAHa;AAIvB,eAAS,OAJc;AAKvB,iBAAW,CAAC,SAAD,CALY;AAMvB,iBAAWx8C,IAAI,CAACR,CAAL,CAAO,wBAAP,CANY;AAOvB,iBAAW,mBAAW;AACpB28C,qBAAa,CAACt9B,IAAd;AACD;AATsB,KAAD,EAUrB;AACD,YAAM,oBADL;AAED,gBAAU,kBAFT;AAGD,cAAQ,GAHP;AAID,sBAAgB,OAJf;AAKD,eAAS,MALR;AAMD,qBAAe;AANd,KAVqB,CAAxB;;AAmBA,QAAIi+B,oBAAU,CAAC94C,OAAf,EAAwB;AACtB;AACAw4C,8BAAwB,CAAC;AACvB,gBAAQ,KADe;AAEvB,cAAM,eAFiB;AAGvB,kBAAU,OAHa;AAIvB,iBAAS,OAJc;AAKvB,mBAAW,CAAC,YAAD,CALY;AAMvB,mBAAWx8C,IAAI,CAACR,CAAL,CAAO,2BAAP,CANY;AAOvB,mBAAW,mBAAW;AACpB,cAAI,CAACs9C,oBAAU,CAACC,YAAhB,EAA8B;AAC5BD,gCAAU,CAAC9gC,OAAX,CAAmBmlB,QAAQ,CAACmb,IAA5B;AACAvoC,sBAAU,CAACkK,SAAX,CAAqB,mBAArB;AACD,WAHD,MAGO;AACL6+B,gCAAU,CAAC/9C,IAAX;AACD;AACF;AAdsB,OAAD,EAerB;AACD,cAAM,qBADL;AAED,kBAAU,kBAFT;AAGD,iBAAS,iBAHR;AAID,iBAAS,MAJR;AAKD,wBAAgB,KALf;AAMD,uBAAe;AANd,OAfqB,CAAxB;AAuBD;;AAED,QAAI,CAAC29C,yBAAyB,EAA9B,EAAkC;AAChC;AACAF,8BAAwB,CAAC;AACvB,gBAAQ,UADe;AAEvB,cAAM;AAFiB,OAAD,EAGrB;AACD,cAAM,gCADL;AAED,kBAAU,kBAFT;AAGD,kBAAU,2BAHT;AAID,gBAAQ,0BAJP;AAKD;AACA,iBAASh6C,QAAQ,CAACkX,GAAT,CAAa,UAASrgB,CAAT,EAAY;AAC9B,iBAAOA,CAAC,CAACzU,EAAT;AACD,SAFM,EAEJ+T,OAFI,CAEI,qBAFJ,KAE8B,CAF9B,GAGP,0BAHO,GAGsB,iBAT9B;AAUD,uBAAe;AAVd,OAHqB,CAAxB;AAeD;AACF;;AAED,MAAIoI,WAAW,CAACK,UAAhB,EAA4B;AAC1Bu7C,eAAW;AACZ;;AAED,MAAI57C,WAAW,CAACM,aAAhB,EAA+B;AAC7Bw7C,kBAAc;AACf;;AAED,SAAO;AACLn1D,cAAU,EAAEA,UADP;AAEL8a,YAAQ,EAAEA,QAFL;AAGL3gB,UAAM,EAAEA;AAHH,GAAP;AAKD;AAAA,C;;AClSD;AACA;AACA;AAGA;;;;;;AAKA,SAASm7D,WAAT,CAAqBC,cAArB,EAAqCj9C,IAArC,EAA2Ce,WAA3C,EAAwD;AACtDyd,cAAW,CAAC7kC,IAAZ,CAAiB,IAAjB,EAAuB;AACrB2kC,eAAW,EAAE,cADQ;AAErBx5B,YAAQ,EAAEm4D;AAFW,GAAvB,EAGGj9C,IAHH;AAIA,OAAKk9C,KAAL,GAAal9C,IAAb;;AACA,MAAIe,WAAJ,EAAiB;AACf,SAAKhD,MAAL,CAAYgD,WAAZ;AACD;AACF;;AAED0pB,OAAO,CAACuyB,WAAD,EAAcx+B,YAAd,CAAP;AAEA;;;;;;AAKAw+B,WAAW,CAACvjE,SAAZ,CAAsBskB,MAAtB,GAA+B,UAAUgD,WAAV,EAAuB;AACpD,MAAIo8C,aAAa,GAAGt/D,CAAC,CAAC,OAAD,CAArB;AAEA,OAAKrC,GAAL,CAAS,OAAT,EAAkB,KAAK0hE,KAAL,CAAW19C,CAAX,CAAa,oBAAb,EAAmC;AACnD49C,qBAAiB,EAAEr8C,WAAW,CAAClH;AADoB,GAAnC,CAAlB;;AAIA,MAAIkH,WAAW,CAACQ,QAAhB,EAA0B;AACxB;AACA47C,iBAAa,CAACr3D,MAAd,CAAqBonC,cAAc,CAAC,OAAOnsB,WAAW,CAACQ,QAAnB,GAA8B,IAA/B,CAAnC;AACD;;AACD47C,eAAa,CAACr3D,MAAd,CAAqBonC,cAAc,CAACnsB,WAAW,CAACS,KAAb,CAAnC;AAEA,OAAKwd,UAAL,CAAgBm+B,aAAhB;AACD,CAdD;;AAgBeH,4DAAf,E;;AC5Ce,SAASK,YAAT,CAAsBr9C,IAAtB,EAA4B;AACzC,MAAIs9C,OAAO,GAAG,sGAAd;AACA,MAAIC,QAAQ,GAAG,kGAAf;AACA,MAAIC,YAAY,GAAG,uIAAnB;AACA,MAAIC,gBAAgB,GAAG,oGAAvB;AACA,SAAO,oCACL,UADK,GACQz9C,IAAI,CAACR,CAAL,CAAO,qBAAP,CADR,GACwC,KADxC,GACgD,IAAI2f,IAAJ,GAAWu+B,WAAX,EADhD,GAC2E,YAD3E,GAC0FJ,OAD1F,GACoG,IADpG,GAELt9C,IAAI,CAACR,CAAL,CAAO,+BAAP,CAFK,GAEqC,GAFrC,GAGLQ,IAAI,CAACR,CAAL,CAAO,mBAAP,EAA4B;AAC1B+9C,YAAQ,EAAEA,QADgB;AAE1BC,gBAAY,EAAEA;AAFY,GAA5B,CAHK,GAMA,GANA,GAOLx9C,IAAI,CAACR,CAAL,CAAO,uBAAP,EAAgC;AAC9Bi+C,oBAAgB,EAAEA;AADY,GAAhC,CAPK,GAUL,QAVF;AAWD;AAAA,C;;AChBc,wEAAuB,iBAAiB,yBAAyB,sBAAsB,qBAAqB,YAAY,cAAc,aAAa,iEAAiE,cAAc,mDAAmD,aAAa,0CAA0C,aAAa,0FAA0F,YAAY,WAAW,E;;ACAzd;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIhO,qBAAQ,GAAGtO,QAAQ,CAACsO,QAAxB;AAAA,IAEEkO,SAAS,GAAG,uDACV,qFADU,GAEV,uEAJJ;AAMA;;;;;;AAKA,SAASC,WAAT,CAAqBX,cAArB,EAAqCY,4BAArC,EAAmE79C,IAAnE,EAAyEe,WAAzE,EAAsF;AACpF,MAAI+8C,IAAI,GAAGrO,qBAAQ,CAACqO,IAApB;AAAA,MACEC,WAAW,GAAGtO,qBAAQ,CAACuO,IAAT,CAAc72D,KAAd,CAAoB,gBAApB,CADhB;AAAA,MAEE;AACA82D,QAAM,GAAGF,WAAW,IAAIA,WAAW,CAAC,CAAD,CAHrC;AAAA,MAIEG,cAAc,GAAGzO,qBAAQ,CAACE,QAJ5B;AAMAnxB,cAAW,CAAC7kC,IAAZ,CAAiB,IAAjB,EAAuB;AACrB2kC,eAAW,EAAE,cADQ;AAErBx5B,YAAQ,EAAEm4D;AAFW,GAAvB,EAGGj9C,IAHH;AAKA;;AACA,OAAKm+C,KAAL,GAAa;AACXC,cAAU,EAAEp+C,IAAI,CAACR,CAAL,CAAO,yBAAP,CADD;AAEX6+C,eAAW,EAAEr+C,IAAI,CAACR,CAAL,CAAO,0BAAP,CAFF;AAGX8+C,eAAW,EAAEt+C,IAAI,CAACR,CAAL,CAAO,0BAAP,EAAmC;AAC9C9d,SAAG,EAAE;AADyC,KAAnC,CAHF;AAMX68D,eAAW,EAAEv+C,IAAI,CAACR,CAAL,CAAO,0BAAP,CANF;AAOXg/C,gBAAY,EAAEx+C,IAAI,CAACR,CAAL,CAAO,2BAAP,EAAoC;AAChD9d,SAAG,EAAE;AAD2C,KAApC,CAPH;AAUX+8D,aAAS,EAAEpB,YAAY,CAACr9C,IAAD;AAVZ,GAAb;AAYA,OAAKk9C,KAAL,GAAal9C,IAAb;;AAEA,MAAI6tB,6BAAS,CAAC6wB,cAAd,EAA8B;AAC5B,SAAKP,KAAL,CAAWQ,oBAAX,GAAkC9wB,6BAAS,CAAC6wB,cAAV,GAA2B7wB,6BAAS,CAAC+wB,kBAArC,GAA0Dd,IAA5F;AACD,GAFD,MAEO,IAAIG,MAAJ,EAAY;AACjB,SAAKE,KAAL,CAAWQ,oBAAX,GAAkCV,MAAM,GAAGC,cAAT,GAA0BJ,IAA5D;AACD,GAFM,MAEA;AACL;AACA,SAAKK,KAAL,CAAWQ,oBAAX,GAAkC,EAAlC;AACD;;AAED,MAAIE,IAAI,GAAG,0CAA0C,KAAKV,KAAL,CAAWQ,oBAArD,GACT,oBADS,GACc3+C,IAAI,CAACR,CAAL,CAAO,mBAAP,CADd,GAC4C,MADvD;AAEA,OAAK2+C,KAAL,CAAWW,cAAX,GAA4B9+C,IAAI,CAACR,CAAL,CAAO,6BAAP,EAAsC;AAChEq/C,QAAI,EAAEA;AAD0D,GAAtC,CAA5B;AAIA,OAAK7/B,UAAL,CAAgBuyB,kBAAQ,CAAC30C,MAAT,CAAgBmiD,YAAhB,EAAgC,KAAKZ,KAArC,CAAhB;AAEA;;AACA,OAAKa,sBAAL,GAA8BnhE,CAAC,CAACggE,4BAAD,CAA/B;AACA;;AACA,OAAKoB,YAAL,GAAoB,KAAKxgC,QAAL,CAAczmB,IAAd,CAAmB,cAAnB,CAApB;AACA;;AACA,OAAKknD,eAAL,GAAuB,KAAKzgC,QAAL,CAAczmB,IAAd,CAAmB,uBAAnB,CAAvB;;AAEA,OAAKinD,YAAL,CAAkB1oD,EAAlB,CAAqB,QAArB,EAA+B1Y,CAAC,CAACshE,KAAF,CAAQ,KAAKC,gBAAb,EAA+B,IAA/B,CAA/B;;AACA,OAAKA,gBAAL;;AAEA,MAAIr+C,WAAJ,EAAiB;AACf,SAAKhD,MAAL,CAAYgD,WAAZ;AACD;AACF;;AACD0pB,OAAO,CAACmzB,WAAD,EAAcp/B,YAAd,CAAP;AAEA;;;;AAGAo/B,WAAW,CAACnkE,SAAZ,CAAsB2lE,gBAAtB,GAAyC,YAAW;AAClD,MAAIC,WAAW,GAAG,KAAKL,sBAAL,CAA4BM,UAA5B,EAAlB;AAAA,MACEC,YAAY,GAAG,KAAKP,sBAAL,CAA4BQ,WAA5B,EADjB;AAAA,MAEEC,UAAU,GAAG,KAAKR,YAAL,CAAkBv9D,GAAlB,EAFf;;AAIA,UAAQ+9D,UAAR;AACE,SAAK,SAAL;AACE,WAAKtB,KAAL,CAAW95D,KAAX,GAAmBhK,IAAI,CAACwqC,KAAL,CAAWw6B,WAAW,GAAG,GAAzB,CAAnB;AACA,WAAKlB,KAAL,CAAW75D,MAAX,GAAoBjK,IAAI,CAACwqC,KAAL,CAAW06B,YAAY,GAAG,GAA1B,CAApB;AACA;;AACF,SAAK,QAAL;AACE,WAAKpB,KAAL,CAAW95D,KAAX,GAAmBhK,IAAI,CAACwqC,KAAL,CAAWw6B,WAAW,GAAG,GAAzB,CAAnB;AACA,WAAKlB,KAAL,CAAW75D,MAAX,GAAoBjK,IAAI,CAACwqC,KAAL,CAAW06B,YAAY,GAAG,GAA1B,CAApB;AACA;;AACF;AACE,WAAKpB,KAAL,CAAW95D,KAAX,GAAmBg7D,WAAnB;AACA,WAAKlB,KAAL,CAAW75D,MAAX,GAAoBi7D,YAApB;AACA;AAZJ;;AAeA,OAAKL,eAAL,CAAqBx9D,GAArB,CAAyB6vD,kBAAQ,CAAC30C,MAAT,CAAgB+gD,SAAhB,EAA2B,KAAKQ,KAAhC,CAAzB;AACD,CArBD;AAuBA;;;;;;;AAKAP,WAAW,CAACnkE,SAAZ,CAAsBskB,MAAtB,GAA+B,UAASgD,WAAT,EAAsB;AACnD,OAAKvlB,GAAL,CAAS,OAAT,EAAkB,KAAK0hE,KAAL,CAAW19C,CAAX,CAAa,oBAAb,EAAmC;AACnD49C,qBAAiB,EAAEr8C,WAAW,CAAClH;AADoB,GAAnC,CAAlB;AAGD,CAJD;;AAMe+jD,wEAAf,E;;ACnHe,yEAAsB,eAAe,cAAc,gBAAgB,gBAAgB,iBAAiB,cAAc,gBAAgB,OAAO,YAAY,WAAW,E;;ACA/K;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAI8B,WAAW,GAAG,qBAAlB;AAAA,IACEC,YAAY,GAAG,gCADjB;AAGA;;;;;;AAKA,SAASC,aAAT,CAAuB3C,cAAvB,EAAuCj9C,IAAvC,EAA6Ce,WAA7C,EAA0D;AACxDyd,cAAW,CAAC7kC,IAAZ,CAAiB,IAAjB,EAAuB;AACrB2kC,eAAW,EAAE,gBADQ;AAErBx5B,YAAQ,EAAEm4D;AAFW,GAAvB,EAGGj9C,IAHH;AAIA,OAAKk9C,KAAL,GAAal9C,IAAb;;AACA,MAAIe,WAAJ,EAAiB;AACf,SAAKhD,MAAL,CAAYgD,WAAZ;AACD;AACF;;AACD0pB,OAAO,CAACm1B,aAAD,EAAgBphC,YAAhB,CAAP;AAEA;;;;;;AAKAohC,aAAa,CAACnmE,SAAd,CAAwBskB,MAAxB,GAAiC,UAASgD,WAAT,EAAsB;AACrD,MAAI+8C,IAAI,GAAG3c,QAAQ,CAACsO,QAAT,CAAkBqO,IAA7B;AAAA,MACEC,WAAW,GAAG5c,QAAQ,CAACsO,QAAT,CAAkBuO,IAAlB,CAAuB72D,KAAvB,CAA6B,gBAA7B,CADhB;AAAA,MAEE;AACA82D,QAAM,GAAGF,WAAW,IAAIA,WAAW,CAAC,CAAD,CAHrC;AAAA,MAIEG,cAAc,GAAG/c,QAAQ,CAACsO,QAAT,CAAkBE,QAJrC;AAAA,MAKE3vC,IAAI,GAAG,KAAKk9C,KALd;AAAA,MAME2C,UAAU,GAAGH,WANf;AAAA,MAOEI,UAAU,GAAGH,YAPf;AAAA,MAQEI,qBARF;AAAA,MASEC,SATF;AAWA,OAAKxkE,GAAL,CAAS,OAAT,EAAkB,KAAK0hE,KAAL,CAAW19C,CAAX,CAAa,sBAAb,EAAqC;AACrD49C,qBAAiB,EAAEr8C,WAAW,CAAClH;AADsB,GAArC,CAAlB;;AAIA,MAAIg0B,6BAAS,CAAC6wB,cAAd,EAA8B;AAC5BqB,yBAAqB,GAAGlyB,6BAAS,CAAC6wB,cAAV,GAA2B7wB,6BAAS,CAAC+wB,kBAArC,GAA0Dd,IAAlF;AACD,GAFD,MAEO,IAAIG,MAAJ,EAAY;AACjB8B,yBAAqB,GAAG9B,MAAM,GAAGC,cAAT,GAA0BJ,IAAlD;AACD,GAFM,MAEA;AACL;AACAiC,yBAAqB,GAAG,EAAxB;AACD;;AAED,MAAIlyB,6BAAS,CAACoyB,WAAd,EAA2B;AACzBD,aAAS,GAAG,gBAAgBE,kBAAkB,CAACn/C,WAAW,CAAClH,KAAZ,CAAkB9U,OAAlB,CAA0B,KAA1B,EAAiC,GAAjC,CAAD,CAAlC,GACV,gDADU,GACyC8oC,6BAAS,CAACoyB,WAD/D;AAEAJ,cAAU,IAAI,MAAMG,SAApB;AACAF,cAAU,IAAI,MAAME,SAApB;AACAD,yBAAqB,IAAI,MAAMI,SAAS,CAAC,wEAAwEtyB,6BAAS,CAACoyB,WAAnF,CAAxC;AACD;;AAED,MAAItuB,IAAI,GAAG;AACT;AACAyuB,gBAAY,EAAEr/C,WAAW,CAACO,OAAZ,GAAsB4rB,cAAc,CAACnsB,WAAW,CAACO,OAAb,CAApC,GAA4DtB,IAAI,CAACR,CAAL,CAAO,6BAAP,EAAsC;AAC9G89C,aAAO,EAAE,0CAA0CuC,UAA1C,GAAuD,0CAD8C;AAE9GQ,sBAAgB,EAAE,0CAA0CP,UAA1C,GAAuD,4DAFqC;AAG9GQ,iBAAW,EAAE;AAHiG,KAAtC,CAFjE;AAOTC,kBAAc,EAAEvgD,IAAI,CAACR,CAAL,CAAO,+BAAP,EAAwC;AACtDghD,wBAAkB,EAAE,cAAcT,qBAAd,GAAsC,gDAAtC,GAAyF//C,IAAI,CAACR,CAAL,CAAO,8BAAP,CAAzF,GAAkI,MADhG;AAEtDi+C,sBAAgB,EAAE,cAAcoC,UAAd,GAA2B;AAFS,KAAxC,CAPP;AAWTpB,aAAS,EAAEpB,YAAY,CAACr9C,IAAD;AAXd,GAAX;;AAcA,MAAI,CAAC6tB,6BAAS,CAAC+uB,OAAf,EAAwB;AACtBjrB,QAAI,CAAC8uB,aAAL,GAAqB,IAArB;AACD;;AAED,OAAKzhC,UAAL,CAAgBuyB,kBAAQ,CAAC30C,MAAT,CAAgB8jD,cAAhB,EAAkC/uB,IAAlC,CAAhB;AACD,CApDD;;AAsDeiuB,4EAAf,E;;;;;ACvFe;AACb,gBAAc,EADD;AAEb,YAAU,CAAC;AACT,UAAM,KADG;AAET,cAAU,WAFD;AAGT,aAAS;AAHA,GAAD,EAIP;AACD,UAAM,OADL;AAED,WAAO,WAFN;AAGD,YAAQ,aAHP;AAID,cAAU,cAJT;AAKD,oBAAgB,KALf;AAMD,qBAAiB;AANhB,GAJO,EAWP;AACD,UAAM,QADL;AAED,WAAO,cAFN;AAGD,aAAS,mBAHR;AAID,mBAAe;AAJd,GAXO,CAFG;AAmBb,kBAAgB,CAAC;AACf,UAAM,KADS;AAEf,cAAU,WAFK;AAGf,aAAS;AAHM,GAAD,EAIb;AACD,UAAM,OADL;AAED,WAAO,WAFN;AAGD,YAAQ,aAHP;AAID,cAAU,cAJT;AAKD,oBAAgB,KALf;AAMD,qBAAiB,OANhB;AAOD,aAAS,iBAPR;AAQD,iBAAa;AARZ,GAJa,EAab;AACD,UAAM,QADL;AAED,WAAO,cAFN;AAGD,aAAS,mBAHR;AAID,mBAAe;AAJd,GAba,CAnBH;AAsCb,gBAAc,CAAC;AACb,UAAM,KADO;AAEb,cAAU,WAFG;AAGb,aAAS;AAHI,GAAD,EAIX;AACD,UAAM,OADL;AAED,WAAO,WAFN;AAGD,YAAQ,aAHP;AAID,cAAU,cAJT;AAKD,oBAAgB,KALf;AAMD,qBAAiB,OANhB;AAOD,aAAS,aAPR;AAQD,iBAAa;AARZ,GAJW,EAaX;AACD,UAAM,QADL;AAED,WAAO,cAFN;AAGD,aAAS,mBAHR;AAID,mBAAe;AAJd,GAbW,CAtCD;AAyDb,uBAAqB,CAAC;AACpB,UAAM,MADc;AAEpB,WAAO,WAFa;AAGpB,cAAU,cAHU;AAIpB,aAAS,YAJW;AAKpB,qBAAiB;AALG,GAAD,EAMlB;AACD,UAAM,OADL;AAED,WAAO,WAFN;AAGD,cAAU,cAHT;AAID,YAAQ,aAJP;AAKD,oBAAgB,KALf;AAMD,qBAAiB;AANhB,GANkB,EAalB;AACD,UAAM,QADL;AAED,WAAO,cAFN;AAGD,YAAQ,YAHP;AAID,aAAS;AAJR,GAbkB;AAzDR,CAAf,E;;ACAA,IAAIe,OAAJ;AAAA,IACEC,KADF;AAAA,IAEE58C,mBAAO,GAAG,KAFZ;;AAIA,IAAI,OAAO68C,WAAP,KAAuB,WAAvB,IAAsC,OAAOA,WAAW,CAACzhC,GAAnB,KAA2B,WAArE,EAAkF;AAChFuhC,SAAO,GAAGE,WAAW,CAACzhC,GAAZ,CAAgBvD,IAAhB,CAAqBglC,WAArB,CAAV;AACD,CAFD,MAEO;AACLF,SAAO,GAAGxhC,IAAI,CAACC,GAAL,CAASvD,IAAT,CAAcsD,IAAd,CAAV;AACD;;AAEc;AACb;;;;AAIAC,KAAG,EAAEuhC,OALQ;AAObG,aAAW,EAAE,qBAAS55B,CAAT,EAAY;AACvBljB,uBAAO,GAAGkjB,CAAV,CADuB,CAEvB;;AACA,QAAIljB,mBAAJ,EAAa48C,KAAK,GAAG,EAAR;AACd,GAXY;AAabG,YAAU,EAAE,oBAASlhE,IAAT,EAAe;AACzB,QAAImkB,mBAAJ,EAAa;AACX,UAAIqD,CAAC,GAAGu5C,KAAK,CAAC/gE,IAAD,CAAb;;AACA,UAAIwnB,CAAC,KAAKlvB,SAAV,EAAqB;AACnBkvB,SAAC,GAAGu5C,KAAK,CAAC/gE,IAAD,CAAL,GAAc;AAChBmhE,kBAAQ,EAAE,CADM;AAEhBC,iBAAO,EAAE,CAFO;AAGhB/iD,eAAK,EAAE;AAHS,SAAlB;AAKD;;AACDmJ,OAAC,CAAC25C,QAAF,GAAaL,OAAO,EAApB;AACD;AACF,GAzBY;AA2BbO,YAAU,EAAE,oBAASrhE,IAAT,EAAe;AACzB,QAAImkB,mBAAJ,EAAa;AACX,UAAIqD,CAAC,GAAGu5C,KAAK,CAAC/gE,IAAD,CAAb;;AACA,UAAIwnB,CAAC,KAAKlvB,SAAV,EAAqB;AACnBkvB,SAAC,CAAC45C,OAAF,IAAaN,OAAO,KAAKt5C,CAAC,CAAC25C,QAA3B;AACA35C,SAAC,CAACnJ,KAAF,IAAW,CAAX;AACD;AACF;AACF,GAnCY;AAqCbijD,YAAU,EAAE,oBAASthE,IAAT,EAAe;AACzB,QAAIwnB,CAAC,GAAGu5C,KAAK,CAAC/gE,IAAD,CAAb;;AACA,QAAIwnB,CAAC,KAAKlvB,SAAV,EAAqB;AACnB,aAAOkvB,CAAC,CAAC45C,OAAF,GAAY55C,CAAC,CAACnJ,KAArB;AACD;;AACD,WAAO,CAAP;AACD,GA3CY;AA6CbkjD,YAAU,EAAE,oBAASvhE,IAAT,EAAe;AAAE;AAC3B,QAAIwnB,CAAC,GAAGu5C,KAAK,CAAC/gE,IAAD,CAAb;;AACA,QAAIwnB,CAAC,KAAKlvB,SAAV,EAAqB;AACnB,aAAOkvB,CAAC,CAACnJ,KAAF,GAAU,IAAV,GAAiBmJ,CAAC,CAAC45C,OAA1B;AACD;;AACD,WAAO,CAAP;AACD;AAnDY,CAAf,E;;ACVA;AACA;;AAEA,SAASI,eAAT,CAAyB1zB,QAAzB,EAAmC/qB,YAAnC,EAAiD2M,sBAAjD,EACE9V,KADF,EACS6nD,cADT,EACyBh9B,YADzB,EACuCi9B,UADvC,EACmD;AACjD,MAAIxtC,UAAJ;AAAA,MACElsB,KADF;AAAA,MAEE0oD,UAFF;AAAA,MAGE5pB,cAHF;AAAA,MAKE;AACA;AACA66B,YAPF;AAAA,MASE;AACAhzC,UAAQ,GAAGjT,EAAE,CAACiT,QAAH,CAAY,aAAZ,EAA2B,YAA3B,EAAyC,oBAAzC,CAVb;;AAYA,WAASizC,gBAAT,GAA4B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACApnE,QAAI,CAACqnE,UAAL,GAAkBA,oBAAU,CAACnyC,sBAAsB,CAAC1N,UAAvB,GAAoCha,KAAK,CAACmW,GAAN,CAAU,MAAV,CAArC,CAA5B;AACD;;AAED,WAAS2jD,WAAT,GAAuB;AACrBd,sBAAW,CAACE,UAAZ,CAAuB,cAAvB;AACAhtC,cAAU,CAAC4S,cAAX,CAA0B5oB,MAA1B;AACA8iD,sBAAW,CAACK,UAAZ,CAAuB,cAAvB;AACD,GA/BgD,CAiCjD;AACA;AACA;AACA;;;AACA,WAASv5D,UAAT,GAAsB;AACpBE,SAAK,GAAG,IAAI4R,KAAJ,CAAUmJ,YAAV,EAAwB;AAC9Bg/C,kBAAY,EAAE,IADgB;AAE9B5hD,UAAI,EAAEuP,sBAAsB,CAACvP;AAFC,KAAxB,CAAR;AAIAnY,SAAK,CAAC0O,EAAN,CAAS,2BAAT,EAAsCkrD,gBAAtC;AACA55D,SAAK,CAAC0O,EAAN,CAAS,sBAAT,EAAiCorD,WAAjC;AACA95D,SAAK,CAAC0O,EAAN,CAAS,uBAAT,EAAkCsrD,YAAlC;AACD;;AAED,WAASA,YAAT,GAAwB;AACtB;AACA;AACAL,cAAU,GAAGA,UAAU,IAAIH,eAAe,CAACS,WAAhB,CAA4BC,KAAvD;AACAp7B,kBAAc,CAAClP,OAAf;AACAjJ,YAAQ,CAACwzC,UAAT,CAAoBR,UAApB;AACD;AAED;;;;AAIA;;;AACA,WAASS,MAAT,CAAgBC,WAAhB,EAA6BC,eAA7B,EAA8CpzC,cAA9C,EAA8D;AAC5D;AACA;AACA,QAAIlnB,KAAK,IAAIA,KAAK,CAACu6D,SAAnB,EAA8B;AAC5Bv6D,WAAK,CAACu6D,SAAN;AACD;;AAEDz0B,YAAQ,GAAGu0B,WAAW,IAAIv0B,QAA1B;AACA/qB,gBAAY,GAAGu/C,eAAe,IAAIv/C,YAAlC;AACAjb,cAAU;;AAEV,QAAIg/B,cAAJ,EAAoB;AAClBA,oBAAc,CAACgD,SAAf,CAAyB9hC,KAAzB,EAAgC8lC,QAAhC;AACD,KAFD,MAEO;AACLhH,oBAAc,GAAG,IAAI26B,cAAJ,CAAmBz5D,KAAnB,EAA0BksB,UAAU,CAAC4Z,QAArC,EAA+Cpe,sBAAsB,CAACvP,IAAtE,CAAjB;AACD;;AAED,QAAI,CAAC+O,cAAL,EAAqB;AACnBP,cAAQ,CAAC6zC,WAAT,CAAqBhB,eAAe,CAACiB,UAAhB,CAA2BC,MAAhD;AACD;AAEF,GAjFgD,CAmFjD;AACA;AACA;AACA;AACA;;;AAEAxuC,YAAU,GAAG;AAEX,QAAIj0B,IAAJ,GAAW;AACT,aAAO2Z,KAAK,CAAC3Z,IAAb;AACD,KAJU;;AAKX,QAAIywD,UAAJ,GAAiB;AACf,aAAOA,UAAP;AACD,KAPU;;AAQX,QAAI5iB,QAAJ,GAAe;AACb,aAAOA,QAAP;AACD,KAVU;;AAWX,QAAI9lC,KAAJ,GAAY;AACV,aAAOA,KAAP;AACD,KAbU;;AAcX,QAAI8+B,cAAJ,GAAqB;AACnB,aAAOA,cAAP;AACD,KAhBU;;AAkBXpwB,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD,KApBU;AAsBXpnB,oBAAgB,EAAE,4BAAW;AAC3B,aAAOguB,UAAU,CAAC4S,cAAX,CAA0BxuB,GAAjC;AACD,KAxBU;AA0BX7R,qBAAiB,EAAE,2BAASjC,KAAT,EAAgBvB,eAAhB,EAAiC;AAClD,aAAOixB,UAAU,CAAC4S,cAAX,CAA0BrgC,iBAA1B,CAA4CjC,KAA5C,EAAmDvB,eAAnD,CAAP;AACD,KA5BU;;AA8BX;;;;;;;;;;AAYA0/D,kBAAc,EAAE,0BAAW;AACzBzuC,gBAAU,CAAC4S,cAAX,CAA0BmM,KAA1B;AACA/e,gBAAU,CAAC4S,cAAX,CAA0BlP,OAA1B;AACD,KA7CU;AA+CXtvB,UAAM,EAAE,kBAAW;AACjB4rB,gBAAU,CAAC4S,cAAX,CAA0Bx+B,MAA1B;AACD,KAjDU;AAmDXsvB,WAAO,EAAE,mBAAW;AAClB1D,gBAAU,CAAC4S,cAAX,CAA0BlP,OAA1B;AACD,KArDU;AAuDXgrC,cAAU,EAAE,sBAAW;AACrB1uC,gBAAU,CAAC4S,cAAX,CAA0B5oB,MAA1B;AACD,KAzDU;AA2DXkkD,UAAM,EAAEA,MA3DG;AA6DX5+D,SAAK,EAAE,eAASg+B,KAAT,EAAgB;AACrBx5B,WAAK,CAAC89B,IAAN,GADqB,CAErB;AACA;;AACA67B,gBAAU,GAAGngC,KAAb;AACAx5B,WAAK,CAACxE,KAAN;AACAm+D,gBAAU,GAAGrpE,SAAb;AACD,KApEU;AAsEXgoC,SAAK,EAAE,iBAAW;AAChB,aAAOt4B,KAAK,CAACnK,SAAN,EAAP;AACD,KAxEU;AA0EX4mC,gBAAY,EAAEA,YA1EH;AA4EXn1B,0BAAsB,EAAE,kCAAW;AACjC,aAAOtH,KAAK,CAACmW,GAAN,CAAU,wBAAV,CAAP;AACD;AA9EU,GAAb,CAzFiD,CA0KjD;AACA;AACA;AACA;AACA;AAEA;;AACA,MAAI4E,YAAY,IAAI,IAApB,EAA0B;AACxBjb,cAAU;AACX,GAnLgD,CAqLjD;;;AACAjQ,QAAM,CAACg4B,QAAP,GAAkB,YAAW;AAC3B,WAAO7nB,KAAP;AACD,GAFD;;AAIA0oD,YAAU,GAAG,OAAOgR,UAAP,KAAsB,UAAtB,GAAmC,IAAIA,UAAJ,CAAextC,UAAf,CAAnC,GAAgE,EAA7E;AACA,SAAOA,UAAP;AACD;;AAEDstC,eAAe,CAACiB,UAAhB,GAA6B;AAC3BC,QAAM,EAAE,QADmB;AAE3BG,cAAY,EAAE;AAFa,CAA7B;AAKArB,eAAe,CAACS,WAAhB,GAA8B;AAC5BC,OAAK,EAAE;AADqB,CAA9B;AAIeV,oEAAf,E;;;;AC3MA;;AAEA,IAAMsB,0BAAgB,GAAG,SAAnBA,gBAAmB,CAAUj+B,GAAV,EAAe;AACtC,MAAIzrC,CAAJ,EAAOc,GAAP;;AACA,MAAIxC,yBAAM,CAACuE,OAAP,CAAe4oC,GAAf,CAAJ,EAAyB;AACvB,SAAKzrC,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG2qC,GAAG,CAACxrC,MAAtB,EAA8BD,CAAC,GAAGc,GAAlC,EAAuCd,CAAC,EAAxC,EAA4C;AAC1C,UAAIyrC,GAAG,CAACzrC,CAAD,CAAH,KAAW2N,QAAX,IAAuB89B,GAAG,CAACzrC,CAAD,CAAH,KAAW,CAAC2N,QAAvC,EAAiD;AAC/C89B,WAAG,CAACzrC,CAAD,CAAH,GAASyrC,GAAG,CAACzrC,CAAD,CAAH,CAAOS,QAAP,EAAT;AACD;AACF;AACF,GAND,MAMO;AACL,SAAKT,CAAL,IAAUyrC,GAAV,EAAe;AACb,UAAIA,GAAG,CAACloC,cAAJ,CAAmBvD,CAAnB,CAAJ,EAA2B;AACzB,YAAIyrC,GAAG,CAACzrC,CAAD,CAAH,KAAW2N,QAAX,IAAuB89B,GAAG,CAACzrC,CAAD,CAAH,KAAW,CAAC2N,QAAvC,EAAiD;AAC/C89B,aAAG,CAACzrC,CAAD,CAAH,GAASyrC,GAAG,CAACzrC,CAAD,CAAH,CAAOS,QAAP,EAAT;AACD;;AACD,YAAI,iBAAOgrC,GAAG,CAACzrC,CAAD,CAAV,MAAkB,QAAlB,IAA8B1B,yBAAM,CAACuE,OAAP,CAAe4oC,GAAG,CAACzrC,CAAD,CAAlB,CAAlC,EAA0D;AACxD0pE,0BAAgB,CAACj+B,GAAG,CAACzrC,CAAD,CAAJ,CAAhB;AACD;AACF;AACF;AACF;AACF,CApBD;;AAsBe,SAASyE,mBAAT,CAAmBklE,QAAnB,EAA6BC,cAA7B,EAA6C3kD,KAA7C,EAAoD;AACjE,MAAIlhB,MAAM,GAAG,EAAb;AAAA,MACEV,QADF;AAAA,MACYL,IADZ;;AAEA,OAAKK,QAAL,IAAiBsmE,QAAjB,EAA2B;AACzB,QAAIA,QAAQ,CAACpmE,cAAT,CAAwBF,QAAxB,CAAJ,EAAuC;AACrC,UAAIumE,cAAc,CAACvmE,QAAD,CAAd,KAA6BnE,SAA7B,IAA0CyqE,QAAQ,CAACtmE,QAAD,CAAR,CAAmBoB,SAAnB,KAAiC,KAA/E,EAAsF;AACpFzB,YAAI,GAAG4mE,cAAc,CAACvmE,QAAD,CAArB;;AACA,YAAI/E,yBAAM,CAACuE,OAAP,CAAeG,IAAf,CAAJ,EAA0B;AACxBe,gBAAM,CAACV,QAAD,CAAN,GAAmB/E,yBAAM,CAACqC,IAAP,CAAYqC,IAAZ,EAAkB,EAAlB,EAAsBiiB,KAAtB,CAAnB;AACD,SAFD,MAEO,IAAI,iBAAOjiB,IAAP,MAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AACpDe,gBAAM,CAACV,QAAD,CAAN,GAAmBuB,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBa,IAAnB,CAAnB;AACD,SAFM,MAEA;AACLe,gBAAM,CAACV,QAAD,CAAN,GAAmBL,IAAnB;AACD;AACF;AACF;AACF,GAhBgE,CAiBjE;;;AACA0mE,4BAAgB,CAAC3lE,MAAD,CAAhB,CAlBiE,CAmBjE;AACA;AACA;AACA;AACA;AACA;;AACA,SAAOA,MAAP;AACD,C;;;;AClDE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDH;AAEA;AACA,IAAI8lE,oBAAoB,GAAG;AAEzB;;;;;;;;;;;;;;;AAmBA9kD,KAAG,EAAE;AACHrgB,gBAAY,EAAExF,SADX;AAEH2H,QAAI,EAAE;AAFH,GArBoB;;AA0BzB;;;;;;;;;;;;;;;;;;;;AAyBAtE,KAAG,EAAE;AACHmC,gBAAY,EAAExF,SADX;AAEH2H,QAAI,EAAE;AAFH,GAnDoB;;AAwDzB;;;;;;;;;AAWAhD,UAAQ,EAAE;AACRa,gBAAY,EAAExF,SADN;AAER2H,QAAI,EAAE;AAFE,GAnEe;;AAwEzB;;;;;;;AASAijE,mBAAiB,EAAE;AACjBplE,gBAAY,EAAExF,SADG;AAEjB2H,QAAI,EAAE;AAFW,GAjFM;;AAsFzB;;;;;;;AASAkjE,kBAAgB,EAAE;AAChBrlE,gBAAY,EAAExF,SADE;AAEhB2H,QAAI,EAAE;AAFU,GA/FO;;AAoGzB;;;;;;;;;;AAYAmjE,mBAAiB,EAAE;AACjBtlE,gBAAY,EAAExF,SADG;AAEjB2H,QAAI,EAAE;AAFW,GAhHM;;AAqHzB;;;;;;AAOAojE,oBAAkB,EAAE;AAClBvlE,gBAAY,EAAExF,SADI;AAElB2H,QAAI,EAAE;AAFY,GA5HK;;AAiIzB;;;;;;;;AAUAqjE,UAAQ,EAAE;AACRxlE,gBAAY,EAAE,IADN;AAERmC,QAAI,EAAE;AAFE,GA3Ie;;AAgJzB;;;AAGAsjE,uBAAqB,EAAE;AACrBzlE,gBAAY,EAAE,KADO;AAErBmC,QAAI,EAAE;AAFe,GAnJE;;AAwJzB;;;;;;;;;;AAYAujE,8BAA4B,EAAE;AAC5B1lE,gBAAY,EAAE,IADc;AAE5BmC,QAAI,EAAE;AAFsB,GApKL;;AAyKzB;;;;;;;;AAWAA,MAAI,EAAE;AACJnC,gBAAY,EAAExF,SADV;AAEJ2H,QAAI,EAAE;AAFF,GApLmB;;AAyLzB;;;;;;AAOA4xB,aAAW,EAAE;AACX/zB,gBAAY,EAAExF;AADH;AAhMY,CAA3B;;AAqMA,SAASmrE,cAAT,CAAwBxjE,IAAxB,EAA8ByjE,WAA9B,EAA2CvqE,KAA3C,EAAkD;AAChD;AACA,MAAI,wBAAOA,KAAP,MAAiB8G,IAArB,EAA2B;AACzB,UAAM,IAAI9E,SAAJ,CAAcuoE,WAAW,GAAG,aAAd,GAA8BzjE,IAA9B,GAAqC,GAAnD,CAAN;AACD;AACF;;AAED,SAASlG,qBAAT,CAAcxB,CAAd,EAAiB;AACf,MAAIsQ,GAAG,GAAG,EAAV;AACAtQ,GAAC,CAACgd,OAAF,CAAU,UAASkoB,IAAT,EAAe;AACvB50B,OAAG,CAAC7M,IAAJ,CAASyhC,IAAT;AACD,GAFD;AAGA,SAAO50B,GAAP;AACD,C,CAED;AACA;AACA;AACA;AAEA;AACA;;;AACe,SAAS86D,eAAT,CAAyBt1C,IAAzB,EAA+B;AAE5C,MAAIu1C,aAAa,GAAGv1C,IAAI,IAAIA,IAAI,CAACxvB,KAAb,IAAsB9E,qBAAI,CAACs0B,IAAI,CAACxvB,KAAN,CAA1B,IAA0C,EAA9D;AAAA,MACEglE,mBAAmB,GAAG,EADxB;AAAA,MAEEC,uBAAuB,GAAG;AACxBC,OAAG,EAAEzrE,SADmB;AAExB0rE,UAAM,EAAE;AAFgB,GAF5B;AAAA,MAMEC,gBAAgB,GAAG,IANrB;AAAA,MAOEC,uBAAuB,GAAG,KAP5B;AAAA,MASEv1C,QAAQ,GAAGjT,EAAE,CAACiT,QAAH,CAAY,0BAAZ,EACT,yBADS,EAET,iCAFS,CATb;AAAA,MAaEw1C,8BAA8B,GAAG,CAbnC;AAAA,MAcEC,qCAdF;AAAA,MAeEC,4BAA4B,GAAG,KAfjC;AAAA,MAiBE;AACAC,qBAAmB,GAAG,EAlBxB;AAAA,MAoBE;AACAC,sBAAoB,GAAG,EArBzB;AAAA,MAuBE;AACAC,0BAAwB,GAAG,EAxB7B;AAAA,MA0BE;AACA5sD,KA3BF,CAF4C,CAgC5C;;AACA,WAAS6sD,4BAAT,GAAwC;AACtC,WAAOF,oBAAoB,CAAC3iC,MAArB,CAA4B,UAASpsB,GAAT,EAAc;AAC/C,aAAOquD,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBkvD,SAAzB,CAAmCrrE,MAAnC,GAA4C,CAAnD;AACD,KAFM,CAAP;AAGD;;AAED,WAASsrE,sBAAT,CAAgCxrE,KAAhC,EAAuC;AACrC,QAAIyqE,aAAa,CAAC9qD,OAAd,CAAsB3f,KAAtB,IAA+B,CAAnC,EAAsC;AACpC,YAAM,IAAIgC,SAAJ,CAAchC,KAAK,GAAG,qCAAtB,CAAN;AACD;AACF,GA3C2C,CA6C5C;AACA;AACA;AACA;;;AACA,WAASyrE,kBAAT,CAA4BC,UAA5B,EAAwC;AACtC,QAAIh8D,GAAG,GAAG,EAAV;AAEAlP,UAAM,CAAC2b,IAAP,CAAY2tD,oBAAZ,EAAkC1tD,OAAlC,CAA0C,UAASC,GAAT,EAAc;AACtD,UAAIsvD,kBAAkB,GAAG7B,oBAAoB,CAACztD,GAAD,CAA7C;;AAEA,UAAIqvD,UAAU,CAACrvD,GAAD,CAAV,KAAoBld,SAAxB,EAAmC;AACjCuQ,WAAG,CAAC2M,GAAD,CAAH,GAAWqvD,UAAU,CAACrvD,GAAD,CAArB;;AACA,gBAAQsvD,kBAAkB,CAAC7kE,IAA3B;AACE,eAAK,SAAL;AACE4I,eAAG,CAAC2M,GAAD,CAAH,GAAW,CAAC,CAAC3M,GAAG,CAAC2M,GAAD,CAAhB;AACA;;AACF,eAAK,UAAL;AACEiuD,0BAAc,CAAC,UAAD,EAAajuD,GAAb,EAAkBqvD,UAAU,CAACrvD,GAAD,CAA5B,CAAd;AACA;;AACF,eAAK,QAAL;AACEiuD,0BAAc,CAAC,QAAD,EAAWjuD,GAAX,EAAgBqvD,UAAU,CAACrvD,GAAD,CAA1B,CAAd;AACA;;AACF,eAAK,cAAL;AACEmvD,kCAAsB,CAACE,UAAU,CAACrvD,GAAD,CAAX,CAAtB;AACA;AAZJ;AAcD,OAhBD,MAgBO;AACL3M,WAAG,CAAC2M,GAAD,CAAH,GAAWsvD,kBAAkB,CAAChnE,YAA9B;AACD;AACF,KAtBD;AAwBA,WAAO+K,GAAP;AACD,GA7E2C,CA+E5C;;;AACA,WAASk8D,mBAAT,CAA6BC,SAA7B,EAAwC;AACtC,QAAIC,MAAM,GAAG,EAAb;AACAD,aAAS,CAACzvD,OAAV,CAAkB,UAAS4X,QAAT,EAAmB;AACnC;AACA,UAAI83C,MAAM,CAACnsD,OAAP,CAAeqU,QAAf,IAA2B,CAA/B,EAAkC;AAChCA,gBAAQ;AACR83C,cAAM,CAACjpE,IAAP,CAAYmxB,QAAZ;AACD;AACF,KAND;AAOD,GAzF2C,CA2F5C;AACA;AACA;;;AACA,WAAS+3C,wBAAT,CAAkCC,OAAlC,EAA2C;AACzC,QAAIH,SAAS,GAAG,EAAhB;AAEAd,2BAAuB,GAAG,IAA1B;AACAiB,WAAO;AACPjB,2BAAuB,GAAG,KAA1B;AAEAI,uBAAmB,CAAC/uD,OAApB,CAA4B,UAASC,GAAT,EAAc;AACxCquD,yBAAmB,CAACruD,GAAD,CAAnB,CAAyBkvD,SAAzB,CAAmCnvD,OAAnC,CAA2C,UAAS4X,QAAT,EAAmB;AAC5D63C,iBAAS,CAAChpE,IAAV,CAAemxB,QAAf;AACD,OAFD;AAGD,KAJD;AAKAm3C,uBAAmB,GAAG,EAAtB;AACAS,uBAAmB,CAACC,SAAD,CAAnB;AACD,GA5G2C,CA8G5C;AACA;AACA;;;AACA,WAASI,MAAT,CAAgB5vD,GAAhB,EAAqB;AACnB,QAAI0uD,uBAAJ,EAA6B;AAC3BI,yBAAmB,CAACtoE,IAApB,CAAyBwZ,GAAzB;AACD,KAFD,MAEO;AACLuvD,yBAAmB,CAAClB,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBkvD,SAA1B,CAAnB;AACD;AACF,GAvH2C,CAyH5C;AACA;;;AACA,WAASW,kCAAT,CAA4C7vD,GAA5C,EAAiD;AAC/CuvD,uBAAmB,CAAClB,mBAAmB,CAACruD,GAAD,CAAnB,CAAyB8vD,4BAA1B,CAAnB;AACD,GA7H2C,CA+H5C;AACA;;;AACA,WAASnnD,IAAT,CAAa3I,GAAb,EAAkB;AAChB,QAAI+vD,IAAI,GAAG1B,mBAAmB,CAACruD,GAAD,CAA9B;;AAEA,QAAI,CAAC+vD,IAAI,CAACV,UAAL,CAAgB1mD,GAArB,EAA0B;AACxB,aAAOonD,IAAI,CAACC,WAAZ;AACD;;AAED,QAAIvB,gBAAJ,EAAsB;AACpB,UAAI,CAACsB,IAAI,CAACE,cAAV,EAA0B;AACxBF,YAAI,CAACE,cAAL,GAAsB,IAAtB;AACAF,YAAI,CAACC,WAAL,GAAmBD,IAAI,CAACV,UAAL,CAAgB1mD,GAAhB,EAAnB;AACD;;AACD,aAAOonD,IAAI,CAACC,WAAZ;AACD;;AACD,WAAOD,IAAI,CAACV,UAAL,CAAgB1mD,GAAhB,EAAP;AACD,GAhJ2C,CAkJ5C;AACA;AACA;;;AACA,WAASxiB,IAAT,CAAa6Z,GAAb,EAAkBrc,KAAlB,EAAyB;AACvB,QAAIosE,IAAI,GAAG1B,mBAAmB,CAACruD,GAAD,CAA9B;;AAEA,QAAI,CAAC+vD,IAAI,CAACV,UAAL,CAAgBvB,QAArB,EAA+B;AAC7B,YAAM,IAAIrqE,KAAJ,CAAU,uCAAuCuc,GAAjD,CAAN;AACD;;AAED,QAAI+vD,IAAI,CAACV,UAAL,CAAgB1mD,GAAhB,IAAuB,CAAC8lD,gBAA5B,EAA8C;AAC5CsB,UAAI,CAACE,cAAL,GAAsB,KAAtB;AACD,KAFD,MAEO;AACLF,UAAI,CAACE,cAAL,GAAsB,IAAtB;AACAF,UAAI,CAACC,WAAL,GAAmBrsE,KAAnB;AACD;AACF;;AAED,WAASusE,uBAAT,CAAgClwD,GAAhC,EAAqCqc,WAArC,EAAkD;AAChD,QAAI0zC,IAAI,GAAG1B,mBAAmB,CAACruD,GAAD,CAA9B;AAEA+vD,QAAI,CAACV,UAAL,CAAgBhzC,WAAhB,GAA8BA,WAA9B;AACAwzC,sCAAkC,CAAC7vD,GAAD,CAAlC;AACD;;AAED,WAASmwD,iCAAT,CAA2C1lE,IAA3C,EAAiD;AAC/C6jE,2BAAuB,CAACC,GAAxB,GAA8BzrE,SAA9B;;AACA,QAAI2H,IAAJ,EAAU;AACR6jE,6BAAuB,CAACE,MAAxB,CAA+B/jE,IAA/B,IAAuC3H,SAAvC;AACD;AACF,GAhL2C,CAkL5C;AACA;AACA;;;AACA,WAASstE,iBAAT,CAA2B1pE,MAA3B,EAAmCsZ,GAAnC,EAAwC;AACtC,QAAI+vD,IAAI,GAAG1B,mBAAmB,CAACruD,GAAD,CAA9B;AAEA7b,UAAM,CAAC6qC,cAAP,CAAsBtoC,MAAtB,EAA8BsZ,GAA9B,EAAmC;AACjCqwD,gBAAU,EAAE,IADqB;AAEjCC,kBAAY,EAAE,KAFmB;AAIjC;AACA;AACA;AACA;AACA;AACA3nD,SAAG,EAAE,eAAW;AACd,YAAIhlB,KAAK,GAAGglB,IAAG,CAAC3I,GAAD,CAAf;;AACA,YAAI+vD,IAAI,CAACV,UAAL,CAAgBzB,iBAApB,EAAuC;AACrCjqE,eAAK,GAAGosE,IAAI,CAACV,UAAL,CAAgBzB,iBAAhB,CAAkCjqE,KAAlC,CAAR;AACD;;AACD,eAAOA,KAAP;AACD,OAfgC;AAiBjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAwC,SAAG,EAAE,aAASxC,KAAT,EAAgB;AACnB,YAAIosE,IAAI,CAACV,UAAL,CAAgB3B,iBAApB,EAAuC;AACrCqC,cAAI,CAACV,UAAL,CAAgB3B,iBAAhB;AACD;;AAED,YAAIqC,IAAI,CAACV,UAAL,CAAgBxB,kBAApB,EAAwC;AACtClqE,eAAK,GAAGosE,IAAI,CAACV,UAAL,CAAgBxB,kBAAhB,CAAmClqE,KAAnC,CAAR;AACD;;AACD,YAAIosE,IAAI,CAACV,UAAL,CAAgB5nE,QAApB,EAA8B;AAC5B9D,eAAK,GAAGosE,IAAI,CAACV,UAAL,CAAgB5nE,QAAhB,CAAyB9D,KAAzB,CAAR;AACD;;AAEDwC,YAAG,CAAC6Z,GAAD,EAAMrc,KAAN,CAAH;;AAEA,YAAIosE,IAAI,CAACV,UAAL,CAAgBlpE,GAApB,EAAyB;AACvB4pE,cAAI,CAACV,UAAL,CAAgBlpE,GAAhB,CAAoBxC,KAApB;AACD;;AAED,YAAIosE,IAAI,CAACV,UAAL,CAAgB1B,gBAApB,EAAsC;AACpCoC,cAAI,CAACV,UAAL,CAAgB1B,gBAAhB;AACD;;AAEDiC,cAAM,CAAC5vD,GAAD,CAAN;AACD;AAjDgC,KAAnC;AAmDD,GA3O2C,CA6O5C;AACA;AACA;AACA;;;AACA,WAASuwD,mBAAT,CAA6B9lE,IAA7B,EAAmC;AACjC,QAAI/D,MAAM,GAAG+D,IAAI,GAAG6jE,uBAAuB,CAACE,MAAxB,CAA+B/jE,IAA/B,CAAH,GAA0C6jE,uBAAuB,CAACC,GAAnF;;AAEA,QAAI,CAAC7nE,MAAL,EAAa;AACXA,YAAM,GAAG,EAAT;AACAvC,YAAM,CAAC2b,IAAP,CAAYuuD,mBAAZ,EAAiCtuD,OAAjC,CAAyC,UAASC,GAAT,EAAc;AACrD,YAAI,CAACvV,IAAD,IAASA,IAAI,KAAK4jE,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBqvD,UAAzB,CAAoC5kE,IAA1D,EAAgE;AAC9D2lE,2BAAiB,CAAC1pE,MAAD,EAASsZ,GAAT,CAAjB;AACD;AACF,OAJD;;AAMA,UAAI7b,MAAM,CAACqsE,IAAX,EAAiB;AACfrsE,cAAM,CAACqsE,IAAP,CAAY9pE,MAAZ;AACD;;AAED,UAAI+D,IAAJ,EAAU;AACR6jE,+BAAuB,CAACE,MAAxB,CAA+B/jE,IAA/B,IAAuC/D,MAAvC;AACD,OAFD,MAEO;AACL4nE,+BAAuB,CAACC,GAAxB,GAA8B7nE,MAA9B;AACD;AACF;;AACD,WAAOA,MAAP;AACD,GAvQ2C,CAyQ5C;;;AACA0b,KAAG,GAAG;AAEJ;;;;AAIAoX,WAAO,EAAE,iBAASC,MAAT,EAAiB;AAExB;;;;;;;;;;;;;;;AAkBAt1B,YAAM,CAAC6qC,cAAP,CAAsBvV,MAAtB,EAA8B,YAA9B,EAA4C;AAC1C62C,oBAAY,EAAE,KAD4B;AAE1CD,kBAAU,EAAE,IAF8B;AAG1C1nD,WAAG,EAAE4nD;AAHqC,OAA5C;AAMA;;;;;;;AAOA92C,YAAM,CAACg3C,gBAAP,GAA0B,UAAShmE,IAAT,EAAe;AACvC,eAAO8lE,mBAAmB,CAAC9lE,IAAD,CAA1B;AACD,OAFD;AAIA;;;;;;;;;AASAgvB,YAAM,CAACtzB,GAAP,GAAa,UAAS6Z,GAAT,EAAcrc,KAAd,EAAqB;AAChC,YAAI8kE,IAAJ;;AACA,YAAI,OAAOzoD,GAAP,KAAe,QAAnB,EAA6B;AAC3ByZ,gBAAM,CAACzL,UAAP,CAAkBhO,GAAlB,IAAyBrc,KAAzB;AACD,SAFD,MAEO;AACL8kE,cAAI,GAAGzoD,GAAP;AACA0vD,kCAAwB,CAAC,YAAW;AAClCvrE,kBAAM,CAAC2b,IAAP,CAAY2oD,IAAZ,EAAkB1oD,OAAlB,CAA0B,UAASC,GAAT,EAAc;AACtCyZ,oBAAM,CAACzL,UAAP,CAAkBhO,GAAlB,IAAyByoD,IAAI,CAACzoD,GAAD,CAA7B;AACD,aAFD;AAGD,WAJuB,CAAxB;AAKD;AACF,OAZD;AAcA;;;;;;AAKAyZ,YAAM,CAAC9Q,GAAP,GAAa,UAAS3I,GAAT,EAAc;AACzB,eAAOyZ,MAAM,CAACzL,UAAP,CAAkBhO,GAAlB,CAAP;AACD,OAFD,CAjEwB,CAqExB;;;AACAyZ,YAAM,CAACwW,MAAP,GAAgB,UAASjwB,GAAT,EAAc;AAC5B,YAAIqc,WAAW,GAAG5C,MAAM,CAAC6C,sBAAP,CAA8Btc,GAA9B,CAAlB;AACAqc,mBAAW,CAACq0C,SAAZ,CAAsB,IAAtB;;AACAR,+BAAsB,CAAClwD,GAAD,EAAMqc,WAAN,CAAtB;AACD,OAJD,CAtEwB,CA4ExB;;;AACA5C,YAAM,CAACyW,QAAP,GAAkB,UAASlwB,GAAT,EAAc;AAC9B,YAAIqc,WAAW,GAAG5C,MAAM,CAAC6C,sBAAP,CAA8Btc,GAA9B,CAAlB;AACAqc,mBAAW,CAACq0C,SAAZ,CAAsB,KAAtB;;AACAR,+BAAsB,CAAClwD,GAAD,EAAMqc,WAAN,CAAtB;AACD,OAJD;AAMA;;;;;;;;;;;;;;;;;;;;;;;;AA0BA5C,YAAM,CAACsX,WAAP,GAAqB,UAAS/wB,GAAT,EAAc2X,QAAd,EAAwB;AAC3C,YAAI,CAAC02C,mBAAmB,CAACruD,GAAD,CAAxB,EAA+B;AAC7B;AACD;;AACD,YAAIkvD,SAAS,GAAGb,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBkvD,SAAzC;;AACA,YAAIA,SAAS,CAAC5rD,OAAV,CAAkBqU,QAAlB,IAA8B,CAAlC,EAAqC;AACnCu3C,mBAAS,CAAC1oE,IAAV,CAAemxB,QAAf;AACD;AACF,OARD;AAUA;;;;;;AAIA8B,YAAM,CAACqF,cAAP,GAAwB,UAAS9e,GAAT,EAAc2X,QAAd,EAAwB;AAC9C,YAAIu3C,SAAS,GAAGb,mBAAmB,CAACruD,GAAD,CAAnB,IAA4BquD,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBkvD,SAArE;AAAA,YACEhyC,KAAK,GAAGgyC,SAAS,IAAIA,SAAS,CAAC5rD,OAAV,CAAkBqU,QAAlB,CADvB;;AAGA,YAAIuF,KAAK,KAAKp6B,SAAV,IAAuBo6B,KAAK,IAAI,CAApC,EAAuC;AACrCgyC,mBAAS,CAAChe,MAAV,CAAiBh0B,KAAjB,EAAwB,CAAxB;AACD;AACF,OAPD;AASA;;;;;;;;;;;;AAWAzD,YAAM,CAACuC,8BAAP,GAAwC,UAAShc,GAAT,EAAc2X,QAAd,EAAwB;AAC9D,YAAI,CAAC02C,mBAAmB,CAACruD,GAAD,CAAxB,EAA+B;AAC7B;AACD;;AACD,YAAIkvD,SAAS,GAAGb,mBAAmB,CAACruD,GAAD,CAAnB,CAAyB8vD,4BAAzC;;AACA,YAAIZ,SAAS,CAAC5rD,OAAV,CAAkBqU,QAAlB,IAA8B,CAAlC,EAAqC;AACnCu3C,mBAAS,CAAC1oE,IAAV,CAAemxB,QAAf;AACD;AACF,OARD;;AAUA8B,YAAM,CAACke,iCAAP,GAA2C,UAAS33B,GAAT,EAAc2X,QAAd,EAAwB;AACjE,YAAIu3C,SAAS,GAAGb,mBAAmB,CAACruD,GAAD,CAAnB,CAAyB8vD,4BAAzC;AAAA,YACE5yC,KAAK,GAAGgyC,SAAS,CAAC5rD,OAAV,CAAkBqU,QAAlB,CADV;;AAGA,YAAIuF,KAAK,IAAI,CAAb,EAAgB;AACdgyC,mBAAS,CAAChe,MAAV,CAAiBh0B,KAAjB,EAAwB,CAAxB;AACD;AACF,OAPD;AASA;;;;;;AAIAzD,YAAM,CAAC2C,WAAP,GAAqB,UAASpc,GAAT,EAAc;AACjC,eAAOquD,mBAAmB,CAACruD,GAAD,CAAnB,IAA4B,IAAnC;AACD,OAFD;AAIA;;;;;;AAIAyZ,YAAM,CAACk3C,kBAAP,GAA4B,UAAS3wD,GAAT,EAAc;AACxC,eAAO,CAAC,CAACquD,mBAAmB,CAACruD,GAAD,CAArB,IAA8BquD,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBqvD,UAAzB,CAAoCvB,QAAzE;AACD,OAFD;AAIA;;;;;;;AAKAr0C,YAAM,CAAC6C,sBAAP,GAAgC,UAAStc,GAAT,EAAc;AAC5C,YAAIquD,mBAAmB,CAACruD,GAAD,CAAnB,IAA4BquD,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBqvD,UAAzD,EAAqE;AACnE,iBAAOhB,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBqvD,UAAzB,CAAoChzC,WAA3C;AACD;;AACD,eAAO,IAAP;AACD,OALD;AAOA;;;;;;;AAKA5C,YAAM,CAACm3C,eAAP,GAAyB,UAAS5wD,GAAT,EAAc;AACrC,YAAIquD,mBAAmB,CAACruD,GAAD,CAAnB,IAA4BquD,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBqvD,UAAzD,EAAqE;AACnE,iBAAOhB,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBqvD,UAAzB,CAAoC5kE,IAA3C;AACD;;AACD,eAAO,IAAP;AACD,OALD;AAOA;;;;;;;AAKAgvB,YAAM,CAACo3C,uBAAP,GAAiC,UAAS7wD,GAAT,EAAc;AAC7C,YAAIquD,mBAAmB,CAACruD,GAAD,CAAnB,IAA4BquD,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBqvD,UAAzD,EAAqE;AACnE,iBAAOhB,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBqvD,UAAzB,CAAoC5nE,QAA3C;AACD;;AACD,eAAO,IAAP;AACD,OALD;AAOA;;;;;;AAIAgyB,YAAM,CAACq3C,sBAAP,GAAgC,UAASnB,OAAT,EAAkB;AAChDvtD,WAAG,CAAC2uD,yBAAJ;;AACA,YAAIpB,OAAJ,EAAa;AACXA,iBAAO;AACR;;AACDvtD,WAAG,CAAC4uD,0BAAJ;AACD,OAND,CA1NwB,CAkOxB;AACA;;;AACAv3C,YAAM,CAACsF,qBAAP,GAA+B,UAAS/Q,UAAT,EAAqB2J,QAArB,EAA+B;AAC5D,YAAI,OAAO3J,UAAP,KAAsB,QAA1B,EAAoC;AAClCyL,gBAAM,CAACsX,WAAP,CAAmB/iB,UAAnB,EAA+B2J,QAA/B;AACD,SAFD,MAEO;AACL3J,oBAAU,CAACjO,OAAX,CAAmB,UAASuO,QAAT,EAAmB;AACpCmL,kBAAM,CAACsX,WAAP,CAAmBziB,QAAnB,EAA6BqJ,QAA7B;AACD,WAFD;AAGD;AACF,OARD;AASD,KAnPG;;AAqPJ;;;;;AAMAqX,kBAAc,EAAE,wBAAShvB,GAAT,EAAcqvD,UAAd,EAA0B;AACxCA,gBAAU,GAAGD,kBAAkB,CAACC,UAAU,IAAI,EAAf,CAA/B;AAEAhB,yBAAmB,CAACruD,GAAD,CAAnB,GAA2B;AACzBqvD,kBAAU,EAAEA,UADa;AAEzBH,iBAAS,EAAE,EAFc;AAGzBY,oCAA4B,EAAE,EAHL;AAIzBG,sBAAc,EAAE,KAJS;AAKzBD,mBAAW,EAAEltE,SALY;AAMzBmuE,qBAAa,EAAEnuE;AANU,OAA3B;;AASA,UAAIusE,UAAU,CAAC1mD,GAAf,EAAoB;AAClBomD,4BAAoB,CAACvoE,IAArB,CAA0BwZ,GAA1B;AACD;;AACD,UAAIqvD,UAAU,CAACtB,qBAAf,EAAsC;AACpCiB,gCAAwB,CAACxoE,IAAzB,CAA8BwZ,GAA9B;AACD;;AAEDmwD,uCAAiC,CAACd,UAAU,CAAC5kE,IAAZ,CAAjC;AACD,KA/QG;;AAiRJ;;;;AAIAylE,0BAAsB,EAAE,gCAASlwD,GAAT,EAAcqc,WAAd,EAA2B;AACjD6zC,6BAAsB,CAAClwD,GAAD,EAAMqc,WAAN,CAAtB;AACD,KAvRG;;AAyRJ;;;;;;;AAQA60C,sCAAkC,EAAE,8CAAW;AAC7CnC,0BAAoB,CAAChvD,OAArB,CAA6B,UAASC,GAAT,EAAc;AACzCquD,2BAAmB,CAACruD,GAAD,CAAnB,CAAyBiwD,cAAzB,GAA0C,KAA1C;AACA5B,2BAAmB,CAACruD,GAAD,CAAnB,CAAyBgwD,WAAzB,GAAuCltE,SAAvC;AACD,OAHD;AAID,KAtSG;;AAwSJ;;;;;;;;AASAquE,2BAAuB,EAAE,mCAAW;AAClClC,kCAA4B,GAAGlvD,OAA/B,CAAuC,UAASC,GAAT,EAAc;AACnDquD,2BAAmB,CAACruD,GAAD,CAAnB,CAAyBixD,aAAzB,GAAyCtoD,IAAG,CAAC3I,GAAD,CAA5C;AACD,OAFD;AAGD,KArTG;;AAuTJ;;;;;;;;;;;;;AAgBAoxD,mCAA+B,EAAE,2CAAW;AAC1C1B,8BAAwB,CAAC,YAAW;AAClCT,oCAA4B,GAAGlvD,OAA/B,CAAuC,UAASC,GAAT,EAAc;AACnD,cAAI2I,IAAG,CAAC3I,GAAD,CAAH,KAAaquD,mBAAmB,CAACruD,GAAD,CAAnB,CAAyBixD,aAA1C,EAAyD;AACvDrB,kBAAM,CAAC5vD,GAAD,CAAN;AACD;;AACDquD,6BAAmB,CAACruD,GAAD,CAAnB,CAAyBixD,aAAzB,GAAyCnuE,SAAzC;AACD,SALD;AAMD,OAPuB,CAAxB;AAQD,KAhVG;;AAkVJ;;;;;;AAMAuuE,+BAA2B,EAAE,uCAAW;AACtC3B,8BAAwB,CAAC,YAAW;AAClCT,oCAA4B,GAAGlvD,OAA/B,CAAuC,UAASC,GAAT,EAAc;AACnD4vD,gBAAM,CAAC5vD,GAAD,CAAN;AACD,SAFD;AAGD,OAJuB,CAAxB;AAKD,KA9VG;;AAgWJ;;;;;AAKA,QAAIgO,UAAJ,GAAiB;AACf,aAAOuiD,mBAAmB,EAA1B;AACD,KAvWG;;AAyWJ;;;;AAIAE,oBAAgB,EAAE,0BAAShmE,IAAT,EAAe;AAC/B,aAAO8lE,mBAAmB,CAAC9lE,IAAD,CAA1B;AACD,KA/WG;;AAiXJ;;;;;AAMA,QAAI6mE,aAAJ,GAAoB;AAClB,aAAO7C,gBAAP;AACD,KAzXG;;AA2XJ,QAAI6C,aAAJ,CAAkB3tE,KAAlB,EAAyB;AACvB8qE,sBAAgB,GAAG,CAAC,CAAC9qE,KAArB;AACD,KA7XG;;AA+XJ;;;;;;AAOA,QAAI4tE,qBAAJ,GAA4B;AAC1B,UAAIl+D,GAAG,GAAG,EAAV;AACA27D,8BAAwB,CAACjvD,OAAzB,CAAiC,UAASC,GAAT,EAAc;AAC7C3M,WAAG,CAAC2M,GAAD,CAAH,GAAW2I,IAAG,CAAC3I,GAAD,CAAd;AACD,OAFD;AAGA,aAAO3M,GAAP;AACD,KA5YG;;AA8YJ;;;;;AAMA,QAAIm+D,SAAJ,GAAgB;AACd,UAAIn+D,GAAG,GAAG,EAAV;AACAlP,YAAM,CAAC2b,IAAP,CAAYuuD,mBAAZ,EAAiCtuD,OAAjC,CAAyC,UAASC,GAAT,EAAc;AACrD3M,WAAG,CAAC2M,GAAD,CAAH,GAAW2I,IAAG,CAAC3I,GAAD,CAAd;AACD,OAFD;AAGA,aAAO3M,GAAP;AACD,KA1ZG;;AA4ZJ;;;;;;;;;;;;;AAgBAo+D,gBAAY,EAAE,sBAAS/rD,MAAT,EAAiB;AAC7BgqD,8BAAwB,CAAC,YAAW;AAClCvrE,cAAM,CAAC2b,IAAP,CAAY4F,MAAZ,EAAoB3F,OAApB,CAA4B,UAASC,GAAT,EAAc;AACxC,cAAI+vD,IAAI,GAAG1B,mBAAmB,CAACruD,GAAD,CAA9B;;AACA,cAAI,CAAC+vD,IAAL,EAAW;AACT;AACD,WAJuC,CAKxC;;;AACA,cAAIpnD,IAAG,CAAC3I,GAAD,CAAH,KAAa0F,MAAM,CAAC1F,GAAD,CAAvB,EAA8B;AAC5B4vD,kBAAM,CAAC5vD,GAAD,CAAN;AACD;;AACD7Z,cAAG,CAAC6Z,GAAD,EAAM0F,MAAM,CAAC1F,GAAD,CAAZ,CAAH;;AACA,cAAI+vD,IAAI,CAACV,UAAL,CAAgBrB,4BAAhB,IAAgD+B,IAAI,CAACV,UAAL,CAAgBlpE,GAApE,EAAyE;AACvE4pE,gBAAI,CAACV,UAAL,CAAgBlpE,GAAhB,CAAoBwiB,IAAG,CAAC3I,GAAD,CAAvB;AACD;AACF,SAbD;AAcD,OAfuB,CAAxB;AAgBD,KA7bG;AA+bJ+wD,6BAAyB,EAAE,qCAAW;AAEpC;AACA,UAAIlC,4BAA4B,IAAID,qCAApC,EAA2E;AACzE;AACD;;AAEDA,2CAAqC,GAAG,IAAxC;;AAEA,UAAID,8BAA8B,KAAK,CAAvC,EAA0C;AACxCvsD,WAAG,CAAC+uD,uBAAJ;AACA/uD,WAAG,CAAC8uD,kCAAJ;AACA9uD,WAAG,CAACkvD,aAAJ,GAAoB,KAApB;AACD;;AACD3C,oCAA8B;AAE9Bx1C,cAAQ,CAACu4C,wBAAT;AACD,KAhdG;AAkdJV,8BAA0B,EAAE,sCAAW;AACrC,UAAInC,4BAAJ,EAAkC;AAElCF,oCAA8B;AAE9Bx1C,cAAQ,CAACw4C,uBAAT;;AAEA,UAAIhD,8BAA8B,KAAK,CAAvC,EAA0C;AACxCvsD,WAAG,CAACkvD,aAAJ,GAAoB,IAApB;AACAlvD,WAAG,CAACgvD,+BAAJ;AAEAj4C,gBAAQ,CAACy4C,+BAAT;AACD;AACF,KA/dG;AAieJ;AACA/3C,cAAU,EAAE,sBAAW;AACrB+0C,2CAAqC,GAAG,KAAxC;AACAC,kCAA4B,GAAG,IAA/B;AACD,KAreG;AAueJ/0C,YAAQ,EAAE,oBAAW;AACnB+0C,kCAA4B,GAAG,KAA/B;;AACA,UAAID,qCAAJ,EAA2C;AACzCxsD,WAAG,CAAC4uD,0BAAJ;AACD;AACF,KA5eG;AA8eJ9vD,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD;AAhfG,GAAN;AAmfA,SAAO1V,GAAP;AACD;AAAA,C;;ACrhCD;AAEA;;AAGA,SAASyvD,WAAT,CAAqBxlE,GAArB,EAA0B;AACxB,SAAOA,GAAG,KAAK,EAAf;AACD;;AAED,SAASylE,mBAAT,CAA6BC,cAA7B,EAA6CC,eAA7C,EAA8D;AAC5D,MAAIC,CAAJ;AAEA,OAAKC,gBAAL,GAAwBF,eAAxB;AACA,OAAKG,MAAL,GAAcH,eAAe,CAACrsD,KAAhB,IAAyB,EAAvC;AAEA,OAAKysD,SAAL,GAAiB,EAAjB;AACA,OAAKC,eAAL,GAAuB,EAAvB;AACA,OAAKC,iBAAL,GAAyB,EAAzB;;AAEA,MAAIN,eAAe,CAACv8D,QAApB,EAA8B;AAC5B,QAAI,EAAEw8D,CAAC,GAAGF,cAAc,CAACpwD,KAAf,CAAqBqwD,eAAe,CAACv8D,QAArC,CAAN,CAAJ,EAA2D;AACzD,YAAM,IAAIhS,KAAJ,CAAU,iDAAiDuuE,eAAe,CAACv8D,QAAjE,GAA4E,oCAAtF,CAAN;AACD;;AACD,SAAK88D,SAAL,GAAiBP,eAAe,CAACv8D,QAAjC;AACA,SAAK28D,SAAL,GAAiBH,CAAC,CAACznE,IAAnB;AACA,SAAK6nE,eAAL,GAAuBJ,CAAC,CAACO,UAAzB;AACA,SAAKF,iBAAL,GAAyBL,CAAC,CAACQ,MAA3B;AACD,GAlB2D,CAoB5D;AACA;;;AACA,MAAIT,eAAe,CAACrkD,QAApB,EAA8B,KAAKykD,SAAL,GAAiBJ,eAAe,CAACrkD,QAAjC;AAC9B,MAAIqkD,eAAe,CAACpkD,cAApB,EAAoC,KAAKykD,eAAL,GAAuBL,eAAe,CAACpkD,cAAvC;AACpC,MAAIokD,eAAe,CAACnkD,gBAApB,EAAsC,KAAKykD,iBAAL,GAAyBN,eAAe,CAACnkD,gBAAzC;AAEtC,OAAK6kD,IAAL,GAAYV,eAAe,CAAC9sE,GAA5B;AACA,OAAKytE,IAAL,GAAYX,eAAe,CAAC/sE,GAA5B;AAEA,OAAK2tE,OAAL,GAAeZ,eAAe,CAACa,MAA/B;AAEA,OAAKC,SAAL,CAAed,eAAe,CAAC/rD,MAA/B;AACD;;AAED6rD,mBAAmB,CAAC1tE,SAApB,CAA8B2uE,OAA9B,GAAwC,YAAW;AACjD,SAAOpR,oBAAC,CAAC57D,MAAF,CACL47D,oBAAC,CAACqR,MAAF,CAAS;AACPrlD,YAAQ,EAAE,KAAKslD,WAAL,EADH;AAEPrlD,kBAAc,EAAE,KAAKslD,iBAAL,EAFT;AAGPrlD,oBAAgB,EAAE,KAAK2O,mBAAL;AAHX,GAAT,EAIGq1C,WAJH,CADK,EAML,KAAKK,gBANA,CAAP;AAOD,CARD;;AAUAJ,mBAAmB,CAAC1tE,SAApB,CAA8Bm4B,QAA9B,GAAyC,YAAW;AAClD,SAAO,KAAK41C,MAAZ;AACD,CAFD;;AAIAL,mBAAmB,CAAC1tE,SAApB,CAA8B+uE,WAA9B,GAA4C,YAAW;AACrD,SAAO,KAAKZ,SAAZ;AACD,CAFD;;AAIAT,mBAAmB,CAAC1tE,SAApB,CAA8B6uE,WAA9B,GAA4C,YAAW;AACrD,SAAO,KAAKb,SAAZ;AACD,CAFD;;AAIAN,mBAAmB,CAAC1tE,SAApB,CAA8B8uE,iBAA9B,GAAkD,YAAW;AAC3D,SAAO,KAAKb,eAAZ;AACD,CAFD;;AAIAP,mBAAmB,CAAC1tE,SAApB,CAA8Bo4B,mBAA9B,GAAoD,YAAW;AAC7D,SAAO,KAAK81C,iBAAZ;AACD,CAFD;;AAIAR,mBAAmB,CAAC1tE,SAApB,CAA8BkgC,MAA9B,GAAuC,YAAW;AAChD,SAAO,KAAKouC,IAAZ;AACD,CAFD;;AAIAZ,mBAAmB,CAAC1tE,SAApB,CAA8BmgC,MAA9B,GAAuC,YAAW;AAChD,SAAO,KAAKouC,IAAZ;AACD,CAFD;;AAIAb,mBAAmB,CAAC1tE,SAApB,CAA8BkzC,SAA9B,GAA0C,YAAW;AACnD,SAAO,KAAKs7B,OAAZ;AACD,CAFD;;AAIAd,mBAAmB,CAAC1tE,SAApB,CAA8BssE,SAA9B,GAA0C,UAAS5rE,CAAT,EAAY;AACpD,OAAK8tE,OAAL,GAAe9tE,CAAf;AACD,CAFD;;AAIAgtE,mBAAmB,CAAC1tE,SAApB,CAA8B0uE,SAA9B,GAA0C,UAAS9gD,CAAT,EAAY;AACpD,MAAIA,CAAJ,EAAO,KAAKohD,UAAL,GAAkBltD,EAAE,CAACD,MAAH,CAAU+L,CAAV,CAAlB,CAAP,KACK,KAAKohD,UAAL,GAAkB,UAAS/mE,GAAT,EAAc;AACnC,WAAOA,GAAP;AACD,GAFI;AAGN,CALD;;AAOAylE,mBAAmB,CAAC1tE,SAApB,CAA8B6hB,MAA9B,GAAuC,UAAS5Z,GAAT,EAAcnE,IAAd,EAAoB;AACzDA,MAAI,GAAGA,IAAI,IAAI,EAAf;AAEA,MAAI2wD,SAAJ;AAAA,MACEwa,YADF;AAAA,MAEEC,MAFF;AAAA,MAGEC,WAAW,GAAG,IAHhB;;AAKA,MAAIrrE,IAAI,CAAC+d,MAAT,EAAiB;AACf,QAAI/d,IAAI,CAAC+d,MAAL,KAAgB,KAAKutD,WAAzB,EAAsC;AACpC3a,eAAS,GAAG,KAAK4a,cAAjB;AACD,KAFD,MAEO;AACL5a,eAAS,GAAG3yC,EAAE,CAACD,MAAH,CAAU/d,IAAI,CAAC+d,MAAf,CAAZ;AACA,WAAKutD,WAAL,GAAmBtrE,IAAI,CAAC+d,MAAxB;AACA,WAAKwtD,cAAL,GAAsB5a,SAAtB;AACD;AACF,GARD,MAQO;AACLA,aAAS,GAAG,KAAKua,UAAjB;AACD;;AAEDC,cAAY,GAAGxa,SAAS,CAACxsD,GAAD,CAAxB;AAEA,MAAInE,IAAI,IAAIA,IAAI,CAACqrE,WAAL,IAAoB,IAAhC,EAAsCA,WAAW,GAAGrrE,IAAI,CAACqrE,WAAnB;;AAEtC,MAAIA,WAAJ,EAAiB;AACf,WAAOF,YAAY,GAAG,GAAf,GAAqB,KAAKf,iBAAjC;AACD;;AAEDgB,QAAM,GAAG7rD,UAAU,CAAC4rD,YAAD,CAAV,KAA6B,CAAtC;AACA,SAAOA,YAAY,GAAG,GAAf,IAAsBC,MAAM,GAAG,KAAKjB,eAAR,GAA0B,KAAKD,SAA3D,CAAP;AACD,CA9BD;;AAgCeN,4EAAf,E;;AC/HA;AAGe,SAAS4B,gBAAT,CAA0B76C,IAA1B,EAAgC;AAC7C,MAAI86C,eAAe,GAAG96C,IAAI,CAAC86C,eAA3B;AAAA,MACEC,eAAe,GAAG/6C,IAAI,CAAC+6C,eAAL,IAAwB,EAD5C;AAGA,SAAO;AACLp6C,WAAO,EAAE,iBAASC,MAAT,EAAiB;AAExB;;;;;;;;;;;AAYAA,YAAM,CAACo6C,eAAP,GAAyB,UAAS7zD,GAAT,EAAcgyD,eAAd,EAA+B8B,MAA/B,EAAuC;AAC9D,YAAIzE,UAAU,GAAG;AACf5kE,cAAI,EAAE,WADS;AAEfsjE,+BAAqB,EAAE,IAFR;AAGfC,sCAA4B,EAAE,KAHf;AAIf3xC,qBAAW,EAAE,IAAIy1C,oBAAJ,CAAwB8B,eAAxB,EAAyC5B,eAAzC,CAJE;AAKftE,2BAAiB,EAAEiG,eAAe,CAAC5C,yBALpB;AAMfpD,0BAAgB,EAAEgG,eAAe,CAAC3C;AANnB,SAAjB,CAD8D,CAU9D;;AACA,YAAI8C,MAAJ,EAAY;AACVzE,oBAAU,CAAClpE,GAAX,GAAiB,UAASxC,KAAT,EAAgB;AAC/BmwE,kBAAM,CAACxvE,IAAP,CAAYm1B,MAAZ,EAAoB91B,KAApB;AACD,WAFD;AAGD;;AACDgwE,uBAAe,CAAC3kC,cAAhB,CAA+BhvB,GAA/B,EAAoCqvD,UAApC;AACD,OAjBD;AAkBD;AAjCI,GAAP;AAmCD;AAAA,C;;;;;;;;AC3CA;;;;;;;AAMD;;;;;;AAMA,IAAI0E,oBAAJ;AACeA,+EAAoB;AAAA;AAAA;AAEjC;;;;AAIA,gCAAYC,YAAZ,EAA0B;AAAA;;AACxB,SAAKA,YAAL,GAAoBA,YAApB;AACA,SAAKC,MAAL,GAAc,EAAd;AACA,SAAKC,KAAL,GAAa,EAAb;AACA,SAAKC,IAAL,GAAY,CAAC,CAAb,CAJwB,CAKxB;AACA;;AACA,SAAKC,gBAAL,GAAwB,KAAKJ,YAA7B;AACD;AAED;;;;;;;;AAhBiC;AAAA;AAAA,8BAsBvB7pD,CAtBuB,EAsBpB9d,GAtBoB,EAsBf;AAAA;;AAChB,UAAI,KAAK6nE,KAAL,CAAW,KAAKC,IAAhB,MAA0BhqD,CAA9B,EAAiC;AAC/B;AACA,aAAK8pD,MAAL,CAAY,KAAKE,IAAjB,IAAyB9nE,GAAzB;AACA;AACD,OAJD,MAIO,IAAI,KAAK6nE,KAAL,CAAW,KAAKC,IAAhB,IAAwBhqD,CAA5B,EAA+B;AACpC,cAAM,IAAI1mB,KAAJ,CAAU,gFAAV,CAAN;AACD,OAPe,CAShB;;;AACA,WAAK0wE,IAAL;;AACA,WAAKF,MAAL,CAAYztE,IAAZ,CAAiB6F,GAAjB;;AACA,WAAK6nE,KAAL,CAAW1tE,IAAX,CAAgB2jB,CAAhB;;AAEA,aAAQ,YAAM;AACZ,YAAMxiB,MAAM,GAAG,EAAf;;AACA,eAAO,KAAI,CAACssE,MAAL,CAAYpwE,MAAZ,GAAqB,KAAI,CAACuwE,gBAAjC,EAAmD;AACjD;AACA,eAAI,CAACF,KAAL,CAAW7qD,KAAX;;AACA,eAAI,CAAC4qD,MAAL,CAAY5qD,KAAZ;;AACA1hB,gBAAM,CAACnB,IAAP,CAAY,KAAI,CAAC2tE,IAAL,EAAZ;AACD;;AACD,eAAOxsE,MAAP;AACD,OATM,EAAP;AAUD;AAED;;;;AAhDiC;AAAA;AAAA,gCAmDrB;AACV;AACA;AACA;AAEA;AACA,UAAI0sE,QAAJ;AACA,UAAMC,OAAO,GAAGtvE,IAAI,CAACC,GAAL,CAAS,KAAKivE,KAAL,CAAW,KAAKC,IAAhB,IAAwB,KAAKH,YAAtC,EAAoD,CAApD,CAAhB;AAEA,UAAIO,MAAM,GAAG,CAAb;AACA,UAAI3I,OAAO,GAAG,CAAd;AACA,UAAIhoE,CAAC,GAAG,KAAKuwE,IAAb,CAXU,CAaV;;AACA,aAAQvwE,CAAC,GAAG,CAAL,IAAY,KAAKswE,KAAL,CAAWtwE,CAAC,GAAG,CAAf,KAAqB0wE,OAAxC,EAAkD;AAChDD,gBAAQ,GAAG,KAAKH,KAAL,CAAWtwE,CAAX,IAAgB,KAAKswE,KAAL,CAAWtwE,CAAC,GAAG,CAAf,CAA3B;AACAgoE,eAAO,IAAIyI,QAAX,CAFgD,CAGhD;;AACAE,cAAM,IAAKF,QAAQ,IAAI,KAAKJ,MAAL,CAAYrwE,CAAC,GAAG,CAAhB,IAAqB,KAAKqwE,MAAL,CAAYrwE,CAAZ,CAAzB,CAAT,GAAqD,GAA/D;AACAA,SAAC;AACF,OApBS,CAsBV;AACA;AACA;AACA;;;AACA,UAAKA,CAAC,GAAG,CAAL,IAAY,KAAKswE,KAAL,CAAWtwE,CAAX,IAAgB0wE,OAA5B,IAAyC,KAAKJ,KAAL,CAAWtwE,CAAC,GAAG,CAAf,IAAoB0wE,OAAjE,EAA2E;AACzED,gBAAQ,GAAG,KAAKH,KAAL,CAAWtwE,CAAX,IAAgB0wE,OAA3B;AACA1I,eAAO,IAAIyI,QAAX,CAFyE,CAGzE;;AACA,YAAMn5B,MAAM,GAAG,KAAK+4B,MAAL,CAAYrwE,CAAC,GAAG,CAAhB,IAAuB,CAAC,KAAKqwE,MAAL,CAAYrwE,CAAZ,IAAiB,KAAKqwE,MAAL,CAAYrwE,CAAC,GAAG,CAAhB,CAAlB,KAAyC0wE,OAAO,GAAG,KAAKJ,KAAL,CAAWtwE,CAAC,GAAG,CAAf,CAAnD,CAAD,IAA2E,KAAKswE,KAAL,CAAWtwE,CAAX,IAAgB,KAAKswE,KAAL,CAAWtwE,CAAC,GAAG,CAAf,CAA3F,CAArC;AACA2wE,cAAM,IAAKF,QAAQ,IAAI,KAAKJ,MAAL,CAAYrwE,CAAZ,IAAiBs3C,MAArB,CAAT,GAAyC,GAAnD;AACD,OAhCS,CAkCV;;;AACA,UAAI0wB,OAAJ,EAAa;AACX,eAAO2I,MAAM,GAAG3I,OAAhB;AACD,OAFD,MAEO;AACL,eAAO,KAAKqI,MAAL,CAAY,CAAZ,KAAkB,CAAzB;AACD;AACF;AAED;;;;AA7FiC;AAAA;AAAA,6CAgGR;AACvB,aAAO,KAAKA,MAAL,CAAYpwE,MAAnB;AACD;AAED;;;;AApGiC;AAAA;AAAA,uCAuGd43B,SAvGc,EAuGH;AAC5B,aAAO,KAAK24C,gBAAL,GAAwB34C,SAA/B;AACD;AAED;;;;AA3GiC;AAAA;AAAA,qCA8GhB;AACf,aAAO,KAAKy4C,KAAL,CAAW,KAAKC,IAAhB,CAAP;AACD;AAED;;;;AAlHiC;AAAA;AAAA,qCAqHhB;AACf,aAAO,KAAKA,IAAZ;AACD;AAED;;;;;AAzHiC;AAAA;AAAA,mCA6HlB/Z,QA7HkB,EA6HR;AACvB;AACA,UAAKA,QAAQ,GAAG,CAAC,CAAb,IAAoBA,QAAQ,IAAI,KAAK6Z,MAAL,CAAYpwE,MAAhD,EAAyD;AACvD,cAAM,IAAIJ,KAAJ,CAAU,sEAAV,CAAN;AACD;;AACD,aAAO,KAAK0wE,IAAL,GAAY/Z,QAAnB;AACD;AAED;;;;AArIiC;AAAA;AAAA,+BAwItBA,QAxIsB,EAwIZ;AACnB,WAAK6Z,MAAL,CAAYpwE,MAAZ,GAAqBu2D,QAAQ,GAAG,CAAhC;AACA,WAAK8Z,KAAL,CAAWrwE,MAAX,GAAoBu2D,QAAQ,GAAG,CAA/B;AACA,aAAO,KAAK+Z,IAAL,GAAY/Z,QAAnB;AACD;AAED;;;;AA9IiC;AAAA;AAAA,4BAiJzB;AACN,WAAKoa,OAAL,CAAa3wE,MAAb,GAAsB,CAAtB;AACA,WAAKqwE,KAAL,GAAa,CAAb;AACA,aAAO,KAAKC,IAAL,GAAY,CAAnB;AACD;AArJgC;;AAAA;AAAA,GAAnC,E;;;;;;;;ACbC;;;;;;AAKD;;;AAGA,IAAIM,kBAAJ;AACeA,2EAAkB;AAAA;AAAA;AAE/B;;;;AAIA,gCAAc;AAAA;;AACZ,SAAKD,OAAL,GAAe,EAAf;AACA,SAAKN,KAAL,GAAa,EAAb;AACA,SAAKC,IAAL,GAAY,CAAC,CAAb;AACA,SAAKO,qBAAL,GAA6B,EAA7B;AACA,SAAKC,cAAL,GAAsB,EAAtB,CALY,CAMZ;AACA;;AACA,SAAKP,gBAAL,GAAwB,IAAxB;AACD;AAED;;;;;;;;AAjB+B;AAAA;AAAA,8BAuBrBjqD,CAvBqB,EAuBlB9d,GAvBkB,EAuBb;AAChB,UAAIuoE,cAAJ;;AACA,UAAI,KAAKV,KAAL,CAAW,KAAKC,IAAhB,MAA0BhqD,CAA9B,EAAiC;AAC/B;AACA,aAAKqqD,OAAL,CAAa,KAAKL,IAAlB,IAA0B9nE,GAA1B;AACA;AACD,OAJD,MAIO,IAAI,KAAK6nE,KAAL,CAAW,KAAKC,IAAhB,IAAwBhqD,CAA5B,EAA+B;AACpCxhB,eAAO,CAACiL,GAAR,CAAY,uFAAZ,EADoC,CAEpC;;AACA;AACD,OAVe,CAYhB;;;AACA,WAAKugE,IAAL;;AACA,WAAKK,OAAL,CAAahuE,IAAb,CAAkB6F,GAAlB;;AACA,WAAK6nE,KAAL,CAAW1tE,IAAX,CAAgB2jB,CAAhB;;AACA,UAAI,KAAKqqD,OAAL,CAAa3wE,MAAb,GAAsB,CAA1B,EAA6B;AAC3B+wE,sBAAc,GAAG,KAAKJ,OAAL,CAAa,KAAKA,OAAL,CAAa3wE,MAAb,GAAsB,CAAnC,CAAjB;AACD;;AAED,aAAO,KAAK2wE,OAAL,CAAa3wE,MAAb,GAAsB,KAAKuwE,gBAAlC,EAAoD;AAClD;AACA,aAAKF,KAAL,CAAW7qD,KAAX;;AACA,aAAKmrD,OAAL,CAAanrD,KAAb;;AACA,aAAK8qD,IAAL;AACD,OAzBe,CA2BhB;;;AACA,UAAMS,cAAc,GAAG,CAAlB,IAAyBvoE,GAAG,GAAG,CAAhC,IAAyCuoE,cAAc,GAAG,CAAlB,IAAyBvoE,GAAG,GAAG,CAA3E,EAAgF;AAC9E,aAAKqoE,qBAAL,CAA2BluE,IAA3B,CAAgC2jB,CAAhC;;AACA,YAAI,KAAKuqD,qBAAL,CAA2B7wE,MAA3B,GAAoC,CAAxC,EAA2C;AACzC,cAAMgxE,sBAAsB,GAAG,KAAKH,qBAAL,CAA2B,KAAKA,qBAAL,CAA2B7wE,MAA3B,GAAoC,CAA/D,CAA/B;;AACA,eAAK8wE,cAAL,CAAoBnuE,IAApB,CAAyB2jB,CAAC,GAAG0qD,sBAA7B;AACD;;AACD,eAAO,KAAKH,qBAAL,CAA2B7wE,MAA3B,GAAoC,GAA3C,EAAgD;AAC9C,eAAK6wE,qBAAL,CAA2BrrD,KAA3B;;AACA,eAAKsrD,cAAL,CAAoBtrD,KAApB;AACD;AACF;AAEF;AAED;;;;AAjE+B;AAAA;AAAA,gCAoEnB;AACV,UAAI,KAAKsrD,cAAL,CAAoB9wE,MAApB,GAA6B,CAAjC,EAAoC;AAClC,eAAO,CAAP;AACD;;AACD,UAAI,KAAK8wE,cAAL,CAAoB9wE,MAApB,KAA+B,CAAnC,EAAsC;AACpC,eAAO,KAAK8wE,cAAL,CAAoB,CAApB,IAAyB,CAAhC;AACD;;AACD,UAAMG,GAAG,GAAG,KAAKH,cAAL,CAAoBI,MAApB,CAA2B,UAAChwE,CAAD,EAAIuV,CAAJ;AAAA,eAAUvV,CAAC,GAAGuV,CAAd;AAAA,OAA3B,CAAZ;;AACA,UAAMzU,OAAO,GAAGivE,GAAG,GAAG,KAAKH,cAAL,CAAoB9wE,MAA1C;AACA,aAAOgC,OAAO,GAAG,CAAjB;AACD;AAED;;;;AAhF+B;AAAA;AAAA,6CAmFN;AACvB,aAAO,KAAK2uE,OAAL,CAAa3wE,MAApB;AACD;AAED;;;;AAvF+B;AAAA;AAAA,uCA0FZ43B,SA1FY,EA0FD;AAC5B,aAAO,KAAK24C,gBAAL,GAAwB34C,SAA/B;AACD;AAED;;;;AA9F+B;AAAA;AAAA,qCAiGd;AACf,aAAO,KAAKy4C,KAAL,CAAW,KAAKC,IAAhB,CAAP;AACD;AAED;;;;AArG+B;AAAA;AAAA,qCAwGd;AACf,aAAO,KAAKA,IAAZ;AACD;AAED;;;;;AA5G+B;AAAA;AAAA,mCAgHhB/Z,QAhHgB,EAgHN;AACvB;AACA,UAAKA,QAAQ,GAAG,CAAC,CAAb,IAAoBA,QAAQ,IAAI,KAAKoa,OAAL,CAAa3wE,MAAjD,EAA0D;AACxD,cAAM,IAAIJ,KAAJ,CAAU,oEAAV,CAAN;AACD;;AACD,aAAO,KAAK0wE,IAAL,GAAY/Z,QAAnB;AACD;AAED;;;;AAxH+B;AAAA;AAAA,+BA2HpBA,QA3HoB,EA2HV;AACnB,UAAIA,QAAJ,EAAc;AACZ,aAAKoa,OAAL,CAAa3wE,MAAb,GAAsBu2D,QAAQ,GAAG,CAAjC;AACA,aAAK8Z,KAAL,CAAWrwE,MAAX,GAAoBu2D,QAAQ,GAAG,CAA/B;AACA,eAAO,KAAK+Z,IAAL,GAAY/Z,QAAnB;AACD,OAJD,MAIO;AACL,eAAO,KAAKpsD,KAAL,EAAP;AACD;AACF;AAED;;;;AArI+B;AAAA;AAAA,4BAwIvB;AACN,WAAKwmE,OAAL,CAAa3wE,MAAb,GAAsB,CAAtB;AACA,WAAKqwE,KAAL,CAAWrwE,MAAX,GAAoB,CAApB;AACA,WAAKswE,IAAL,GAAY,CAAZ;AACA,WAAKO,qBAAL,CAA2B7wE,MAA3B,GAAoC,CAApC;AACA,WAAK8wE,cAAL,CAAoB9wE,MAApB,GAA6B,CAA7B;AACD;AA9I8B;;AAAA;AAAA,GAAjC,E;;ACRA;AACA;AACA;AAGe,SAASmxE,aAAT,CAAuBn8C,IAAvB,EAA6B;AAC1C,MAAI86C,eAAe,GAAG96C,IAAI,CAAC86C,eAA3B;AAAA,MACEC,eAAe,GAAG/6C,IAAI,CAAC+6C,eAAL,IAAwB,EAD5C;AAAA,MAEEqB,WAAW,GAAGp8C,IAAI,CAACo8C,WAAL,IAAoB,IAFpC;AAAA,MAIEjoD,eAAe,GAAG,EAJpB;;AAMA,WAASkoD,qBAAT,GAAiC;AAC/BloD,mBAAe,CAACjN,OAAhB,CAAwB,UAAS+N,MAAT,EAAiB;AACvCA,YAAM,CAACqnD,SAAP;AACD,KAFD;AAGD;;AAED,WAASC,oBAAT,GAAgC;AAC9BpoD,mBAAe,CAACjN,OAAhB,CAAwB,UAAS+N,MAAT,EAAiB;AACvCA,YAAM,CAAC9f,KAAP;AACD,KAFD;AAGD,GAjByC,CAmB1C;AACA;AACA;;;AACA2lE,iBAAe,CAACzyD,EAAhB,CAAmB,wCAAnB,EAA6Dg0D,qBAA7D;AAEA,SAAO;AACL17C,WAAO,EAAE,iBAASC,MAAT,EAAiB;AAExB;;;;;;;;;;;;;AAgBAA,YAAM,CAAC47C,YAAP,GAAsB,UAASr1D,GAAT,EAAcgyD,eAAd,EAA+BsD,MAA/B,EAAuC;AAC3D3B,uBAAe,CAAC3kC,cAAhB,CAA+BhvB,GAA/B,EAAoC;AAClCvV,cAAI,EAAE,QAD4B;AAElCqjE,kBAAQ,EAAE,KAFwB;AAGlCnlD,aAAG,EAAE2sD,MAH6B;AAIlCvH,+BAAqB,EAAE,KAJW;AAKlC1xC,qBAAW,EAAE,IAAIy1C,oBAAJ,CAAwB8B,eAAxB,EAAyC5B,eAAzC;AALqB,SAApC;AAOD,OARD;AAWA;;;;;;;;;;;;;;;;;;;;;;AA2BAv4C,YAAM,CAACuF,oBAAP,GAA8B,UAAShf,GAAT,EAAcqc,WAAd,EAA2Bk5C,mBAA3B,EAAgD9qE,IAAhD,EAAsD8jB,MAAtD,EAA8D;AAC1F,YAAI6d,MAAJ,EAAY3e,YAAZ;;AAEA,YAAIhjB,IAAI,KAAK,gBAAb,EAA+B;AAC7B2hC,gBAAM,GAAG,IAAI2nC,sBAAJ,CAAyBxlD,MAAzB,CAAT;AACD,SAFD,MAEO,IAAI9jB,IAAI,KAAK,cAAb,EAA6B;AAClC2hC,gBAAM,GAAG,IAAIqoC,oBAAJ,EAAT;AACD,SAFM,MAEA;AACL,gBAAM,IAAIhxE,KAAJ,CAAU,yCAAyCgH,IAAzC,GAAgD,GAA1D,CAAN;AACD,SATyF,CAW1F;;;AACAgjB,oBAAY,GAAGgM,MAAM,CAACzL,UAAP,CAAkBunD,mBAAlB,CAAf;;AACA,YAAI9nD,YAAY,KAAK3qB,SAAjB,IAA8B8O,KAAK,CAACtM,MAAM,CAACmoB,YAAD,CAAP,CAAvC,EAA+D;AAC7D,gBAAM,IAAIhqB,KAAJ,CAAU,2EAAV,CAAN;AACD;;AACD2oC,cAAM,CAAC+oC,SAAP,CAAiB17C,MAAM,CAACzL,UAAP,CAAkBnb,IAAnC,EAAyC4a,YAAzC;;AAEA,YAAIwnD,WAAJ,EAAiB;AACf;AACA;AACAA,qBAAW,CAACO,sBAAZ,CAAmC;AACjChvE,gBAAI,EAAE,gBAAW;AACf;AACA;AACA;AACA;AACA;AACA4lC,oBAAM,CAAC+oC,SAAP,CAAiB17C,MAAM,CAACzL,UAAP,CAAkBnb,IAAnC,EAAyC4mB,MAAM,CAACzL,UAAP,CAAkBunD,mBAAlB,CAAzC;AACD,aARgC;AASjCE,mBAAO,EAAE,iBAASnvE,GAAT,EAAc;AACrB8lC,oBAAM,CAACspC,cAAP,CAAsBpvE,GAAtB;AACD,aAXgC;AAYjCqvE,sBAAU,EAAE,oBAASrvE,GAAT,EAAc;AACxB8lC,oBAAM,CAACupC,UAAP,CAAkBrvE,GAAlB;AACD,aAdgC;AAejCsvE,4BAAgB,EAAE,0BAAS/xE,MAAT,EAAiB;AACjCuoC,oBAAM,CAACypC,kBAAP,CAA0BhyE,MAA1B;AACD,aAjBgC;AAkBjCmK,iBAAK,EAAE,iBAAW;AAChBo+B,oBAAM,CAACp+B,KAAP;AACD;AApBgC,WAAnC;AAsBD,SAzBD,MAyBO;AACLgf,yBAAe,CAACxmB,IAAhB,CAAqB;AACnB2uE,qBAAS,EAAE,qBAAW;AACpB/oC,oBAAM,CAAC+oC,SAAP,CAAiB17C,MAAM,CAACzL,UAAP,CAAkBnb,IAAnC,EAAyC4mB,MAAM,CAACzL,UAAP,CAAkBunD,mBAAlB,CAAzC;AACD;AAHkB,WAArB;AAKD,SAjDyF,CAmD1F;;;AACAl5C,mBAAW,CAAC/N,QAAZ,GAAuBinD,mBAAvB;AACAl5C,mBAAW,CAAC5xB,IAAZ,GAAmBA,IAAnB;AACA4xB,mBAAW,CAAC9N,MAAZ,GAAqBA,MAArB;AAEAkL,cAAM,CAAC47C,YAAP,CAAoBr1D,GAApB,EAAyBqc,WAAzB,EAAsC,YAAW;AAC/C,iBAAO+P,MAAM,CAAC0pC,SAAP,EAAP;AACD,SAFD;AAGD,OA3DD;AA6DA;;;;;;;;;;;;;;;;;;AAkBAr8C,YAAM,CAACs8C,yBAAP,GAAmC,YAAW;AAC5CpC,uBAAe,CAACzC,kCAAhB;AACAyC,uBAAe,CAACtC,2BAAhB;AACA6D,6BAAqB;AACtB,OAJD;;AAMAz7C,YAAM,CAACu8C,wBAAP,GAAkC,YAAW;AAC3CZ,4BAAoB;AACrB,OAFD;AAGD;AAjJI,GAAP;AAmJD;AAAA,C;;;;;AChLD;AACA;AACA;AAEe,SAASa,eAAT,CAAyBp9C,IAAzB,EAA+B;AAC5C;AACA,MAAIM,QAAQ,GAAGN,IAAI,IAAIA,IAAI,CAACM,QAAb,IAAyB,IAAxC;AAAA,MACE;AACA;AACAw6C,iBAAe,GAAG96C,IAAI,IAAIA,IAAI,CAAC86C,eAAb,IAAgC,IAHpD;AAAA,MAIEC,eAAe,GAAG/6C,IAAI,IAAIA,IAAI,CAAC+6C,eAAb,IAAgC,IAJpD;AAAA,MAKEsC,wBAAwB,GAAGr9C,IAAI,CAACq9C,wBALlC;AAAA,MAMEC,qBAAqB,GAAGt9C,IAAI,CAACs9C,qBAN/B;AAAA,MAQEC,eAAe,GAAI,YAAW;AAC5B;AACA;AACA;AACA,QAAIj9C,QAAJ,EAAc;AACZ,UAAIA,QAAQ,CAACjY,EAAT,IAAeiY,QAAQ,CAACQ,aAA5B,EAA2C;AACzCR,gBAAQ,CAACQ,aAAT,CAAuB,MAAvB,EAA+B,MAA/B,EAAuC,WAAvC,EAAoD,SAApD;AACA,eAAO,IAAP;AACD,OAHD,MAGO;AACL,cAAM,IAAIl2B,KAAJ,CAAU,kFAAV,CAAN;AACD;AACF,KAPD,MAOO;AACL,aAAO,KAAP;AACD;AACF,GAdkB,EARrB;AAAA,MAwBEw6D,OAAO,GAAG,IAxBZ;AAAA,MAyBEoY,WAAW,GAAG,KAzBhB;AAAA,MA0BEC,cAAc,GAAG,KA1BnB;AAAA,MA2BE7pC,SAAS,GAAG,KA3Bd;AA6BA;;;;;;;;;;AAUA,WAAS8pC,KAAT,CAAeC,CAAf,EAAkB;AAChB,QAAIC,UAAJ;AAAA,QACE;AACA;AACAC,cAAU,GAAG/C,eAAe,IAAIA,eAAe,CAAC3lD,UAAhB,CAA2BhY,eAA9C,IAAiE,SAHhF;;AAKA,QAAI0gE,UAAU,KAAK,SAAnB,EAA8B;AAC5B;AACAxwD,QAAE,CAACqwD,KAAH,CAASC,CAAT;AACD,KAHD,MAGO;AACL;AACAC,gBAAU,GAAGp0E,MAAM,CAAC2xC,WAAP,CAAmB,YAAW;AACzC,YAAIwiC,CAAC,EAAL,EAAS;AACPn0E,gBAAM,CAAC6xC,aAAP,CAAqBuiC,UAArB;AACD;AACF,OAJY,EAIV,OAAOC,UAJG,CAAb;AAKD;AACF;;AAED,SAAO;AACLl9C,WAAO,EAAE,iBAASC,MAAT,EAAiB;AACxB,UAAIk9C,uBAAJ;;AAEA,UAAIhD,eAAe,IAAIl6C,MAAM,CAAC47C,YAA9B,EAA4C;AAE1C;AACA;AAEA;AACA57C,cAAM,CAAC47C,YAAP,CAAoB,iBAApB,EAAuC,EAAvC,EAA2C,YAAW;AACpD;AACA;AACA;AACA,cAAIuB,KAAK,GAAG,CAAC,EAAD,EAAK,EAAL,EAAS,GAAT,EAAc,GAAd,EAAmB,GAAnB,EAAwB,IAAxB,EAA8B,IAA9B,CAAZ;AACA,cAAIC,WAAW,GAAGlD,eAAe,CAAC3lD,UAAhB,CAA2B6oD,WAA7C;;AAEA,cAAIA,WAAW,IAAI,IAAnB,EAAyB;AACvB,mBAAOD,KAAK,CAACvyC,GAAN,CAAU,UAAS5e,KAAT,EAAgB;AAC/B,qBAAOA,KAAK,GAAGoxD,WAAf;AACD,aAFM,CAAP;AAGD;;AACD,iBAAO,EAAP;AACD,SAbD;AAeAp9C,cAAM,CAAC47C,YAAP,CAAoB,mBAApB,EAAyC,EAAzC,EAA6Ca,wBAA7C;AAEAz8C,cAAM,CAAC47C,YAAP,CAAoB,gBAApB,EAAsC;AACpC1vD,eAAK,EAAE,qBAD6B;AAEpClQ,kBAAQ,EAAE,MAF0B;AAGpCwQ,gBAAM,EAAE;AAH4B,SAAtC,EAIGkwD,qBAJH;AAKD,OA/BuB,CAiCxB;AACA;AACA;;;AAEA,UAAI,CAAC18C,MAAM,CAAConC,UAAR,IAAsB+S,eAA1B,EAA2C;AACzC+C,+BAAuB,GAAG,IAAI7E,oBAAJ,CAAwB8B,eAAxB,EAAyC;AACjEn+D,kBAAQ,EAAE,MADuD;AAEjE;AACA;AACAwQ,gBAAM,EAAE;AAJyD,SAAzC,CAA1B;;AAOAwT,cAAM,CAAConC,UAAP,GAAoB,UAAShuD,IAAT,EAAe;AACjC,iBAAO8jE,uBAAuB,CAAC1wD,MAAxB,CAA+BpT,IAA/B,CAAP;AACD,SAFD;AAGD;;AAED,UAAI,OAAO4mB,MAAM,CAACsZ,IAAd,KAAuB,UAA3B,EAAuC;AACrCtZ,cAAM,CAACsZ,IAAP,GAAc,YAAW;AACvBpqC,2CAAO,CAACwrC,IAAR,CAAa,mEAAb;AACD,SAFD;AAGD;;AAED1a,YAAM,CAAC8Y,KAAP,GAAe,YAAW;AACxB;AACA8jC,mBAAW,GAAG,KAAd;AACAC,sBAAc,GAAG,KAAjB;;AAEA,YAAI,CAACrY,OAAL,EAAc;AACZ;AACA,iBAAOxkC,MAAP;AACD;;AAEDwkC,eAAO,GAAG,KAAV;AAEAsY,aAAK,CAAC,SAASO,SAAT,CAAmBC,WAAnB,EAAgC;AACpC,cAAIX,eAAJ,EAAqBj9C,QAAQ,CAAC69C,SAAT;AACrBxL,4BAAW,CAACK,UAAZ,CAAuB,KAAvB,EAFoC,CAGpC;AACA;AACA;;AACA,cAAIwK,WAAJ,EAAiB;AACfpY,mBAAO,GAAG,IAAV;AACA,gBAAImY,eAAJ,EAAqBj9C,QAAQ,CAACmX,IAAT;AACrB,mBAAO,IAAP;AACD;;AAED,cAAIgmC,cAAJ,EAAoB;AAClBxiC,sBAAU,CAACra,MAAM,CAAC8Y,KAAR,EAAe,CAAf,CAAV;AACA0rB,mBAAO,GAAG,IAAV;AACA,mBAAO,IAAP;AACD;;AAED,cAAI0V,eAAe,IAAIA,eAAe,CAAC3lD,UAAhB,CAA2Bnb,IAA3B,IAAmC8gE,eAAe,CAAC3lD,UAAhB,CAA2ByyC,cAArF,EAAqG;AACnGhnC,kBAAM,CAAC6W,IAAP;AACA,mBAAO,KAAP;AACD;;AAEDk7B,4BAAW,CAACE,UAAZ,CAAuB,MAAvB;AACAjyC,gBAAM,CAACsZ,IAAP,CAAYgkC,WAAZ;AACAvL,4BAAW,CAACK,UAAZ,CAAuB,MAAvB;AAEAL,4BAAW,CAACE,UAAZ,CAAuB,KAAvB;AACA,iBAAO,KAAP;AACD,SA7BI,CAAL;AA+BA,YAAI0K,eAAJ,EAAqBj9C,QAAQ,CAAC89C,IAAT;AAErBzL,0BAAW,CAACE,UAAZ,CAAuB,KAAvB;AACA,eAAOjyC,MAAP;AACD,OA/CD;;AAiDAA,YAAM,CAACy9C,OAAP,GAAiB,YAAW;AAC1BZ,sBAAc,GAAG,IAAjB;AACA,eAAO78C,MAAP;AACD,OAHD;;AAKAA,YAAM,CAAC6W,IAAP,GAAc,YAAW;AACvB+lC,mBAAW,GAAG,IAAd;AACA,eAAO58C,MAAP;AACD,OAHD;;AAKAA,YAAM,CAACiT,SAAP,GAAmB,YAAW;AAC5B,eAAOuxB,OAAO,IAAIoY,WAAlB;AACD,OAFD;;AAIA58C,YAAM,CAACvY,EAAP,CAAU,uBAAV,EAAmC,YAAW;AAC5CurB,iBAAS,GAAG,IAAZ;AACD,OAFD;AAIAhT,YAAM,CAACvY,EAAP,CAAU,wBAAV,EAAoC,YAAW;AAC7CurB,iBAAS,GAAG,KAAZ;AACD,OAFD;AAIAtoC,YAAM,CAAC6qC,cAAP,CAAsBvV,MAAtB,EAA8B,WAA9B,EAA2C;AACzC42C,kBAAU,EAAE,IAD6B;AAEzC1nD,WAAG,EAAE,eAAW;AACd,iBAAO8jB,SAAP;AACD;AAJwC,OAA3C;AAMD;AAtII,GAAP;AAwID;AAAA,C;;ACxMD;AACA;AAGe,SAAS0qC,uBAAT,CAAiCt+C,IAAjC,EAAuC;AACpD,MAAI86C,eAAe,GAAG96C,IAAI,CAAC86C,eAA3B;AAAA,MACEjsE,QAAQ,GAAGmxB,IAAI,CAACnxB,QADlB;AAAA,MAEE;AACAksE,iBAAe,GAAG/6C,IAAI,CAAC+6C,eAAL,IAAwB,EAH5C;AAAA,MAIEwD,gBAAgB,GAAGv+C,IAAI,CAACu+C,gBAAL,IAAyB,IAJ9C;AAAA,MAKEC,OAAO,GAAGx+C,IAAI,CAACw+C,OAAL,IAAgB,EAL5B;AAAA,MAMEC,iBAAiB,GAAGz+C,IAAI,CAACy+C,iBAAL,IAA0B,IANhD;;AAQA,WAASC,qBAAT,CAA+Bv3D,GAA/B,EAAoCvV,IAApC,EAA0CqpE,MAA1C,EAAkD;AAChD,QAAI0D,eAAJ,EACEnI,UADF,EAEErnE,yBAFF,EAGEyN,QAHF;;AAKA,QAAIhL,IAAI,KAAK,cAAb,EAA6B;AAC3B+sE,qBAAe,GAAG9vE,QAAQ,CAAC2N,cAA3B;AACD,KAFD,MAEO,IAAI5K,IAAI,KAAK,YAAb,EAA2B;AAChC+sE,qBAAe,GAAG9vE,QAAQ,CAAC2P,WAA3B;AACD,KAFM,MAEA;AACL,YAAM,IAAI5T,KAAJ,CAAUgH,IAAI,GAAG,4CAAjB,CAAN;AACD;;AAEDzC,6BAAyB,GAAGsyB,4BAAS,CAACtyB,yBAAV,CAAoCwvE,eAAe,CAACx3D,GAAD,CAAnD,CAA5B;AAEAqvD,cAAU,GAAG;AACX5kE,UAAI,EAAEA,IADK;AAEXqjE,cAAQ,EAAExzC,4BAAS,CAACvyB,kBAAV,CAA6ByvE,eAAe,CAACx3D,GAAD,CAA5C,CAFC;AAGX7Z,SAAG,EAAE2tE,MAHM;AAIX/F,2BAAqB,EAAE,CAAC,CAACyJ,eAAe,CAACx3D,GAAD,CAAf,CAAqBpK,kBAJnC;AAKXnO,cAAQ,EAAE,kBAAS9D,KAAT,EAAgB;AACxB,eAAO22B,4BAAS,CAAClzB,sBAAV,CAAiCowE,eAAe,CAACx3D,GAAD,CAAhD,EAAuDA,GAAvD,EAA4Drc,KAA5D,EAAmE,KAAnE,CAAP;AACD,OAPU;AAQX+pE,uBAAiB,EAAE1lE,yBAAyB,GAAG2rE,eAAe,CAAC5C,yBAAnB,GAA+CjuE,SARhF;AASX6qE,sBAAgB,EAAE3lE,yBAAyB,GAAG2rE,eAAe,CAAC3C,0BAAnB,GAAgDluE;AAThF,KAAb;AAYA2S,YAAQ,GAAG+hE,eAAe,CAACx3D,GAAD,CAAf,CAAqBvK,QAAhC;AACA45D,cAAU,CAAChzC,WAAX,GAAyB,IAAIy1C,oBAAJ,CAAwB8B,eAAxB,EAAyC;AAChEn+D,cAAQ,EAAEA,QADsD;AAEhEkQ,WAAK,EAAE6xD,eAAe,CAACx3D,GAAD,CAAf,CAAqB2F,KAArB,IAA8B3F;AAF2B,KAAzC,CAAzB;;AAKA,QAAIvK,QAAQ,IAAI2hE,gBAAhB,EAAkC;AAChC/H,gBAAU,CAACxB,kBAAX,GAAgC,UAASlqE,KAAT,EAAgB;AAC9C,eAAOyzE,gBAAgB,CAACK,qBAAjB,CAAuC9zE,KAAvC,EAA8C8R,QAA9C,CAAP;AACD,OAFD;;AAGA45D,gBAAU,CAACzB,iBAAX,GAA+B,UAASjqE,KAAT,EAAgB;AAC7C,eAAOyzE,gBAAgB,CAACM,uBAAjB,CAAyC/zE,KAAzC,EAAgD8R,QAAhD,CAAP;AACD,OAFD;AAGD;;AAEDk+D,mBAAe,CAAC3kC,cAAhB,CAA+BhvB,GAA/B,EAAoCqvD,UAApC;AACD;;AAEA,eAAW;AACV,QAAIh6D,cAAJ,EACEgC,WADF,CADU,CAIV;;AACAlT,UAAM,CAAC2b,IAAP,CAAYpY,QAAQ,CAAC2N,cAArB,EAAqC0K,OAArC,CAA6C,UAASC,GAAT,EAAc;AACzDu3D,2BAAqB,CAACv3D,GAAD,EAAM,cAAN,EAAsBq3D,OAAO,CAACr3D,GAAD,CAA7B,CAArB;AACD,KAFD;AAGA7b,UAAM,CAAC2b,IAAP,CAAYpY,QAAQ,CAAC2P,WAArB,EAAkC0I,OAAlC,CAA0C,UAASC,GAAT,EAAc;AACtDu3D,2BAAqB,CAACv3D,GAAD,EAAM,YAAN,EAAoBq3D,OAAO,CAACr3D,GAAD,CAA3B,CAArB;AACD,KAFD;;AAIA,QAAIs3D,iBAAJ,EAAuB;AACrBjiE,oBAAc,GAAGilB,4BAAS,CAACryB,oBAAV,CAA+BP,QAAQ,CAAC2N,cAAxC,EAAwDiiE,iBAAxD,CAAjB;AACA3D,qBAAe,CAAClC,YAAhB,CAA6Bp8D,cAA7B;AAEAgC,iBAAW,GAAGijB,4BAAS,CAACryB,oBAAV,CAA+BP,QAAQ,CAAC2P,WAAxC,EAAqDigE,iBAAiB,CAACjgE,WAAlB,IAAiC,EAAtF,CAAd;AACAs8D,qBAAe,CAAClC,YAAhB,CAA6Bp6D,WAA7B;AACD;AACF,GAnBA,GAAD;AAoBD;AAAA,C;;AC/ED;AACA;AACA;AACA;AACA;CAEA;;AACA;AAEe,SAASsgE,eAAT,CAAyB9+C,IAAzB,EAA+B;AAE5C,MAAIzW,GAAJ;;AAEE;;;AAGA1a,UAAQ,GAAGmxB,IAAI,CAACnxB,QALlB;AAAA,MAME2vE,OAAO,GAAGx+C,IAAI,CAACw+C,OANjB;AAAA,MAOEzD,eAAe,GAAG/6C,IAAI,CAAC+6C,eAPzB;AAAA,MAQEwD,gBAAgB,GAAGv+C,IAAI,CAACu+C,gBAR1B;AAAA,MASEE,iBAAiB,GAAGz+C,IAAI,CAACy+C,iBAT3B;AAAA,MAUErC,WAAW,GAAGp8C,IAAI,CAACo8C,WAVrB;AAAA,MAYE;AACA2C,oBAAkB,GAAG/+C,IAAI,CAAC++C,kBAAL,KAA4B90E,SAA5B,IAAyC,CAAC,CAAC+1B,IAAI,CAAC++C,kBAbvE;AAAA,MAeEjE,eAAe,GAAG,IAAIxF,eAAJ,CAAoB;AACpC9kE,SAAK,EAAE,CAAC,QAAD,EAAW,WAAX,EAAwB,cAAxB,EAAwC,YAAxC;AAD6B,GAApB,CAfpB;AAAA,MAkBEwuE,gBAAgB,GAAG,IAAInE,gBAAJ,CAAqB;AACtCC,mBAAe,EAAEA,eADqB;AAEtCC,mBAAe,EAAEA;AAFqB,GAArB,CAlBrB;AAAA,MAsBEkE,aAAa,GAAG,IAAI9C,aAAJ,CAAkB;AAChCrB,mBAAe,EAAEA,eADe;AAEhCC,mBAAe,EAAEA,eAFe;AAGhCqB,eAAW,EAAEA;AAHmB,GAAlB,CAtBlB;AAAA,MA2BE8C,eAAe,GAAG,IAAIj/C,eAAJ,EA3BpB;AAAA,MA4BEk/C,eA5BF,CAF4C,CAgC5C;AACA;AACA;AACA;AACA;;AACA,WAAS7B,qBAAT,GAAiC;AAC/B;AACA,QAAI7V,iBAAiB,GAAGqT,eAAe,CAAC3lD,UAAhB,CAA2BsyC,iBAAnD;AACA,QAAInpD,iBAAiB,GAAGw8D,eAAe,CAAC3lD,UAAhB,CAA2B7W,iBAAnD;AACA,QAAIqpD,eAAJ;;AAEA,QAAI,CAACF,iBAAL,EAAwB;AACtB,aAAO/uD,QAAP;AACD,KAR8B,CAU/B;AACA;;;AACA,QAAI,OAAO4F,iBAAP,KAA6B,QAAjC,EAA2C;AACzC,aAAOA,iBAAP;AACD,KAd8B,CAgB/B;;;AACAqpD,mBAAe,GAAGmT,eAAe,CAAC3lD,UAAhB,CAA2BwyC,eAA7C;;AAEA,QAAIA,eAAe,CAAC38D,MAAhB,GAAyB,CAA7B,EAAgC;AAC9B,aAAO28D,eAAe,CAACx7D,IAAI,CAACwqC,KAAL,CAAWgxB,eAAe,CAAC38D,MAAhB,GAAyB,CAApC,CAAD,CAAtB;AACD,KAFD,MAEO;AACL;AACA,aAAO0N,QAAP;AACD;AACF;;AAED,WAAS2kE,wBAAT,GAAoC;AAClC,QAAIh/D,WAAW,GAAGy8D,eAAe,CAAC3lD,UAAhB,CAA2B9W,WAA7C;AACA,WAAOA,WAAW,KAAK,IAAhB,IAAwBA,WAAW,KAAK,OAAhB,IAA2BkzB,iBAAgB,CAAC1D,aAAjB,EAA1D;AACD;;AAED,MAAIkxC,kBAAJ,EAAwB;AACtBI,mBAAe,GAAG,IAAI/B,eAAJ,CAAoB;AACpC98C,cAAQ,EAAE4+C,eAD0B;AAEpCpE,qBAAe,EAAEA,eAFmB;AAGpCC,qBAAe,EAAEA,eAHmB;AAIpCuC,2BAAqB,EAAEA,qBAJa;AAKpCD,8BAAwB,EAAEA;AALU,KAApB,CAAlB;AAOD,GA7E2C,CA+E5C;AACA;AACA;AACA;;;AACA,MAAIzjE,OAAO,GAAG,KAAd,CAnF4C,CAqF5C;AACA;;AACAslE,iBAAe,CAACp+C,aAAhB,CAA8B,OAA9B,EAAuC,aAAvC,EAAsD,UAAtD,EAAkE,MAAlE,EAA0E,cAA1E,EAA0F,WAA1F,EAAuG,OAAvG,EAAgH,KAAhH;AAEAvX,KAAG,GAAG;AACJoX,WAAO,EAAE,iBAASC,MAAT,EAAiB;AACxBk6C,qBAAe,CAACn6C,OAAhB,CAAwBC,MAAxB;AACAo+C,sBAAgB,CAACr+C,OAAjB,CAAyBC,MAAzB;AACAq+C,mBAAa,CAACt+C,OAAd,CAAsBC,MAAtB;AACAs+C,qBAAe,CAACv+C,OAAhB,CAAwBC,MAAxB;;AAEA,UAAIu+C,eAAJ,EAAqB;AACnBA,uBAAe,CAACx+C,OAAhB,CAAwBC,MAAxB;AACD,OARuB,CAUxB;AACA;AACA;;;AACAA,YAAM,CAACszC,SAAP,GAAmB,YAAW;AAC5BgL,uBAAe,CAAChL,SAAhB;AACD,OAFD;AAIA;;;;;;;;;;;;AAYAtzC,YAAM,CAACw+C,KAAP,GAAe,YAAW;AACxB,YAAIxlE,OAAJ,EAAa;AACX,gBAAM,IAAIhP,KAAJ,CAAU,2CAAV,CAAN;AACD;;AAED,YAAI2e,GAAG,CAAC6yD,WAAR,EAAqB;AACnB7yD,aAAG,CAAC6yD,WAAJ,CAAgBiD,gBAAhB;AACA91D,aAAG,CAAC6yD,WAAJ,CAAgBzuE,IAAhB;AACD;;AAEDmtE,uBAAe,CAAC5C,yBAAhB;AACAt+D,eAAO,GAAG,IAAV;AACAkhE,uBAAe,CAAC3C,0BAAhB;AAEA+G,uBAAe,CAACE,KAAhB;AACD,OAfD;;AAiBA9zE,YAAM,CAAC6qC,cAAP,CAAsBvV,MAAtB,EAA8B,SAA9B,EAAyC;AACvC42C,kBAAU,EAAE,IAD2B;AAEvC1nD,WAAG,EAAE,eAAW;AACd,iBAAOlW,OAAP;AACD;AAJsC,OAAzC;;AAOA,UAAI/K,QAAJ,EAAc;AACZyvE,+BAAuB,CAAC;AACtBxD,yBAAe,EAAEA,eADK;AAEtBjsE,kBAAQ,EAAEA,QAFY;AAItBksE,yBAAe,EAAEA,eAJK;AAKtBwD,0BAAgB,EAAEA,gBALI;AAMtBC,iBAAO,EAAEA,OANa;AAOtBC,2BAAiB,EAAEA;AAPG,SAAD,CAAvB;AASD;AACF,KAjEG;;AAmEJ,QAAI3D,eAAJ,GAAsB;AACpB,aAAOA,eAAP;AACD,KArEG;;AAuEJ,QAAIkE,gBAAJ,GAAuB;AACrB,aAAOA,gBAAP;AACD,KAzEG;;AA2EJ,QAAIC,aAAJ,GAAoB;AAClB,aAAOA,aAAP;AACD,KA7EG;;AA+EJ,QAAIC,eAAJ,GAAsB;AACpB,aAAOA,eAAP;AACD,KAjFG;;AAmFJ,QAAIC,eAAJ,GAAsB;AACpB,aAAOA,eAAP;AACD,KArFG;;AAuFJ,QAAI7B,qBAAJ,GAA4B;AAC1B,aAAOA,qBAAP;AACD,KAzFG;;AA2FJ,QAAID,wBAAJ,GAA+B;AAC7B,aAAOA,wBAAP;AACD;;AA7FG,GAAN;AAgGA,SAAO9zD,GAAP;AACD;AAAA,C;;ACnMD;;;;;;;;;;;;;;;;;;;;AAoBe,SAAS+1D,WAAT,CAAqBC,UAArB,EAAiC5lE,KAAjC,EAAwC7P,IAAxC,EAA8C;AAC3D,MAAIsyE,WAAW,GAAG,EAAlB;AAAA,MACEoD,YADF;AAAA,MAEEC,IAFF;AAAA,MAGEC,SAHF;AAAA,MAIEC,WAAW,GAAG,IAJhB;AAAA,MAKE;AACAC,iBAAe,GAAG,EANpB;AAAA,MAQE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAC,iBAAe,GAAG,CAAC,CAACN,UAAU,CAACO,aAjBjC;;AAmBA,WAASC,QAAT,GAAoB;AAClB,WAAO;AACL5xE,WAAK,EAAE,EADF;AAEL8jC,WAAK,EAAE,EAFF;AAGLle,gBAAU,EAAE;AAHP,KAAP;AAKD;;AAED,WAAS5e,KAAT,GAAiB;AACf,QAAIpK,CAAJ;AAEA00E,QAAI,GAAG,EAAP;AACAC,aAAS,GAAG;AACV;AACA10E,YAAM,EAAE,CAFE;AAGV;AACAg1E,aAAO,EAAEl2E,IAJC;AAKV;AACAu6B,WAAK,EAAE,CAAC,CANE;AAOV;AACA47C,aAAO,EAAE,CAAC,CARA;AASV;AACA;AACAC,kBAAY,EAAE;AAXJ,KAAZ,CAJe,CAiBf;;AACA,SAAKn1E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG60E,eAAe,CAAC50E,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C,UAAI60E,eAAe,CAAC70E,CAAD,CAAf,CAAmBoK,KAAvB,EAA8B;AAC5ByqE,uBAAe,CAAC70E,CAAD,CAAf,CAAmBoK,KAAnB;AACD;AACF;AACF;;AAED,WAASgrE,cAAT,CAAwBC,WAAxB,EAAqC;AACnC,QAAIr1E,CAAJ,EACEgD,IADF,EAEEkkC,KAFF,EAGEle,UAHF,EAIEpiB,IAJF;;AAMA,QAAIkuE,eAAJ,EAAqB;AACnB;AACAO,iBAAW,CAACjyE,KAAZ,GAAoBoxE,UAAU,CAACO,aAAX,EAApB;AACD,KAHD,MAGO;AACL;AACA,WAAK/0E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGw0E,UAAU,CAACpxE,KAAX,CAAiBnD,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;AAC5CgD,YAAI,GAAGwxE,UAAU,CAACpxE,KAAX,CAAiBpD,CAAjB,CAAP;AACAq1E,mBAAW,CAACjyE,KAAZ,CAAkBJ,IAAlB,IAA0BwxE,UAAU,CAACc,mBAAX,CAA+BtyE,IAA/B,CAA1B;AACD,OALI,CAOL;;;AACAgmB,gBAAU,GAAGwrD,UAAU,CAACxrD,UAAxB;;AACA,WAAKpiB,IAAL,IAAaoiB,UAAb,EAAyB;AACvB,YAAIA,UAAU,CAACzlB,cAAX,CAA0BqD,IAA1B,KAAmCoiB,UAAU,CAACpiB,IAAD,CAAV,CAAiB2uE,SAAxD,EAAmE;AACjEF,qBAAW,CAACrsD,UAAZ,CAAuBpiB,IAAvB,IAA+B4tE,UAAU,CAACc,mBAAX,CAA+B1uE,IAA/B,CAA/B;AACD;AACF;AACF,KAxBkC,CA0BnC;;;AACAsgC,SAAK,GAAGstC,UAAU,CAACttC,KAAnB;;AACA,SAAKlnC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGknC,KAAK,CAACjnC,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjCq1E,iBAAW,CAACnuC,KAAZ,CAAkBlnC,CAAlB,IAAuBknC,KAAK,CAAClnC,CAAD,CAAL,CAASe,KAAT,EAAvB;AACD;AACF;AAED;;;;;AAGA,WAAS6B,IAAT,GAAgB;AACd,QAAI4yE,SAAS,GAAGR,QAAQ,EAAxB;AAAA,QACEh1E,CADF;AAGAo1E,kBAAc,CAACI,SAAD,CAAd;AACAd,QAAI,CAACC,SAAS,CAACr7C,KAAV,GAAkB,CAAnB,CAAJ,GAA4Bk8C,SAA5B,CALc,CAOd;;AACA,QAAId,IAAI,CAACz0E,MAAL,GAAc00E,SAAS,CAACM,OAA5B,EAAqC;AACnCP,UAAI,CAACpnB,MAAL,CAAY,CAAZ,EAAe,CAAf;AACAqnB,eAAS,CAACQ,YAAV;AACD,KAHD,MAGO;AACLR,eAAS,CAACr7C,KAAV;AACD;;AACDq7C,aAAS,CAACO,OAAV,GAAoBP,SAAS,CAACr7C,KAAV,GAAkBq7C,SAAS,CAACQ,YAAhD,CAdc,CAgBd;;AACA,SAAKn1E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG60E,eAAe,CAAC50E,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C60E,qBAAe,CAAC70E,CAAD,CAAf,CAAmB4C,IAAnB;AACD;;AAED6yE,4BAAwB;AACxBd,aAAS,CAAC10E,MAAV,GAAmBy0E,IAAI,CAACz0E,MAAxB;AACD;AAED;;;;AAEA,WAASw1E,wBAAT,GAAoC;AAClC,QAAIz1E,CAAJ;AAEA00E,QAAI,CAACz0E,MAAL,GAAc00E,SAAS,CAACr7C,KAAV,GAAkB,CAAhC;AACAq7C,aAAS,CAAC10E,MAAV,GAAmBy0E,IAAI,CAACz0E,MAAxB,CAJkC,CAMlC;;AACA,SAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG60E,eAAe,CAAC50E,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C60E,qBAAe,CAAC70E,CAAD,CAAf,CAAmB+xE,UAAnB,CAA8B4C,SAAS,CAACr7C,KAAxC;AACD;AACF;;AAED,WAASu4C,OAAT,CAAiBruC,UAAjB,EAA6B;AAC3B,QAAIxjC,CAAJ,EACEknC,KADF,CAD2B,CAI3B;;AACAstC,cAAU,CAACkB,iBAAX,CAA6BlyC,UAAU,CAACpgC,KAAxC;;AAEA,QAAI,CAAC0xE,eAAL,EAAsB;AACpB;AACAN,gBAAU,CAACmB,iBAAX,CAA6BnyC,UAAU,CAACxa,UAAxC;AACD,KAV0B,CAY3B;;;AACAke,SAAK,GAAG1D,UAAU,CAAC0D,KAAnB;;AACA,SAAKlnC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGknC,KAAK,CAACjnC,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjCw0E,gBAAU,CAACttC,KAAX,CAAiBlnC,CAAjB,EAAoB68C,OAApB,CAA4B3V,KAAK,CAAClnC,CAAD,CAAjC;AACD,KAhB0B,CAkB3B;;;AACA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG60E,eAAe,CAAC50E,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C60E,qBAAe,CAAC70E,CAAD,CAAf,CAAmB6xE,OAAnB,CAA2B8C,SAAS,CAACr7C,KAArC;AACD;AACF;;AAED,WAASs8C,aAAT,CAAuBt8C,KAAvB,EAA8B;AAC5B,QAAIA,KAAK,GAAG,CAAZ,EAAe;AACb,YAAM,IAAIz5B,KAAJ,CAAU,iCAAiCy5B,KAAjC,GAAyC,eAAnD,CAAN;AACD;;AACD,QAAIA,KAAK,IAAIo7C,IAAI,CAACz0E,MAAlB,EAA0B;AACxB,YAAM,IAAIJ,KAAJ,CAAU,iCAAiCy5B,KAAjC,GAAyC,8BAAzC,GAA0Eo7C,IAAI,CAACz0E,MAAzF,CAAN;AACD;;AACD,WAAOq5B,KAAP;AACD,GAhK0D,CAkK3D;AACA;AACA;;;AACA+3C,aAAW,CAACrgB,OAAZ,GAAsB,YAAW;AAC/B,WAAO2jB,SAAS,CAACr7C,KAAV,KAAoB,CAA3B;AACD,GAFD;;AAIA+3C,aAAW,CAACzuE,IAAZ,GAAmB,YAAW;AAC5BA,QAAI;AACL,GAFD;;AAIAyuE,aAAW,CAACwE,UAAZ,GAAyB,UAASC,GAAT,EAAc;AACrC,QAAI91E,CAAJ;;AACA,QAAI,OAAO81E,GAAP,KAAe,QAAnB,EAA6B;AAC3B91E,OAAC,GAAG81E,GAAJ;AACD,KAFD,MAEO;AACL91E,OAAC,GAAG20E,SAAS,CAACr7C,KAAd;AACD;;AACDs8C,iBAAa,CAAC51E,CAAD,CAAb;AACA,WAAO00E,IAAI,CAAC10E,CAAD,CAAX;AACD,GATD;;AAWAqxE,aAAW,CAACQ,OAAZ,GAAsB,UAASiE,GAAT,EAAc;AAClC,QAAI91E,CAAJ;;AACA,QAAI,OAAO81E,GAAP,KAAe,QAAnB,EAA6B;AAC3B91E,OAAC,GAAG81E,GAAJ;AACD,KAFD,MAEO;AACL91E,OAAC,GAAG20E,SAAS,CAACr7C,KAAd;AACD;;AACDs8C,iBAAa,CAAC51E,CAAD,CAAb;AACA6xE,WAAO,CAAC6C,IAAI,CAAC10E,CAAD,CAAL,CAAP;AACD,GATD;;AAWAqxE,aAAW,CAACiD,gBAAZ,GAA+B,YAAW;AACxCG,gBAAY,GAAGO,QAAQ,EAAvB;AACAI,kBAAc,CAACX,YAAD,CAAd;AACD,GAHD;;AAKApD,aAAW,CAAC0E,mBAAZ,GAAkC,YAAW;AAC3C3rE,SAAK;AACLynE,WAAO,CAAC4C,YAAD,CAAP;AACA7xE,QAAI;AACL,GAJD;;AAMAyuE,aAAW,CAACjnE,KAAZ,GAAoBA,KAApB;;AAEAinE,aAAW,CAAC2E,gBAAZ,GAA+B,YAAW;AACxC,QAAIrB,SAAS,CAACO,OAAV,GAAoBP,SAAS,CAACQ,YAAlC,EAAgD;AAC9CR,eAAS,CAACr7C,KAAV;AACAq7C,eAAS,CAACO,OAAV;AACArD,aAAO,CAAC6C,IAAI,CAACC,SAAS,CAACr7C,KAAX,CAAL,CAAP;AACD;AACF,GAND;;AAQA+3C,aAAW,CAAC4E,gBAAZ,GAA+B,YAAW;AACxCtB,aAAS,CAACr7C,KAAV;AACAq7C,aAAS,CAACO,OAAV;AACArD,WAAO,CAAC6C,IAAI,CAACC,SAAS,CAACr7C,KAAX,CAAL,CAAP;AACD,GAJD;;AAMA+3C,aAAW,CAAC6E,WAAZ,GAA0B,UAASJ,GAAT,EAAc;AACtC,QAAIA,GAAG,GAAGnB,SAAS,CAACQ,YAApB,EAAkCW,GAAG,GAAGnB,SAAS,CAACQ,YAAhB;AAClC,QAAIW,GAAG,IAAInB,SAAS,CAACQ,YAAV,GAAyBR,SAAS,CAAC10E,MAA9C,EAAsD61E,GAAG,GAAGnB,SAAS,CAACQ,YAAV,GAAyBR,SAAS,CAAC10E,MAAnC,GAA4C,CAAlD;AACtD00E,aAAS,CAACO,OAAV,GAAoBY,GAApB;AACAnB,aAAS,CAACr7C,KAAV,GAAkBw8C,GAAG,GAAGnB,SAAS,CAACQ,YAAlC;AACAtD,WAAO,CAAC6C,IAAI,CAACC,SAAS,CAACr7C,KAAX,CAAL,CAAP;AACD,GAND;;AAQA+3C,aAAW,CAACoE,wBAAZ,GAAuCA,wBAAvC;;AAEApE,aAAW,CAACtsD,GAAZ,GAAkB,UAAS3I,GAAT,EAAc;AAC9B,WAAOu4D,SAAS,CAACv4D,GAAD,CAAhB;AACD,GAFD;;AAIAi1D,aAAW,CAAC9uE,GAAZ,GAAkB,UAAS6Z,GAAT,EAAc3T,GAAd,EAAmB;AACnC,WAAOksE,SAAS,CAACv4D,GAAD,CAAT,GAAiB3T,GAAxB;AACD,GAFD;AAIA;;;;;;;;;;;AASA4oE,aAAW,CAACO,sBAAZ,GAAqC,UAASuE,WAAT,EAAsB;AACzDA,eAAW,CAACnE,gBAAZ,CAA6B2C,SAAS,CAACM,OAAvC;AACAJ,mBAAe,CAACjyE,IAAhB,CAAqBuzE,WAArB;AACD,GAHD,CAzP2D,CA8P3D;AACA;AACA;;;AACA,MAAIp3E,IAAI,IAAI,IAAZ,EAAkBA,IAAI,GAAG61E,WAAP;AAElBxqE,OAAK;AACL,SAAOinE,WAAP;AACD;AAAA,C;;AC1Rc,sDAAC;AACd,cAAY,SADE;AAEd,kBAAgB,KAFF;AAGd,YAAU,GAHI;AAId,eAAa,KAJC;AAKd,YAAU,CALI;AAMd,sBAAoB,IANN;AAOd,QAAM,CAPQ;AAQd,aAAW,GARG;AASd,YAAU,IATI;AAUd,gBAAc,KAVA;AAWd,oBAAkB,CAXJ;AAYd,cAAY;AAZE,CAAD,EAaZ;AACD,cAAY,UADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,KAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,EAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,EAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CAbY,EA0BZ;AACD,cAAY,YADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,IAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CA1BY,EAuCZ;AACD,cAAY,cADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,KAJZ;AAKD,YAAU,CAAC,CALV;AAMD,sBAAoB,IANnB;AAOD,QAAM,GAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CAvCY,EAoDZ;AACD,cAAY,UADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,GANnB;AAOD,QAAM,GAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,IAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CApDY,EAiEZ;AACD,cAAY,WADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,GAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CAjEY,EA8EZ;AACD,cAAY,cADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CAAC,CALV;AAMD,sBAAoB,IANnB;AAOD,QAAM,GAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CA9EY,EA2FZ;AACD,cAAY,SADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,KAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,EARV;AASD,YAAU,IATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CA3FY,EAwGZ;AACD,cAAY,WADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,GAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,IAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CAxGY,EAqHZ;AACD,cAAY,YADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CArHY,EAkIZ;AACD,cAAY,SADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,GANnB;AAOD,QAAM,EAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CAlIY,EA+IZ;AACD,cAAY,QADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,IAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CA/IY,EA4JZ;AACD,cAAY,YADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,IAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CA5JY,EAyKZ;AACD,cAAY,eADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CAzKY,EAsLZ;AACD,cAAY,SADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,GANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CAtLY,EAmMZ;AACD,cAAY,QADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,GANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,EATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CAnMY,EAgNZ;AACD,cAAY,WADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,IAVb;AAWD,oBAAkB,CAAC,CAXlB;AAYD,cAAY;AAZX,CAhNY,EA6NZ;AACD,cAAY,YADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CA7NY,EA0OZ;AACD,cAAY,UADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,EAPL;AAQD,aAAW,GARV;AASD,YAAU,KATT;AAUD,gBAAc,KAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CA1OY,EAuPZ;AACD,cAAY,QADX;AAED,kBAAgB,KAFf;AAGD,YAAU,GAHT;AAID,eAAa,MAJZ;AAKD,YAAU,CALT;AAMD,sBAAoB,IANnB;AAOD,QAAM,CAPL;AAQD,aAAW,GARV;AASD,YAAU,GATT;AAUD,gBAAc,IAVb;AAWD,oBAAkB,CAXjB;AAYD,cAAY;AAZX,CAvPY,CAAf,E;;ACAA;;;;;;AAKA;;;CAKA;;AACA,IAAM+E,eAAe,GAAG,CAAxB;AAEA,IAAMC,eAAe,GAAG;AACtB,SAAO,KADe;AAEtB,SAAO,KAFe;AAItB,SAAO,KAJe;AAKtB,SAAO,KALe;AAMtB,SAAO,KANe;AAOtB,SAAO,KAPe;AAQtB,SAAO,KARe;AAStB,SAAO,KATe;AAWtB,SAAO,KAXe;AAYtB,SAAO,KAZe;AAatB,SAAO,KAbe;AAetB,SAAO,KAfe;AAiBtB,SAAO,KAjBe;AAkBtB,SAAO,KAlBe;AAmBtB,SAAO,KAnBe;AAoBtB,SAAO,KApBe;AAsBtB,SAAO,KAtBe;AAuBtB,SAAO,KAvBe;AAwBtB,SAAO,KAxBe;AAyBtB,SAAO,KAzBe;AA0BtB,SAAO,KA1Be;AA2BtB,SAAO,KA3Be;AA6BtB,SAAO,KA7Be;AA8BtB,SAAO,KA9Be;AA+BtB,SAAO,KA/Be;AAgCtB,SAAO,KAhCe;AAkCtB,SAAO,KAlCe;AAmCtB,SAAO,KAnCe;AAoCtB,SAAO,KApCe;AAqCtB,SAAO,KArCe;AAuCtB,SAAO,KAvCe;AAwCtB,SAAO,KAxCe;AAyCtB,SAAO,KAzCe;AA0CtB,SAAO,KA1Ce;AA4CtB,SAAO,KA5Ce;AA6CtB,SAAO,KA7Ce;AA+CtB,SAAO,KA/Ce;AAgDtB,SAAO,KAhDe;AAkDtB,SAAO,KAlDe;AAmDtB,SAAO,KAnDe;AAqDtB,SAAO,KArDe;AAsDtB,SAAO,KAtDe;AAwDtB,SAAO,KAxDe;AAyDtB,SAAO,KAzDe;AA2DtB,SAAO,KA3De;AA4DtB,SAAO,KA5De;AA8DtB,SAAO,KA9De;AA+DtB,SAAO,KA/De;AAiEtB,SAAO,KAjEe;AAkEtB,SAAO,KAlEe;AAoEtB,SAAO,KApEe;AAsEtB,SAAO,KAtEe;AAuEtB,SAAO,KAvEe;AAwEtB,SAAO,KAxEe;AAyEtB,SAAO,KAzEe;AA0EtB,SAAO,KA1Ee;AA2EtB,SAAO,KA3Ee;AA6EtB,SAAO,KA7Ee;AA8EtB,SAAO,KA9Ee;AA+EtB,SAAO,KA/Ee;AAgFtB,SAAO,KAhFe;AAkFtB,SAAO,MAlFe;AAmFtB,SAAO,MAnFe;AAoFtB,SAAO;AApFe,CAAxB;AAuFe;AACb;;;AAGAC,gBAAc,EAAEF,eAJH;;AAMb;;;AAGAG,eAAa,EAAGH,eAAe,GAAGI,gBAAe,CAACv2E,MAAnC,GAA6C,CAT/C;;AAWb;;;;;AAKAw2E,iBAAe,EAAE,CAhBJ;;AAkBb;;;AAGAC,eArBa,yBAqBCC,YArBD,EAqBe;AAC1B,SAAK,IAAI32E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGw2E,gBAAe,CAACv2E,MAApC,EAA4CD,CAAC,EAA7C,EAAiD;AAC/C,UAAM42E,SAAS,GAAGJ,gBAAe,CAACx2E,CAAD,CAAjC;;AACA,UAAI42E,SAAS,CAACD,YAAV,KAA2BA,YAA/B,EAA6C;AAC3C,eAAO32E,CAAC,GAAG,KAAKs2E,cAAhB;AACD;AACF;AACF,GA5BY;;AA8Bb;;;AAGAO,uBAjCa,iCAiCSC,SAjCT,EAiCoB;AAC/B,WAAON,gBAAe,CAACM,SAAS,GAAG,KAAKR,cAAlB,CAAtB;AACD,GAnCY;;AAqCb;;;AAGAS,aAxCa,uBAwCDD,SAxCC,EAwCU;AACrB,WAAQA,SAAS,IAAI,KAAKR,cAAnB,IAAuCQ,SAAS,IAAI,KAAKP,aAAhE;AACD,GA1CY;;AA4Cb;;;AAGAS,oBA/Ca,gCA+CQ;AAAA;;AACnB;AACA;AACA;AACA,WAAO,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6Bv2C,GAA7B,CAAiC,UAACw2C,IAAD;AAAA,aAAU,KAAI,CAACP,aAAL,CAAmBO,IAAnB,CAAV;AAAA,KAAjC,CAAP;AACD,GApDY;;AAsDb;;;AAGAC,aAzDa,uBAyDDC,KAzDC,EAyDM;AACjB,QAAIA,KAAK,CAACl3E,MAAN,KAAiB,CAArB,EAAwB;AACtB,aAAO,MAAP;AACD,KAFD,MAEO;AACL,aAAOo2E,eAAe,CAACc,KAAD,CAAtB;AACD;AACF;AA/DY,CAAf,E;;;;;;;;;;ACpGA;;AACA;;;CAIA;;AAEe,SAASC,QAAT,CAAkBxE,CAAlB,EAAqBr4D,EAArB,EAAyBjW,IAAzB,EAA+B;AAC5CA,MAAI,GAAGA,IAAI,IAAI,EAAf;AAEA,MAAIA,IAAI,CAAC+yE,SAAL,IAAkB,IAAtB,EAA4B/yE,IAAI,CAAC+yE,SAAL,GAAiB,IAAjB;AAE5B,MAAI;AACFA,WAAS,GAAG/yE,IAAI,CAAC+yE,SADnB;AAAA,MAGE;AACAC,QAAM,GAAGhzE,IAAI,CAACgzE,MAJhB;AAAA,MAME;AACAC,SAAO,GAAGjzE,IAAI,CAACizE,OAAL,IAAgB,IAP5B;AAAA,MASE;AACAC,SAAO,GAAGlzE,IAAI,CAACkzE,OAAL,IAAgB,CAAC7pE,QAV7B;AAAA,MAYE;AACA8pE,SAAO,GAAGnzE,IAAI,CAACmzE,OAAL,IAAgB,IAb5B;AAAA,MAeE;AACAC,KAAG,GAAGpzE,IAAI,CAACozE,GAAL,IAAY,IAhBpB;AAAA,MAiBEjtE,GAAG,GAAG8P,EAAE,CAACta,MAjBX;AAAA,MAkBEkB,CAlBF;AAAA,MAmBE04B,GAnBF;AAAA,MAoBE89C,KApBF;AAAA,MAqBEC,MArBF;AAAA,MAsBEC,IAtBF;AAAA,MAuBEC,SAvBF;AAAA,MAwBEC,UAxBF;AAAA,MAyBEC,IAzBF;AAAA,MA0BEh4E,CA1BF;AAAA,MA2BEb,CA3BF;AA6BA24E,WAAS,GAAGL,OAAO,GAAGA,OAAtB,CAlC4C,CAoC5C;;AACAt2E,GAAC,GAAG,EAAJ;;AACA,OAAKnB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGyK,GAAhB,EAAqBzK,CAAC,EAAtB,EAA0B;AACxBmB,KAAC,CAACnB,CAAD,CAAD,GAAOua,EAAE,CAACva,CAAD,CAAT;AACD,GAxC2C,CA0C5C;;;AACA65B,KAAG,GAAG+4C,CAAC,CAACrxE,KAAF,CAAQ,IAAR,EAAcJ,CAAd,CAAN;AACAw2E,OAAK,GAAG99C,GAAG,CAAC,CAAD,CAAX;AACAg+C,MAAI,GAAGh+C,GAAG,CAAC,CAAD,CAAV;AAEAm+C,MAAI,GAAG,CAAP;;AACA,KAAG;AACD,QAAIL,KAAK,IAAIH,OAAb,EAAsB;AACpB;AACD;;AAED,QAAIQ,IAAI,GAAGT,OAAX,EAAoB;AAClBxyE,uCAAO,CAACiL,GAAR,CAAY,iBAAZ,EADkB,CAElB;;AACA,aAAO;AACLhL,aAAK,EAAE,iBADF;AAEL4tE,SAAC,EAAE+E,KAFE;AAGLK,YAAI,EAAET,OAHD;AAILp2E,SAAC,EAAEA;AAJE,OAAP;AAMD,KAdA,CAgBD;;;AACA42E,cAAU,GAAG,CAAb;;AACA,SAAK/3E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGyK,GAAhB,EAAqBzK,CAAC,EAAtB,EAA0B;AACxB+3E,gBAAU,IAAIF,IAAI,CAAC73E,CAAD,CAAJ,GAAU63E,IAAI,CAAC73E,CAAD,CAA5B;AACD;;AACD,QAAI03E,GAAG,GAAGA,GAAN,GAAYK,UAAZ,GAAyBD,SAA7B,EAAwC;AACtC34E,OAAC,GAAGiC,IAAI,CAAC2O,IAAL,CAAU+nE,SAAS,GAAGC,UAAtB,IAAoCL,GAAxC;;AACA,WAAK13E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGyK,GAAhB,EAAqBzK,CAAC,EAAtB,EAA0B;AACxB63E,YAAI,CAAC73E,CAAD,CAAJ,GAAUb,CAAC,GAAG04E,IAAI,CAAC73E,CAAD,CAAlB;AACD;AACF,KA1BA,CA4BD;;;AACA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGyK,GAAhB,EAAqBzK,CAAC,EAAtB,EAA0B;AACxBmB,OAAC,CAACnB,CAAD,CAAD,IAAQ03E,GAAG,GAAGG,IAAI,CAAC73E,CAAD,CAAlB,CADwB,CAGxB;;AACA,UAAIs3E,MAAM,IAAIn2E,CAAC,CAACnB,CAAD,CAAD,GAAOs3E,MAAM,CAACt3E,CAAD,CAAN,CAAU,CAAV,CAArB,EAAmC;AACjCmB,SAAC,CAACnB,CAAD,CAAD,GAAOs3E,MAAM,CAACt3E,CAAD,CAAN,CAAU,CAAV,CAAP;AACD;;AACD,UAAIs3E,MAAM,IAAIn2E,CAAC,CAACnB,CAAD,CAAD,GAAOs3E,MAAM,CAACt3E,CAAD,CAAN,CAAU,CAAV,CAArB,EAAmC;AACjCmB,SAAC,CAACnB,CAAD,CAAD,GAAOs3E,MAAM,CAACt3E,CAAD,CAAN,CAAU,CAAV,CAAP;AACD;AACF;;AAED43E,UAAM,GAAGD,KAAT;AAEA99C,OAAG,GAAG+4C,CAAC,CAACrxE,KAAF,CAAQ,IAAR,EAAcJ,CAAd,CAAN;AACAw2E,SAAK,GAAG99C,GAAG,CAAC,CAAD,CAAX;AACAg+C,QAAI,GAAGh+C,GAAG,CAAC,CAAD,CAAV;AAEAm+C,QAAI;AACL,GAhDD,QAgDS52E,IAAI,CAAC2M,GAAL,CAAS4pE,KAAK,GAAGC,MAAjB,IAA2BP,SAhDpC;;AAkDA,SAAO,CAACM,KAAD,EAAQx2E,CAAR,CAAP;AACD;AAAA,C;;AC1GD;AACA;AACA;AAEe;AACbiO,QAAM,EAAE6oE,uBAAkB,CAAC7oE,MADd;AAEb8oE,qBAAmB,EAAEC,eAAU,CAACD,mBAFnB;AAGbE,oBAAkB,EAAED,eAAU,CAACC,kBAHlB;AAIbhB,UAAQ,EAAEA,QAAQA;AAJL,CAAf,E;;ACJA;;AAEA,IAAI7wE,YAAI,GAAGyX,4BAAS,CAACzX,IAArB;AAAA,IAEE;AACA8xE,uBAAuB,GAAG,KAH5B;AAAA,IAKEC,oCAAoC,GAAGt6D,4BAAS,CAACO,gBAAV,CAA2B/V,EAA3B,CAA8BwV,4BAAS,CAACzX,IAAV,CAAeL,gBAA7C,CALzC;AAAA,IAOEqyE,oBAAoB,GAAGv6D,4BAAS,CAACxX,KAAV,CAAgBD,YAAI,CAACQ,SAArB,EAAgC;AACrDwB,KAAG,EAAEhC,YAAI,CAACU;AAD2C,CAAhC,CAPzB;AAAA,IAUEuxE,oCAAoC,GAAGp3E,IAAI,CAACg6C,GAAL,CAASp9B,4BAAS,CAACxX,KAAV,CAAgBD,YAAI,CAACoB,OAArB,EAA8B;AAC5EY,KAAG,EAAEhC,YAAI,CAACmB;AADkE,CAA9B,CAAT,EAEnC,CAFmC,CAVzC;AAAA,IAcE+wE,YAAY,GAAGz6D,4BAAS,CAACxX,KAAV,CAAgBD,YAAI,CAACgB,EAArB,EAAyB;AACtCgB,KAAG,EAAEhC,YAAI,CAACe;AAD4B,CAAzB,CAdjB;AAAA,IAiBEoxE,yBAAyB,GAAG16D,4BAAS,CAACxX,KAAV,CAAgBD,YAAI,CAACsB,aAArB,EAAoC;AAC9DU,KAAG,EAAEhC,YAAI,CAACuB;AADoD,CAApC,CAjB9B;AAAA,IAqBE;AACA6wE,YAAY,GAAGN,uBAAuB,GACtCC,oCADe,GAEfE,oCAFe,GAGfD,oBAHe,GAIfE,YA1BF;AAAA,IA4BE;AACAG,QAAQ,GAAGP,uBAAuB,GAClCC,oCADW,GAEXE,oCAFW,GAGXD,oBAHW,GAIXA,oBAJW,GAKXG,yBAlCF;AAAA,IAoCE;;AAEA;;;;;;;AAQAG,SAAS,GAAG,SAAZA,SAAY,CAASrpE,CAAT,EAAYspE,EAAZ,EAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,GAAxB,EAA6B;AACvC,MAAIA,GAAG,IAAID,EAAE,GAAG,CAAZ,IAAiBxpE,CAAC,GAAG,GAAzB,EAA8B;AAC5B;AACA;AACA;AACA;AACA;AACAwpE,MAAE,GAAG,IAAI,CAACA,EAAE,GAAG,CAAN,KAAY,IAAI53E,IAAI,CAAC83E,GAAL,CAAS,CAAC,EAAD,GAAM1pE,CAAN,GAAU,CAAnB,CAAhB,CAAT;AACD;;AACD,SAAOmpE,YAAY,IAAKG,EAAE,GAAGC,EAAN,GAAYvpE,CAAhB,CAAZ,GAAiCwpE,EAAxC;AACD,CAxDH;;AA2DE;;;;;;;AAQAG,wBAAwB,GAAG,SAA3BA,wBAA2B,CAASC,GAAT,EAAcN,EAAd,EAAkBC,EAAlB,EAAsBC,EAAtB,EAA0BC,GAA1B,EAA+B;AACxD,MAAIzpE,CAAC,GAAGpO,IAAI,CAAC2O,IAAL,CAAUqpE,GAAV,CAAR;;AACA,MAAIH,GAAG,IAAID,EAAE,GAAG,CAAZ,IAAiBxpE,CAAC,GAAG,GAAzB,EAA8B;AAC5B;AACA;AACA;AACA;AACA;AACAwpE,MAAE,GAAG,IAAI,CAACA,EAAE,GAAG,CAAN,KAAY,IAAI53E,IAAI,CAAC83E,GAAL,CAAS,CAAC,EAAD,GAAM1pE,CAAN,GAAU,CAAnB,CAAhB,CAAT;AACD;;AACD,SAAO,CAACopE,QAAD,IAAcE,EAAE,GAAGC,EAAN,GAAYK,GAAzB,IAAgCJ,EAAvC;AACD,CA9EH;AAAA,IAiFEK,oCAAoC,GAAG,SAAvCA,oCAAuC,CAASD,GAAT,EAAcN,EAAd,EAAkBC,EAAlB,EAAsBC,EAAtB,EAA0BC,GAA1B,EAA+B;AACpE,SAAOE,wBAAwB,CAACC,GAAD,EAAMN,EAAN,EAAUC,EAAV,EAAcC,EAAd,EAAkBC,GAAlB,CAAxB,GAAiD73E,IAAI,CAAC2O,IAAL,CAAUqpE,GAAV,CAAxD;AACD,CAnFH;;AAqFE;;;;;;;AAQAE,aAAK,GAAG,SAARA,KAAQ,CAAS9pE,CAAT,EAAYspE,EAAZ,EAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,GAAxB,EAA6B;AACnC,SAAOE,wBAAwB,CAAC3pE,CAAC,GAAGA,CAAL,EAAQspE,EAAR,EAAYC,EAAZ,EAAgBC,EAAhB,EAAoBC,GAApB,CAA/B;AACD,CA/FH;;AAiGe;AACbJ,WAAS,EAATA,SADa;AAEbM,0BAAwB,EAAxBA,wBAFa;AAGbE,sCAAoC,EAApCA,oCAHa;AAIbC,OAAK,EAALA,aAAKA;AAJQ,CAAf,E;;ACnGA;AACA;AAEA,IAAI/yE,kBAAI,GAAGyX,4BAAS,CAACzX,IAArB;AAAA,IAEEgyE,kCAAoB,GAAGv6D,4BAAS,CAACxX,KAAV,CAAgBD,kBAAI,CAACQ,SAArB,EAAgC;AACrDwB,KAAG,EAAEhC,kBAAI,CAACU;AAD2C,CAAhC,CAFzB;AAAA,IAKEyxE,uCAAyB,GAAG16D,4BAAS,CAACxX,KAAV,CAAgBD,kBAAI,CAACsB,aAArB,EAAoC;AAC9DU,KAAG,EAAEhC,kBAAI,CAACuB;AADoD,CAApC,CAL9B;AASA,IAAM0W,iBAAG,GAAG,EAAZ;AAEA;;;;;AAIAA,iBAAG,CAAC+6D,eAAJ,GAAsB,UAASC,QAAT,EAAmBC,QAAnB,EAA6B;AACjD,SAAO,OAAOD,QAAQ,GAAGC,QAAlB,CAAP;AACD,CAFD;AAIA;;;;;;AAIAj7D,iBAAG,CAACk7D,aAAJ,GAAoB,UAASC,MAAT,EAAiBC,MAAjB,EAAyB;AAC3C,SAAOx4E,IAAI,CAAC2O,IAAL,CAAU4pE,MAAM,GAAGC,MAAnB,CAAP;AACD,CAFD;AAIA;;;;;AAGAp7D,iBAAG,CAACq7D,IAAJ,GAAW,UAAS/hE,KAAT,EAAgB;AACzB,SAAO1W,IAAI,CAACg6C,GAAL,CAAS,CAAT,EAAY,IAAI,CAAhB,IAAqBtjC,KAA5B;AACD,CAFD;AAIA;;;;;AAGA0G,iBAAG,CAACjH,MAAJ,GAAa,UAASO,KAAT,EAAgB;AAC3B;AACA;AACA,SAAO,MAAMA,KAAb;AACD,CAJD;AAMA;;;;;;;;;;;;;AAWA0G,iBAAG,CAACs7D,eAAJ,GAAsB,UAASC,MAAT,EAAiBnxB,EAAjB,EAAqB;AAEzC,MAAI7wC,OAAJ;AAAA,MAAa;AACXD,OADF;AAAA,MACS;AAEP+hE,MAHF;AAAA,MAGQ;AACNG,iBAJF;AAAA,MAImB;AACjBC,gBALF;AAAA,MAKkB;AAChBC,aANF;AAAA,MAMe;AACbC,YAPF;AAAA,MAOc;AAEZC,aAAW,GAAG,KAThB;AAAA,MASuB;AAErBC,iBAAe,GAAG,SAAlBA,eAAkB,CAASx7E,CAAT,EAAYuvB,CAAZ,EAAe;AAC/B;AACA;AACA;AAEArW,WAAO,GAAGlZ,CAAV;AACAiZ,SAAK,GAAGsW,CAAR;AACAyrD,QAAI,GAAGr7D,iBAAG,CAACq7D,IAAJ,CAAS/hE,KAAT,CAAP;;AAEA,QAAIC,OAAO,IAAI,IAAX,IAAmBD,KAAK,IAAI,IAAhC,EAAsC;AACpCkiE,qBAAe,GAAG,IAAIjiE,OAAJ,GAAc3W,IAAI,CAACg6C,GAAL,CAAStjC,KAAT,EAAgB,EAAhB,CAAhC;AACAmiE,oBAAc,GAAG,IAAIliE,OAAJ,GAAc3W,IAAI,CAACg6C,GAAL,CAAStjC,KAAT,EAAgB,CAAhB,CAA/B,CAFoC,CAIpC;AACA;;AACAoiE,iBAAW,GAAG,KAAKl8D,4BAAS,CAACvX,OAAV,CAAkBuzE,eAAlB,EAAmC;AACpD9xE,YAAI,EAAE3B,kBAAI,CAACgB,EADyC;AAEpDY,UAAE,EAAE5B,kBAAI,CAACe;AAF2C,OAAnC,CAAL,GAGTixE,kCAHS,GAGcG,uCAH5B;AAIAyB,gBAAU,GAAG,IAAIn8D,4BAAS,CAACvX,OAAV,CAAkBwzE,cAAlB,EAAkC;AACjD/xE,YAAI,EAAE3B,kBAAI,CAACgB,EADsC;AAEjDY,UAAE,EAAE5B,kBAAI,CAACe;AAFwC,OAAlC,CAAJ,GAGRixE,kCAHQ,GAGeG,uCAH5B;AAID;;AAED,QAAI0B,WAAW,IAAI,OAAOxxB,EAAP,KAAc,UAAjC,EAA6CA,EAAE,CAAC0xB,eAAe,EAAhB,EAAoB,IAApB,CAAF;AAC9C,GArCH;AAAA,MAuCEA,eAAe,GAAG,SAAlBA,eAAkB,GAAW;AAC3B,WAAO;AACLviE,aAAO,EAAEA,OADJ;AAELD,WAAK,EAAEA,KAFF;AAGL+hE,UAAI,EAAEA;AAHD,KAAP;AAKD,GA7CH;AAAA,MA+CEU,eAAe,GAAG,SAAlBA,eAAkB,CAAS17E,CAAT,EAAY;AAC5B,QAAIA,CAAC,IAAI,IAAL,IAAaglB,UAAU,CAAChlB,CAAD,CAAV,KAAkBA,CAAnC,EAAsC;AACpC,YAAM,IAAIgB,KAAJ,CAAU,iCAAiChB,CAAjC,GAAqC,aAA/C,CAAN;AACD;AACF,GAnDH;AAAA,MAqDE27E,aAAa,GAAG,SAAhBA,aAAgB,CAASpsD,CAAT,EAAY;AAC1B,QAAIA,CAAC,IAAI,IAAL,IAAavK,UAAU,CAACuK,CAAD,CAAV,KAAkBA,CAA/B,IAAoCA,CAAC,IAAI,CAA7C,EAAgD;AAC9C,YAAM,IAAIvuB,KAAJ,CAAU,+BAA+BuuB,CAA/B,GAAmC,aAA7C,CAAN;AACD;AACF,GAzDH;AAAA,MA2DE;AACAqsD,YA5DF,CAFyC,CAgEzC;AACA;;;AACAF,iBAAe,CAACR,MAAM,CAAChiE,OAAR,CAAf;AACAyiE,eAAa,CAACT,MAAM,CAACjiE,KAAR,CAAb,CAnEyC,CAqEzC;;AACAuiE,iBAAe,CAACN,MAAM,CAAChiE,OAAR,EAAiBgiE,MAAM,CAACjiE,KAAxB,CAAf;AACAsiE,aAAW,GAAG,IAAd;AAEA,SAAOK,UAAU,GAAG;AAElBH,mBAAe,EAAEA,eAFC;AAIlBI,cAAU,EAAE,oBAAS77E,CAAT,EAAY;AACtB07E,qBAAe,CAAC17E,CAAD,CAAf;AACAw7E,qBAAe,CAACx7E,CAAD,EAAIiZ,KAAJ,CAAf;AACD,KAPiB;AASlB6iE,YAAQ,EAAE,kBAASvsD,CAAT,EAAY;AACpBosD,mBAAa,CAACpsD,CAAD,CAAb;AACAisD,qBAAe,CAACtiE,OAAD,EAAUqW,CAAV,CAAf;AACD,KAZiB;;AAclB;;;;;AAMAwsD,gCAA4B,EAAE,sCAASC,IAAT,EAAe;AAC3C,UAAI,CAACA,IAAL,EAAW,OAAO,CAACltE,QAAR;AACX,aAAOqsE,eAAe,GAAG54E,IAAI,CAACg6C,GAAL,CAASy/B,IAAT,EAAe,CAAC,CAAhB,CAAlB,GAAuCZ,cAAc,GAAG74E,IAAI,CAACg6C,GAAL,CAASy/B,IAAT,EAAe,CAAC,CAAhB,CAA/D;AACD,KAvBiB;;AAyBlB;;;;AAIAhC,aAAS,EAAE,mBAASrpE,CAAT,EAAY;AACrB,aAAOirE,UAAU,CAACG,4BAAX,CAAwCprE,CAAC,GAAGA,CAA5C,CAAP;AACD,KA/BiB;;AAiClB;;;;AAIA6pE,wCAAoC,EAAE,8CAASwB,IAAT,EAAe;AACnD;AACA,UAAIC,UAAU,GAAG,IAAID,IAArB;AAAA,UACEE,UAAU,GAAGD,UAAU,GAAGA,UAAb,GAA0BA,UADzC;AAAA,UAEEE,UAAU,GAAGD,UAAU,GAAGD,UAF5B;AAAA,UAGEG,WAAW,GAAGD,UAAU,GAAGD,UAH7B;AAKA,aAAOb,WAAW,GAAGe,WAAd,GAA4Bd,UAAU,GAAGa,UAAhD;AACD,KA7CiB;;AA+ClB;;;;AAIA1B,SAAK,EAAE,eAAS9pE,CAAT,EAAY;AACjB,aAAOA,CAAC,GAAGirE,UAAU,CAACpB,oCAAX,CAAgD7pE,CAAC,GAAGA,CAApD,CAAX;AACD;AArDiB,GAApB;AAuDD,CAhID;;AAkIegP,mEAAf,E;;AC3LA;AACA;AAEe;AACb08D,SAAO,EAAPA,OADa;AAEbC,cAAY,EAAZA,aAAYA;AAFC,CAAf,E;;;;;;;;ACHA;;;;;;;;AAOA;;;AAGA;AACA;AAEA,IAAIC,2CAAJ;AAEeA,sGAAoB;AAAA;AAAA;AAEjC,gCAAY98B,MAAZ,EAAoB;AAAA;;AAClB,SAAK+8B,OAAL,GAAe/8B,MAAf;AACA,SAAK3nB,KAAL,GAAa,EAAb;AACD;;AALgC;AAAA;AAAA,wCAOb2kD,aAPa,EAOEC,cAPF,EAOkB;AACjD,WAAKC,cAAL,GAAsBF,aAAtB;AACA,aAAO,KAAKG,eAAL,GAAuBF,cAA9B;AACD;AAVgC;AAAA;AAAA,wBAY7Bv7E,CAZ6B,EAY1ByM,CAZ0B,EAYvBusB,KAZuB,EAYhB;AACfA,WAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACkU,oBAA5B,EAAkDghB,KAAlD,CAAR;;AAEA,WAAKwiD,cAAL;;AAEA,UAAK,KAAK7kD,KAAL,CAAW32B,CAAX,KAAiB,IAAtB,EAA6B;AAC3B,aAAK22B,KAAL,CAAW32B,CAAX,IAAgB,EAAhB;AACD;;AACD,UAAK,KAAK22B,KAAL,CAAWlqB,CAAX,KAAiB,IAAtB,EAA6B;AAC3B,aAAKkqB,KAAL,CAAWlqB,CAAX,IAAgB,EAAhB;AACD;;AACD,UAAK,KAAKkqB,KAAL,CAAW32B,CAAX,EAAcyM,CAAd,KAAoB,IAAzB,EAAgC;AAC9B,aAAKkqB,KAAL,CAAW32B,CAAX,EAAcyM,CAAd,IAAoB,KAAKkqB,KAAL,CAAWlqB,CAAX,EAAczM,CAAd,IAAmB,EAAvC;AACD;;AAED,sCAAgBO,MAAM,CAAC2b,IAAP,CAAY8c,KAAK,IAAI,EAArB,CAAhB,kCAA0C;AAArC,YAAI5c,GAAG,mBAAP;AACH,aAAKua,KAAL,CAAW32B,CAAX,EAAcyM,CAAd,EAAiB2P,GAAjB,IAAwB4c,KAAK,CAAC5c,GAAD,CAA7B;AACD;;AAED,WAAKi/D,OAAL,CAAaK,uBAAb,CAAqC17E,CAArC,EAAwCyM,CAAxC;;AAEA,aAAO,KAAKgvE,eAAL,EAAP;AACD;AAlCgC;AAAA;AAAA,2BAoC1Bz7E,CApC0B,EAoCvByM,CApCuB,EAoCpB;AACX,WAAK+uE,cAAL;;AAEA,aAAO,KAAK7kD,KAAL,CAAW32B,CAAX,EAAcyM,CAAd,CAAP;AACA,aAAO,KAAKkqB,KAAL,CAAWlqB,CAAX,EAAczM,CAAd,CAAP;;AAEA,WAAKq7E,OAAL,CAAaK,uBAAb,CAAqC17E,CAArC,EAAwCyM,CAAxC;;AAEA,aAAO,KAAKgvE,eAAL,EAAP;AACD;AA7CgC;AAAA;AAAA,wBA+C7Bz7E,CA/C6B,EA+C1ByM,CA/C0B,EA+CvB;AACR,UAAI,KAAKkqB,KAAL,CAAW32B,CAAX,KAAiB,KAAK22B,KAAL,CAAW32B,CAAX,EAAcyM,CAAd,CAArB,EAAuC;AACrC,eAAO,KAAKkqB,KAAL,CAAW32B,CAAX,EAAcyM,CAAd,CAAP;AACD,OAFD,MAEO;AACL,eAAOvN,SAAP;AACD;AACF;AArDgC;AAAA;AAAA,gCAuDrBY,KAvDqB,EAuDd;AAAA;AAAA;AAAA;;AAAA;AACjB,6BAAkBA,KAAlB,8HAAyB;AAAA,cAAhBk5B,KAAgB;AACvBA,eAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACkU,oBAAxC,EAA8DghB,KAA9D,CAAR,CADuB,CAEvB;AACA;;AACA,cAAMsoB,GAAG,GAAGtoB,KAAK,CAAC/gB,QAAlB;AACA,cAAMspC,GAAG,GAAGvoB,KAAK,CAAC9gB,QAAlB;AACA,iBAAO8gB,KAAK,CAAC/gB,QAAb;AACA,iBAAO+gB,KAAK,CAAC9gB,QAAb;AACA,eAAK3V,GAAL,CAAS++C,GAAT,EAAcC,GAAd,EAAmBvoB,KAAnB;AACD,SAVgB,CAYjB;;AAZiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAalB;AApEgC;AAAA;AAAA,gCAsErB;AACV,UAAMj1B,MAAM,GAAG,EAAf;;AACA,wCAAiBxD,MAAM,CAAC2b,IAAP,CAAY,KAAKya,KAAL,IAAc,EAA1B,CAAjB,qCAAgD;AAA3C,YAAIglD,IAAI,qBAAR;AACH,YAAMC,QAAQ,GAAG,KAAKjlD,KAAL,CAAWglD,IAAX,CAAjB;;AACA,0CAAiBp7E,MAAM,CAAC2b,IAAP,CAAY0/D,QAAQ,IAAI,EAAxB,CAAjB,qCAA8C;AAAzC,cAAIC,IAAI,qBAAR;;AACH,cAAIF,IAAI,GAAGE,IAAX,EAAiB;AACf,gBAAM7iD,KAAK,GAAG,KAAKjU,GAAL,CAAS42D,IAAT,EAAeE,IAAf,CAAd;AACA7iD,iBAAK,CAAC/gB,QAAN,GAAiBvW,MAAM,CAACi6E,IAAD,CAAvB;AACA3iD,iBAAK,CAAC9gB,QAAN,GAAiBxW,MAAM,CAACm6E,IAAD,CAAvB;AACA93E,kBAAM,CAACnB,IAAP,CAAYo2B,KAAZ;AACD;AACF;AACF;;AAED,aAAOj1B,MAAP;AACD;AAED;;;;AAvFiC;AAAA;AAAA,4BA0FzB;AACN;AACA,aAAOa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB,KAAKw0B,KAAxB,CAAP;AACD;AA7FgC;AAAA;AAAA,4BA+FzBuQ,KA/FyB,EA+FlB;AACb;AACA,WAAKvQ,KAAL,GAAauQ,KAAb,CAFa,CAIb;;AACA,wCAAiB3mC,MAAM,CAAC2b,IAAP,CAAY,KAAKya,KAAL,IAAc,EAA1B,CAAjB,qCAAgD;AAA3C,YAAIglD,IAAI,qBAAR;AACH,YAAMC,QAAQ,GAAG,KAAKjlD,KAAL,CAAWglD,IAAX,CAAjB;;AACA,0CAAiBp7E,MAAM,CAAC2b,IAAP,CAAY0/D,QAAQ,IAAI,EAAxB,CAAjB,qCAA8C;AAAzC,cAAIC,IAAI,qBAAR;;AACH,cAAIF,IAAI,GAAGE,IAAX,EAAiB;AACf,iBAAKR,OAAL,CAAaK,uBAAb,CAAqCC,IAArC,EAA2CE,IAA3C;AACD;AACF;AACF,OAZY,CAcb;;AACD;AA9GgC;;AAAA;AAAA,GAAnC,E;;ACdA;AACA;AACA;AACA;AAEe,SAASC,QAAT,CAAkB1wE,KAAlB,EAAyBC,MAAzB,EAAiC0wE,QAAjC,EAA2C;AACxD,MAAIv9D,GAAJ;AAAA,MACEw9D,OADF;AAAA,MAEEC,OAFF;AAAA,MAGEC,QAHF;AAAA,MAIEjoB,IAJF;AAAA,MAME/sC,IAAI,GAAG,SAAPA,IAAO,GAAW;AAChB,QAAIlnB,CAAJ;AACAg8E,WAAO,GAAG56E,IAAI,CAACg+C,IAAL,CAAUh0C,KAAK,GAAG2wE,QAAlB,CAAV;AACAE,WAAO,GAAG76E,IAAI,CAACg+C,IAAL,CAAU/zC,MAAM,GAAG0wE,QAAnB,CAAV;AACAG,YAAQ,GAAGF,OAAO,GAAGC,OAArB;AACAhoB,QAAI,GAAG,IAAI70D,KAAJ,CAAU88E,QAAV,CAAP;;AACA,SAAKl8E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGk8E,QAAhB,EAA0Bl8E,CAAC,EAA3B,EAA+B;AAC7Bi0D,UAAI,CAACj0D,CAAD,CAAJ,GAAU,EAAV;AACD;AACF,GAfH;;AAiBAknB,MAAI,GAlBoD,CAoBxD;;AACA1I,KAAG,GAAG;AACJ29D,gBAAY,EAAE,sBAASC,QAAT,EAAmBC,SAAnB,EAA8BC,WAA9B,EAA2C;AACvD,UAAI9mC,MAAM,GAAG,KAAb;;AACA,UAAI4mC,QAAQ,KAAKl9E,SAAjB,EAA4B;AAC1B,YAAIk9E,QAAQ,KAAKhxE,KAAjB,EAAwB;AACtBA,eAAK,GAAGgxE,QAAR;AACA5mC,gBAAM,GAAG,IAAT;AACD;AACF;;AACD,UAAI6mC,SAAS,KAAKn9E,SAAlB,EAA6B;AAC3B,YAAIm9E,SAAS,KAAKhxE,MAAlB,EAA0B;AACxBA,gBAAM,GAAGgxE,SAAT;AACA7mC,gBAAM,GAAG,IAAT;AACD;AACF;;AACD,UAAI8mC,WAAW,KAAKp9E,SAApB,EAA+B;AAC7B,YAAIo9E,WAAW,KAAKP,QAApB,EAA8B;AAC5BA,kBAAQ,GAAGO,WAAX;AACA9mC,gBAAM,GAAG,IAAT;AACD;AACF;;AACD,UAAIA,MAAJ,EAAYtuB,IAAI;AACjB,KAtBG;AAwBJq1D,aAAS,EAAE,mBAASC,OAAT,EAAkBr7E,CAAlB,EAAqBuV,CAArB,EAAwB;AACjC,UAAI+lE,OAAO,GAAGr7E,IAAI,CAACwqC,KAAL,CAAWl1B,CAAC,GAAGqlE,QAAf,IAA2BC,OAA3B,GAAqC56E,IAAI,CAACwqC,KAAL,CAAWzqC,CAAC,GAAG46E,QAAf,CAAnD;AACA9nB,UAAI,CAACwoB,OAAD,CAAJ,CAAc75E,IAAd,CAAmB45E,OAAnB;AACD,KA3BG;AA6BJE,WAAO,EAAE,iBAASh6E,GAAT,EAAc;AACrB,aAAOuxD,IAAI,CAACvxD,GAAD,CAAX;AACD,KA/BG;AAiCJi6E,cAAU,EAAE,sBAAW;AACrB,aAAOV,OAAP;AACD,KAnCG;AAqCJW,cAAU,EAAE,sBAAW;AACrB,aAAOZ,OAAP;AACD,KAvCG;AAyCJa,uBAAmB,EAAE,6BAASC,MAAT,EAAiB3wB,MAAjB,EAAyB;AAC5C,UAAIswB,OAAO,GAAGK,MAAM,GAAGd,OAAT,GAAmB7vB,MAAjC;AAAA,UACEpoD,MAAM,GAAG,EADX,CAD4C,CAI5C;;AACA,UAAIooD,MAAM,GAAG,CAAT,GAAa6vB,OAAb,IAAwBc,MAAM,GAAG,CAAT,GAAab,OAAzC,EAAkDl4E,MAAM,CAACnB,IAAP,CAAYqxD,IAAI,CAACwoB,OAAO,GAAGT,OAAV,GAAoB,CAArB,CAAhB,EALN,CAM5C;;AACA,UAAI7vB,MAAM,GAAG,CAAT,GAAa6vB,OAAjB,EAA0Bj4E,MAAM,CAACnB,IAAP,CAAYqxD,IAAI,CAACwoB,OAAO,GAAG,CAAX,CAAhB,EAPkB,CAQ5C;;AACA,UAAItwB,MAAM,GAAG,CAAT,GAAa6vB,OAAb,IAAwBc,MAAM,GAAG,CAAT,IAAc,CAA1C,EAA6C/4E,MAAM,CAACnB,IAAP,CAAYqxD,IAAI,CAACwoB,OAAO,GAAGT,OAAV,GAAoB,CAArB,CAAhB,EATD,CAU5C;;AACA,UAAIc,MAAM,GAAG,CAAT,IAAc,CAAlB,EAAqB/4E,MAAM,CAACnB,IAAP,CAAYqxD,IAAI,CAACwoB,OAAO,GAAGT,OAAX,CAAhB;AAErB,aAAOj4E,MAAP;AACD,KAvDG;AAyDJyrD,SAAK,EAAE,iBAAW;AAChB,UAAIxvD,CAAJ;;AACA,WAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGk8E,QAAhB,EAA0Bl8E,CAAC,EAA3B,EAA+B;AAC7Bi0D,YAAI,CAACj0D,CAAD,CAAJ,CAAQC,MAAR,GAAiB,CAAjB;AACD;AACF;AA9DG,GAAN;AAiEA,SAAOue,GAAP;AACD;AAAA,C;;AC5FD;AACA;AACA;AAEA;CAEA;;AAEe,SAASu+D,YAAT,CAAsBC,QAAtB,EAAgCC,eAAhC,EAAiD;AAC9D,MAAIz+D,GAAJ;AAAA,MACE0+D,WADF;AAAA,MAEEC,OAFF;AAAA,MAGEC,YAHF;AAAA,MAIE1I,IAJF;AAAA,MAKE2I,IALF;AAAA,MAMEC,IANF;AAAA,MAOEn8E,CAPF;AAAA,MAQEuV,CARF;AAAA,MASE6mE,WATF;AAAA,MAWEr2D,IAAI,GAAG,SAAPA,IAAO,GAAW;AAChB;AACAg2D,eAAW,GAAGF,QAAQ,GAAG,EAAzB;AACAG,WAAO,GAAG,CAAV;AACAC,gBAAY,GAAGF,WAAW,IAAIA,WAAW,GAAG,CAAlB,CAAX,GAAkC,CAAjD;AACAK,eAAW,GAAG,IAAd;AAEA7I,QAAI,GAAGp2E,yBAAM,CAACQ,MAAP,CAAcs+E,YAAd,EAA4B,CAA5B,EAA+Bn+B,WAAU,CAAC1B,SAA1C,CAAP;AACA8/B,QAAI,GAAG/+E,yBAAM,CAACQ,MAAP,CAAco+E,WAAd,EAA2B,CAAC,CAA5B,EAA+Bj+B,WAAU,CAAC1B,SAA1C,CAAP;AACA+/B,QAAI,GAAGh/E,yBAAM,CAACQ,MAAP,CAAco+E,WAAd,EAA2B,CAAC,CAA5B,EAA+Bj+B,WAAU,CAAC1B,SAA1C,CAAP,CATgB,CAUhB;AACA;;AACAp8C,KAAC,GAAG7C,yBAAM,CAACQ,MAAP,CAAco+E,WAAd,EAA2BvvE,QAA3B,EAAqCsxC,WAAU,CAAC5B,SAAhD,CAAJ;AACA3mC,KAAC,GAAGpY,yBAAM,CAACQ,MAAP,CAAco+E,WAAd,EAA2BvvE,QAA3B,EAAqCsxC,WAAU,CAAC5B,SAAhD,CAAJ;AACD,GAzBH;;AA2BAn2B,MAAI,GA5B0D,CA8B9D;;AACA1I,KAAG,GAAG;AACJ29D,gBAAY,EAAE,sBAASqB,WAAT,EAAsBC,kBAAtB,EAA0C;AACtDT,cAAQ,GAAGQ,WAAX;AACAP,qBAAe,GAAGQ,kBAAlB;AACAF,iBAAW,GAAG,IAAd;;AAEA,UAAIP,QAAQ,GAAGE,WAAf,EAA4B;AAC1Bh2D,YAAI;AACL;AACF,KATG;AAUJsoC,SAAK,EAAE,iBAAW;AAChB,UAAIxvD,CAAJ;AACAm9E,aAAO,GAAG,CAAV;;AACA,WAAKn9E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGg9E,QAAhB,EAA0Bh9E,CAAC,EAA3B,EAA+B;AAC7Bq9E,YAAI,CAACr9E,CAAD,CAAJ,GAAUs9E,IAAI,CAACt9E,CAAD,CAAJ,GAAU,CAAC,CAArB;AACD;AACF,KAhBG;AAiBJkhD,WAAO,EAAE,mBAAW;AAClB,aAAOwzB,IAAP;AACD,KAnBG;AAoBJgJ,iBAAa,EAAE,uBAAS19E,CAAT,EAAYyM,CAAZ,EAAe;AAC5B,UAAI4wE,IAAI,CAACr9E,CAAD,CAAJ,GAAU,CAAd,EAAiB;AACfq9E,YAAI,CAACr9E,CAAD,CAAJ,GAAUm9E,OAAV;AACD;;AACDzI,UAAI,CAACyI,OAAD,CAAJ,GAAgB1wE,CAAhB;AACA0wE,aAAO;AACPG,UAAI,CAACt9E,CAAD,CAAJ,GAAUm9E,OAAV;AACD,KA3BG;AA4BJh7B,kBAAc,EAAE,wBAASniD,CAAT,EAAY;AAC1B,aAAOq9E,IAAI,CAACr9E,CAAD,CAAX;AACD,KA9BG;AA+BJoiD,gBAAY,EAAE,sBAASpiD,CAAT,EAAY;AACxB,aAAOs9E,IAAI,CAACt9E,CAAD,CAAX;AACD,KAjCG;AAkCJ29E,oBAAgB,EAAE,0BAAS39E,CAAT,EAAY49E,MAAZ,EAAoBC,MAApB,EAA4B;AAC5C18E,OAAC,CAACnB,CAAD,CAAD,GAAO49E,MAAP;AACAlnE,OAAC,CAAC1W,CAAD,CAAD,GAAO69E,MAAP;AACD,KArCG;AAsCJ9L,cAAU,EAAE,sBAAW;AACrBwL,iBAAW,GAAG,IAAd;AACD,KAxCG;AAyCJO,gBAAY,EAAE,sBAASC,IAAT,EAAeC,IAAf,EAAqB;AACjC,UAAIC,KAAK,GAAG,CAACtwE,QAAb;AAAA,UACEuwE,KAAK,GAAG,CAACvwE,QADX;AAAA,UAEE3N,CAFF;;AAIA,UAAIu9E,WAAJ,EAAiB;AACfA,mBAAW,GAAG,KAAd;AACA,eAAO,IAAP;AACD;;AAED,WAAKv9E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGg9E,QAAhB,EAA0Bh9E,CAAC,EAA3B,EAA+B;AAC7B,YAAIoB,IAAI,CAAC2M,GAAL,CAASgwE,IAAI,CAAC/9E,CAAD,CAAJ,GAAUmB,CAAC,CAACnB,CAAD,CAApB,IAA2Bi+E,KAA/B,EAAsC;AACpCA,eAAK,GAAG78E,IAAI,CAAC2M,GAAL,CAASgwE,IAAI,CAAC/9E,CAAD,CAAJ,GAAUmB,CAAC,CAACnB,CAAD,CAApB,CAAR;AACD;;AACD,YAAIoB,IAAI,CAAC2M,GAAL,CAASiwE,IAAI,CAACh+E,CAAD,CAAJ,GAAU0W,CAAC,CAAC1W,CAAD,CAApB,IAA2Bk+E,KAA/B,EAAsC;AACpCA,eAAK,GAAG98E,IAAI,CAAC2M,GAAL,CAASiwE,IAAI,CAACh+E,CAAD,CAAJ,GAAU0W,CAAC,CAAC1W,CAAD,CAApB,CAAR;AACD;AACF;;AAED,aAAOoB,IAAI,CAAC2O,IAAL,CAAUkuE,KAAK,GAAGA,KAAR,GAAgBC,KAAK,GAAGA,KAAlC,IAA2CjB,eAAlD;AACD;AA7DG,GAAN;AAgEA,SAAOz+D,GAAP;AACD;AAAA,C;;ACxGD;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe,SAAS2/D,gBAAT,GAA4B;AACzC,MAAIC,OAAO,GAAG,EAAd,CADyC,CAGzC;;AACA,SAAO;AACLC,kBAAc,EAAE,wBAASC,MAAT,EAAiB;AAC/BF,aAAO,CAACx7E,IAAR,CAAa07E,MAAb;AACD,KAHI;;AAKL;;;;;;;;;AAWAC,sBAAkB,EAAE,4BAAS5oD,QAAT,EAAmBV,IAAnB,EAAyBlB,QAAzB,EAAmC;AACrD,UAAI/zB,CAAJ,EAAO4L,EAAP,EAAWgpB,IAAX,EAAiB4pD,MAAjB;;AAEA,WAAKx+E,CAAC,GAAG,CAAJ,EAAO4L,EAAE,GAAGwyE,OAAO,CAACn+E,MAAzB,EAAiCD,CAAC,GAAG4L,EAArC,EAAyC5L,CAAC,EAA1C,EAA8C;AAC5C40B,YAAI,GAAGwpD,OAAO,CAACp+E,CAAD,CAAP,CAAW21B,QAAX,CAAP;;AACA,YAAIf,IAAJ,EAAU;AACR4pD,gBAAM,GAAG5pD,IAAI,CAACrzB,KAAL,CAAW68E,OAAO,CAACp+E,CAAD,CAAlB,EAAuBi1B,IAAvB,CAAT;AACD;;AACD,YAAIlB,QAAJ,EAAc;AACZA,kBAAQ,CAACyqD,MAAD,EAASx+E,CAAT,EAAYo+E,OAAO,CAACp+E,CAAD,CAAnB,CAAR;AACD;AACF;AACF;AA5BI,GAAP;AA8BD;AAAA,C;;ACjDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IACEuG,SAAI,GAAGyX,4BAAS,CAACzX,IADnB;AAAA,IAEE20E,YAAO,GAAGuD,UAAU,CAACvD,OAFvB;AAAA,IAGEC,YAAY,GAAGsD,UAAU,CAACtD,YAH5B;AAAA,IAKEuD,4BAA4B,GAAG1gE,4BAAS,CAACE,kBAAV,CAA6B1V,EAA7B,CAAgCjC,SAAI,CAACkB,iBAArC,CALjC;AAAA,IAOEk3E,KAAK,GAAG,SAARA,KAAQ,CAASC,EAAT,EAAax9B,EAAb,EAAiBy9B,EAAjB,EAAqBC,EAArB,EAAyB;AAC/B,SAAOF,EAAE,GAAGE,EAAL,GAAU19B,EAAE,GAAGy9B,EAAtB;AACD,CATH;AAAA,IAWEE,SAAS,GAAG,SAAZA,SAAY,CAAS5/E,CAAT,EAAY+B,CAAZ,EAAe;AACzB,SAAO/B,CAAC,GAAGA,CAAJ,GAAQ+B,CAAC,GAAGA,CAAnB;AACD,CAbH;;AAeE;;;;;;;AAQA89E,iBAAY,GAAG,SAAfA,YAAe,CAASC,gBAAT,EAA2BjzC,CAA3B,EAA8B;AAC3C,MAAIA,CAAC,KAAK,CAAV,EAAa,OAAO,CAAP;AACb,MAAIkzC,kBAAkB,GAAGD,gBAAgB,GAAGjzC,CAA5C;AAAA,MACEmzC,iBAAiB,GAAGnhE,4BAAS,CAACvX,OAAV,CAAkBy4E,kBAAlB,EAAsC;AACxDh3E,QAAI,EAAE3B,SAAI,CAACc,cAD6C;AAExDc,MAAE,EAAE5B,SAAI,CAACe;AAF+C,GAAtC,CADtB;AAKA,SAAO63E,iBAAiB,GAAGT,4BAA3B;AACD,CA/BH;;AAiCE;;;;;;;AAQAU,iBAAY,GAAG,SAAfA,YAAe,CAASC,CAAT,EAAYrzC,CAAZ,EAAe;AAC5B,MAAImzC,iBAAiB,GAAGE,CAAC,GAAGX,4BAA5B;AAAA,MACEQ,kBAAkB,GAAGlhE,4BAAS,CAACvX,OAAV,CAAkB04E,iBAAlB,EAAqC;AACxDj3E,QAAI,EAAE3B,SAAI,CAACe,KAD6C;AAExDa,MAAE,EAAE5B,SAAI,CAACc;AAF+C,GAArC,CADvB;AAAA,MAKE43E,gBAAgB,GAAGC,kBAAkB,GAAGlzC,CAL1C;AAOA,SAAOizC,gBAAP;AACD,CAlDH;AAAA,IAoDEK,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAS/4D,CAAT,EAAY;AAChC,MAAI2xC,WAAW,GAAGr0C,UAAU,CAAC0C,CAAD,CAA5B;;AAEA,MAAIvY,KAAK,CAACkqD,WAAD,CAAT,EAAwB;AACtB,UAAM,IAAIr4D,KAAJ,CAAU,iCAAiC0mB,CAAjC,GAAqC,2BAA/C,CAAN;AACD;;AACD,MAAI2xC,WAAW,GAAG,CAAlB,EAAqB;AACnB,UAAM,IAAIr4D,KAAJ,CAAU,iCAAiCq4D,WAAjC,GAA+C,qBAAzD,CAAN;AACD;;AACD,MAAIA,WAAW,KAAKvqD,QAApB,EAA8B;AAC5B,UAAM,IAAI9N,KAAJ,CAAU,2CAAV,CAAN;AACD;AACF,CAhEH;;AAkEO,IAAM0/E,iBAAY,GAAG,SAAfA,YAAe,GAAW;AAErC,MAAI;AACFjhC,QADF;AAAA,MAGE;AACAkhC,wBAAsB,GAAG,KAJ3B;AAAA,MAMEC,gBAAgB,GAAG,IAAItB,gBAAJ,EANrB;AAAA,MAQE;AACAuB,wBAAqB,GAAG,KAT1B;AAAA,MAWE;AACA;AACAC,iBAAe,GAAG,CAbpB;AAAA,MAeE;AACA;AACA;AACAntE,2BAAyB,GAAG,IAlB9B;AAAA,MAoBE;AACA;AACA;AACAE,kBAAgB,GAAG,CAvBrB;AAAA,MAyBE;AACA;AACAktE,0BAAwB,GAAG,KA3B7B;AAAA,MA6BE;AACAntE,oBAAkB,GAAG,CA9BvB;AAAA,MAgCE;AACA;AACAE,4BAA0B,GAAG,EAlC/B;AAAA,MAmCEC,+BAA+B,GAAG,CAnCpC;AAAA,MAqCE;AACAitE,6BAA0B,GAAG,IAtC/B;AAAA,MAwCE;AACAC,gBAAa,GAAG,KAzClB;AAAA,MA2CE;AACAC,eAAa,GAAG,IA5ClB;AAAA,MA8CE;AACA;AACA1tE,oBAAkB,GAAG,KAhDvB;AAAA,MAkDE;AACA2tE,UAnDF;AAAA,MAqDE;AACAjhF,MAAI,GAAG,CAAC,EAAD,EAAK,EAAL,CAtDT;AAAA,MAwDE;AACA8O,MAAI,GAAG,CAzDT;AAAA,MA0DEC,IAAI,GAAG,CA1DT;AAAA,MA2DEJ,IAAI,GAAG,EA3DT;AAAA,MA4DEE,IAAI,GAAG,EA5DT;AAAA,MA8DE;AACAkF,WA/DF;AAAA,MAiEE;AACA7D,MAAI,GAAG,CAlET;AAAA,MAoEE;AACAw1C,IArEF;AAAA,MAuEE;AACAw7B,OAxEF;AAAA,MA0EE;AACA;AAEA;AACA1oE,QA9EF;AAAA,MA8EUC,EA9EV;AAAA,MA8EcC,EA9Ed;AAAA,MA8EkBtW,CA9ElB;AAAA,MA8EqBuV,CA9ErB;AAAA,MA8EwBC,EA9ExB;AAAA,MA8E4BC,EA9E5B;AAAA,MA8EgCc,KA9EhC;AAAA,MA8EuCb,EA9EvC;AAAA,MA8E2CC,EA9E3C;AAAA,MA8E+CC,MA9E/C;AAAA,MA8EuDzF,OA9EvD;AAAA,MA8EgE0F,QA9EhE;AAAA,MA8E0EC,OA9E1E;AAAA,MA8EmFE,MA9EnF;AAAA,MA8E2FQ,IA9E3F;AAAA,MA8EiGuoE,cA9EjG;AAAA,MA+EE;AACA;AACAC,SAjFF;AAAA,MAmFE;AACAvhC,QApFF;AAAA,MAsFE;AACA5S,GAAC,GAAG,CAvFN;AAAA,MAyFE;AACA;AAEA;AACAo0C,aA7FF;AAAA,MA8FEC,cA9FF;AAAA,MA+FEC,YA/FF;AAAA,MAgGEC,aAhGF;AAAA,MAiGEC,YAjGF;AAAA,MAmGE;AACA3hC,WApGF;AAAA,MAsGE;AACA4hC,YAAU,GAAG,CAvGf;AAAA,MAyGE;AACA;AACAC,aAAW,GAAG,EA3GhB;AAAA,MA6GE;AACA;AACA1oE,sBA/GF;AAAA,MAiHE;AACA;AAEA;AACA2oE,sBArHF;AAAA,MAsHEC,oBAtHF;AAAA,MAuHEC,gBAvHF;AAAA,MAwHEC,kBAxHF;AAAA,MAyHEC,cAzHF;AAAA,MA2HE;AACA;AACAC,cA7HF;AAAA,MA+HE;AACAC,eAAa,GAAG,CAhIlB;AAAA,MAkIE;AACAC,oBAAkB,GAAG,KAnIvB;AAAA,MAqIE;AACA;AAEA;AACAC,oBAzIF;AAAA,MA0IEC,UA1IF;AAAA,MA2IEC,WA3IF;AAAA,MA4IEC,WA5IF;AAAA,MA8IE;AACA;AACAC,aAhJF;AAAA,MAkJE;AACAC,cAAY,GAAG,CAnJjB;AAAA,MAqJE;AACA;AAEA;AACAC,uBAzJF;AAAA,MA0JEC,qBA1JF;AAAA,MA2JEC,qBA3JF;AAAA,MA4JEC,gBA5JF;AAAA,MA6JEC,mBA7JF;AAAA,MA+JE;AACA;AACAC,eAjKF;AAAA,MAmKE;AACAC,gBAAc,GAAG,CApKnB;AAAA,MAsKE;AACA;AAEA;AACAC,WA1KF;AAAA,MA2KEC,SA3KF;AAAA,MA4KEC,aA5KF;AAAA,MA6KEC,cA7KF;AAAA,MA8KEC,UA9KF;AAAA,MA+KEC,UA/KF;AAAA,MAgLEC,aAhLF;AAAA,MAiLEC,aAjLF;AAAA,MAkLEC,gBAlLF;AAAA,MAmLEC,YAnLF;AAAA,MAoLEC,iBApLF;AAAA,MAqLEC,kBArLF;AAAA,MAsLEC,iBAtLF;AAAA,MAuLEC,kBAvLF;AAAA,MAwLEC,aAxLF;AAAA,MAyLEC,eAzLF;AAAA,MA0LEC,oBA1LF;AAAA,MA4LE;AACA;AACAC,eA9LF;AAAA,MA+LEC,aA/LF;AAAA,MAiME;AACA;AACA;AACA;AACA;AACAC,qBAtMF;AAAA,MAuMEC,mBAvMF;AAAA,MAwMEC,mBAxMF;AAAA,MAyMEC,mBAzMF;AAAA,MA2ME;AACA;AACAC,YA7MF;AAAA,MA+ME;AACAC,aAAW,GAAG,CAhNhB;AAAA,MAkNE;AACA;AAEA;AACAC,WAtNF;AAAA,MAuNEC,MAvNF;AAAA,MAwNEC,MAxNF;AAAA,MAyNEC,UAzNF;AAAA,MA0NEC,WA1NF;AAAA,MA2NEC,UA3NF;AAAA,MA4NEC,UA5NF;AAAA,MA6NEC,cA7NF;AAAA,MA8NEC,eA9NF;AAAA,MA+NEC,eA/NF;AAAA,MAgOEC,UAhOF;AAAA,MAiOEC,kBAjOF;AAAA,MAkOEC,YAlOF;AAAA,MAoOE;AACA;AACAC,SAtOF;AAAA,MAwOE;AACAC,UAAQ,GAAG,CAzOb;AAAA,MA4OE;AACA;AAEA;AACAC,QAhPF;AAAA,MAiPEC,MAjPF;AAAA,MAkPEC,MAlPF;AAAA,MAmPEC,MAnPF;AAAA,MAoPEC,cApPF;AAAA,MAqPEC,YArPF;AAAA,MAsPEC,SAtPF;AAAA,MAuPEC,aAvPF;AAAA,MAwPEC,cAxPF;AAAA,MAyPEC,cAzPF;AAAA,MA0PEC,SA1PF;AAAA,MA2PEC,iBA3PF;AAAA,MA4PEC,WA5PF;AAAA,MA8PE;AACA;AACAn/D,QAhQF;AAAA,MAkQE;AACAo/D,SAAO,GAAG,CAnQZ;AAAA,MAqQE;AACA;AAEA;AACAC,wBAzQF;AAAA,MA0QEC,wBA1QF;AAAA,MA2QEC,qBA3QF;AAAA,MA6QE;AACA;AACAC,iBA/QF;AAAA,MAiRE;AACAC,kBAAgB,GAAG,CAlRrB;AAAA,MAoRE;AACA;AACA;AACAC,WAvRF;AAAA,MAyRE;AACAC,YA1RF;AAAA,MA4RE;AACAC,mBA7RF;AAAA,MA8REC,iBA9RF;AAAA,MAgSE;AACAC,uBAjSF;AAAA,MAkSEC,YAlSF;AAAA,MAmSEC,YAnSF;AAAA,MAoSEC,mBApSF;AAAA,MAsSE;AACAC,eAvSF;AAAA,MAySE;AACAC,gBAAc,GAAG,CA1SnB;AAAA,MA4SE;AACAC,UA7SF;AAAA,MA+SE;AACArlC,cAhTF;AAAA,MAkTE;AACA;AACAslC,oBApTF;AAAA,MAsTE;AACA;AACAC,MAxTF;AAAA,MAwTQC,IAxTR;AAAA,MA0TE;AACAC,OA3TF;AAAA,MA2TSC,KA3TT;AAAA,MA6TE;AACAC,OA9TF;AAAA,MA8TSC,KA9TT;AAAA,MAgUE;AACAC,MAjUF;AAAA,MAmUE;AACAC,MApUF;AAAA,MAsUE;AACA;AACAC,UAxUF;AAAA,MA0UE;AACA1H,GA3UF;AAAA,MA6UE;AACA2H,QAAM,GAAG,CA9UX;AAAA,MA+UEC,oBAAoB,GAAG,EA/UzB;AAAA,MAiVE;AACAC,YAAU,GAAG,GAlVf;AAAA,MAmVEC,yBAAyB,GAAG,EAnV9B;AAAA,MAqVE;AACA;AACAC,cAAY,GAAG,EAvVjB;AAAA,MAyVE;AACA;AACAC,mBAAiB,GAAG,EA3VtB;AAAA,MA6VE;AACA/4E,YAAU,GAAG,SAAbA,UAAa,GAAW;AACtBg5E,uBAAmB,CAAC,CAAD,CAAnB;AACAC,oBAAgB,CAAC,CAAD,CAAhB;AACAC,2BAAuB,CAAC,CAAD,CAAvB;AACAC,0BAAsB,CAAC,CAAD,CAAtB;AACAC,yBAAqB,CAAC,CAAD,CAArB;AACAC,uBAAmB,CAAC,CAAD,CAAnB;AACAC,2BAAuB,CAAC,CAAD,CAAvB;AACAC,wBAAoB,CAAC,CAAD,CAApB;AACAC,qBAAiB,CAAC,CAAD,CAAjB;AACAC,oBAAgB,CAAC,CAAD,CAAhB;AACAC,6BAAyB,CAAC,CAAD,CAAzB,CAXsB,CAatB;;AACAhwE,wBAAoB,GAAG,IAAIojE,sBAAJ,CAAyB98B,MAAzB,CAAvB;AACD,GA7WH;AAAA,MA+WE;AACA;AACA;AACA2pC,0BAAwB,GAAG,SAA3BA,wBAA2B,GAAW;AACpC,UAAM,IAAIpoF,KAAJ,CAAU,0IAAV,CAAN;AACD,GApXH;AAAA,MAsXE;AACA;AACA67E,0BAAuB,GAAG,SAA1BA,uBAA0B,CAAS17E,CAAT,EAAYyM,CAAZ,EAAe;AACvC,QAAIy7E,SAAS,GAAG7H,cAAc,CAACrgF,CAAD,CAA9B;AAAA,QACEmoF,SAAS,GAAG9H,cAAc,CAAC5zE,CAAD,CAD5B;AAAA,QAEE27E,OAAO,GAAG9H,YAAY,CAACtgF,CAAD,CAFxB;AAAA,QAGEqoF,OAAO,GAAG/H,YAAY,CAAC7zE,CAAD,CAHxB;AAAA,QAIE67E,WAAW,GAAGtwE,oBAAoB,CAAC+M,GAArB,CAAyB/kB,CAAzB,EAA4ByM,CAA5B,CAJhB;AAAA,QAKE5N,CALF;AAAA,QAMEuvB,CANF;;AAQA,QAAIk6D,WAAW,IAAIA,WAAW,CAACvwE,OAAZ,KAAwB7Y,SAA3C,EAAsD;AACpDL,OAAC,GAAGypF,WAAW,CAACvwE,OAAhB;AACD,KAFD,MAEO;AACLlZ,OAAC,GAAGs8E,YAAY,CAAC5B,eAAb,CAA6B2O,SAA7B,EAAwCC,SAAxC,CAAJ;AACD;;AAED,QAAIG,WAAW,IAAIA,WAAW,CAACxwE,KAAZ,KAAsB5Y,SAAzC,EAAoD;AAClDkvB,OAAC,GAAGk6D,WAAW,CAACxwE,KAAhB;AACD,KAFD,MAEO;AACLsW,OAAC,GAAG+sD,YAAY,CAACzB,aAAb,CAA2B0O,OAA3B,EAAoCC,OAApC,CAAJ;AACD,KAnBsC,CAqBvC;;;AACApB,wBAAoB,CAACjnF,CAAD,CAApB,CAAwByM,CAAxB,IAA6Bw6E,oBAAoB,CAACx6E,CAAD,CAApB,CAAwBzM,CAAxB,IAA8BgnF,MAAM,GAAG54D,CAAV,IAAgB44D,MAAM,GAAG54D,CAAzB,CAA1D,CAtBuC,CAuBvC;;AACA+4D,6BAAyB,CAACnnF,CAAD,CAAzB,CAA6ByM,CAA7B,IAAkC06E,yBAAyB,CAAC16E,CAAD,CAAzB,CAA6BzM,CAA7B,IAAmCknF,UAAU,GAAG94D,CAAd,IAAoB84D,UAAU,GAAG94D,CAAjC,CAApE;AAEAg5D,gBAAY,CAACpnF,CAAD,CAAZ,CAAgByM,CAAhB,IAAqB26E,YAAY,CAAC36E,CAAD,CAAZ,CAAgBzM,CAAhB,IAAqBm7E,YAAY,CAACrB,eAAb,CAA6B;AACrE/hE,aAAO,EAAElZ,CAD4D;AAErEiZ,WAAK,EAAEsW;AAF8D,KAA7B,EAGvC65D,wBAHuC,CAA1C;AAID,GAtZH;AAAA,MAwZE;AACA;AACA;AACAM,kBAAgB,GAAG,SAAnBA,gBAAmB,GAAW;AAC5B,QAAIC,SAAS,GAAG,CAAhB;AAAA,QACEF,WADF;AAAA,QAEExwE,KAFF;AAAA,QAGE9X,CAHF;AAAA,QAGKyM,CAHL;;AAKA,SAAKzM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGygF,UAAhB,EAA4BzgF,CAAC,EAA7B,EAAiC;AAC/B,WAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIzM,CAAjB,EAAoByM,CAAC,EAArB,EAAyB;AACvB,YAAIi0E,WAAW,CAAC1gF,CAAD,CAAX,IAAkB0gF,WAAW,CAACj0E,CAAD,CAAjC,EAAsC;AACpC67E,qBAAW,GAAGtwE,oBAAoB,CAAC+M,GAArB,CAAyB/kB,CAAzB,EAA4ByM,CAA5B,CAAd;;AACA,cAAI67E,WAAW,IAAIA,WAAW,CAACxwE,KAAZ,KAAsB5Y,SAAzC,EAAoD;AAClD4Y,iBAAK,GAAGwwE,WAAW,CAACxwE,KAApB;AACD,WAFD,MAEO;AACLA,iBAAK,GAAGqjE,YAAY,CAACzB,aAAb,CAA2B4G,YAAY,CAACtgF,CAAD,CAAvC,EAA4CsgF,YAAY,CAAC7zE,CAAD,CAAxD,CAAR;AACD,WANmC,CAOpC;;;AACA,cAAIy6E,UAAU,GAAGpvE,KAAb,GAAqB0wE,SAAzB,EAAoC;AAClCA,qBAAS,GAAGtB,UAAU,GAAGpvE,KAAzB;AACD;AACF;AACF;AACF,KArB2B,CAsB5B;AACA;;;AACA,WAAO0wE,SAAS,IAAIpnF,IAAI,CAACC,GAAL,CAAStC,IAAI,CAAC,CAAD,CAAb,EAAkBA,IAAI,CAAC,CAAD,CAAtB,CAApB;AACD,GApbH;AAAA,MAsbE;AACA;AACA;AACA;AACA;AACA0pF,oCAAkC,GAAG,SAArCA,kCAAqC,GAAW;AAC9C,QAAIxL,eAAe,GAAGtvE,QAAtB;AAAA,QACE26E,WADF;AAAA,QAEExwE,KAFF;AAAA,QAGE9X,CAHF;AAAA,QAGKyM,CAHL;;AAKA,SAAKzM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGygF,UAAhB,EAA4BzgF,CAAC,EAA7B,EAAiC;AAC/B,WAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIzM,CAAjB,EAAoByM,CAAC,EAArB,EAAyB;AACvB,YAAIi0E,WAAW,CAAC1gF,CAAD,CAAX,IAAkB0gF,WAAW,CAACj0E,CAAD,CAAjC,EAAsC;AACpC67E,qBAAW,GAAGtwE,oBAAoB,CAAC+M,GAArB,CAAyB/kB,CAAzB,EAA4ByM,CAA5B,CAAd;;AACA,cAAI67E,WAAW,IAAIA,WAAW,CAACxwE,KAAZ,KAAsB5Y,SAAzC,EAAoD;AAClD4Y,iBAAK,GAAGwwE,WAAW,CAACxwE,KAApB;AACD,WAFD,MAEO;AACLA,iBAAK,GAAGqjE,YAAY,CAACzB,aAAb,CAA2B4G,YAAY,CAACtgF,CAAD,CAAvC,EAA4CsgF,YAAY,CAAC7zE,CAAD,CAAxD,CAAR;AACD;;AAED,cAAI,CAACy6E,UAAU,GAAGF,MAAd,IAAwBlvE,KAAxB,GAAgCmlE,eAApC,EAAqD;AACnDA,2BAAe,GAAG,CAACiK,UAAU,GAAGF,MAAd,IAAwBlvE,KAA1C;AACD;AACF;AACF;AACF;;AACD,WAAOmlE,eAAP;AACD,GAldH;AAAA,MAodE;AACA;AACAyL,oBAAkB,GAAG,SAArBA,kBAAqB,GAAW;AAC9B,QAAIrC,QAAQ,KAAKnnF,SAAjB,EAA4B;AAC1BmnF,cAAQ,GAAG,IAAIvK,QAAJ,CAAa/8E,IAAI,CAAC,CAAD,CAAjB,EAAsBA,IAAI,CAAC,CAAD,CAA1B,EAA+BwpF,gBAAgB,EAA/C,CAAX;AACD,KAFD,MAEO;AACLlC,cAAQ,CAAClK,YAAT,CAAsBp9E,IAAI,CAAC,CAAD,CAA1B,EAA+BA,IAAI,CAAC,CAAD,CAAnC,EAAwCwpF,gBAAgB,EAAxD;AACD;AACF,GA5dH;AAAA,MA8dE;AACA;AACAI,wBAAsB,GAAG,SAAzBA,sBAAyB,GAAW;AAClC,QAAI3nC,YAAY,KAAK9hD,SAArB,EAAgC;AAC9B8hD,kBAAY,GAAG,IAAI+7B,YAAJ,CAAiB/wC,CAAjB,EAAoBy8C,kCAAkC,EAAtD,CAAf;AACD,KAFD,MAEO;AACLznC,kBAAY,CAACm7B,YAAb,CAA0BnwC,CAA1B,EAA6By8C,kCAAkC,EAA/D;AACD;AACF,GAteH;;AAweE;;;AAGAG,0BAAwB,GAAG;AAEzBhqC,SAAK,EAAE,iBAAW;AAChBrnC,YAAM,GAAGqnC,MAAK,CAACrnC,MAAf;AACAC,QAAE,GAAGonC,MAAK,CAACpnC,EAAX;AACAC,QAAE,GAAGmnC,MAAK,CAACnnC,EAAX;AACAtW,OAAC,GAAGy9C,MAAK,CAACz9C,CAAV;AACAuV,OAAC,GAAGkoC,MAAK,CAACloC,CAAV;AACAC,QAAE,GAAGioC,MAAK,CAACjoC,EAAX;AACAC,QAAE,GAAGgoC,MAAK,CAAChoC,EAAX;AACAc,WAAK,GAAGknC,MAAK,CAAClnC,KAAd;AACAb,QAAE,GAAG+nC,MAAK,CAAC/nC,EAAX;AACAC,QAAE,GAAG8nC,MAAK,CAAC9nC,EAAX;AACAC,YAAM,GAAG6nC,MAAK,CAAC7nC,MAAf;AACAC,cAAQ,GAAG4nC,MAAK,CAAC5nC,QAAjB;AACAC,aAAO,GAAG2nC,MAAK,CAAC3nC,OAAhB;AACA3F,aAAO,GAAGstC,MAAK,CAACttC,OAAhB;AACA6F,YAAM,GAAGynC,MAAK,CAACznC,MAAf;AACAQ,UAAI,GAAGinC,MAAK,CAACjnC,IAAb;AACAuoE,oBAAc,GAAGthC,MAAK,CAACshC,cAAvB;AACAC,aAAO,GAAGvhC,MAAK,CAACuhC,OAAhB;AACD,KArBwB;AAuBzBa,eAAW,EAAE,uBAAW;AACtBL,0BAAoB,GAAGK,YAAW,CAACjnE,KAAnC;AACA6mE,0BAAoB,GAAGI,YAAW,CAAChnE,KAAnC;AACA6mE,sBAAgB,GAAGG,YAAW,CAAC/gF,MAA/B;AACA6gF,wBAAkB,GAAGE,YAAW,CAAC/mE,QAAjC;AACA8mE,oBAAc,GAAGC,YAAW,CAACn6E,IAA7B;AACD,KA7BwB;AA+BzB06E,cAAU,EAAE,sBAAW;AACrBJ,wBAAkB,GAAGI,WAAU,CAACjnE,SAAhC;AACA8mE,gBAAU,GAAGG,WAAU,CAAC50E,CAAxB;AACA00E,iBAAW,GAAGE,WAAU,CAAChnE,EAAzB;AACA+mE,iBAAW,GAAGC,WAAU,CAAC/mE,EAAzB;AACD,KApCwB;AAsCzBsnE,gBAAY,EAAE,wBAAW;AACvBL,2BAAqB,GAAGK,aAAY,CAAC/nE,KAArC;AACA2nE,2BAAqB,GAAGI,aAAY,CAAC9nE,KAArC;AACA2nE,2BAAqB,GAAGG,aAAY,CAAC3nE,KAArC;AACAynE,sBAAgB,GAAGE,aAAY,CAAC1nE,KAAhC;AACAynE,yBAAmB,GAAGC,aAAY,CAAC7nE,QAAnC;AACD,KA5CwB;AA8CzB4kC,YAAQ,EAAE,oBAAW;AACnBuhC,iBAAW,GAAGvhC,SAAQ,CAAClnC,IAAvB;AACA0oE,oBAAc,GAAGxhC,SAAQ,CAAC9mC,OAA1B;AACAuoE,kBAAY,GAAGzhC,SAAQ,CAAC/mC,KAAxB;AACAyoE,mBAAa,GAAG1hC,SAAQ,CAACtnC,MAAzB;AACAipE,kBAAY,GAAG3hC,SAAQ,CAACxoC,KAAxB;AACD,KApDwB;AAsDzBktE,aAAS,EAAE,qBAAW;AACpBvB,eAAS,GAAGuB,UAAS,CAACpiF,CAAtB;AACA8gF,eAAS,GAAGsB,UAAS,CAAC7sE,CAAtB;AACAwrE,mBAAa,GAAGqB,UAAS,CAACn4E,KAA1B;AACA+2E,oBAAc,GAAGoB,UAAS,CAACl4E,MAA3B;AACAo3E,kBAAY,GAAGc,UAAS,CAAC5rE,IAAzB;AACAyqE,gBAAU,GAAGmB,UAAS,CAAC5sE,EAAvB;AACA0rE,gBAAU,GAAGkB,UAAS,CAAC3sE,EAAvB;AACA0rE,mBAAa,GAAGiB,UAAS,CAACnrE,UAA1B;AACAmqE,mBAAa,GAAGgB,UAAS,CAAClrE,UAA1B;AACAmqE,sBAAgB,GAAGe,UAAS,CAACvsE,QAA7B;AACA0rE,uBAAiB,GAAGa,UAAS,CAAChrE,SAA9B;AACAoqE,wBAAkB,GAAGY,UAAS,CAAC9qE,UAA/B;AACAmqE,uBAAiB,GAAGW,UAAS,CAAC5qE,SAA9B;AACAkqE,wBAAkB,GAAGU,UAAS,CAAC1qE,UAA/B;AACAsqE,yBAAmB,GAAGI,UAAS,CAAC/qE,cAAhC;AACA4qE,yBAAmB,GAAGG,UAAS,CAAC7qE,eAAhC;AACA2qE,yBAAmB,GAAGE,UAAS,CAAC3qE,cAAhC;AACA0qE,yBAAmB,GAAGC,UAAS,CAACzqE,eAAhC;AACAmqE,mBAAa,GAAGM,UAAS,CAACsF,KAA1B;AACA3F,mBAAa,GAAGK,UAAS,CAACuF,KAA1B;AACAhG,mBAAa,GAAGS,UAAS,CAACltE,KAA1B;AACA0sE,qBAAe,GAAGQ,UAAS,CAACrsE,OAA5B;AACA8rE,0BAAoB,GAAGO,UAAS,CAACxqE,YAAjC;AACD,KA9EwB;AAgFzBurE,UAAM,EAAE,kBAAW;AACjBb,eAAS,GAAGa,OAAM,CAACz9E,IAAnB;AACA68E,YAAM,GAAGY,OAAM,CAACnjF,CAAhB;AACAwiF,YAAM,GAAGW,OAAM,CAAC5tE,CAAhB;AACAktE,gBAAU,GAAGU,OAAM,CAACl5E,KAApB;AACAy4E,iBAAW,GAAGS,OAAM,CAACj5E,MAArB;AACAy4E,gBAAU,GAAGQ,OAAM,CAACrrE,KAApB;AACA8qE,gBAAU,GAAGO,OAAM,CAACjuE,KAApB;AACA2tE,oBAAc,GAAGM,OAAM,CAACprE,SAAxB;AACA+qE,qBAAe,GAAGK,OAAM,CAACnrE,UAAzB;AACA+qE,qBAAe,GAAGI,OAAM,CAAClrE,UAAzB;AACA+qE,gBAAU,GAAGG,OAAM,CAACjrE,KAApB;AACA+qE,wBAAkB,GAAGE,OAAM,CAAChrE,aAA5B;AACA+qE,kBAAY,GAAGC,OAAM,CAACptE,OAAtB;AACD,KA9FwB;AAgGzB+O,SAAK,EAAE,iBAAW;AAChBu+D,YAAM,GAAGv+D,MAAK,CAACzM,EAAf;AACAirE,YAAM,GAAGx+D,MAAK,CAACxM,EAAf;AACAirE,YAAM,GAAGz+D,MAAK,CAACvM,EAAf;AACAirE,YAAM,GAAG1+D,MAAK,CAACtM,EAAf;AACAirE,oBAAc,GAAG3+D,MAAK,CAACrM,UAAvB;AACAirE,kBAAY,GAAG5+D,MAAK,CAACpM,QAArB;AACAirE,eAAS,GAAG7+D,MAAK,CAAChN,KAAlB;AACA8rE,mBAAa,GAAG9+D,MAAK,CAAC/M,SAAtB;AACA8rE,oBAAc,GAAG/+D,MAAK,CAAC9M,UAAvB;AACA8rE,oBAAc,GAAGh/D,MAAK,CAAC7M,UAAvB;AACA8rE,eAAS,GAAGj/D,MAAK,CAAC5M,KAAlB;AACA8rE,uBAAiB,GAAGl/D,MAAK,CAAC3M,aAA1B;AACA8rE,iBAAW,GAAGn/D,MAAK,CAAC/O,OAApB;AACD,KA9GwB;AAgHzBuuE,kBAAc,EAAE,0BAAW;AACzBH,4BAAsB,GAAGG,eAAc,CAAC/qE,SAAxC;AACA6qE,8BAAwB,GAAGE,eAAc,CAAC9qE,WAA1C;AACA6qE,2BAAqB,GAAGC,eAAc,CAAC7qE,QAAvC;AACD,KApHwB;AAsHzBurE,gBAAY,EAAE,wBAAW;AACvBJ,2BAAoB,GAAGI,aAAY,CAAC,CAAD,CAAnC;AACAH,kBAAY,GAAGG,aAAY,CAAC,CAAD,CAA3B;AACAF,kBAAY,GAAGE,aAAY,CAAC,CAAD,CAA3B;AACAD,yBAAmB,GAAGC,aAAY,CAAC,CAAD,CAAlC;AACD,KA3HwB;AA6HzBR,YAAQ,EAAE,oBAAW;AACnBE,uBAAiB,GAAGF,SAAQ,CAAC5rE,KAA7B;AACA+rE,uBAAiB,GAAGH,SAAQ,CAAC3rE,KAA7B;AACD;AAhIwB,GA3e7B;AAAA,MA+mBEstE,mBAAmB,GAAG,SAAtBA,mBAAsB,CAASzmF,GAAT,EAAc;AAClCg+C,aAAQ,GAAGP,MAAM,CAACO,QAAP,GAAkB,EAA7B;AAEAA,aAAQ,CAAClnC,IAAT,GAAgBrZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAhB;AACAwB,aAAQ,CAAC9mC,OAAT,GAAmBzZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAnB;AACAwB,aAAQ,CAAC/mC,KAAT,GAAiBxZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAjB;AACAwB,aAAQ,CAACtnC,MAAT,GAAkBjZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAlB;AACAwB,aAAQ,CAACxoC,KAAT,GAAiB,EAAjB;AAEAuyE,4BAAwB,CAAC/pC,QAAzB;AACD,GAznBH;AAAA,MA2nBE0oC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAS1mF,GAAT,EAAc;AAC/B+9C,UAAK,GAAG,EAAR,CAD+B,CAG/B;;AACAA,UAAK,CAACrnC,MAAN,GAAejZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAf;AACAuB,UAAK,CAACpnC,EAAN,GAAWlZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAuB,UAAK,CAACnnC,EAAN,GAAWnZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAuB,UAAK,CAACz9C,CAAN,GAAU7C,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAV;AACAuB,UAAK,CAACloC,CAAN,GAAUpY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAV;AACAuB,UAAK,CAACjoC,EAAN,GAAWrY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAuB,UAAK,CAAChoC,EAAN,GAAWtY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAuB,UAAK,CAAClnC,KAAN,GAAcpZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAd;AACAuB,UAAK,CAAC/nC,EAAN,GAAWvY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAuB,UAAK,CAAC9nC,EAAN,GAAWxY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAuB,UAAK,CAAC7nC,MAAN,GAAezY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAf;AACAuB,UAAK,CAAC5nC,QAAN,GAAiB1Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAjB;AACAuB,UAAK,CAAC3nC,OAAN,GAAgB3Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAhB;AACAkB,UAAK,CAACttC,OAAN,GAAgBhT,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAhB;AACAkB,UAAK,CAACznC,MAAN,GAAe7Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAf;AACAkB,UAAK,CAACjnC,IAAN,GAAarZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAb;AACAuB,UAAK,CAACshC,cAAN,GAAuB5hF,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACzB,QAAjC,CAAvB;AACAoB,UAAK,CAACuhC,OAAN,GAAgB7hF,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAhB,CArB+B,CAsB/B;AACA;AACA;;AACAkB,UAAK,CAACxnC,MAAN,GAAe9Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAf;AACAkB,UAAK,CAAC1nC,OAAN,GAAgB5Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAhB;AACAuB,UAAK,CAACvnC,SAAN,GAAkB/Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAlB;AACAkB,UAAK,CAACtnC,oBAAN,GAA6BhZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAA7B;AAEAkrC,4BAAwB,CAAChqC,KAAzB;AACD,GA1pBH;AAAA,MA4pBE6oC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAS5mF,GAAT,EAAc;AACrCmgF,gBAAW,GAAG1iC,MAAM,CAAC0iC,WAAP,GAAqB,EAAnC;AAEAA,gBAAW,CAACjnE,KAAZ,GAAoBzb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAApB;AACAujC,gBAAW,CAAChnE,KAAZ,GAAoB1b,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAApB;AACAujC,gBAAW,CAAC/gF,MAAZ,GAAqB3B,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAArB;AACA2jC,gBAAW,CAAC/mE,QAAZ,GAAuB3b,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAvB;AACA2jC,gBAAW,CAACn6E,IAAZ,GAAmBvI,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAnB;AAEAkrC,4BAAwB,CAAC5H,WAAzB;AACD,GAtqBH;AAAA,MAwqBE0G,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAS7mF,GAAT,EAAc;AACpC0gF,eAAU,GAAGjjC,MAAM,CAACijC,UAAP,GAAoB,EAAjC;AAEAA,eAAU,CAACjnE,SAAX,GAAuBhc,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAAvB;AACA8jC,eAAU,CAAC50E,CAAX,GAAerO,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAf;AACAkkC,eAAU,CAAChnE,EAAX,GAAgBjc,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAhB;AACAkkC,eAAU,CAAC/mE,EAAX,GAAgBlc,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAhB;AAEAurC,4BAAwB,CAACrH,UAAzB;AACD,GAjrBH;AAAA,MAmrBEiG,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAS3mF,GAAT,EAAc;AACtCihF,iBAAY,GAAGxjC,MAAM,CAACwjC,YAAP,GAAsB,EAArC;AAEAA,iBAAY,CAAC/nE,KAAb,GAAqBzb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAArB;AACAqkC,iBAAY,CAAC9nE,KAAb,GAAqB1b,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAArB;AACAqkC,iBAAY,CAAC3nE,KAAb,GAAqB7b,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAArB;AACAqkC,iBAAY,CAAC1nE,KAAb,GAAqB9b,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAArB;AACAykC,iBAAY,CAAC7nE,QAAb,GAAwB3b,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAxB;AAEAurC,4BAAwB,CAAC9G,YAAzB;AACD,GA7rBH;AAAA,MA+rBE6F,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAS9mF,GAAT,EAAc;AAClC8kF,aAAQ,GAAGrnC,MAAM,CAACqnC,QAAP,GAAkB,EAA7B;AAEAA,aAAQ,CAAC1gE,KAAT,GAAiB,CAAjB;AACA0gE,aAAQ,CAAC5rE,KAAT,GAAiBzb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAAjB;AACAkoC,aAAQ,CAAC3rE,KAAT,GAAiB1b,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAAjB;AACD,GArsBH;AAAA,MAusBEmqC,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAS/mF,GAAT,EAAc;AACtCslF,iBAAY,GAAG7nC,MAAM,CAAC6nC,YAAP,GAAsB,EAArC,CADsC,CAGtC;;AACAA,iBAAY,CAAC,CAAD,CAAZ,GAAkB7nF,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACxB,UAAjC,CAAlB;AACA0oC,iBAAY,CAAC,CAAD,CAAZ,GAAkB7nF,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAlB;AACA8oC,iBAAY,CAAC,CAAD,CAAZ,GAAkB7nF,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAlB;AACA8oC,iBAAY,CAAC,CAAD,CAAZ,GAAkB7nF,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAlB;AAEAurC,4BAAwB,CAACzC,YAAzB;AACD,GAjtBH;AAAA,MAmtBE0B,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAShnF,GAAT,EAAc;AACnC0iF,cAAS,GAAGjlC,MAAM,CAACilC,SAAP,GAAmB,EAA/B;AAEAA,cAAS,CAACpiF,CAAV,GAAc7C,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAd;AACAkmC,cAAS,CAAC7sE,CAAV,GAAcpY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAd;AACAkmC,cAAS,CAACn4E,KAAV,GAAkB9M,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAlB;AACAkmC,cAAS,CAACl4E,MAAV,GAAmB/M,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAnB;AACAkmC,cAAS,CAAC5rE,IAAV,GAAiBrZ,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAjB;AACAkmC,cAAS,CAAC5sE,EAAV,GAAerY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAf;AACAkmC,cAAS,CAAC3sE,EAAV,GAAetY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAf;AACAkmC,cAAS,CAACnrE,UAAV,GAAuB9Z,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAvB;AACAkmC,cAAS,CAAClrE,UAAV,GAAuB/Z,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAvB;AACAkmC,cAAS,CAACvsE,QAAV,GAAqB1Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAArB;AACAkmC,cAAS,CAAChrE,SAAV,GAAsBja,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAtB;AACA6lC,cAAS,CAAC9qE,UAAV,GAAuBna,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAvB;AACA6lC,cAAS,CAAC5qE,SAAV,GAAsBra,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAtB;AACA6lC,cAAS,CAAC1qE,UAAV,GAAuBva,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAvB;AACA6lC,cAAS,CAAC/qE,cAAV,GAA2Bla,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAA3B;AACAkmC,cAAS,CAAC7qE,eAAV,GAA4Bpa,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAA5B;AACAkmC,cAAS,CAAC3qE,cAAV,GAA2Bta,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAA3B;AACAkmC,cAAS,CAACzqE,eAAV,GAA4Bxa,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAA5B;AACAkmC,cAAS,CAACsF,KAAV,GAAkBvqF,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAlB;AACAkmC,cAAS,CAACuF,KAAV,GAAkBxqF,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAlB;AACAkmC,cAAS,CAACltE,KAAV,GAAkB,EAAlB;AACAktE,cAAS,CAACrsE,OAAV,GAAoB5Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAApB;AACA6lC,cAAS,CAACjrE,2BAAV,GAAwCha,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAxC;AACA6lC,cAAS,CAACxqE,YAAV,GAAyB,EAAzB;AAEA6vE,4BAAwB,CAACrF,SAAzB;AACD,GAhvBH;AAAA,MAkvBEuE,iBAAiB,GAAG,SAApBA,iBAAoB,CAASjnF,GAAT,EAAc;AAChCyjF,WAAM,GAAGhmC,MAAM,CAACgmC,MAAP,GAAgB,EAAzB;AAEAA,WAAM,CAACz9E,IAAP,GAAc,EAAd;AACAy9E,WAAM,CAACnjF,CAAP,GAAW7C,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAinC,WAAM,CAAC5tE,CAAP,GAAWpY,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAinC,WAAM,CAACl5E,KAAP,GAAe9M,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAf;AACAinC,WAAM,CAACj5E,MAAP,GAAgB/M,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAhB;AACAinC,WAAM,CAACjuE,KAAP,GAAe,EAAf;AACAiuE,WAAM,CAACprE,SAAP,GAAmB,EAAnB;AACAorE,WAAM,CAACnrE,UAAP,GAAoB,EAApB;AACAmrE,WAAM,CAAClrE,UAAP,GAAoB9a,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAApB;AACAinC,WAAM,CAACjrE,KAAP,GAAe/a,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAf;AACA4mC,WAAM,CAAChrE,aAAP,GAAuBhb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAvB;AACA4mC,WAAM,CAACptE,OAAP,GAAiB5Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAjB;AACA4mC,WAAM,CAACrrE,KAAP,GAAe3a,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAf;AAEAkrC,4BAAwB,CAACtE,MAAzB;AACD,GApwBH;AAAA,MAswBEyD,gBAAgB,GAAG,SAAnBA,gBAAmB,CAASlnF,GAAT,EAAc;AAC/BolB,UAAK,GAAGq4B,MAAM,CAACr4B,KAAP,GAAe,EAAvB;AAEAA,UAAK,CAACzM,EAAN,GAAWlb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAp3B,UAAK,CAACxM,EAAN,GAAWnb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAp3B,UAAK,CAACvM,EAAN,GAAWpb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAp3B,UAAK,CAACtM,EAAN,GAAWrb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAX;AACAp3B,UAAK,CAACrM,UAAN,GAAmB,EAAnB;AACAqM,UAAK,CAACpM,QAAN,GAAiB,EAAjB;AACAoM,UAAK,CAAC/M,SAAN,GAAkB,EAAlB;AACA+M,UAAK,CAAC9M,UAAN,GAAmB,EAAnB;AACA8M,UAAK,CAAC7M,UAAN,GAAmB9a,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAAnB;AACAp3B,UAAK,CAAC5M,KAAN,GAAc/a,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAd;AACAz3B,UAAK,CAAC3M,aAAN,GAAsBhb,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAtB;AACAz3B,UAAK,CAAC/O,OAAN,GAAgB5Y,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAhB;AACAz3B,UAAK,CAAChN,KAAN,GAAc3a,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAACvB,SAAjC,CAAd;AAEAkrC,4BAAwB,CAAC3iE,KAAzB;AACD,GAxxBH;AAAA,MA0xBE+hE,yBAAyB,GAAG,SAA5BA,yBAA4B,CAASnnF,GAAT,EAAc;AACxC4kF,mBAAc,GAAGnnC,MAAM,CAACmnC,cAAP,GAAwB,EAAzC;AAEAA,mBAAc,CAAC/qE,SAAf,GAA2Bpc,yBAAM,CAACQ,MAAP,CAAc+B,GAAd,EAAmB,CAAnB,EAAsBo+C,WAAU,CAAC5B,SAAjC,CAA3B;AACAooC,mBAAc,CAAC9qE,WAAf,GAA6B,EAA7B;AACA8qE,mBAAc,CAAC7qE,QAAf,GAA0B,EAA1B;AAEAguE,4BAAwB,CAACnD,cAAzB;AACD,GAlyBH;AAAA,MAoyBE;AACAsD,oBAAkB,GAAG,SAArBA,kBAAqB,GAAW;AAC9B,QAAIC,KAAK,GAAG,CAAZ;AAAA,QACEhpF,CADF,CAD8B,CAI9B;;AACA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtBgpF,WAAK,IAAIrxE,IAAI,CAAC3X,CAAD,CAAJ,IAAW2W,EAAE,CAAC3W,CAAD,CAAF,GAAQ2W,EAAE,CAAC3W,CAAD,CAAV,GAAgB4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAArC,CAAT;AACD,KAP6B,CAQ9B;;;AACA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwjF,WAAhB,EAA6BxjF,CAAC,EAA9B,EAAkC;AAChC,UAAIyiF,YAAY,CAACziF,CAAD,CAAZ,KAAoB2N,QAAxB,EAAkC;AAChCq7E,aAAK,IAAIvG,YAAY,CAACziF,CAAD,CAAZ,IACNoiF,UAAU,CAACpiF,CAAD,CAAV,GAAgBoiF,UAAU,CAACpiF,CAAD,CAA1B,GAAgCqiF,UAAU,CAACriF,CAAD,CAAV,GAAgBqiF,UAAU,CAACriF,CAAD,CADpD,CAAT;AAED;AACF;;AAED,WAAOg/E,iBAAY,CAACgK,KAAK,GAAG,CAAT,EAAYh9C,CAAZ,CAAnB;AACD,GAtzBH;AAAA,MAwzBE;AACAi9C,2BAAyB,GAAG,SAA5BA,yBAA4B,CAASC,WAAT,EAAsB;AAChD,QAAIF,KAAK,GAAG,CAAZ;AAAA,QACEhpF,CADF;AAAA,QAEEyM,CAFF,CADgD,CAKhD;;AACA,SAAKzM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGkpF,WAAW,CAACjpF,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvCyM,OAAC,GAAGy8E,WAAW,CAAClpF,CAAD,CAAf;AACAgpF,WAAK,IAAIrxE,IAAI,CAAClL,CAAD,CAAJ,IAAWkK,EAAE,CAAClK,CAAD,CAAF,GAAQkK,EAAE,CAAClK,CAAD,CAAV,GAAgBmK,EAAE,CAACnK,CAAD,CAAF,GAAQmK,EAAE,CAACnK,CAAD,CAArC,CAAT;AACD;;AAED,WAAOuyE,iBAAY,CAACgK,KAAK,GAAG,CAAT,EAAYE,WAAW,CAACjpF,MAAxB,CAAnB;AACD,GAr0BH;AAAA,MAu0BE;AACAkpF,aAAW,GAAG,SAAdA,WAAc,CAASnpF,CAAT,EAAYopF,IAAZ,EAAkBC,IAAlB,EAAwB;AACpC1yE,MAAE,CAAC3W,CAAD,CAAF,IAASopF,IAAT;AACAxyE,MAAE,CAAC5W,CAAD,CAAF,IAASqpF,IAAT;AAEA7xE,MAAE,CAACxX,CAAD,CAAF,GAAQ2W,EAAE,CAAC3W,CAAD,CAAF,GAAQ2X,IAAI,CAAC3X,CAAD,CAApB;AACAyX,MAAE,CAACzX,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ2X,IAAI,CAAC3X,CAAD,CAApB;AACD,GA90BH;AAAA,MAg1BE;AACAspF,oBAAkB,GAAG,SAArBA,kBAAqB,CAAStpF,CAAT,EAAYupF,KAAZ,EAAmB;AACtC5yE,MAAE,CAAC3W,CAAD,CAAF,IAASupF,KAAK,IAAI7yE,CAAC,CAAC1W,CAAD,CAAD,GAAOwmF,IAAX,CAAd;AACA5vE,MAAE,CAAC5W,CAAD,CAAF,IAASupF,KAAK,IAAIpoF,CAAC,CAACnB,CAAD,CAAD,GAAOumF,IAAX,CAAd;AAEA/uE,MAAE,CAACxX,CAAD,CAAF,GAAQ2W,EAAE,CAAC3W,CAAD,CAAF,GAAQ2X,IAAI,CAAC3X,CAAD,CAApB;AACAyX,MAAE,CAACzX,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ2X,IAAI,CAAC3X,CAAD,CAApB;AACD,GAv1BH;AAAA,MAy1BE;AACAwpF,4CAA0C,GAAG,SAA7CA,0CAA6C,GAAW;AACtD,SAAK,IAAIxpF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgsC,CAApB,EAAuBhsC,CAAC,EAAxB,EAA4B;AAC1BmpF,iBAAW,CAACnpF,CAAD,EAAI,CAAC2mF,KAAL,EAAY,CAACC,KAAb,CAAX;AACA0C,wBAAkB,CAACtpF,CAAD,EAAI,CAAC+mF,QAAL,CAAlB;AACD;AACF,GA/1BH;AAAA,MAi2BE;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA0C,0BAAwB,GAAG,SAA3BA,wBAA2B,GAAW;AACpC,QAAIC,KAAK,GAAG,CAAZ;AAAA,QACEC,KAAK,GAAG,CADV;AAAA,QAEEC,MAAM,GAAG,CAFX;AAAA,QAGEC,MAAM,GAAG,CAHX;AAAA,QAIEC,SAAS,GAAGxrC,MAAM,CAACyrC,YAAP,EAJd;AAAA,QAKE/pF,CALF;;AAOA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB0pF,WAAK,IAAIvoF,CAAC,CAACnB,CAAD,CAAV;AACA2pF,WAAK,IAAIjzE,CAAC,CAAC1W,CAAD,CAAV;AACA4pF,YAAM,IAAIpyE,EAAE,CAACxX,CAAD,CAAZ;AACA6pF,YAAM,IAAIpyE,EAAE,CAACzX,CAAD,CAAZ;AACD;;AAEDumF,QAAI,GAAGmD,KAAK,GAAG19C,CAAf;AACAw6C,QAAI,GAAGmD,KAAK,GAAG39C,CAAf;AACAy6C,SAAK,GAAGmD,MAAR;AACAlD,SAAK,GAAGmD,MAAR;AACAlD,SAAK,GAAGiD,MAAM,GAAGE,SAAjB;AACAlD,SAAK,GAAGiD,MAAM,GAAGC,SAAjB;AACD,GAn4BH;AAAA,MAq4BE;AACA;AACA;AACA;AACAE,uBAAqB,GAAG,SAAxBA,qBAAwB,GAAW;AACjC,QAAIC,CAAC,GAAG,CAAR;AAAA,QACEC,CAAC,GAAG,CADN;AAAA,QAEEnlC,CAFF;AAAA,QAGE/kD,CAHF;;AAKA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB+kD,OAAC,GAAGptC,IAAI,CAAC3X,CAAD,CAAR,CADsB,CAEtB;;AACAiqF,OAAC,IAAIllC,CAAC,GAAG45B,KAAK,CAACx9E,CAAC,CAACnB,CAAD,CAAD,GAAOumF,IAAR,EAAc7vE,CAAC,CAAC1W,CAAD,CAAD,GAAOwmF,IAArB,EAA2B7vE,EAAE,CAAC3W,CAAD,CAAF,GAAQ2mF,KAAnC,EAA0C/vE,EAAE,CAAC5W,CAAD,CAAF,GAAQ4mF,KAAlD,CAAd;AACAsD,OAAC,IAAInlC,CAAC,GAAGg6B,SAAS,CAAC59E,CAAC,CAACnB,CAAD,CAAD,GAAOumF,IAAR,EAAc7vE,CAAC,CAAC1W,CAAD,CAAD,GAAOwmF,IAArB,CAAlB;AACD;;AAEDK,QAAI,GAAGoD,CAAP;AACAnD,QAAI,GAAGoD,CAAP;AACAnD,YAAQ,GAAGF,IAAI,GAAGC,IAAlB;AACD,GAz5BH;AAAA,MA25BEqD,eAAe,GAAG,SAAlBA,eAAkB,GAAW;AAC3BV,4BAAwB;AACxBO,yBAAqB;AACtB,GA95BH;AAAA,MAg6BE;AACA;AACA;AAEA;AACAI,wBAAsB,GAAG,SAAzBA,sBAAyB,CAASpqF,CAAT,EAAY;AACnC,QAAIqqF,QAAQ,GAAG,CAAf;AAAA,QACEC,UAAU,GAAG,CADf;AAAA,QAEEl/E,KAAK,GAAGrM,IAAI,CAAC,CAAD,CAFd;AAAA,QAGEsM,MAAM,GAAGtM,IAAI,CAAC,CAAD,CAHf;AAAA,QAIEwrF,SAAS,GAAGn/E,KAAK,GAAG82E,aAAa,CAACliF,CAAD,CAJnC;AAAA,QAKEwqF,OAAO,GAAGn/E,MAAM,GAAG82E,cAAc,CAACniF,CAAD,CALnC,CADmC,CAQnC;;AACA,QAAIgiF,SAAS,CAAChiF,CAAD,CAAT,GAAeqqF,QAAnB,EAA6B;AAC3B,aAAOrI,SAAS,CAAChiF,CAAD,CAAT,GAAeqqF,QAAQ,GAAGj/E,KAAjC,EAAwC;AACtC42E,iBAAS,CAAChiF,CAAD,CAAT,IAAgBoL,KAAhB;AACD;;AACD42E,eAAS,CAAChiF,CAAD,CAAT,GAAeqqF,QAAQ,IAAIA,QAAQ,GAAGrI,SAAS,CAAChiF,CAAD,CAAxB,CAAvB;AACAoiF,gBAAU,CAACpiF,CAAD,CAAV,IAAiB,CAAC,CAAlB;AACD,KAND,MAMO,IAAIgiF,SAAS,CAAChiF,CAAD,CAAT,GAAeuqF,SAAnB,EAA8B;AACnC,aAAOvI,SAAS,CAAChiF,CAAD,CAAT,GAAeuqF,SAAS,GAAGn/E,KAAlC,EAAyC;AACvC42E,iBAAS,CAAChiF,CAAD,CAAT,IAAgBoL,KAAhB;AACD;;AACD42E,eAAS,CAAChiF,CAAD,CAAT,GAAeuqF,SAAS,IAAIvI,SAAS,CAAChiF,CAAD,CAAT,GAAeuqF,SAAnB,CAAxB;AACAnI,gBAAU,CAACpiF,CAAD,CAAV,IAAiB,CAAC,CAAlB;AACD,KArBkC,CAuBnC;;;AACA,QAAIiiF,SAAS,CAACjiF,CAAD,CAAT,GAAesqF,UAAnB,EAA+B;AAC7B,aAAOrI,SAAS,CAACjiF,CAAD,CAAT,GAAesqF,UAAU,GAAGj/E,MAAnC,EAA2C;AACzC42E,iBAAS,CAACjiF,CAAD,CAAT,IAAgBqL,MAAhB;AACD;;AACD42E,eAAS,CAACjiF,CAAD,CAAT,GAAesqF,UAAU,IAAIA,UAAU,GAAGrI,SAAS,CAACjiF,CAAD,CAA1B,CAAzB;AACAqiF,gBAAU,CAACriF,CAAD,CAAV,IAAiB,CAAC,CAAlB;AACD,KAND,MAMO,IAAIiiF,SAAS,CAACjiF,CAAD,CAAT,GAAewqF,OAAnB,EAA4B;AACjC,aAAOvI,SAAS,CAACjiF,CAAD,CAAT,GAAewqF,OAAO,GAAGp/E,KAAhC,EAAuC;AACrC62E,iBAAS,CAACjiF,CAAD,CAAT,IAAgBoL,KAAhB;AACD;;AACD62E,eAAS,CAACjiF,CAAD,CAAT,GAAewqF,OAAO,IAAIvI,SAAS,CAACjiF,CAAD,CAAT,GAAewqF,OAAnB,CAAtB;AACAnI,gBAAU,CAACriF,CAAD,CAAV,IAAiB,CAAC,CAAlB;AACD;AACF,GA18BH;AAAA,MA48BE;AACA;AACAyqF,wBAAsB,GAAG,SAAzBA,sBAAyB,CAASzqF,CAAT,EAAY;AACnC,QAAIwP,CAAC,GAAG+H,MAAM,CAACvX,CAAD,CAAd;AAAA,QACEqqF,QAAQ,GAAG76E,CADb;AAAA,QAEE86E,UAAU,GAAG96E,CAFf;AAAA,QAGEpE,KAAK,GAAGrM,IAAI,CAAC,CAAD,CAHd;AAAA,QAIEsM,MAAM,GAAGtM,IAAI,CAAC,CAAD,CAJf;AAAA,QAKEwrF,SAAS,GAAGn/E,KAAK,GAAGoE,CALtB;AAAA,QAMEg7E,OAAO,GAAGn/E,MAAM,GAAGmE,CANrB,CADmC,CASnC;;AACA,QAAIrO,CAAC,CAACnB,CAAD,CAAD,GAAOqqF,QAAX,EAAqB;AACnB,aAAOlpF,CAAC,CAACnB,CAAD,CAAD,GAAOqqF,QAAQ,GAAGj/E,KAAzB,EAAgC;AAC9BjK,SAAC,CAACnB,CAAD,CAAD,IAAQoL,KAAR;AACD;;AACDjK,OAAC,CAACnB,CAAD,CAAD,GAAOqqF,QAAQ,IAAIA,QAAQ,GAAGlpF,CAAC,CAACnB,CAAD,CAAhB,CAAf;AACA2W,QAAE,CAAC3W,CAAD,CAAF,IAAS,CAAC,CAAV;AACAwX,QAAE,CAACxX,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,KAPD,MAOO,IAAImB,CAAC,CAACnB,CAAD,CAAD,GAAOuqF,SAAX,EAAsB;AAC3B,aAAOppF,CAAC,CAACnB,CAAD,CAAD,GAAOuqF,SAAS,GAAGn/E,KAA1B,EAAiC;AAC/BjK,SAAC,CAACnB,CAAD,CAAD,IAAQoL,KAAR;AACD;;AACDjK,OAAC,CAACnB,CAAD,CAAD,GAAOuqF,SAAS,IAAIppF,CAAC,CAACnB,CAAD,CAAD,GAAOuqF,SAAX,CAAhB;AACA5zE,QAAE,CAAC3W,CAAD,CAAF,IAAS,CAAC,CAAV;AACAwX,QAAE,CAACxX,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,KAxBkC,CA0BnC;;;AACA,QAAI0W,CAAC,CAAC1W,CAAD,CAAD,GAAOsqF,UAAX,EAAuB;AACrB,aAAO5zE,CAAC,CAAC1W,CAAD,CAAD,GAAOsqF,UAAU,GAAGj/E,MAA3B,EAAmC;AACjCqL,SAAC,CAAC1W,CAAD,CAAD,IAAQqL,MAAR;AACD;;AACDqL,OAAC,CAAC1W,CAAD,CAAD,GAAOsqF,UAAU,IAAIA,UAAU,GAAG5zE,CAAC,CAAC1W,CAAD,CAAlB,CAAjB;AACA4W,QAAE,CAAC5W,CAAD,CAAF,IAAS,CAAC,CAAV;AACAyX,QAAE,CAACzX,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,KAPD,MAOO,IAAI0W,CAAC,CAAC1W,CAAD,CAAD,GAAOwqF,OAAX,EAAoB;AACzB,aAAO9zE,CAAC,CAAC1W,CAAD,CAAD,GAAOwqF,OAAO,GAAGn/E,MAAxB,EAAgC;AAC9BqL,SAAC,CAAC1W,CAAD,CAAD,IAAQqL,MAAR;AACD;;AACDqL,OAAC,CAAC1W,CAAD,CAAD,GAAOwqF,OAAO,IAAI9zE,CAAC,CAAC1W,CAAD,CAAD,GAAOwqF,OAAX,CAAd;AACA5zE,QAAE,CAAC5W,CAAD,CAAF,IAAS,CAAC,CAAV;AACAyX,QAAE,CAACzX,CAAD,CAAF,IAAS,CAAC,CAAV;AACD;AACF,GAx/BH;AAAA,MAy/BE0qF,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAS1qF,CAAT,EAAY2qF,MAAZ,EAAoBC,MAApB,EAA4BC,cAA5B,EAA4C;AACvE;AACA,QAAIrH,WAAW,GAAG,CAAlB,EAAqB;AAErB,QAAIh0E,CAAJ,EACEkyC,EADF,EAEEC,EAFF,EAIEl1C,CAJF,EAMEq+E,MANF,EAOEC,OAPF,EAQEC,KARF,EASEC,QATF,EAUEC,WAVF,EAWEC,YAXF,EAYEC,UAZF,EAaEC,aAbF,EAcEC,MAdF,EAeEC,MAfF,EAgBEC,UAhBF,EAiBEC,UAjBF,EAkBEC,SAlBF,EAmBEC,QAnBF,EAoBEC,WApBF,EAqBE9B,SArBF,EAsBE+B,eAtBF;AAwBAr8E,KAAC,GAAG+H,MAAM,CAACvX,CAAD,CAAV;AACA0hD,MAAE,GAAGvgD,CAAC,CAACnB,CAAD,CAAN;AACA2hD,MAAE,GAAGjrC,CAAC,CAAC1W,CAAD,CAAN;AACA4rF,eAAW,GAAGt6E,OAAO,CAACtR,CAAD,CAArB;;AAEA,SAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+2E,WAAhB,EAA6B/2E,CAAC,EAA9B,EAAkC;AAChC,UAAIu2E,oBAAoB,CAACv2E,CAAD,CAApB,CAAwBiT,OAAxB,CAAgCksE,WAAhC,MAAiD,CAAC,CAAtD,EAAyD;AACvD;AACA;AACD;;AAEDd,YAAM,GAAG9I,SAAS,CAACv1E,CAAD,CAAT,GAAe+C,CAAxB;AACAu7E,aAAO,GAAG/I,SAAS,CAACv1E,CAAD,CAAT,GAAey1E,aAAa,CAACz1E,CAAD,CAA5B,GAAkC+C,CAA5C;AACAw7E,WAAK,GAAG/I,SAAS,CAACx1E,CAAD,CAAT,GAAe01E,cAAc,CAAC11E,CAAD,CAA7B,GAAmC+C,CAA3C;AACAy7E,cAAQ,GAAGhJ,SAAS,CAACx1E,CAAD,CAAT,GAAe+C,CAA1B;AAEA07E,iBAAW,GAAGjI,aAAa,CAACx2E,CAAD,CAAb,GAAmB+C,CAAjC;AACA27E,kBAAY,GAAGlI,aAAa,CAACx2E,CAAD,CAAb,GAAmBy1E,aAAa,CAACz1E,CAAD,CAAhC,GAAsC+C,CAArD;AACA47E,gBAAU,GAAGlI,aAAa,CAACz2E,CAAD,CAAb,GAAmB01E,cAAc,CAAC11E,CAAD,CAAjC,GAAuC+C,CAApD;AACA67E,mBAAa,GAAGnI,aAAa,CAACz2E,CAAD,CAAb,GAAmB+C,CAAnC,CAdgC,CAgBhC;;AACAq8E,qBAAe,GAAG,CAAlB,CAjBgC,CAkBhC;;AACA,UAAInqC,EAAE,GAAGopC,MAAL,IAAeppC,EAAE,GAAGqpC,OAApB,IAA+BppC,EAAE,GAAGspC,QAApC,IAAgDtpC,EAAE,GAAGqpC,KAAzD,EAAgE;AAC9D,YAAIL,MAAM,IAAIO,WAAd,EAA2B;AACzB/pF,WAAC,CAACnB,CAAD,CAAD,GAAO8qF,MAAM,IAAIppC,EAAE,GAAGopC,MAAT,CAAb;AACAe,yBAAe,GAAG,CAAlB,CAFyB,CAEJ;AACtB,SAHD,MAGO,IAAIlB,MAAM,IAAIQ,YAAd,EAA4B;AACjChqF,WAAC,CAACnB,CAAD,CAAD,GAAO+qF,OAAO,IAAIA,OAAO,GAAGrpC,EAAd,CAAd;AACAmqC,yBAAe,GAAG,CAAlB,CAFiC,CAEZ;AACtB,SAHM,MAGA,IAAIjB,MAAM,IAAIS,aAAd,EAA6B;AAClC30E,WAAC,CAAC1W,CAAD,CAAD,GAAOirF,QAAQ,IAAItpC,EAAE,GAAGspC,QAAT,CAAf;AACAY,yBAAe,GAAG,CAAC,CAAnB,CAFkC,CAEZ;AACvB,SAHM,MAGA,IAAIjB,MAAM,IAAIQ,UAAd,EAA0B;AAC/B10E,WAAC,CAAC1W,CAAD,CAAD,GAAOgrF,KAAK,IAAIA,KAAK,GAAGrpC,EAAZ,CAAZ;AACAkqC,yBAAe,GAAG,CAAC,CAAnB,CAF+B,CAET;AACvB;AACF;;AAEDF,cAAQ,GAAGlJ,YAAY,CAACh2E,CAAD,CAAvB;;AAEA,UAAIo/E,eAAe,KAAK,CAAxB,EAA2B;AACzB,YAAIF,QAAQ,KAAKh+E,QAAjB,EAA2B;AACzB;AACA+9E,mBAAS,GAAG/zE,IAAI,CAAC3X,CAAD,CAAhB;AACA8pF,mBAAS,GAAG6B,QAAQ,GAAGD,SAAvB;;AACA,cAAIG,eAAe,GAAG,CAAtB,EAAyB;AACvBP,kBAAM,GAAG30E,EAAE,CAAC3W,CAAD,CAAX;AACAwrF,sBAAU,GAAGpJ,UAAU,CAAC31E,CAAD,CAAvB;AAEAkK,cAAE,CAAC3W,CAAD,CAAF,GAAQ,CAACsrF,MAAM,IAAII,SAAS,GAAGC,QAAhB,CAAN,GAAmC,IAAIA,QAAJ,GAAeH,UAAnD,IAAkE1B,SAA1E;AACA1H,sBAAU,CAAC31E,CAAD,CAAV,GAAgB,CAAC++E,UAAU,IAAIG,QAAQ,GAAGD,SAAf,CAAV,GAAuC,IAAIl0E,EAAE,CAACxX,CAAD,CAA9C,IAAsD8pF,SAAtE;AACD,WAND,MAMO;AACLyB,kBAAM,GAAG30E,EAAE,CAAC5W,CAAD,CAAX;AACAyrF,sBAAU,GAAGpJ,UAAU,CAAC51E,CAAD,CAAvB;AAEAmK,cAAE,CAAC5W,CAAD,CAAF,GAAQ,CAACurF,MAAM,IAAIG,SAAS,GAAGC,QAAhB,CAAN,GAAmC,IAAIA,QAAJ,GAAeF,UAAnD,IAAkE3B,SAA1E;AACAzH,sBAAU,CAAC51E,CAAD,CAAV,GAAgB,CAACg/E,UAAU,IAAIE,QAAQ,GAAGD,SAAf,CAAV,GAAuC,IAAIj0E,EAAE,CAACzX,CAAD,CAA9C,IAAsD8pF,SAAtE;AACD;AACF,SAjBD,MAiBO;AACL;AACA,cAAI+B,eAAe,GAAG,CAAtB,EAAyB;AACvBl1E,cAAE,CAAC3W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,WAFD,MAEO;AACL4W,cAAE,CAAC5W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD;AACF;;AAED,YAAI6qF,cAAJ,EAAoB;AAClB;AACA,cAAInI,iBAAiB,CAACj2E,CAAD,CAAjB,IAAwBo/E,eAAe,KAAK,CAAhD,EAAmD;AACjD;AACA1I,+BAAmB,CAAC12E,CAAD,CAAnB,IAA0BkL,IAAI,CAAC3X,CAAD,CAAJ,IAAW,CAACsrF,MAAM,GAAGA,MAAH,GAAY,CAAC30E,EAAE,CAAC3W,CAAD,CAAtB,IAA6B2W,EAAE,CAAC3W,CAAD,CAA1C,CAA1B;AACD,WAHD,MAGO,IAAI4iF,iBAAiB,CAACn2E,CAAD,CAAjB,IAAwBo/E,eAAe,KAAK,CAAhD,EAAmD;AACxD;AACAxI,+BAAmB,CAAC52E,CAAD,CAAnB,IAA0BkL,IAAI,CAAC3X,CAAD,CAAJ,IAAW2W,EAAE,CAAC3W,CAAD,CAAF,IAASsrF,MAAM,GAAGA,MAAH,GAAY,CAAC30E,EAAE,CAAC3W,CAAD,CAA9B,CAAX,CAA1B;AACD,WAHM,MAGA,IAAI6iF,kBAAkB,CAACp2E,CAAD,CAAlB,IAAyBo/E,eAAe,KAAK,CAAC,CAAlD,EAAqD;AAC1D;AACAvI,+BAAmB,CAAC72E,CAAD,CAAnB,IAA0BkL,IAAI,CAAC3X,CAAD,CAAJ,IAAW,CAACurF,MAAM,GAAGA,MAAH,GAAY,CAAC30E,EAAE,CAAC5W,CAAD,CAAtB,IAA6B4W,EAAE,CAAC5W,CAAD,CAA1C,CAA1B;AACD,WAHM,MAGA,IAAI2iF,kBAAkB,CAACl2E,CAAD,CAAlB,IAAyBo/E,eAAe,KAAK,CAAC,CAAlD,EAAqD;AAC1D;AACAzI,+BAAmB,CAAC32E,CAAD,CAAnB,IAA0BkL,IAAI,CAAC3X,CAAD,CAAJ,IAAW4W,EAAE,CAAC5W,CAAD,CAAF,IAASurF,MAAM,GAAGA,MAAH,GAAY,CAAC30E,EAAE,CAAC5W,CAAD,CAA9B,CAAX,CAA1B;AACD;AACF;AAEF;AACF;AACF,GA7mCH;AAAA,MA+mCE8rF,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAS9rF,CAAT,EAAY2qF,MAAZ,EAAoBC,MAApB,EAA4B;AACpD;AACA,QAAIrG,QAAQ,GAAG,CAAf,EAAkB;AAElB,QAAI/0E,CAAJ,EACEkyC,EADF,EAEEC,EAFF,EAIEl1C,CAJF,EAMEs/E,aANF,EAOEC,cAPF,EAQEC,YARF,EASEC,eATF,EAUEC,cAVF,EAWEC,eAXF,EAYEC,aAZF,EAaEC,gBAbF,EAeEC,aAfF,EAeiBC,aAfjB,EAiBEC,EAjBF,EAiBMC,EAjBN,EAkBEC,OAlBF,EAkBWC,OAlBX,EAmBEC,EAnBF,EAmBMC,EAnBN,EAqBE3tF,CArBF,EAqBK+B,CArBL,EAqBQokD,CArBR,EAsBEynC,GAtBF,EAsBOC,GAtBP,EAsBYC,GAtBZ,EAuBEC,GAvBF,EAuBOC,GAvBP,EAuBYC,GAvBZ,EAwBEC,GAxBF,EAwBOC,GAxBP,EAyBEC,EAzBF,EAyBM55D,EAzBN,EA0BE65D,EA1BF,EA0BMC,EA1BN,EA0BUC,EA1BV;AA4BAl+E,KAAC,GAAG+H,MAAM,CAACvX,CAAD,CAAV;AACA0hD,MAAE,GAAGvgD,CAAC,CAACnB,CAAD,CAAN;AACA2hD,MAAE,GAAGjrC,CAAC,CAAC1W,CAAD,CAAN;;AAGA,SAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG83E,QAAhB,EAA0B93E,CAAC,EAA3B,EAA+B;AAE7B,UAAI,CAACq3E,UAAU,CAACr3E,CAAD,CAAf,EACE;;AAEF,UAAIg3E,SAAS,CAACh3E,CAAD,CAAT,KAAiB,WAArB,EAAkC;AAEhC0/E,sBAAc,GAAGzI,MAAM,CAACj3E,CAAD,CAAN,GAAY+C,CAA7B;AACA48E,uBAAe,GAAG1I,MAAM,CAACj3E,CAAD,CAAN,GAAYm3E,UAAU,CAACn3E,CAAD,CAAtB,GAA4B+C,CAA9C;AACA68E,qBAAa,GAAG1I,MAAM,CAACl3E,CAAD,CAAN,GAAYo3E,WAAW,CAACp3E,CAAD,CAAvB,GAA6B+C,CAA7C;AACA88E,wBAAgB,GAAG3I,MAAM,CAACl3E,CAAD,CAAN,GAAY+C,CAA/B;AAEAu8E,qBAAa,GAAGrI,MAAM,CAACj3E,CAAD,CAAN,GAAY+C,CAA5B;AACAw8E,sBAAc,GAAGtI,MAAM,CAACj3E,CAAD,CAAN,GAAYm3E,UAAU,CAACn3E,CAAD,CAAtB,GAA4B+C,CAA7C;AACAy8E,oBAAY,GAAGtI,MAAM,CAACl3E,CAAD,CAAN,GAAYo3E,WAAW,CAACp3E,CAAD,CAAvB,GAA6B+C,CAA5C;AACA08E,uBAAe,GAAGvI,MAAM,CAACl3E,CAAD,CAAN,GAAY+C,CAA9B,CAVgC,CAYhC;;AACA,YAAIkyC,EAAE,GAAGyqC,cAAL,IAAuBzqC,EAAE,GAAG0qC,eAA5B,IAA+CzqC,EAAE,GAAG2qC,gBAApD,IAAwE3qC,EAAE,GAAG0qC,aAAjF,EAAgG;AAC9F,cAAI1B,MAAM,IAAIwB,cAAd,EAA8B;AAC5BhrF,aAAC,CAACnB,CAAD,CAAD,GAAOmsF,cAAc,IAAIzqC,EAAE,GAAGyqC,cAAT,CAArB;AACAx1E,cAAE,CAAC3W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,WAHD,MAGO,IAAI2qF,MAAM,IAAIyB,eAAd,EAA+B;AACpCjrF,aAAC,CAACnB,CAAD,CAAD,GAAOosF,eAAe,IAAIA,eAAe,GAAG1qC,EAAtB,CAAtB;AACA/qC,cAAE,CAAC3W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,WAHM,MAGA,IAAI4qF,MAAM,IAAI0B,gBAAd,EAAgC;AACrC51E,aAAC,CAAC1W,CAAD,CAAD,GAAOssF,gBAAgB,IAAI3qC,EAAE,GAAG2qC,gBAAT,CAAvB;AACA11E,cAAE,CAAC5W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,WAHM,MAGA,IAAI4qF,MAAM,IAAIyB,aAAd,EAA6B;AAClC31E,aAAC,CAAC1W,CAAD,CAAD,GAAOqsF,aAAa,IAAIA,aAAa,GAAG1qC,EAApB,CAApB;AACA/qC,cAAE,CAAC5W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD;AACF,SA3B+B,CA4BhC;;;AACA,YAAI2qF,MAAM,GAAGoB,aAAT,IAA0BpB,MAAM,GAAGqB,cAAnC,IAAqDpB,MAAM,GAAGsB,eAA9D,IAAiFtB,MAAM,GAAGqB,YAA9F,EAA4G;AAC1G,cAAIvqC,EAAE,IAAIqqC,aAAV,EAAyB;AACvB5qF,aAAC,CAACnB,CAAD,CAAD,GAAO+rF,aAAa,IAAIA,aAAa,GAAGrqC,EAApB,CAApB;AACA/qC,cAAE,CAAC3W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,WAHD,MAGO,IAAI0hD,EAAE,IAAIsqC,cAAV,EAA0B;AAC/B7qF,aAAC,CAACnB,CAAD,CAAD,GAAOgsF,cAAc,IAAItqC,EAAE,GAAGsqC,cAAT,CAArB;AACAr1E,cAAE,CAAC3W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD;;AACD,cAAI2hD,EAAE,IAAIuqC,eAAV,EAA2B;AACzBx1E,aAAC,CAAC1W,CAAD,CAAD,GAAOksF,eAAe,IAAIA,eAAe,GAAGvqC,EAAtB,CAAtB;AACA/qC,cAAE,CAAC5W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD,WAHD,MAGO,IAAI2hD,EAAE,IAAIsqC,YAAV,EAAwB;AAC7Bv1E,aAAC,CAAC1W,CAAD,CAAD,GAAOisF,YAAY,IAAItqC,EAAE,GAAGsqC,YAAT,CAAnB;AACAr1E,cAAE,CAAC5W,CAAD,CAAF,IAAS,CAAC,CAAV;AACD;AACF;AACF,OA7CD,MA6CO,IAAIyjF,SAAS,CAACh3E,CAAD,CAAT,KAAiB,SAArB,EAAgC;AACrCtN,SAAC,GAAGykF,UAAU,CAACn3E,CAAD,CAAV,GAAgB,CAApB;AACAvL,SAAC,GAAG2iF,WAAW,CAACp3E,CAAD,CAAX,GAAiB,CAArB,CAFqC,CAGrC;AACA;;AACA8/E,qBAAa,GAAG7I,MAAM,CAACj3E,CAAD,CAAN,GAAYtN,CAA5B;AACAqtF,qBAAa,GAAG7I,MAAM,CAACl3E,CAAD,CAAN,GAAYvL,CAA5B;AACAurF,UAAE,GAAG,CAAC/qC,EAAE,GAAG6qC,aAAN,KAAwBptF,CAAC,GAAGqQ,CAA5B,CAAL;AACAk9E,UAAE,GAAG,CAAC/qC,EAAE,GAAG6qC,aAAN,KAAwBtrF,CAAC,GAAGsO,CAA5B,CAAL;AACAi9E,UAAE,IAAIA,EAAN;AACAC,UAAE,IAAIA,EAAN;AACAC,eAAO,GAAG,CAAChC,MAAM,GAAG4B,aAAV,KAA4BptF,CAAC,GAAGqQ,CAAhC,CAAV;AACAo9E,eAAO,GAAG,CAAChC,MAAM,GAAG4B,aAAV,KAA4BtrF,CAAC,GAAGsO,CAAhC,CAAV;AACAm9E,eAAO,IAAIA,OAAX;AACAC,eAAO,IAAIA,OAAX;AACAC,UAAE,GAAG,CAAC1tF,CAAC,GAAGqQ,CAAL,KAAWrQ,CAAC,GAAGqQ,CAAf,CAAL;AACAs9E,UAAE,GAAG,CAAC5rF,CAAC,GAAGsO,CAAL,KAAWtO,CAAC,GAAGsO,CAAf,CAAL;AACAq9E,UAAE,IAAIA,EAAN;AACAC,UAAE,IAAIA,EAAN;;AACA,YAAIL,EAAE,GAAGC,EAAL,IAAW,CAAX,IAAgBC,OAAO,GAAGC,OAAV,GAAoB,CAApC,IAAyCH,EAAE,GAAGI,EAAL,GAAUH,EAAE,GAAGI,EAAf,IAAqB,CAArB,IAA0BH,OAAO,GAAGE,EAAV,GAAeD,OAAO,GAAGE,EAAzB,GAA8B,CAArG,EAAwG;AAEtG;AACA,cAAIlJ,UAAU,CAACn3E,CAAD,CAAV,GAAgBo3E,WAAW,CAACp3E,CAAD,CAA/B,EAAoC;AAClC64C,aAAC,GAAGlkD,IAAI,CAAC2O,IAAL,CAAU5Q,CAAC,GAAGA,CAAJ,GAAQ+B,CAAC,GAAGA,CAAtB,CAAJ;AACA6rF,eAAG,GAAGrJ,MAAM,CAACj3E,CAAD,CAAN,GAAYtN,CAAZ,GAAgBmmD,CAAtB;AACA4nC,eAAG,GAAGxJ,MAAM,CAACj3E,CAAD,CAAN,GAAYtN,CAAZ,GAAgBmmD,CAAtB;AACA0nC,eAAG,GAAGG,GAAG,GAAGxJ,MAAM,CAACl3E,CAAD,CAAN,GAAYvL,CAAxB;AACD,WALD,MAKO;AACLokD,aAAC,GAAGlkD,IAAI,CAAC2O,IAAL,CAAU7O,CAAC,GAAGA,CAAJ,GAAQ/B,CAAC,GAAGA,CAAtB,CAAJ;AACA4tF,eAAG,GAAGG,GAAG,GAAGxJ,MAAM,CAACj3E,CAAD,CAAN,GAAYtN,CAAxB;AACA6tF,eAAG,GAAGrJ,MAAM,CAACl3E,CAAD,CAAN,GAAYvL,CAAZ,GAAgBokD,CAAtB;AACA6nC,eAAG,GAAGxJ,MAAM,CAACl3E,CAAD,CAAN,GAAYvL,CAAZ,GAAgBokD,CAAtB;AACD,WAbqG,CAgBtG;AACA;;;AACAioC,YAAE,GAAG,CAAC7rC,EAAE,GAAGipC,MAAN,IAAgB,CAArB;AACAh3D,YAAE,GAAG,CAACguB,EAAE,GAAGipC,MAAN,IAAgB,CAArB,CAnBsG,CAqBtG;AACA;;AACAqC,aAAG,GAAG7rF,IAAI,CAAC2O,IAAL,CAAUgvE,SAAS,CAACgO,GAAG,GAAGQ,EAAP,EAAWP,GAAG,GAAGr5D,EAAjB,CAAnB,CAAN;AACAy5D,aAAG,GAAGhsF,IAAI,CAAC2O,IAAL,CAAUgvE,SAAS,CAACmO,GAAG,GAAGK,EAAP,EAAWL,GAAG,GAAGK,EAAjB,CAAnB,CAAN,CAxBsG,CA0BtG;;AACAC,YAAE,GAAGD,EAAE,GAAG,CAACR,GAAG,GAAGK,GAAN,GAAYF,GAAG,GAAGD,GAAnB,KAA2BA,GAAG,GAAGG,GAAjC,CAAV;AACAK,YAAE,GAAG95D,EAAE,GAAG,CAACq5D,GAAG,GAAGI,GAAN,GAAYD,GAAG,GAAGF,GAAnB,KAA2BA,GAAG,GAAGG,GAAjC,CAAV,CA5BsG,CA8BtG;;AACAM,YAAE,GAAGtsF,IAAI,CAAC2O,IAAL,CAAUgvE,SAAS,CAACyO,EAAD,EAAKC,EAAL,CAAnB,CAAL;AACAD,YAAE,IAAIE,EAAN;AACAD,YAAE,IAAIC,EAAN,CAjCsG,CAmCtG;;AACAvsF,WAAC,CAACnB,CAAD,CAAD,GAAQutF,EAAE,GAAG5C,MAAN,GAAgB,KAAK,CAAC4C,EAAE,GAAG5C,MAAN,IAAgB6C,EAAhB,GAAqB,CAAC75D,EAAE,GAAGi3D,MAAN,IAAgB6C,EAA1C,IAAgDD,EAAhE,GAAqED,EAA5E;AACA72E,WAAC,CAAC1W,CAAD,CAAD,GAAQ2zB,EAAE,GAAGi3D,MAAN,GAAgB,KAAK,CAAC2C,EAAE,GAAG5C,MAAN,IAAgB6C,EAAhB,GAAqB,CAAC75D,EAAE,GAAGi3D,MAAN,IAAgB6C,EAA1C,IAAgDA,EAAhE,GAAqE95D,EAA5E,CArCsG,CAuCtG;;AACA05D,aAAG,GAAG12E,EAAE,CAAC3W,CAAD,CAAR;AACAstF,aAAG,GAAG12E,EAAE,CAAC5W,CAAD,CAAR;AACA2W,YAAE,CAAC3W,CAAD,CAAF,GAASqtF,GAAG,GAAG,KAAKA,GAAG,GAAGG,EAAN,GAAWF,GAAG,GAAGG,EAAtB,IAA4BD,EAA3C;AACA52E,YAAE,CAAC5W,CAAD,CAAF,GAASstF,GAAG,GAAG,KAAKD,GAAG,GAAGG,EAAN,GAAWF,GAAG,GAAGG,EAAtB,IAA4BA,EAA3C;AACD;AACF;AACF;AACF,GAxwCH;AAAA,MA0wCEE,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAS3tF,CAAT,EAAY2qF,MAAZ,EAAoBC,MAApB,EAA4B;AACnD;AACA,QAAIvF,OAAO,GAAG,CAAd,EAAiB;AAEjB,QAAI71E,CAAJ,EACEo+E,EADF,EAEEC,aAFF,EAGEC,aAHF,EAIEC,aAJF,EAKEC,aALF,EAMET,EANF,EAMM55D,EANN,EAOE65D,EAPF,EAOMC,EAPN,EAOUC,EAPV,EAQEL,GARF,EAQOC,GARP,EASE7gF,CATF,EAUEi1C,EAVF,EAUMC,EAVN;AAYAnyC,KAAC,GAAG+H,MAAM,CAACvX,CAAD,CAAV;AACA0hD,MAAE,GAAGvgD,CAAC,CAACnB,CAAD,CAAN;AACA2hD,MAAE,GAAGjrC,CAAC,CAAC1W,CAAD,CAAN;;AAEA,SAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG44E,OAAhB,EAAyB54E,CAAC,EAA1B,EAA8B;AAC5B,UAAI,CAACq4E,SAAS,CAACr4E,CAAD,CAAd,EACE,SAF0B,CAI5B;;AACAshF,mBAAa,GAAGpP,KAAK,CAACgM,MAAM,GAAGnG,MAAM,CAAC/3E,CAAD,CAAhB,EAAqBm+E,MAAM,GAAGnG,MAAM,CAACh4E,CAAD,CAApC,EAAyCi1C,EAAE,GAAG8iC,MAAM,CAAC/3E,CAAD,CAApD,EAAyDk1C,EAAE,GAAG8iC,MAAM,CAACh4E,CAAD,CAApE,CAArB;AACAuhF,mBAAa,GAAGrP,KAAK,CAACgM,MAAM,GAAGjG,MAAM,CAACj4E,CAAD,CAAhB,EAAqBm+E,MAAM,GAAGjG,MAAM,CAACl4E,CAAD,CAApC,EAAyCi1C,EAAE,GAAGgjC,MAAM,CAACj4E,CAAD,CAApD,EAAyDk1C,EAAE,GAAGgjC,MAAM,CAACl4E,CAAD,CAApE,CAArB;;AACA,UAAIshF,aAAa,GAAGC,aAAhB,GAAgC,CAApC,EAAuC;AACrCJ,UAAE,GAAGxsF,IAAI,CAAC2O,IAAL,CAAUgvE,SAAS,CAACyF,MAAM,CAAC/3E,CAAD,CAAN,GAAYi4E,MAAM,CAACj4E,CAAD,CAAnB,EAAwBg4E,MAAM,CAACh4E,CAAD,CAAN,GAAYk4E,MAAM,CAACl4E,CAAD,CAA1C,CAAnB,CAAL;AACAohF,qBAAa,GAAGlP,KAAK,CAAC+F,MAAM,CAACj4E,CAAD,CAAN,GAAYk+E,MAAb,EAAqBhG,MAAM,CAACl4E,CAAD,CAAN,GAAYm+E,MAAjC,EAAyCpG,MAAM,CAAC/3E,CAAD,CAAN,GAAYk+E,MAArD,EAA6DlG,MAAM,CAACh4E,CAAD,CAAN,GAAYm+E,MAAzE,CAArB;AACAkD,qBAAa,GAAGnP,KAAK,CAAC+F,MAAM,CAACj4E,CAAD,CAAN,GAAYi1C,EAAb,EAAiBijC,MAAM,CAACl4E,CAAD,CAAN,GAAYk1C,EAA7B,EAAiC6iC,MAAM,CAAC/3E,CAAD,CAAN,GAAYi1C,EAA7C,EAAiD+iC,MAAM,CAACh4E,CAAD,CAAN,GAAYk1C,EAA7D,CAArB;;AACA,YAAI,CAACksC,aAAa,GAAG,CAAhB,IAAqBC,aAAa,GAAG,CAACt+E,CAAD,GAAKo+E,EAA1C,IAAgDC,aAAa,GAAG,CAAhB,IAAqBC,aAAa,GAAGt+E,CAAC,GAAGo+E,EAA1F,KACFC,aAAa,GAAGE,aAAhB,GAAgC,CADlC,EACqC;AACnC;AAEA;AACA;AACAR,YAAE,GAAG,CAAC7rC,EAAE,GAAGipC,MAAN,IAAgB,CAArB;AACAh3D,YAAE,GAAG,CAACguB,EAAE,GAAGipC,MAAN,IAAgB,CAArB,CANmC,CAQnC;;AACA4C,YAAE,GAAG7I,MAAM,CAACl4E,CAAD,CAAN,GAAYg4E,MAAM,CAACh4E,CAAD,CAAvB;AACAghF,YAAE,GAAG,EAAE/I,MAAM,CAACj4E,CAAD,CAAN,GAAY+3E,MAAM,CAAC/3E,CAAD,CAApB,CAAL,CAVmC,CAYnC;;AACAihF,YAAE,GAAGtsF,IAAI,CAAC2O,IAAL,CAAUgvE,SAAS,CAACyO,EAAD,EAAKC,EAAL,CAAnB,CAAL;AACAD,YAAE,IAAIE,EAAN;AACAD,YAAE,IAAIC,EAAN,CAfmC,CAiBnC;;AACAvsF,WAAC,CAACnB,CAAD,CAAD,GAAQutF,EAAE,GAAG5C,MAAN,GAAgB,KAAK,CAAC4C,EAAE,GAAG5C,MAAN,IAAgB6C,EAAhB,GAAqB,CAAC75D,EAAE,GAAGi3D,MAAN,IAAgB6C,EAA1C,IAAgDD,EAAhE,GAAqED,EAA5E;AACA72E,WAAC,CAAC1W,CAAD,CAAD,GAAQ2zB,EAAE,GAAGi3D,MAAN,GAAgB,KAAK,CAAC2C,EAAE,GAAG5C,MAAN,IAAgB6C,EAAhB,GAAqB,CAAC75D,EAAE,GAAGi3D,MAAN,IAAgB6C,EAA1C,IAAgDA,EAAhE,GAAqE95D,EAA5E,CAnBmC,CAqBnC;;AACA05D,aAAG,GAAG12E,EAAE,CAAC3W,CAAD,CAAR;AACAstF,aAAG,GAAG12E,EAAE,CAAC5W,CAAD,CAAR;AACA2W,YAAE,CAAC3W,CAAD,CAAF,GAASqtF,GAAG,GAAG,KAAKA,GAAG,GAAGG,EAAN,GAAWF,GAAG,GAAGG,EAAtB,IAA4BD,EAA3C;AACA52E,YAAE,CAAC5W,CAAD,CAAF,GAASstF,GAAG,GAAG,KAAKD,GAAG,GAAGG,EAAN,GAAWF,GAAG,GAAGG,EAAtB,IAA4BA,EAA3C;AACD;AACF;AACF;AACF,GAv0CH;AAAA,MAy0CE;AACA;AACA;AAEA;AACAQ,wBAAsB,GAAG,SAAzBA,sBAAyB,CAASjuF,CAAT,EAAYyM,CAAZ,EAAe;AACtC,QAAIyhF,GAAG,GAAG58E,OAAO,CAACtR,CAAD,CAAjB;AAAA,QACEmuF,GAAG,GAAG78E,OAAO,CAAC7E,CAAD,CADf;AAAA,QAEE8uC,EAAE,GAAGp6C,CAAC,CAACsL,CAAD,CAAD,GAAOtL,CAAC,CAACnB,CAAD,CAFf;AAAA,QAGEw7C,EAAE,GAAG9kC,CAAC,CAACjK,CAAD,CAAD,GAAOiK,CAAC,CAAC1W,CAAD,CAHf;AAAA,QAIEo5E,GAAG,GAAG2F,SAAS,CAACxjC,EAAD,EAAKC,EAAL,CAJjB;AAAA,QAKE4yC,MALF;AAAA,QAKUC,EALV;AAAA,QAKcC,EALd;;AAOA,QAAIhI,kBAAkB,IAAIlN,GAAG,GAAG+N,yBAAyB,CAAC+G,GAAD,CAAzB,CAA+BC,GAA/B,CAAhC,EAAqE;AACnEntC,kBAAY,CAAC08B,aAAb,CAA2B19E,CAA3B,EAA8ByM,CAA9B;AACD,KAVqC,CAYtC;AACA;AACA;;;AACA,QAAI8hF,gBAAgB,IAAIA,gBAAgB,CAACvuF,CAAD,CAApC,IAA2CuuF,gBAAgB,CAACvuF,CAAD,CAAhB,CAAoByM,CAApB,CAA/C,EAAuE;;AAEvE,QAAI2sE,GAAG,GAAG6N,oBAAoB,CAACiH,GAAD,CAApB,CAA0BC,GAA1B,CAAV,EAA0C;AACxCC,YAAM,GAAGhH,YAAY,CAAC8G,GAAD,CAAZ,CAAkBC,GAAlB,EAAuB9U,oCAAvB,CAA4DD,GAA5D,CAAT;AACAiV,QAAE,GAAGD,MAAM,GAAG7yC,EAAd;AACA+yC,QAAE,GAAGF,MAAM,GAAG5yC,EAAd;AACA3kC,QAAE,CAAC7W,CAAD,CAAF,IAASquF,EAAT;AACAv3E,QAAE,CAAC9W,CAAD,CAAF,IAASsuF,EAAT;AACAz3E,QAAE,CAACpK,CAAD,CAAF,IAAS4hF,EAAT;AACAv3E,QAAE,CAACrK,CAAD,CAAF,IAAS6hF,EAAT;AACD;AACF,GAx2CH;AAAA,MA02CEE,sBAAsB,GAAG,SAAzBA,sBAAyB,GAAW;AAClC;AACA,QAAI,CAAC3O,2BAAL,EAAiC;;AAEjC,QAAIyG,kBAAJ,EAAwB;AACtBvhF,uCAAO,CAACkK,IAAR,CAAa,YAAb;AACAw/E,8BAAwB;AACxB1pF,uCAAO,CAACoK,OAAR,CAAgB,YAAhB;AACD,KAJD,MAIO;AACLpK,uCAAO,CAACkK,IAAR,CAAa,eAAb;AACAy/E,kCAA4B;AAC5B3pF,uCAAO,CAACoK,OAAR,CAAgB,eAAhB;AACD;AACF,GAv3CH;AAAA,MAy3CEs/E,wBAAwB,GAAG,SAA3BA,wBAA2B,GAAW;AACpC,QAAI/+B,IAAI,GAAG22B,QAAQ,CAAC1J,UAAT,EAAX;AAAA,QACEgS,IAAI,GAAGtI,QAAQ,CAACzJ,UAAT,EADT;AAAA,QAEE58E,CAFF;AAAA,QAEKyM,CAFL;AAAA,QAEQmiF,IAFR;AAAA,QAEcnS,OAFd;AAAA,QAEuBoS,KAFvB;AAAA,QAE8BC,KAF9B;AAAA,QAGE3vF,CAHF;AAAA,QAGK+B,CAHL;AAAA,QAGQo+C,QAHR;AAAA,QAGkByvC,QAHlB;AAAA,QAG4BC,QAH5B;AAAA,QAIE7gE,CAJF;AAAA,QAIK8gE,IAJL;AAAA,QAIWC,aAJX;;AAMA,SAAKlvF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0vD,IAAhB,EAAsB1vD,CAAC,EAAvB,EAA2B;AACzB4uF,UAAI,GAAG5uF,CAAC,GAAG2uF,IAAX;;AACA,WAAKliF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGkiF,IAAhB,EAAsBliF,CAAC,EAAvB,EAA2B;AACzBgwE,eAAO,GAAGmS,IAAI,GAAGniF,CAAjB;AAEAoiF,aAAK,GAAGxI,QAAQ,CAAC3J,OAAT,CAAiBD,OAAjB,CAAR;AACAyS,qBAAa,GAAG7I,QAAQ,CAACxJ,mBAAT,CAA6B78E,CAA7B,EAAgCyM,CAAhC,CAAhB;;AAEA,aAAKtN,CAAC,GAAG,CAAJ,EAAO4vF,QAAQ,GAAGF,KAAK,CAAC5uF,MAA7B,EAAqCd,CAAC,GAAG4vF,QAAzC,EAAmD5vF,CAAC,EAApD,EAAwD;AACtDmgD,kBAAQ,GAAGuvC,KAAK,CAAC1vF,CAAD,CAAhB,CADsD,CAGtD;;AACA,eAAK+B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG/B,CAAhB,EAAmB+B,CAAC,EAApB,EAAwB;AACtB+sF,kCAAsB,CAAC3uC,QAAD,EAAWuvC,KAAK,CAAC3tF,CAAD,CAAhB,CAAtB;AACD,WANqD,CAOtD;;;AACA,eAAKitB,CAAC,GAAG,CAAJ,EAAO8gE,IAAI,GAAGC,aAAa,CAACjvF,MAAjC,EAAyCkuB,CAAC,GAAG8gE,IAA7C,EAAmD9gE,CAAC,EAApD,EAAwD;AACtD2gE,iBAAK,GAAGI,aAAa,CAAC/gE,CAAD,CAArB;;AACA,iBAAKjtB,CAAC,GAAG,CAAJ,EAAO8tF,QAAQ,GAAGF,KAAK,CAAC7uF,MAA7B,EAAqCiB,CAAC,GAAG8tF,QAAzC,EAAmD9tF,CAAC,EAApD,EAAwD;AACtD+sF,oCAAsB,CAAC3uC,QAAD,EAAWwvC,KAAK,CAAC5tF,CAAD,CAAhB,CAAtB;AACD;AACF;AACF;AACF;AACF;AACF,GAz5CH;AAAA,MA25CEwtF,4BAA4B,GAAG,SAA/BA,4BAA+B,GAAW;AACxC,QAAIztC,KAAK,GAAGD,YAAY,CAACE,OAAb,EAAZ;AAAA,QACE5B,QADF;AAAA,QACYC,QADZ;AAAA,QACsBv/C,CADtB;AAAA,QACyBc,GADzB;;AAGA,SAAKw+C,QAAQ,GAAG,CAAhB,EAAmBA,QAAQ,GAAGtT,CAA9B,EAAiCsT,QAAQ,EAAzC,EAA6C;AAC3C,WAAKt/C,CAAC,GAAGghD,YAAY,CAACmB,cAAb,CAA4B7C,QAA5B,CAAJ,EAA2Cx+C,GAAG,GAAGkgD,YAAY,CAACoB,YAAb,CAA0B9C,QAA1B,CAAtD,EAA2Ft/C,CAAC,GAAGc,GAA/F,EAAoGd,CAAC,EAArG,EAAyG;AACvGu/C,gBAAQ,GAAG0B,KAAK,CAACjhD,CAAD,CAAhB;AACAiuF,8BAAsB,CAAC3uC,QAAD,EAAWC,QAAX,CAAtB;AACD;AACF;AACF,GAr6CH;AAAA,MAu6CE4vC,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAW;AACjC;AACA,QAAI,CAACzP,sBAAD,IAA0B0P,gBAAgB,CAACnvF,MAAjB,KAA4B,CAA1D,EAA6D;AAE7D,QAAID,CAAJ,EAAOyM,CAAP,EAAU3L,GAAV,EAAey6C,EAAf,EAAmBC,EAAnB,EAAuB49B,GAAvB,EAA4BgV,MAA5B,EAAoCC,EAApC,EAAwCC,EAAxC,EACEe,OADF,EACW/vC,QADX,EACqBC,QADrB,EAEE+vC,eAFF;;AAIA,SAAKtvF,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGsuF,gBAAgB,CAACnvF,MAAnC,EAA2CD,CAAC,GAAGc,GAA/C,EAAoDd,CAAC,EAArD,EAAyD;AACvDs/C,cAAQ,GAAG8vC,gBAAgB,CAACpvF,CAAD,CAA3B;AACAqvF,aAAO,GAAGt4E,MAAM,CAACuoC,QAAD,CAAhB;AACAgwC,qBAAe,GAAGf,gBAAgB,IAAIA,gBAAgB,CAACjvC,QAAD,CAAtD;;AACA,WAAK7yC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGzM,CAAhB,EAAmByM,CAAC,EAApB,EAAwB;AACtB8yC,gBAAQ,GAAG6vC,gBAAgB,CAAC3iF,CAAD,CAA3B;AACA,YAAI6iF,eAAe,IAAIA,eAAe,CAAC/vC,QAAD,CAAtC,EAAkD;AAElDhE,UAAE,GAAGp6C,CAAC,CAACo+C,QAAD,CAAD,GAAcp+C,CAAC,CAACm+C,QAAD,CAApB;AACA9D,UAAE,GAAG9kC,CAAC,CAAC6oC,QAAD,CAAD,GAAc7oC,CAAC,CAAC4oC,QAAD,CAApB;AACA85B,WAAG,GAAG79B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAArB;AAEA4yC,cAAM,GAAGlT,YAAO,CAAC7B,oCAAR,CAA6CD,GAA7C,EAAkDiW,OAAlD,EAA2Dt4E,MAAM,CAACwoC,QAAD,CAAjE,EACPogC,eADO,EACUntE,yBADV,CAAT;AAGA67E,UAAE,GAAGD,MAAM,GAAG7yC,EAAd;AACA+yC,UAAE,GAAGF,MAAM,GAAG5yC,EAAd;AACA3kC,UAAE,CAACyoC,QAAD,CAAF,IAAgB+uC,EAAhB;AACAv3E,UAAE,CAACwoC,QAAD,CAAF,IAAgBgvC,EAAhB;AACAz3E,UAAE,CAAC0oC,QAAD,CAAF,IAAgB8uC,EAAhB;AACAv3E,UAAE,CAACyoC,QAAD,CAAF,IAAgB+uC,EAAhB;AACD;AACF;AACF,GAt8CH;AAAA,MAw8CEiB,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAW;AAChC,QAAI,CAACz8E,SAAL,EAAgB;AAEhB,QAAI9S,CAAJ,EACE+5C,IADF;;AAGA,SAAK/5C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB+5C,UAAI,GAAGjnC,SAAS,GAAGkE,QAAQ,CAAChX,CAAD,CAA3B;AAEA6W,QAAE,CAAC7W,CAAD,CAAF,IAAU,CAAC2W,EAAE,CAAC3W,CAAD,CAAH,GAAS+5C,IAAnB;AACAjjC,QAAE,CAAC9W,CAAD,CAAF,IAAU,CAAC4W,EAAE,CAAC5W,CAAD,CAAH,GAAS+5C,IAAnB;AACD;AACF,GAp9CH;AAAA,MAs9CEy1C,sBAAsB,GAAG,SAAzBA,sBAAyB,GAAW;AAClC;AACA,QAAIvO,aAAa,GAAG,CAApB,EAAuB;AAEvB,QAAIjhF,CAAJ,EAAOyvF,EAAP,EAAWC,EAAX,EAAen0C,EAAf,EAAmBC,EAAnB,EACE49B,GADF,EACO5pE,CADP,EACU7C,CADV,EACagjF,EADb,EAEEvB,MAFF,EAEUC,EAFV,EAEcC,EAFd;;AAIA,SAAKtuF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGihF,aAAhB,EAA+BjhF,CAAC,EAAhC,EAAoC;AAClCyvF,QAAE,GAAG9O,oBAAoB,CAAC3gF,CAAD,CAAzB;AACA0vF,QAAE,GAAG9O,oBAAoB,CAAC5gF,CAAD,CAAzB;AAEAu7C,QAAE,GAAGp6C,CAAC,CAACuuF,EAAD,CAAD,GAAQvuF,CAAC,CAACsuF,EAAD,CAAd;AACAj0C,QAAE,GAAG9kC,CAAC,CAACg5E,EAAD,CAAD,GAAQh5E,CAAC,CAAC+4E,EAAD,CAAd;AACArW,SAAG,GAAG79B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAArB;AACAhsC,OAAC,GAAGpO,IAAI,CAAC2O,IAAL,CAAUqpE,GAAV,CAAJ,CAPkC,CASlC;;AACAzsE,OAAC,GAAGm0E,kBAAkB,CAAC9gF,CAAD,CAAtB,CAVkC,CAYlC;;AACA2vF,QAAE,GAAG9O,gBAAgB,CAAC7gF,CAAD,CAArB,CAbkC,CAelC;;AACAouF,YAAM,GAAGpwE,4BAAS,CAACvX,OAAV,CAAkBkG,CAAC,IAAI6C,CAAC,GAAGmgF,EAAR,CAAnB,EAAgC;AACvCznF,YAAI,EAAE3B,SAAI,CAACwB,SAD4B;AAEvCI,UAAE,EAAE5B,SAAI,CAACsB;AAF8B,OAAhC,IAGJ2H,CAHL;AAKA6+E,QAAE,GAAGD,MAAM,GAAG7yC,EAAd;AACA+yC,QAAE,GAAGF,MAAM,GAAG5yC,EAAd;AAEA3kC,QAAE,CAAC44E,EAAD,CAAF,IAAUpB,EAAV;AACAv3E,QAAE,CAAC24E,EAAD,CAAF,IAAUnB,EAAV;AACAz3E,QAAE,CAAC64E,EAAD,CAAF,IAAUrB,EAAV;AACAv3E,QAAE,CAAC44E,EAAD,CAAF,IAAUpB,EAAV;AACD;AACF,GA3/CH;AAAA,MA6/CEsB,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAW;AACnC;AACA,QAAI7N,cAAc,GAAG,CAArB,EAAwB;AAExB,QAAI/hF,CAAJ,EAAOyvF,EAAP,EAAWC,EAAX,EAAeG,EAAf,EACEC,IADF,EACQC,IADR,EACcC,IADd,EACoBC,IADpB,EAC0BC,UAD1B,EACsCC,UADtC,EACkDC,GADlD,EACuDC,GADvD,EAEE1jF,CAFF,EAEKyN,KAFL,EAEY1K,KAFZ,EAEmB4gF,QAFnB,EAE6BC,QAF7B,EAGEC,YAHF,EAGgBC,YAHhB,EAG8BC,YAH9B,EAG4CC,YAH5C,EAIEC,eAJF,EAImBhC,IAJnB;;AAMA,SAAK5uF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+hF,cAAhB,EAAgC/hF,CAAC,EAAjC,EAAqC;AACnCyvF,QAAE,GAAGhO,qBAAqB,CAACzhF,CAAD,CAA1B;AACA0vF,QAAE,GAAGhO,qBAAqB,CAAC1hF,CAAD,CAA1B;AACA6vF,QAAE,GAAGlO,qBAAqB,CAAC3hF,CAAD,CAA1B,CAHmC,CAKnC;;AACAoa,WAAK,GAAGwnE,gBAAgB,CAAC5hF,CAAD,CAAxB,CANmC,CAQnC;;AACA2M,OAAC,GAAGk1E,mBAAmB,CAAC7hF,CAAD,CAAvB,CATmC,CAWnC;AACA;AACA;;AACA8vF,UAAI,GAAG3uF,CAAC,CAACsuF,EAAD,CAAD,GAAQtuF,CAAC,CAAC0uF,EAAD,CAAhB;AACAG,UAAI,GAAG7uF,CAAC,CAACuuF,EAAD,CAAD,GAAQvuF,CAAC,CAAC0uF,EAAD,CAAhB;AACAE,UAAI,GAAGr5E,CAAC,CAAC+4E,EAAD,CAAD,GAAQ/4E,CAAC,CAACm5E,EAAD,CAAhB;AACAI,UAAI,GAAGv5E,CAAC,CAACg5E,EAAD,CAAD,GAAQh5E,CAAC,CAACm5E,EAAD,CAAhB;AACAK,gBAAU,GAAGJ,IAAI,GAAGA,IAAP,GAAcC,IAAI,GAAGA,IAAlC;AACAI,gBAAU,GAAGH,IAAI,GAAGA,IAAP,GAAcC,IAAI,GAAGA,IAAlC;AACAG,SAAG,GAAGhvF,IAAI,CAAC2O,IAAL,CAAUmgF,UAAV,CAAN;AACAG,SAAG,GAAGjvF,IAAI,CAAC2O,IAAL,CAAUogF,UAAV,CAAN,CArBmC,CAsBnC;;AACAG,cAAQ,GAAG,CAACR,IAAI,GAAGE,IAAP,GAAcD,IAAI,GAAGE,IAAtB,KAA+BG,GAAG,GAAGC,GAArC,CAAX;AACA,UAAIC,QAAQ,GAAG,GAAf,EAAoBA,QAAQ,GAAG,GAAX,CAApB,KACK,IAAIA,QAAQ,GAAG,CAAC,GAAhB,EAAqBA,QAAQ,GAAG,CAAC,GAAZ,CAzBS,CA0BnC;;AACAC,cAAQ,GAAGnvF,IAAI,CAAC2O,IAAL,CAAU,MAAMugF,QAAQ,GAAGA,QAA3B,CAAX,CA3BmC,CA4BnC;;AACA5gF,WAAK,GAAGtO,IAAI,CAACyvF,IAAL,CAAUP,QAAV,CAAR;AAEA,UAAIC,QAAQ,GAAG,MAAf,EAAuBA,QAAQ,GAAG,MAAX,CA/BY,CAiCnC;AACA;;AACAK,qBAAe,GAAG5yE,4BAAS,CAACvX,OAAV,CAAkBkG,CAAC,IAAI+C,KAAK,GAAG0K,KAAZ,CAAD,IAAuBm2E,QAAQ,GAAGH,GAAlC,CAAlB,EAA0D;AAC1EloF,YAAI,EAAE3B,SAAI,CAACwB,SAD+D;AAE1EI,UAAE,EAAE5B,SAAI,CAACsB;AAFiE,OAA1D,IAGbwoF,GAHL,CAnCmC,CAwCnC;;AACAzB,UAAI,GAAGkB,IAAI,GAAGE,IAAP,GAAcD,IAAI,GAAGE,IAA5B,CAzCmC,CA0CnC;AACA;AACA;;AACAO,kBAAY,GAAGI,eAAe,IAAIZ,IAAI,GAAGpB,IAAI,GAAGkB,IAAP,GAAcI,UAAzB,CAA9B;AACAO,kBAAY,GAAGG,eAAe,IAAIX,IAAI,GAAGrB,IAAI,GAAGmB,IAAP,GAAcG,UAAzB,CAA9B;AACAQ,kBAAY,GAAGE,eAAe,IAAId,IAAI,GAAGlB,IAAI,GAAGoB,IAAP,GAAcG,UAAzB,CAA9B;AACAQ,kBAAY,GAAGC,eAAe,IAAIb,IAAI,GAAGnB,IAAI,GAAGqB,IAAP,GAAcE,UAAzB,CAA9B;AAEAt5E,QAAE,CAAC44E,EAAD,CAAF,IAAUe,YAAV;AACA15E,QAAE,CAAC24E,EAAD,CAAF,IAAUgB,YAAV;AACA55E,QAAE,CAAC64E,EAAD,CAAF,IAAUgB,YAAV;AACA55E,QAAE,CAAC44E,EAAD,CAAF,IAAUiB,YAAV;AACA95E,QAAE,CAACg5E,EAAD,CAAF,IAAWW,YAAY,GAAGE,YAA1B;AACA55E,QAAE,CAAC+4E,EAAD,CAAF,IAAWY,YAAY,GAAGE,YAA1B;AACD;AACF,GAhkDH;AAAA,MAkkDE;AACAG,uBAAqB,GAAG,SAAxBA,qBAAwB,GAAW;AACjC;AACA,QAAItP,YAAY,GAAG,CAAnB,EAAsB;AAEtB,QAAIxhF,CAAJ,EACEu7C,EADF,EACMC,EADN,EAEEhsC,CAFF,EAEKqrE,IAFL,EAGEluE,CAHF,EAIEokF,QAJF,EAKE1C,EALF,EAKMC,EALN,EAMEnvF,CANF;;AAQA,SAAKa,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwhF,YAAhB,EAA8BxhF,CAAC,EAA/B,EAAmC;AACjCb,OAAC,GAAGgiF,kBAAkB,CAACnhF,CAAD,CAAtB;AAEAu7C,QAAE,GAAG8lC,WAAW,CAACrhF,CAAD,CAAX,GAAiBmB,CAAC,CAAChC,CAAD,CAAvB;AACAq8C,QAAE,GAAG8lC,WAAW,CAACthF,CAAD,CAAX,GAAiB0W,CAAC,CAACvX,CAAD,CAAvB;AAEA,UAAIo8C,EAAE,KAAK,CAAP,IAAYC,EAAE,KAAK,CAAvB,EAA0B,SANO,CAMG;;AAEpCq/B,UAAI,GAAGt/B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAtB;AACAhsC,OAAC,GAAGpO,IAAI,CAAC2O,IAAL,CAAU8qE,IAAV,CAAJ,CATiC,CAWjC;;AACAluE,OAAC,GAAGy0E,UAAU,CAACphF,CAAD,CAAd;AAEA+wF,cAAQ,GAAG/yE,4BAAS,CAACvX,OAAV,CAAkBkG,CAAC,GAAG6C,CAAtB,EAAyB;AAClCtH,YAAI,EAAE3B,SAAI,CAACwB,SADuB;AAElCI,UAAE,EAAE5B,SAAI,CAACsB;AAFyB,OAAzB,IAGN2H,CAHL;AAKA6+E,QAAE,GAAG0C,QAAQ,GAAGx1C,EAAhB;AACA+yC,QAAE,GAAGyC,QAAQ,GAAGv1C,EAAhB;AAEA3kC,QAAE,CAAC1X,CAAD,CAAF,IAASkvF,EAAT;AACAv3E,QAAE,CAAC3X,CAAD,CAAF,IAASmvF,EAAT;AACD;AACF,GAxmDH;AAAA,MA0mDE0C,kBAAkB,GAAG,SAArBA,kBAAqB,GAAW;AAC9B,QAAI5K,cAAc,GAAG,CAArB,EAAwB;AAExB,QAAIpmF,CAAJ,EACEu7C,EADF,EACMC,EADN,EAEEhsC,CAFF,EAEKqrE,IAFL,EAGEluE,CAHF,EAIEokF,QAJF,EAKE1C,EALF,EAKMC,EALN,EAMEnvF,CANF;;AAQA,SAAKa,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGomF,cAAhB,EAAgCpmF,CAAC,EAAjC,EAAqC;AACnCb,OAAC,GAAG4mF,qBAAoB,CAAC/lF,CAAD,CAAxB;AAEAu7C,QAAE,GAAGyqC,YAAY,CAAChmF,CAAD,CAAZ,GAAkBmB,CAAC,CAAChC,CAAD,CAAxB;AACAq8C,QAAE,GAAGyqC,YAAY,CAACjmF,CAAD,CAAZ,GAAkB0W,CAAC,CAACvX,CAAD,CAAxB;AAEA,UAAIo8C,EAAE,KAAK,CAAP,IAAYC,EAAE,KAAK,CAAvB,EAA0B,SANS,CAMC;;AAEpCq/B,UAAI,GAAGt/B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAtB;AACAhsC,OAAC,GAAGpO,IAAI,CAAC2O,IAAL,CAAU8qE,IAAV,CAAJ,CATmC,CAWnC;;AACAluE,OAAC,GAAGu5E,mBAAmB,CAAClmF,CAAD,CAAvB;AAEA+wF,cAAQ,GAAG/yE,4BAAS,CAACvX,OAAV,CAAkBkG,CAAC,GAAG6C,CAAtB,EAAyB;AAClCtH,YAAI,EAAE3B,SAAI,CAACwB,SADuB;AAElCI,UAAE,EAAE5B,SAAI,CAACsB;AAFyB,OAAzB,IAGN2H,CAHL;AAKA6+E,QAAE,GAAG0C,QAAQ,GAAGx1C,EAAhB;AACA+yC,QAAE,GAAGyC,QAAQ,GAAGv1C,EAAhB;AAEA3kC,QAAE,CAAC1X,CAAD,CAAF,IAASkvF,EAAT;AACAv3E,QAAE,CAAC3X,CAAD,CAAF,IAASmvF,EAAT;AACD;AACF,GA9oDH;AAAA,MAgpDE;AACA2C,yBAAuB,GAAG,SAA1BA,uBAA0B,CAASC,QAAT,EAAmB;AAC3C,QAAIC,GAAG,GAAG,CAAV;AAAA,QACEC,GAAG,GAAG,CADR;AAAA,QAEEtH,SAAS,GAAG,CAFd;AAAA,QAGEtN,OAHF;AAAA,QAGW6U,QAHX;AAAA,QAGqBrxF,CAHrB;AAAA,QAGwBc,GAHxB;;AAKA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGowF,QAAQ,CAACjxF,MAA3B,EAAmCD,CAAC,GAAGc,GAAvC,EAA4Cd,CAAC,EAA7C,EAAiD;AAC/Cw8E,aAAO,GAAG0U,QAAQ,CAAClxF,CAAD,CAAlB;AACAqxF,cAAQ,GAAG15E,IAAI,CAAC6kE,OAAD,CAAf;AACA2U,SAAG,IAAIhwF,CAAC,CAACq7E,OAAD,CAAD,GAAa6U,QAApB;AACAD,SAAG,IAAI16E,CAAC,CAAC8lE,OAAD,CAAD,GAAa6U,QAApB;AACAvH,eAAS,IAAIuH,QAAb;AACD;;AACDF,OAAG,IAAIrH,SAAP;AACAsH,OAAG,IAAItH,SAAP;AACA,WAAO;AACL3oF,OAAC,EAAEgwF,GADE;AAELz6E,OAAC,EAAE06E;AAFE,KAAP;AAID,GApqDH;AAAA,MAsqDEE,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAW;AACjC;AACA,QAAI5+E,gBAAgB,KAAK,CAArB,IAA0BD,kBAAkB,KAAK,CAAjD,IAAsDu5B,CAAC,GAAG,CAA9D,EAAiE;AAEjE,QAAIulD,aAAJ,EAAmB/U,OAAnB,EAA4BgV,EAA5B,EAAgCC,aAAhC,EACEl2C,EADF,EACMC,EADN,EACUhsC,CADV,EACa6+E,EADb,EACiBC,EADjB,EACqBM,IADrB,EAC2B5uF,CAD3B,EAC8ByM,CAD9B,EACiC3L,GADjC,CAJiC,CAOjC;;AACA,SAAKd,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtBmgF,aAAO,CAACngF,CAAD,CAAP,GAAa,CAAb;AACD,KAVgC,CAYjC;AACA;AACA;AACA;AACA;AACA;;;AACAyxF,iBAAa,GAAG,UAAU/+E,gBAAV,GAA6BD,kBAA7C;;AAEA,SAAKzS,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB;AACA,UAAImgF,OAAO,CAACngF,CAAD,CAAP,KAAe,CAAnB,EAAsB;AAEtBuxF,mBAAa,GAAGjzC,MAAM,CAACozC,gBAAP,CAAwB1xF,CAAxB,CAAhB;AACAuxF,mBAAa,CAAC3uF,IAAd,CAAmB5C,CAAnB;AAEAwxF,QAAE,GAAGP,uBAAuB,CAACM,aAAD,CAA5B;;AAEA,WAAK9kF,CAAC,GAAG,CAAJ,EAAO3L,GAAG,GAAGywF,aAAa,CAACtxF,MAAhC,EAAwCwM,CAAC,GAAG3L,GAA5C,EAAiD2L,CAAC,EAAlD,EAAsD;AACpD+vE,eAAO,GAAG+U,aAAa,CAAC9kF,CAAD,CAAvB,CADoD,CAEpD;AACA;;AACA0zE,eAAO,CAAC3D,OAAD,CAAP,GAAmB,CAAnB;;AAEA,YAAI0D,cAAc,CAAC1D,OAAD,CAAd,KAA4B,CAAhC,EAAmC;AACjCjhC,YAAE,GAAGp6C,CAAC,CAACq7E,OAAD,CAAD,GAAagV,EAAE,CAACrwF,CAArB;AACAq6C,YAAE,GAAG9kC,CAAC,CAAC8lE,OAAD,CAAD,GAAagV,EAAE,CAAC96E,CAArB;AACAlH,WAAC,GAAGpO,IAAI,CAAC2O,IAAL,CAAUwrC,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAAJ;;AAEA,cAAIhsC,CAAC,GAAG,CAAR,EAAW;AACTo/E,gBAAI,GAAG1O,cAAc,CAAC1D,OAAD,CAAd,GAA0BiV,aAAjC,CADS,CAGT;AACA;AACA;AACA;;AACA,gBAAI7C,IAAI,GAAG,CAAP,IAAYp/E,CAAC,GAAGoD,+BAApB,EAAqD;AACnD;AACA;AACA;AACAg8E,kBAAI,IAAI,CAAC,IAAIj8E,0BAAL,IAAmCnD,CAAnC,GAAuCoD,+BAAvC,GAAyED,0BAAjF;AACD;;AAED07E,cAAE,GAAGO,IAAI,GAAGrzC,EAAP,GAAY/rC,CAAjB;AACA8+E,cAAE,GAAGM,IAAI,GAAGpzC,EAAP,GAAYhsC,CAAjB;AACAqH,cAAE,CAAC2lE,OAAD,CAAF,IAAe6R,EAAf;AACAv3E,cAAE,CAAC0lE,OAAD,CAAF,IAAe8R,EAAf;AACD;AACF;AACF;AACF;AACF,GApuDH;AAAA,MAsuDEqD,gCAAgC,GAAG,SAAnCA,gCAAmC,GAAW;AAC5C;AACA,QAAI,CAACt/E,kBAAL,EAAyB;AACzB,QAAIrS,CAAJ;;AAEA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB8W,QAAE,CAAC9W,CAAD,CAAF,IAASqS,kBAAT;AACD;AACF,GA9uDH;AAAA,MAgvDEu/E,YAAY,GAAG,SAAfA,YAAe,CAAS5xF,CAAT,EAAYmB,CAAZ,EAAeuV,CAAf,EAAkB;AAC/B,QAAIm7E,EAAE,GAAGnO,MAAM,CAAC1jF,CAAD,CAAf;AAAA,QACE8xF,EAAE,GAAGnO,MAAM,CAAC3jF,CAAD,CADb;AAEA,WAAO6xF,EAAE,IAAI1wF,CAAN,IAAWA,CAAC,IAAI0wF,EAAE,GAAGjO,UAAU,CAAC5jF,CAAD,CAA/B,IACL8xF,EAAE,IAAIp7E,CADD,IACMA,CAAC,IAAIo7E,EAAE,GAAGjO,WAAW,CAAC7jF,CAAD,CADlC;AAED,GArvDH;AAAA,MAuvDE+xF,eAAe,GAAG,SAAlBA,eAAkB,CAAS/xF,CAAT,EAAY;AAC5B,QAAIogB,CAAC,GAAGmlE,wBAAwB,CAACvlF,CAAD,CAAhC;AACA,WAAO,CAACogB,CAAC,KAAK,GAAN,IAAaA,CAAC,KAAK,GAAnB,GAAyB,CAAzB,GAA6B,CAAC,CAA/B,IAAoCklE,sBAAsB,CAACtlF,CAAD,CAAjE;AACD,GA1vDH;AAAA,MA4vDEgyF,iCAAiC,GAAG,SAApCA,iCAAoC,GAAW;AAC7C;AACA,QAAI,CAACvM,eAAL,EAAqB;AAErB,QAAIzlF,CAAJ,EAAOnB,CAAP,EAAUuhB,CAAV,EAAay/C,QAAb,EAAuBoyB,IAAvB,EAA6BrD,IAA7B;;AAEA,SAAK/vF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6mF,gBAAhB,EAAkC7mF,CAAC,EAAnC,EAAuC;AACrCuhB,OAAC,GAAGmlE,wBAAwB,CAAC1mF,CAAD,CAA5B;AACAghE,cAAQ,GAAGz/C,CAAC,KAAK,GAAN,IAAaA,CAAC,KAAK,GAA9B;AACAwuE,UAAI,GAAGmD,eAAe,CAAClzF,CAAD,CAAf,GAAqB8gF,eAA5B;AACAsS,UAAI,GAAGzM,qBAAqB,CAAC3mF,CAAD,CAA5B;;AAEA,WAAKmB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB,YAAIiyF,IAAI,IAAI,IAAR,IAAgB,CAACL,YAAY,CAACK,IAAD,EAAO9wF,CAAC,CAACnB,CAAD,CAAR,EAAa0W,CAAC,CAAC1W,CAAD,CAAd,CAAjC,EAAqD;;AACrD,YAAI6/D,QAAJ,EAAc;AACZ/oD,YAAE,CAAC9W,CAAD,CAAF,IAAS4uF,IAAI,GAAG73E,MAAM,CAAC/W,CAAD,CAAb,GAAmB2X,IAAI,CAAC3X,CAAD,CAAhC;AACD,SAFD,MAEO;AACL6W,YAAE,CAAC7W,CAAD,CAAF,IAAS4uF,IAAI,GAAG73E,MAAM,CAAC/W,CAAD,CAAb,GAAmB2X,IAAI,CAAC3X,CAAD,CAAhC;AACD;AACF;AACF;AACF,GAjxDH;AAAA,MAmxDE;AACA;AACAkyF,mCAAiC,GAAG,SAApCA,iCAAoC,GAAW;AAC7C,QAAI,CAACtS,wBAAL,EAA+B;AAC/B,QAAI5/E,CAAJ,EAAOmyF,IAAP;;AAEA,SAAKnyF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtBmyF,UAAI,GAAG/wF,IAAI,CAACE,GAAL,CAAS,CAAT,EAAY,MAAMoV,CAAC,CAAC1W,CAAD,CAAnB,CAAP;;AACA,UAAImyF,IAAI,GAAG,CAAX,EAAc;AACZr7E,UAAE,CAAC9W,CAAD,CAAF,IAAS,OAAOmyF,IAAhB;AACAt7E,UAAE,CAAC7W,CAAD,CAAF,IAAS,IAAT;AACD;AACF;AACF,GAhyDH;AAAA,MAkyDE;AACA;AACA;AAEA;AACA;AACAoyF,iCAA+B,GAAG,SAAlCA,+BAAkC,GAAW;AAC3C,QAAIC,UAAU,GAAGC,iBAAgB,CAAC7b,eAAlC;AAAA,QACE/zE,GADF;AAAA,QACO1C,CADP,CAD2C,CAI3C;;AACAqnF,qBAAiB,CAACpnF,MAAlB,GAA2B,CAA3B;;AAEA,SAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB,UAAIsR,OAAO,CAACtR,CAAD,CAAP,KAAeqyF,UAAnB,EAA+B;AAC7B;AACAhL,yBAAiB,CAACzkF,IAAlB,CAAuB5C,CAAvB;AACD;AACF;;AAED,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGihF,aAAhB,EAA+BjhF,CAAC,EAAhC,EAAoC;AAClC,UAAIsR,OAAO,CAACqvE,oBAAoB,CAAC3gF,CAAD,CAArB,CAAP,KAAqCqyF,UAArC,IAAmD/gF,OAAO,CAACsvE,oBAAoB,CAAC5gF,CAAD,CAArB,CAAP,KAAqCqyF,UAA5F,EAAwG;AACtG;AACA3vF,WAAG,GAAG2kF,iBAAiB,CAAC3nE,OAAlB,CAA0BihE,oBAAoB,CAAC3gF,CAAD,CAA9C,CAAN;AACA,YAAI0C,GAAG,KAAK,CAAC,CAAb,EAAgBpE,yBAAM,CAACmE,MAAP,CAAc4kF,iBAAd,EAAiC3kF,GAAjC;AAChBA,WAAG,GAAG2kF,iBAAiB,CAAC3nE,OAAlB,CAA0BkhE,oBAAoB,CAAC5gF,CAAD,CAA9C,CAAN;AACA,YAAI0C,GAAG,KAAK,CAAC,CAAb,EAAgBpE,yBAAM,CAACmE,MAAP,CAAc4kF,iBAAd,EAAiC3kF,GAAjC;AACjB;AACF;AACF,GA/zDH;AAAA,MAi0DE;AACA;AACA6vF,8BAA4B,GAAG,SAA/BA,4BAA+B,GAAW;AACxC,QAAIvyF,CAAJ,EAAOwyF,WAAP;AAEA,QAAIxmD,CAAC,KAAK,CAAV,EAAa,OAH2B,CAKxC;;AACA,SAAKhsC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB6W,QAAE,CAAC7W,CAAD,CAAF,GAAQ8W,EAAE,CAAC9W,CAAD,CAAF,GAAQ,CAAhB;AACD,KARuC,CAUxC;;;AACAsmF,sBAAkB,GAAGtlC,YAAY,CAAC88B,YAAb,CAA0B38E,CAA1B,EAA6BuV,CAA7B,CAArB;;AAEA,QAAI4vE,kBAAJ,EAAwB;AACtB;AACAD,cAAQ,CAAC72B,KAAT;AACAxO,kBAAY,CAACwO,KAAb;;AAEA,WAAKxvD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB;AACAqmF,gBAAQ,CAAC9J,SAAT,CAAmBv8E,CAAnB,EAAsBmB,CAAC,CAACnB,CAAD,CAAvB,EAA4B0W,CAAC,CAAC1W,CAAD,CAA7B,EAFsB,CAGtB;AACA;;AACAghD,oBAAY,CAAC28B,gBAAb,CAA8B39E,CAA9B,EAAiCmB,CAAC,CAACnB,CAAD,CAAlC,EAAuC0W,CAAC,CAAC1W,CAAD,CAAxC;AACD;AACF,KAzBuC,CA2BxC;AACA;AACA;AAEA;AACA;AACA;;;AACA+E,qCAAO,CAACkK,IAAR,CAAa,oBAAb;AACAu/E,0BAAsB;AACtBzpF,qCAAO,CAACoK,OAAR,CAAgB,oBAAhB,EApCwC,CAqCxC;;AACApK,qCAAO,CAACkK,IAAR,CAAa,mBAAb;AACAkgF,yBAAqB;AACrBpqF,qCAAO,CAACoK,OAAR,CAAgB,mBAAhB,EAxCwC,CA0CxC;;AACAqgF,0BAAsB,GA3CkB,CA6CxC;;AACAI,2BAAuB,GA9CiB,CAgDxC;;AACAkB,yBAAqB,GAjDmB,CAmDxC;;AACAE,sBAAkB,GApDsB,CAsDxC;;AACAzB,wBAAoB,GAvDoB,CAyDxC;AACA;;AACA+B,yBAAqB,GA3DmB,CA6DxC;;AACA,SAAKtxF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtBwyF,iBAAW,GAAG,IAAI76E,IAAI,CAAC3X,CAAD,CAAtB;AACA6W,QAAE,CAAC7W,CAAD,CAAF,IAASwyF,WAAT;AACA17E,QAAE,CAAC9W,CAAD,CAAF,IAASwyF,WAAT;AACD,KAlEuC,CAoExC;AACA;AACA;AAEA;;;AACAb,oCAAgC,GAzEQ,CA2ExC;;AACAK,qCAAiC,GA5EO,CA8ExC;AACA;;AACAE,qCAAiC;AAClC,GAp5DH;AAAA,MAs5DE;AACA;AACAO,oBAAkB,GAAG,SAArBA,kBAAqB,GAAW;AAC9B,QAAIzyF,CAAJ,EAAO+kD,CAAP;;AACA,SAAK/kD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB+kD,OAAC,GAAGptC,IAAI,CAAC3X,CAAD,CAAR;AACA2W,QAAE,CAAC3W,CAAD,CAAF,IAAS,MAAM6W,EAAE,CAAC7W,CAAD,CAAR,GAAcykD,EAAvB;AACAjtC,QAAE,CAACxX,CAAD,CAAF,GAAQ+kD,CAAC,GAAGpuC,EAAE,CAAC3W,CAAD,CAAd;AACA4W,QAAE,CAAC5W,CAAD,CAAF,IAAS,MAAM8W,EAAE,CAAC9W,CAAD,CAAR,GAAcykD,EAAvB;AACAhtC,QAAE,CAACzX,CAAD,CAAF,GAAQ+kD,CAAC,GAAGnuC,EAAE,CAAC5W,CAAD,CAAd;AACD;AACF,GAj6DH;AAAA,MAm6DE;AACA0yF,yBAAuB,GAAG,SAA1BA,uBAA0B,GAAW;AACnC,QAAIC,QAAQ,GAAG5zF,IAAI,CAAC,CAAD,CAAJ,GAAU,GAAzB;AAAA,QACE6zF,SAAS,GAAG7zF,IAAI,CAAC,CAAD,CAAJ,GAAU,GADxB;AAAA,QAEE8pF,KAFF;AAAA,QAESC,KAFT;AAAA,QAEgB9oF,CAFhB;;AAIA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB6oF,WAAK,GAAG1nF,CAAC,CAACnB,CAAD,CAAT;AACA8oF,WAAK,GAAGpyE,CAAC,CAAC1W,CAAD,CAAT;AAEAmB,OAAC,CAACnB,CAAD,CAAD,IAAQ2W,EAAE,CAAC3W,CAAD,CAAF,GAAQykD,EAAhB;AACA/tC,OAAC,CAAC1W,CAAD,CAAD,IAAQ4W,EAAE,CAAC5W,CAAD,CAAF,GAAQykD,EAAhB,CALsB,CAOtB;AACA;AACA;AACA;;AACA,UAAIz2C,KAAK,CAAC7M,CAAC,CAACnB,CAAD,CAAF,CAAL,IAAegO,KAAK,CAAC0I,CAAC,CAAC1W,CAAD,CAAF,CAApB,IACFoB,IAAI,CAAC2M,GAAL,CAAS5M,CAAC,CAACnB,CAAD,CAAV,IAAiB2yF,QADf,IAC2BvxF,IAAI,CAAC2M,GAAL,CAAS2I,CAAC,CAAC1W,CAAD,CAAV,IAAiB4yF,SADhD,EAC2D;AACzD,cAAM,IAAI/yF,KAAJ,CAAU,qBAAV,CAAN;AACD,OAdqB,CAgBtB;;;AACA4qF,4BAAsB,CAACzqF,CAAD,CAAtB,CAjBsB,CAkBtB;;AACA0qF,gCAA0B,CAAC1qF,CAAD,EAAI6oF,KAAJ,EAAWC,KAAX,EAAkB,IAAlB,CAA1B,CAnBsB,CAoBtB;;AACAgD,6BAAuB,CAAC9rF,CAAD,EAAI6oF,KAAJ,EAAWC,KAAX,CAAvB,CArBsB,CAsBtB;;AACA6E,4BAAsB,CAAC3tF,CAAD,EAAI6oF,KAAJ,EAAWC,KAAX,CAAtB;AACD;AACF,GAl8DH;AAAA,MAo8DE;AACA+J,UAAQ,GAAG,SAAXA,QAAW,GAAW;AACpB,QAAI7yF,CAAJ;;AAEA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB,UAAImX,MAAM,CAACnX,CAAD,CAAV,EAAe;AACb2W,UAAE,CAAC3W,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ6W,EAAE,CAAC7W,CAAD,CAAF,GAAQ8W,EAAE,CAAC9W,CAAD,CAAF,GAAQ,CAAhC;AACD;AACF;AACF,GA78DH;AAAA,MA+8DE;AACA8yF,sBAAoB,GAAG,SAAvBA,oBAAuB,GAAW;AAChC,QAAI9yF,CAAJ;;AAEA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB0X,WAAK,CAAC1X,CAAD,CAAL,GAAWoB,IAAI,CAAC2O,IAAL,CAAU4G,EAAE,CAAC3W,CAAD,CAAF,GAAQ2W,EAAE,CAAC3W,CAAD,CAAV,GAAgB4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAApC,CAAX;AACD;AACF,GAt9DH;AAAA,MAw9DE;AACA+yF,yBAAuB,GAAG,SAA1BA,uBAA0B,GAAW;AACnC,QAAIl8E,EAAJ,EAAQC,EAAR,EAAYH,EAAZ,EAAgBC,EAAhB,EACEmjC,IADF,EACQi5C,KADR,EACeC,KADf,EACsBjzF,CADtB;;AAGA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwjF,WAAhB,EAA6BxjF,CAAC,EAA9B,EAAkC;AAChC;AACA,UAAIyiF,YAAY,CAACziF,CAAD,CAAZ,KAAoB2N,QAAxB,EAAkC;AAElCgJ,QAAE,GAAGyrE,UAAU,CAACpiF,CAAD,CAAf;AACA4W,QAAE,GAAGyrE,UAAU,CAACriF,CAAD,CAAf,CALgC,CAMhC;AACA;;AACAgzF,WAAK,GAAG1Q,aAAa,CAACtiF,CAAD,CAArB;AACAizF,WAAK,GAAG1Q,aAAa,CAACviF,CAAD,CAArB;;AAEA,UAAI2W,EAAE,IAAIC,EAAN,IAAYo8E,KAAZ,IAAqBC,KAArB,IAA8B5gF,kBAAlC,EAAsD;AACpD0nC,YAAI,GAAGjnC,SAAS,GAAG0vE,gBAAgB,CAACxiF,CAAD,CAAnC;AACA6W,UAAE,GAAGm8E,KAAK,GAAGj5C,IAAI,GAAGpjC,EAApB;AACAG,UAAE,GAAGm8E,KAAK,GAAGl5C,IAAI,GAAGnjC,EAAf,GAAoBvE,kBAAzB;AAEA4wE,qBAAa,CAACjjF,CAAD,CAAb,GAAmBgiF,SAAS,CAAChiF,CAAD,CAA5B;AACAkjF,qBAAa,CAACljF,CAAD,CAAb,GAAmBiiF,SAAS,CAACjiF,CAAD,CAA5B,CANoD,CAQpD;;AACAgiF,iBAAS,CAAChiF,CAAD,CAAT,IAAgB2W,EAAE,GAAG8tC,EAAL,GAAU,MAAM5tC,EAAN,GAAWopE,KAArC;AACAgC,iBAAS,CAACjiF,CAAD,CAAT,IAAgB4W,EAAE,GAAG6tC,EAAL,GAAU,MAAM3tC,EAAN,GAAWmpE,KAArC,CAVoD,CAYpD;;AACAmC,kBAAU,CAACpiF,CAAD,CAAV,IAAiB6W,EAAE,GAAG4tC,EAAtB;AACA49B,kBAAU,CAACriF,CAAD,CAAV,IAAiB8W,EAAE,GAAG2tC,EAAtB;AAEA2lC,8BAAsB,CAACpqF,CAAD,CAAtB;AACD;AACF;AACF,GA3/DH;AAAA,MA6/DE;AACA;AACAkzF,8BAA4B,GAAG,SAA/BA,4BAA+B,GAAW;AACxC,QAAI3B,aAAJ,EAAmB/U,OAAnB,EAA4B2W,IAA5B,EAAkCC,IAAlC,EAAwCC,OAAxC,EACErzF,CADF,EACKyM,CADL,EACQ3L,GADR;;AAGA,SAAKd,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtBmgF,aAAO,CAACngF,CAAD,CAAP,GAAa,CAAb;AACD;;AAED,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB;AACA,UAAImgF,OAAO,CAACngF,CAAD,CAAP,KAAe,CAAnB,EAAsB;AAEtBuxF,mBAAa,GAAGjzC,MAAM,CAACozC,gBAAP,CAAwB1xF,CAAxB,CAAhB;AACA,UAAIuxF,aAAa,CAACtxF,MAAd,KAAyB,CAA7B,EAAgC;AAChCsxF,mBAAa,CAAC3uF,IAAd,CAAmB5C,CAAnB;AAEAmzF,UAAI,GAAGC,IAAI,GAAGC,OAAO,GAAG,CAAxB;;AACA,WAAK5mF,CAAC,GAAG,CAAJ,EAAO3L,GAAG,GAAGywF,aAAa,CAACtxF,MAAhC,EAAwCwM,CAAC,GAAG3L,GAA5C,EAAiD2L,CAAC,EAAlD,EAAsD;AACpD+vE,eAAO,GAAG+U,aAAa,CAAC9kF,CAAD,CAAvB,CADoD,CAEpD;AACA;;AACA0zE,eAAO,CAAC3D,OAAD,CAAP,GAAmB,CAAnB;;AACA,YAAI,CAACrlE,MAAM,CAACqlE,OAAD,CAAX,EAAsB;AACpB2W,cAAI,IAAIx8E,EAAE,CAAC6lE,OAAD,CAAF,GAAc7kE,IAAI,CAAC6kE,OAAD,CAA1B;AACA4W,cAAI,IAAIx8E,EAAE,CAAC4lE,OAAD,CAAF,GAAc7kE,IAAI,CAAC6kE,OAAD,CAA1B;AACA6W,iBAAO,IAAI17E,IAAI,CAAC6kE,OAAD,CAAf;AACD;AACF;;AACD6W,aAAO,GAAG,MAAMA,OAAhB;;AACA,WAAK5mF,CAAC,GAAG,CAAJ,EAAO3L,GAAG,GAAGywF,aAAa,CAACtxF,MAAhC,EAAwCwM,CAAC,GAAG3L,GAA5C,EAAiD2L,CAAC,EAAlD,EAAsD;AACpD+vE,eAAO,GAAG+U,aAAa,CAAC9kF,CAAD,CAAvB;;AACA,YAAI,CAAC0K,MAAM,CAACqlE,OAAD,CAAX,EAAsB;AACpB7lE,YAAE,CAAC6lE,OAAD,CAAF,IAAe2W,IAAI,GAAGE,OAAtB;AACAz8E,YAAE,CAAC4lE,OAAD,CAAF,IAAe4W,IAAI,GAAGC,OAAtB,CAFoB,CAGpB;;AACA77E,YAAE,CAACglE,OAAD,CAAF,GAAc7lE,EAAE,CAAC6lE,OAAD,CAAF,GAAc7kE,IAAI,CAAC6kE,OAAD,CAAhC;AACA/kE,YAAE,CAAC+kE,OAAD,CAAF,GAAc5lE,EAAE,CAAC4lE,OAAD,CAAF,GAAc7kE,IAAI,CAAC6kE,OAAD,CAAhC;AACD;AACF;AACF;AACF,GAviEH;AAAA,MAyiEE8W,iBAAiB,GAAG,SAApBA,iBAAoB,CAASz9D,MAAT,EAAiB09D,eAAjB,EAAkC;AACpD,QAAIC,eAAJ,EAAqBxzF,CAArB;AAEA,QAAI61B,MAAM,IAAI,IAAd,EAAoBA,MAAM,GAAGmqD,QAAT;AAEpBX,KAAC,GAAG0J,kBAAkB,EAAtB;;AAEA,QAAI1J,CAAC,KAAK,CAAV,EAAa;AACX;AACA,WAAKr/E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB,YAAImX,MAAM,CAACnX,CAAD,CAAN,KAAc,KAAlB,EAAyB;AACvB;AACA2W,YAAE,CAAC3W,CAAD,CAAF,GAAQoB,IAAI,CAACyO,MAAL,KAAgB,IAAhB,GAAuB,IAA/B;AACA+G,YAAE,CAAC5W,CAAD,CAAF,GAAQoB,IAAI,CAACyO,MAAL,KAAgB,IAAhB,GAAuB,IAA/B;AACD;AACF,OARU,CASX;;;AACAwvE,OAAC,GAAG0J,kBAAkB,EAAtB;;AAEA,UAAI1J,CAAC,KAAK,CAAV,EAAa;AACX;AACA;AACD;AACF;;AAED,QAAIkU,eAAe,IAAIzT,cAAa,IAAIT,CAAC,GAAG,CAA5C,EAA+C;AAC7CmU,qBAAe,GAAGpyF,IAAI,CAAC2O,IAAL,CAAU8lB,MAAM,GAAGwpD,CAAnB,CAAlB,CAD6C,CAG7C;;AACA,WAAKr/E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB2W,UAAE,CAAC3W,CAAD,CAAF,IAASwzF,eAAT;AACA58E,UAAE,CAAC5W,CAAD,CAAF,IAASwzF,eAAT;AACAh8E,UAAE,CAACxX,CAAD,CAAF,IAASwzF,eAAT;AACA/7E,UAAE,CAACzX,CAAD,CAAF,IAASwzF,eAAT;AACD,OAT4C,CAW7C;;;AACA,WAAKxzF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwjF,WAAhB,EAA6BxjF,CAAC,EAA9B,EAAkC;AAChCoiF,kBAAU,CAACpiF,CAAD,CAAV,IAAiBwzF,eAAjB;AACAnR,kBAAU,CAACriF,CAAD,CAAV,IAAiBwzF,eAAjB;AACD;;AAEDnU,OAAC,GAAGxpD,MAAJ;AACD;AACF,GArlEH;AAAA,MAulEE;AACA;AACA49D,sBAAoB,GAAG,SAAvBA,oBAAuB,GAAW;AAChC,QAAIC,OAAJ,EAAaC,OAAb,EAAsBC,KAAtB,EAA6BC,KAA7B,EAAoCza,GAApC,EAAyCp5E,CAAzC,EAA4CyM,CAA5C,EAA+C3L,GAA/C;;AAEA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGumF,iBAAiB,CAACpnF,MAApC,EAA4CD,CAAC,GAAGc,GAAhD,EAAqDd,CAAC,EAAtD,EAA0D;AACxD0zF,aAAO,GAAGrM,iBAAiB,CAACrnF,CAAD,CAA3B;;AACA,WAAKyM,CAAC,GAAGzM,CAAC,GAAG,CAAb,EAAgByM,CAAC,GAAG3L,GAApB,EAAyB2L,CAAC,EAA1B,EAA8B;AAC5BknF,eAAO,GAAGtM,iBAAiB,CAAC56E,CAAD,CAA3B;AAEAmnF,aAAK,GAAGzyF,CAAC,CAACuyF,OAAD,CAAD,GAAavyF,CAAC,CAACwyF,OAAD,CAAtB;AACAE,aAAK,GAAGn9E,CAAC,CAACg9E,OAAD,CAAD,GAAah9E,CAAC,CAACi9E,OAAD,CAAtB;AACAva,WAAG,GAAGwa,KAAK,GAAGA,KAAR,GAAgBC,KAAK,GAAGA,KAA9B,CAL4B,CAO5B;AACA;;AACA,YAAIza,GAAG,GAAG,IAAV,EAAgB;AACd;AACA96B,gBAAM,CAACw1C,aAAP,CAAqB;AACnB/5E,iBAAK,EAAE25E,OADY;AAEnB15E,iBAAK,EAAE25E,OAFY;AAGnB1zF,kBAAM,EAAEmB,IAAI,CAAC2O,IAAL,CAAUqpE,GAAV,CAHW;AAInB;AACAn/D,oBAAQ,EAAE,KALS;AAMnB;AACApT,gBAAI,EAAE;AAPa,WAArB,EAFc,CAYd;;AACAvI,mCAAM,CAACmE,MAAP,CAAc4kF,iBAAd,EAAiCrnF,CAAjC;AACA1B,mCAAM,CAACmE,MAAP,CAAc4kF,iBAAd,EAAiC56E,CAAjC,EAdc,CAgBd;AACA;;AACA3L,aAAG,GAAGumF,iBAAiB,CAACpnF,MAAxB;AACAyzF,iBAAO,GAAGrM,iBAAiB,CAACrnF,CAAD,CAA3B;AACAyM,WAAC,GAAGzM,CAAC,GAAG,CAAR;AACD;AACF;AACF;AACF,GA/nEH;AAAA,MAioEE;AAEA;AACA;AACA+zF,oBAAkB,GAAG,SAArBA,kBAAqB,GAAW;AAC9B,QAAI/zF,CAAJ;;AACA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwjF,WAAhB,EAA6BxjF,CAAC,EAA9B,EAAkC;AAChC,UAAI2iF,kBAAkB,CAAC3iF,CAAD,CAAtB,EAA2B;AACzBojF,2BAAmB,CAACpjF,CAAD,CAAnB,GAAyB,CAAzB;AACD;;AACD,UAAI6iF,kBAAkB,CAAC7iF,CAAD,CAAtB,EAA2B;AACzBsjF,2BAAmB,CAACtjF,CAAD,CAAnB,GAAyB,CAAzB;AACD;;AACD,UAAI4iF,iBAAiB,CAAC5iF,CAAD,CAArB,EAA0B;AACxBqjF,2BAAmB,CAACrjF,CAAD,CAAnB,GAAyB,CAAzB;AACD;;AACD,UAAI0iF,iBAAiB,CAAC1iF,CAAD,CAArB,EAA0B;AACxBmjF,2BAAmB,CAACnjF,CAAD,CAAnB,GAAyB,CAAzB;AACD;AACF;AACF,GArpEH;AAAA,MAupEE;AACA;AACAg0F,8BAA4B,GAAG,SAA/BA,4BAA+B,CAASh3B,QAAT,EAAmB;AAChD,QAAIi3B,IAAJ,EAAUj0F,CAAV,CADgD,CAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAi0F,QAAI,GAAG,WAAWj3B,QAAlB;;AACA,SAAKh9D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwjF,WAAhB,EAA6BxjF,CAAC,EAA9B,EAAkC;AAChC,UAAI2iF,kBAAkB,CAAC3iF,CAAD,CAAtB,EAA2B;AACzBojF,2BAAmB,CAACpjF,CAAD,CAAnB,IAA0Bi0F,IAAI,GAAG/R,aAAa,CAACliF,CAAD,CAA9C;AACD;;AACD,UAAI6iF,kBAAkB,CAAC7iF,CAAD,CAAtB,EAA2B;AACzBsjF,2BAAmB,CAACtjF,CAAD,CAAnB,IAA0Bi0F,IAAI,GAAG/R,aAAa,CAACliF,CAAD,CAA9C;AACD;;AACD,UAAI4iF,iBAAiB,CAAC5iF,CAAD,CAArB,EAA0B;AACxBqjF,2BAAmB,CAACrjF,CAAD,CAAnB,IAA0Bi0F,IAAI,GAAG9R,cAAc,CAACniF,CAAD,CAA/C;AACD;;AACD,UAAI0iF,iBAAiB,CAAC1iF,CAAD,CAArB,EAA0B;AACxBmjF,2BAAmB,CAACnjF,CAAD,CAAnB,IAA0Bi0F,IAAI,GAAG9R,cAAc,CAACniF,CAAD,CAA/C;AACD;AACF;AACF,GArrEH;AAAA,MAurEE;AACA;AACAk0F,8BAA4B,GAAG,SAA/BA,4BAA+B,CAASn6E,KAAT,EAAgBC,KAAhB,EAAuBm6E,cAAvB,EAAuC;AACpE,QAAIn0F,CAAJ,CADoE,CAEpE;AACA;AACA;AACA;;AACAA,KAAC,GAAG,CAAJ;;AACA,WAAOA,CAAC,GAAG+hF,cAAX,EAA2B;AACzB;AACA,UAAKN,qBAAqB,CAACzhF,CAAD,CAArB,KAA6B+Z,KAA7B,IAAsC4nE,qBAAqB,CAAC3hF,CAAD,CAArB,KAA6Bga,KAApE,IACDynE,qBAAqB,CAACzhF,CAAD,CAArB,KAA6Bga,KAA7B,IAAsC2nE,qBAAqB,CAAC3hF,CAAD,CAArB,KAA6B+Z,KADlE,IAED2nE,qBAAqB,CAAC1hF,CAAD,CAArB,KAA6B+Z,KAA7B,IAAsC4nE,qBAAqB,CAAC3hF,CAAD,CAArB,KAA6Bga,KAFlE,IAGD0nE,qBAAqB,CAAC1hF,CAAD,CAArB,KAA6Bga,KAA7B,IAAsC2nE,qBAAqB,CAAC3hF,CAAD,CAArB,KAA6B+Z,KAHtE,EAIEukC,MAAM,CAAC81C,iBAAP,CAAyBp0F,CAAzB,EAA4Bm0F,cAA5B,EAJF,KAMEn0F,CAAC;AACJ;AACF,GA1sEH,CAFqC,CA8sErC;AACA;AACA;;;AACA,MAAIovF,gBAAgB,GAAG,EAAvB;;AACAA,kBAAgB,CAAChlF,KAAjB,GAAyB,YAAW;AAClC,QAAIpK,CAAJ;AAAA,QAAOyM,CAAC,GAAG,CAAX;;AACA,SAAKzM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB,UAAI4+C,MAAK,CAAC7nC,MAAN,CAAa/W,CAAb,CAAJ,EAAqB;AACnB,aAAKyM,CAAC,EAAN,IAAYzM,CAAZ;AACD;AACF;;AACD,SAAKC,MAAL,GAAcwM,CAAd;AACD,GARD,CAltEqC,CA4tErC;AACA;;;AACA,MAAI8hF,gBAAgB,GAAG,EAAvB;;AACAA,kBAAgB,CAACnkF,KAAjB,GAAyB,YAAW;AAClC,QAAIpK,CAAJ,EAAO+Z,KAAP,EAAcC,KAAd;AAEA,SAAK/Z,MAAL,GAAc,CAAd;;AAEA,SAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGihF,aAAhB,EAA+BjhF,CAAC,EAAhC,EAAoC;AAClC+Z,WAAK,GAAG4mE,oBAAoB,CAAC3gF,CAAD,CAA5B;AACAga,WAAK,GAAG4mE,oBAAoB,CAAC5gF,CAAD,CAA5B;AACA,WAAK+Z,KAAL,IAAc,KAAKA,KAAL,KAAe,EAA7B;AACA,WAAKA,KAAL,EAAYC,KAAZ,IAAqB,IAArB;AACA,WAAKA,KAAL,IAAc,KAAKA,KAAL,KAAe,EAA7B;AACA,WAAKA,KAAL,EAAYD,KAAZ,IAAqB,IAArB;AACD;AACF,GAbD,CA/tEqC,CA8uErC;;;AACA,MAAIs6E,WAAW,GAAG,EAAlB;;AACAA,aAAW,CAACjqF,KAAZ,GAAoB,YAAW;AAC7B,QAAIpK,CAAJ,EAAO+Z,KAAP,EAAcC,KAAd;AAEA,SAAK/Z,MAAL,GAAc,CAAd;;AAEA,SAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGihF,aAAhB,EAA+BjhF,CAAC,EAAhC,EAAoC;AAClC+Z,WAAK,GAAG4mE,oBAAoB,CAAC3gF,CAAD,CAA5B;AACAga,WAAK,GAAG4mE,oBAAoB,CAAC5gF,CAAD,CAA5B;AACA,WAAK+Z,KAAL,IAAc,KAAKA,KAAL,KAAe,EAA7B;AACA,WAAKA,KAAL,EAAYnX,IAAZ,CAAiBoX,KAAjB;AACA,WAAKA,KAAL,IAAc,KAAKA,KAAL,KAAe,EAA7B;AACA,WAAKA,KAAL,EAAYpX,IAAZ,CAAiBmX,KAAjB;AACD;AACF,GAbD;;AAcAs6E,aAAW,CAACC,KAAZ,GAAoB,UAASv6E,KAAT,EAAgBC,KAAhB,EAAuB;AACzC,QAAI,KAAKD,KAAL,CAAJ,EAAiB;AACf,UAAIulC,QAAQ,GAAG,KAAKtlC,KAAL,EAAY0F,OAAZ,CAAoB3F,KAApB,CAAf;AACA,UAAIwlC,QAAQ,GAAG,KAAKxlC,KAAL,EAAY2F,OAAZ,CAAoB1F,KAApB,CAAf;;AACA,UAAIslC,QAAQ,KAAK,CAAC,CAAlB,EAAqB;AACnB,aAAKvlC,KAAL,EAAYuzC,MAAZ,CAAmB/N,QAAnB,EAA6B,CAA7B;AACA,aAAKvlC,KAAL,EAAYszC,MAAZ,CAAmBhO,QAAnB,EAA6B,CAA7B;AACD;AACF;AACF,GATD;;AAUA+0C,aAAW,CAAC9xF,GAAZ,GAAkB,UAASwX,KAAT,EAAgBC,KAAhB,EAAuB;AACvC,QAAI,KAAKD,KAAL,KAAe,IAAnB,EAAyB;AACvB,WAAKA,KAAL,IAAc,EAAd;AACD;;AACD,QAAI,KAAKC,KAAL,KAAe,IAAnB,EAAyB;AACvB,WAAKA,KAAL,IAAc,EAAd;AACD;;AACD,SAAKD,KAAL,EAAYnX,IAAZ,CAAiBoX,KAAjB;AACA,SAAKA,KAAL,EAAYpX,IAAZ,CAAiBmX,KAAjB;AACD,GATD,CAxwEqC,CAmxErC;AACA;;;AAEAukC,QAAM,GAAG;AAEP;AACA;AACA;AACA;AACAi2C,aAAS,EAAE,mBAASjW,MAAT,EAAiB;AAC1B,UAAIA,MAAM,CAAChwE,UAAX,EAAuB;AACrB;AACA;AACA;AACAgwE,cAAM,CAAChwE,UAAP,CAAkB;AAChBswC,eAAK,EAAEA,MADS;AAEhBC,kBAAQ,EAAEA,SAFM;AAGhBmiC,qBAAW,EAAEA,YAHG;AAIhBc,sBAAY,EAAEA;AAJE,SAAlB;AAMD;;AAEDrC,sBAAgB,CAACpB,cAAjB,CAAgCC,MAAhC;AACD,KApBM;AAsBPoB,yBAAqB,EAAE,+BAASzxC,CAAT,EAAY;AACjCyxC,4BAAqB,GAAG,CAAC,CAACzxC,CAA1B;AACD,KAxBM;AA0BP4xC,8BAA0B,EAAE,oCAAS5xC,CAAT,EAAY;AACtC4xC,iCAA0B,GAAG,CAAC,CAAC5xC,CAA/B;AACD,KA5BM;AA8BP6xC,iBAAa,EAAE,uBAAS7xC,CAAT,EAAY;AACzB6xC,oBAAa,GAAG,CAAC,CAAC7xC,CAAlB;AACD,KAhCM;AAkCPumD,oBAAgB,EAAE,0BAASC,KAAT,EAAgB;AAChC,UAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,CAA3C,EAA8C;AAC5C1U,qBAAa,GAAG0U,KAAhB;AACD;AACF,KAtCM;AAwCPC,yBAAqB,EAAE,+BAASC,EAAT,EAAa;AAClC,UAAI,OAAOA,EAAP,KAAc,QAAd,IAA0BA,EAAE,KAAK,CAArC,EAAwC;AACtCtiF,0BAAkB,GAAGsiF,EAArB;AACD,OAFD,MAEO;AACLtiF,0BAAkB,GAAG,KAArB;AACD;AACF,KA9CM;AAgDPuiF,yBAAqB,EAAE,+BAAS1L,WAAT,EAAsB2L,OAAtB,EAA+B;AAEpD,UAAI70F,CAAJ;AAAA,UAAOyM,CAAP;AAAA,UAAUqoF,KAAV;AAAA,UAAiBC,KAAjB;AAAA,UAAwBC,MAAxB;AAAA,UAAgCC,OAAhC;AAAA,UAAyCl4E,KAAzC;AAAA,UAAgDqR,CAAhD;AAAA,UAAmD8mE,MAAnD;AAAA,UACEC,MAAM,GAAGjM,WAAW,CAACjpF,MADvB,CAFoD,CAKpD;AACA;AACA;AACA;AACA;AAEA;;AACA+0F,YAAM,GAAG,CAAC/L,yBAAyB,CAACC,WAAD,CAAzB,IAA0C2L,OAA3C,IAAsD,MAA/D;AACAI,aAAO,GAAG7V,iBAAY,CAAC4V,MAAD,EAAS,CAAT,CAAtB,CAboD,CAepD;;AACA,WAAKh1F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm1F,MAAhB,EAAwBn1F,CAAC,EAAzB,EAA6B;AAC3ByM,SAAC,GAAGy8E,WAAW,CAAClpF,CAAD,CAAf;;AACA,YAAI,CAACmX,MAAM,CAAC1K,CAAD,CAAP,IAAckK,EAAE,CAAClK,CAAD,CAAF,KAAU,CAAxB,IAA6BmK,EAAE,CAACnK,CAAD,CAAF,KAAU,CAA3C,EAA8C;AAC5CqoF,eAAK,GAAG1zF,IAAI,CAACyO,MAAL,KAAgB,GAAxB;AACAklF,eAAK,GAAG3zF,IAAI,CAACyO,MAAL,KAAgB,GAAxB;AACAue,WAAC,GAAGhtB,IAAI,CAAC2O,IAAL,CAAW,IAAIklF,OAAJ,GAAct9E,IAAI,CAAClL,CAAD,CAAnB,IAA2BqoF,KAAK,GAAGA,KAAR,GAAgBC,KAAK,GAAGA,KAAnD,CAAV,CAAJ;AACAp+E,YAAE,CAAClK,CAAD,CAAF,GAAQqoF,KAAK,GAAG1mE,CAAhB;AACAxX,YAAE,CAACnK,CAAD,CAAF,GAAQsoF,KAAK,GAAG3mE,CAAhB;AACD;AACF;;AAEDixD,OAAC,GAAG0J,kBAAkB,EAAtB;AACAmM,YAAM,GAAGjM,yBAAyB,CAACC,WAAD,CAAlC;AAEAnsE,WAAK,GAAG3b,IAAI,CAAC2O,IAAL,CAAU8kF,OAAO,GAAGK,MAApB,CAAR;;AAEA,WAAKl1F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm1F,MAAhB,EAAwBn1F,CAAC,EAAzB,EAA6B;AAC3ByM,SAAC,GAAGy8E,WAAW,CAAClpF,CAAD,CAAf;AACAs+C,cAAM,CAAC82C,iBAAP,CAAyB3oF,CAAzB,EAA4B;AAC1BkK,YAAE,EAAEA,EAAE,CAAClK,CAAD,CAAF,GAAQsQ,KADc;AAE1BnG,YAAE,EAAEA,EAAE,CAACnK,CAAD,CAAF,GAAQsQ;AAFc,SAA5B;AAID;AACF,KAvFM;AAyFPs4E,yBAAqB,EAAE,+BAASnM,WAAT,EAAsB;AAC3C,aAAOD,yBAAyB,CAACC,WAAD,CAAhC;AACD,KA3FM;AA6FPoM,wBAAoB,EAAE,8BAASrnD,CAAT,EAAY;AAChCqxC,yBAAmB,CAACrxC,CAAD,CAAnB;AACA+xC,cAAQ,GAAG/xC,CAAX;AACD,KAhGM;AAkGPsnD,yBAAqB,EAAE,+BAASC,EAAT,EAAa;AAClC7V,qBAAe,GAAG6V,EAAlB;AACD,KApGM;AAsGPC,gCAA4B,EAAE,sCAASjmF,CAAT,EAAY;AACxCgD,+BAAyB,GAAGhD,CAA5B;AACD,KAxGM;AA0GPkmF,uBAAmB,EAAE,6BAASC,GAAT,EAAc;AACjCjjF,sBAAgB,GAAGijF,GAAnB;AACD,KA5GM;AA8GPC,eAAW,EAAE,qBAASxnE,CAAT,EAAY;AACvB;AACA;AACAwxD,8BAAwB,GAAGxxD,CAAC,CAAC1O,OAAF,CAAU,cAAV,MAA8B,CAAzD;AACD,KAlHM;AAoHPm2E,yBAAqB,EAAE,+BAASC,GAAT,EAAc;AACnCrjF,wBAAkB,GAAGqjF,GAArB;AACD,KAtHM;AAwHPC,iCAA6B,EAAE,uCAASC,IAAT,EAAe;AAC5CrjF,gCAA0B,GAAGqjF,IAA7B;AACD,KA1HM;AA4HPC,sCAAkC,EAAE,4CAASC,IAAT,EAAe;AACjDtjF,qCAA+B,GAAGsjF,IAAlC;AACD,KA9HM;AAgIP;AACAC,WAAO,EAAE,iBAAS5vE,CAAT,EAAY;AACnBtX,UAAI,GAAGsX,CAAP;AACD,KAnIM;AAqIP6vE,iBAAa,EAAE,uBAASnoD,CAAT,EAAY;AACzB;AACA;AACA,UAAIuxC,sBAAJ,EAA4B;AAC1B,cAAM,IAAI3/E,KAAJ,CAAU,uEAAV,CAAN;AACD;;AACDgO,UAAI,GAAGogC,CAAC,CAAC,CAAD,CAAR;AACAngC,UAAI,GAAGmgC,CAAC,CAAC,CAAD,CAAR;AACAvgC,UAAI,GAAGugC,CAAC,CAAC,CAAD,CAAR;AACArgC,UAAI,GAAGqgC,CAAC,CAAC,CAAD,CAAR;AACAlvC,UAAI,GAAG,CAAC2O,IAAI,GAAGG,IAAR,EAAcD,IAAI,GAAGE,IAArB,CAAP;AACA0xE,4BAAsB,GAAG,IAAzB;AACD,KAjJM;AAmJP/gC,iBAAa,EAAE,yBAAW;AACxB,aAAO,CAAC5wC,IAAD,EAAOC,IAAP,EAAaJ,IAAb,EAAmBE,IAAnB,CAAP;AACD,KArJM;AAuJPyoF,mBAAe,EAAE,2BAAW;AAC1B,aAAOjP,YAAP;AACD,KAzJM;AA2JPgO,qBAAiB,EAAE,2BAASp1F,CAAT,EAAYg5B,KAAZ,EAAmB;AACpC,UAAIq5D,UAAU,GAAGC,iBAAgB,CAAC7b,eAAlC;AAAA,UACEr6D,GADF;AAAA,UACOk6E,KADP;AAAA,UACc7pF,CADd;;AAGA,UAAIusB,KAAK,CAAC1nB,OAAN,KAAkBpS,SAAtB,EAAiC;AAC/B,YAAI85B,KAAK,CAAC1nB,OAAN,GAAgB,CAAhB,IAAqB0nB,KAAK,CAAC1nB,OAAN,IAAiBmvE,UAA1C,EAAsD;AACpD,gBAAM,IAAI5gF,KAAJ,CAAU,2BAA2Bm5B,KAAK,CAAC1nB,OAAjC,GAA2C,6BAArD,CAAN;AACD,SAH8B,CAK/B;AACA;AACA;;;AACA,YAAIA,OAAO,CAACtR,CAAD,CAAP,KAAeqyF,UAAf,IAA6Br5D,KAAK,CAAC1nB,OAAN,KAAkB+gF,UAAnD,EAA+D;AAC7D,eAAK5lF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGw0E,aAAhB,EAA+Bx0E,CAAC,EAAhC,EAAoC;AAClC,gBAAI,CAACk0E,oBAAoB,CAACl0E,CAAD,CAApB,KAA4BzM,CAA5B,IAAiC4gF,oBAAoB,CAACn0E,CAAD,CAApB,KAA4BzM,CAA9D,KACF+gF,cAAc,CAACt0E,CAAD,CAAd,KAAsB,GADxB,EAC6B;AAC3B;AACA6xC,oBAAM,CAACi4C,gBAAP,CAAwB9pF,CAAxB,EAF2B,CAG3B;;AACA;AACD;AACF;AACF,SAlB8B,CAoB/B;;;AACAi0E,mBAAW,CAAC1nD,KAAK,CAAC1nB,OAAP,CAAX,GAA6B,IAA7B,CArB+B,CAuB/B;;AACA0nB,aAAK,CAACrhB,IAAN,GAAayoE,WAAW,CAACpnD,KAAK,CAAC1nB,OAAP,CAAxB;AACA0nB,aAAK,CAACzhB,MAAN,GAAegpE,aAAa,CAACvnD,KAAK,CAAC1nB,OAAP,CAA5B;;AAEA,YAAIghF,iBAAgB,CAACvb,WAAjB,CAA6B/9C,KAAK,CAAC1nB,OAAnC,CAAJ,EAAiD;AAC/CglF,eAAK,GAAGhE,iBAAgB,CAACzb,qBAAjB,CAAuC79C,KAAK,CAAC1nB,OAA7C,CAAR,CAD+C,CAE/C;;AACA0nB,eAAK,CAACjiB,MAAN,GAAeu/E,KAAK,CAACv/E,MAArB,CAH+C,CAI/C;AACA;;AACAiiB,eAAK,CAACknD,cAAN,GAAuBoW,KAAK,CAACpW,cAA7B;AACD;AACF,OAvCmC,CAyCpC;;;AACA,UAAI,CAACnpE,MAAM,CAAC/W,CAAD,CAAP,IAAcg5B,KAAK,CAACjiB,MAAxB,EAAgC;AAC9B;AACA;AACA;AACAq4E,wBAAgB,CAACxsF,IAAjB,CAAsB5C,CAAtB;AACD,OALD,MAKO,IAAI+W,MAAM,CAAC/W,CAAD,CAAN,IAAag5B,KAAK,CAACjiB,MAAN,KAAiB,CAAlC,EAAqC;AAC1C;AACA;AACAq4E,wBAAgB,CAAC9hC,MAAjB,CAAwB8hC,gBAAgB,CAAC1vE,OAAjB,CAAyB1f,CAAzB,CAAxB,EAAqD,CAArD;AACD,OAnDmC,CAqDpC;;;AACA,WAAKoc,GAAL,IAAY4c,KAAZ,EAAmB;AACjB,YAAIA,KAAK,CAACz1B,cAAN,CAAqB6Y,GAArB,CAAJ,EAA+B;AAC7BwiC,gBAAK,CAACxiC,GAAD,CAAL,CAAWpc,CAAX,IAAgBg5B,KAAK,CAAC5c,GAAD,CAArB;AACD;AACF,OA1DmC,CA4DpC;;;AACA5E,QAAE,CAACxX,CAAD,CAAF,GAAQ2W,EAAE,CAAC3W,CAAD,CAAF,GAAQ2X,IAAI,CAAC3X,CAAD,CAApB;AACAyX,QAAE,CAACzX,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ2X,IAAI,CAAC3X,CAAD,CAApB;AACA0X,WAAK,CAAC1X,CAAD,CAAL,GAAWoB,IAAI,CAAC2O,IAAL,CAAU4G,EAAE,CAAC3W,CAAD,CAAF,GAAQ2W,EAAE,CAAC3W,CAAD,CAAV,GAAgB4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAApC,CAAX;AACD,KA3NM;AA6NPw2F,2BAAuB,EAAE,iCAASx2F,CAAT,EAAYg5B,KAAZ,EAAmBy9D,0BAAnB,EAA+C;AACtE,UAAIr6E,GAAJ,EAASrC,KAAT,EAAgBC,KAAhB,CADsE,CAGtE;AACA;;AACAD,WAAK,GAAG4mE,oBAAoB,CAAC3gF,CAAD,CAA5B;AACAga,WAAK,GAAG4mE,oBAAoB,CAAC5gF,CAAD,CAA5B;AACA,UAAIuuF,gBAAgB,CAACx0E,KAAD,CAAhB,IAA2Bw0E,gBAAgB,CAACx0E,KAAD,CAAhB,CAAwBC,KAAxB,CAA/B,EACEu0E,gBAAgB,CAACx0E,KAAD,CAAhB,CAAwBC,KAAxB,IAAiC,KAAjC;AACF,UAAIu0E,gBAAgB,CAACv0E,KAAD,CAAhB,IAA2Bu0E,gBAAgB,CAACv0E,KAAD,CAAhB,CAAwBD,KAAxB,CAA/B,EACEw0E,gBAAgB,CAACv0E,KAAD,CAAhB,CAAwBD,KAAxB,IAAiC,KAAjC;AAEFs6E,iBAAW,CAACC,KAAZ,CAAkBv6E,KAAlB,EAAyBC,KAAzB,EAZsE,CActE;;AACA,UAAKgf,KAAK,CAACjf,KAAN,KAAgB7a,SAAhB,IAA6B85B,KAAK,CAACjf,KAAN,KAAgBA,KAA9C,IACDif,KAAK,CAAChf,KAAN,KAAgB9a,SAAhB,IAA6B85B,KAAK,CAAChf,KAAN,KAAgBA,KADhD,EACwD;AACtDk6E,oCAA4B,CAACn6E,KAAD,EAAQC,KAAR,EAAey8E,0BAAf,CAA5B;AACD,OAlBqE,CAoBtE;;;AACA,WAAKr6E,GAAL,IAAY4c,KAAZ,EAAmB;AACjB,YAAIA,KAAK,CAACz1B,cAAN,CAAqB6Y,GAArB,CAAJ,EAA+B;AAC7B4kE,sBAAW,CAAC5kE,GAAD,CAAX,CAAiBpc,CAAjB,IAAsBg5B,KAAK,CAAC5c,GAAD,CAA3B;AACD;AACF,OAzBqE,CA2BtE;;;AACArC,WAAK,GAAG4mE,oBAAoB,CAAC3gF,CAAD,CAA5B;AACAga,WAAK,GAAG4mE,oBAAoB,CAAC5gF,CAAD,CAA5B;AACA,UAAI,CAACuuF,gBAAgB,CAACx0E,KAAD,CAArB,EAA8Bw0E,gBAAgB,CAACx0E,KAAD,CAAhB,GAA0B,EAA1B;AAC9Bw0E,sBAAgB,CAACx0E,KAAD,CAAhB,CAAwBC,KAAxB,IAAiC,IAAjC;AACA,UAAI,CAACu0E,gBAAgB,CAACv0E,KAAD,CAArB,EAA8Bu0E,gBAAgB,CAACv0E,KAAD,CAAhB,GAA0B,EAA1B;AAC9Bu0E,sBAAgB,CAACv0E,KAAD,CAAhB,CAAwBD,KAAxB,IAAiC,IAAjC;AAEAs6E,iBAAW,CAAC9xF,GAAZ,CAAgBwX,KAAhB,EAAuBC,KAAvB;AACD,KAjQM;AAmQP08E,4BAAwB,EAAE,kCAAS12F,CAAT,EAAYg5B,KAAZ,EAAmB;AAC3C,UAAI5c,GAAJ,CAD2C,CAE3C;;AACA,WAAKA,GAAL,IAAY4c,KAAZ,EAAmB;AACjB,YAAIA,KAAK,CAACz1B,cAAN,CAAqB6Y,GAArB,CAAJ,EAA+B;AAC7B0lE,uBAAY,CAAC1lE,GAAD,CAAZ,CAAkBpc,CAAlB,IAAuBg5B,KAAK,CAAC5c,GAAD,CAA5B;AACD;AACF;AACF,KA3QM;AA6QPu6E,0BAAsB,EAAE,gCAAS32F,CAAT,EAAYg5B,KAAZ,EAAmB;AACzC,UAAI5c,GAAJ,CADyC,CAEzC;;AACA,WAAKA,GAAL,IAAY4c,KAAZ,EAAmB;AACjB,YAAIA,KAAK,CAACz1B,cAAN,CAAqB6Y,GAArB,CAAJ,EAA+B;AAC7BmlE,qBAAU,CAACnlE,GAAD,CAAV,CAAgBpc,CAAhB,IAAqBg5B,KAAK,CAAC5c,GAAD,CAA1B;AACD;AACF;AACF,KArRM;AAuRPw6E,wBAAoB,EAAE,8BAAS52F,CAAT,EAAYoqB,UAAZ,EAAwB;AAC5C,UAAI3d,CAAJ,EAAOoqF,SAAP,CAD4C,CAE5C;AACA;AACA;;AAEA,UAAIzsE,UAAU,CAACzS,IAAX,IAAmB,IAAnB,IAA2ByS,UAAU,CAACzS,IAAX,KAAoByoE,WAAW,CAACpgF,CAAD,CAA9D,EAAmE;AACjEogF,mBAAW,CAACpgF,CAAD,CAAX,GAAiBoqB,UAAU,CAACzS,IAA5B;;AACA,aAAKlL,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu/B,CAAhB,EAAmBv/B,CAAC,EAApB,EAAwB;AACtB,cAAI6E,OAAO,CAAC7E,CAAD,CAAP,KAAezM,CAAnB,EAAsB2X,IAAI,CAAClL,CAAD,CAAJ,GAAU2d,UAAU,CAACzS,IAArB;AACvB;AACF;;AAED,UAAIyS,UAAU,CAACtS,KAAX,IAAoB,IAAxB,EAA8B;AAC5BwoE,oBAAY,CAACtgF,CAAD,CAAZ,GAAkBoqB,UAAU,CAACtS,KAA7B;AACA++E,iBAAS,GAAG1b,YAAY,CAAC5jE,MAAb,CAAoB6S,UAAU,CAACtS,KAA/B,CAAZ;;AAEA,YAAIyoE,aAAa,CAACvgF,CAAD,CAAb,KAAqB62F,SAAzB,EAAoC;AAClCtW,uBAAa,CAACvgF,CAAD,CAAb,GAAmB62F,SAAnB;;AACA,eAAKpqF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu/B,CAAhB,EAAmBv/B,CAAC,EAApB,EAAwB;AACtB,gBAAI6E,OAAO,CAAC7E,CAAD,CAAP,KAAezM,CAAnB,EAAsBuX,MAAM,CAAC9K,CAAD,CAAN,GAAYoqF,SAAZ;AACvB;AACF;AACF;;AAED,UAAIzsE,UAAU,CAACrS,OAAX,IAAsB,IAA1B,EAAgCsoE,cAAc,CAACrgF,CAAD,CAAd,GAAoBoqB,UAAU,CAACrS,OAA/B;;AAEhC,UAAIqS,UAAU,CAAC/T,KAAX,IAAoB,IAAxB,EAA8B;AAC5BmqE,oBAAY,CAACxgF,CAAD,CAAZ,GAAkBoqB,UAAU,CAAC/T,KAA7B;AACD;;AAED,WAAK5J,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGg0E,UAAhB,EAA4Bh0E,CAAC,EAA7B,EAAiC;AAC/BivE,gCAAuB,CAAC17E,CAAD,EAAIyM,CAAJ,CAAvB;AACD,OAjC2C,CAkC5C;;;AACAi8E,wBAAkB;AAClBC,4BAAsB;AACvB,KA5TM;AA8TPjN,2BAAuB,EAAE,iCAAS17E,CAAT,EAAYyM,CAAZ,EAAe;AACtC;AACAivE,8BAAuB,CAAC17E,CAAD,EAAIyM,CAAJ,CAAvB,CAFsC,CAGtC;;;AACAi8E,wBAAkB;AAClBC,4BAAsB;AACvB,KApUM;AAsUPmO,yBAAqB,EAAE,+BAAS92F,CAAT,EAAYg5B,KAAZ,EAAmB;AACxC,UAAI5c,GAAJ;AAEA,UAAI,CAACkiC,MAAM,CAACy4C,gBAAP,CAAwB/9D,KAAK,CAAC73B,CAA9B,EAAiC63B,KAAK,CAACtiB,CAAvC,EAA0CsiB,KAAK,CAAC5tB,KAAhD,EAAuD4tB,KAAK,CAAC3tB,MAA7D,EAAqErL,CAArE,CAAL,EACE,MAAM,IAAIH,KAAJ,CAAU,iCAAiCm5B,KAAK,CAAC73B,CAAvC,GAA2C,IAA3C,GAAkD63B,KAAK,CAACtiB,CAAlE,CAAN,CAJsC,CAMxC;AACA;;AACA,UAAIsiB,KAAK,CAAC73B,CAAN,KAAYjC,SAAhB,EAA2B;AACzB85B,aAAK,CAAC6vD,KAAN,GAAc7vD,KAAK,CAAC73B,CAApB;AACD;;AACD,UAAI63B,KAAK,CAACtiB,CAAN,KAAYxX,SAAhB,EAA2B;AACzB85B,aAAK,CAAC8vD,KAAN,GAAc9vD,KAAK,CAACtiB,CAApB;AACD,OAbuC,CAcxC;;;AACA,UAAI,OAAOsiB,KAAK,CAACrhB,IAAb,KAAsB,QAA1B,EAAoC;AAClCqhB,aAAK,CAACrhB,IAAN,GAAakM,UAAU,CAACmV,KAAK,CAACrhB,IAAP,CAAvB;AACD,OAjBuC,CAmBxC;;;AACA,WAAKyE,GAAL,IAAY4c,KAAZ,EAAmB;AACjB,YAAIA,KAAK,CAACz1B,cAAN,CAAqB6Y,GAArB,CAAJ,EAA+B;AAC7BmnE,oBAAS,CAACnnE,GAAD,CAAT,CAAepc,CAAf,IAAoBg5B,KAAK,CAAC5c,GAAD,CAAzB;AACD;AACF;AACF,KA/VM;AAiWP46E,sBAAkB,EAAE,4BAASh3F,CAAT,EAAYg5B,KAAZ,EAAmB;AACrC,UAAI5c,GAAJ,CADqC,CAErC;;AACA,WAAKA,GAAL,IAAY4c,KAAZ,EAAmB;AACjB,YAAIA,KAAK,CAACz1B,cAAN,CAAqB6Y,GAArB,CAAJ,EAA+B;AAC7BkoE,iBAAM,CAACloE,GAAD,CAAN,CAAYpc,CAAZ,IAAiBg5B,KAAK,CAAC5c,GAAD,CAAtB;AACD;AACF;AACF,KAzWM;AA2WP66E,qBAAiB,EAAE,2BAASj3F,CAAT,EAAYg5B,KAAZ,EAAmB;AACpC,UAAI5c,GAAJ,CADoC,CAEpC;;AACA,WAAKA,GAAL,IAAY4c,KAAZ,EAAmB;AACjB,YAAIA,KAAK,CAACz1B,cAAN,CAAqB6Y,GAArB,CAAJ,EAA+B;AAC7B6J,gBAAK,CAAC7J,GAAD,CAAL,CAAWpc,CAAX,IAAgBg5B,KAAK,CAAC5c,GAAD,CAArB;AACD;AACF;AACF,KAnXM;AAqXP86E,8BAA0B,EAAE,oCAASl3F,CAAT,EAAYg5B,KAAZ,EAAmB;AAC7C,UAAI5c,GAAJ,CAD6C,CAE7C;;AACA,WAAKA,GAAL,IAAY4c,KAAZ,EAAmB;AACjB,YAAIA,KAAK,CAACz1B,cAAN,CAAqB6Y,GAArB,CAAJ,EAA+B;AAC7BqpE,yBAAc,CAACrpE,GAAD,CAAd,CAAoBpc,CAApB,IAAyBg5B,KAAK,CAAC5c,GAAD,CAA9B;AACD;AACF;AACF,KA7XM;;AA+XP;;;;;;AAQA+6E,WAAO,EAAE,iBAASn+D,KAAT,EAAgB;AACvB,UAAIgT,CAAC,GAAG,CAAJ,GAAQ4S,MAAK,CAACz9C,CAAN,CAAQlB,MAApB,EAA4B;AAC1BikD,aAAK,CAACpH,YAAN,CAAmB8B,MAAnB,EAA0Bx9C,IAAI,CAAC4kB,KAAL,CAAWgmB,CAAC,GAAG,GAAJ,GAAU,EAArB,CAA1B;AACA48C,gCAAwB,CAAChqC,KAAzB;AACD,OAJsB,CAMvB;;;AACA5lB,WAAK,CAACniB,EAAN,GAAWmiB,KAAK,CAACliB,EAAN,GAAW,CAAtB,CAPuB,CASvB;AACA;;AACAC,YAAM,CAACi1B,CAAD,CAAN,GAAY,CAAZ,CAXuB,CAavB;;AACAsS,YAAM,CAAC82C,iBAAP,CAAyBppD,CAAzB,EAA4BhT,KAA5B,EAduB,CAgBvB;;AACAgT,OAAC,GAjBsB,CAmBvB;;AACA08C,wBAAkB;AAClBC,4BAAsB;AACvB,KA7ZM;AA+ZPyO,cAAU,EAAE,oBAAS10F,GAAT,EAAc;AACxB,UAAI1C,CAAJ,EAAOc,GAAP,EAAYkC,IAAZ,EACEq0F,CADF,EACK3iB,IADL,EACW4iB,KADX;;AAGA,UAAI50F,GAAG,IAAIspC,CAAX,EAAc;AACZ,cAAM,IAAInsC,KAAJ,CAAU,UAAU6C,GAAV,GAAgB,yCAA1B,CAAN;AACD,OANuB,CAQxB;AACA;AACA;AAEA;AACA;AACA;AACA;;;AACA1C,OAAC,GAAG,CAAJ;;AACA,aAAOA,CAAC,GAAGihF,aAAX,EAA0B;AACxB,YAAIN,oBAAoB,CAAC3gF,CAAD,CAApB,KAA4B0C,GAA5B,IAAmCk+E,oBAAoB,CAAC5gF,CAAD,CAApB,KAA4B0C,GAAnE,EACE47C,MAAM,CAACi4C,gBAAP,CAAwBv2F,CAAxB,EADF,KAGEA,CAAC;AACJ,OAtBuB,CAwBxB;;;AACAA,OAAC,GAAGovF,gBAAgB,CAAC1vE,OAAjB,CAAyBhd,GAAzB,CAAJ;;AACA,UAAI1C,CAAC,KAAK,CAAC,CAAX,EAAc;AACZ1B,iCAAM,CAACmE,MAAP,CAAc2sF,gBAAd,EAAgCpvF,CAAhC;AACD,OA5BuB,CA8BxB;AAEA;AACA;AACA;AACA;;;AACA,WAAKA,CAAC,GAAG0C,GAAT,EAAc1C,CAAC,GAAGgsC,CAAlB,EAAqBhsC,CAAC,EAAtB,EAA0B;AACxB,aAAKgD,IAAL,IAAa47C,MAAb,EAAoB;AAClB,cAAIA,MAAK,CAACr7C,cAAN,CAAqBP,IAArB,CAAJ,EAAgC;AAC9B,gBAAIhD,CAAC,KAAKgsC,CAAC,GAAG,CAAd,EACE4S,MAAK,CAAC57C,IAAD,CAAL,CAAYhD,CAAZ,IAAiB,CAAjB,CADF,KAGE4+C,MAAK,CAAC57C,IAAD,CAAL,CAAYhD,CAAZ,IAAiB4+C,MAAK,CAAC57C,IAAD,CAAL,CAAYhD,CAAC,GAAG,CAAhB,CAAjB;AACH;AACF;AACF,OA7CuB,CA+CxB;;;AACAgsC,OAAC,GAhDuB,CAkDxB;;AACAsrD,WAAK,GAAG,CACNlI,gBADM,EAENzO,oBAFM,EAEgBC,oBAFhB,EAGNa,qBAHM,EAGiBC,qBAHjB,EAGwCC,qBAHxC,CAAR;;AAMA,WAAK0V,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGC,KAAK,CAACr3F,MAAtB,EAA8Bo3F,CAAC,EAA/B,EAAmC;AACjC3iB,YAAI,GAAG4iB,KAAK,CAACD,CAAD,CAAZ;;AACA,aAAKr3F,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG4zE,IAAI,CAACz0E,MAAvB,EAA+BD,CAAC,GAAGc,GAAnC,EAAwCd,CAAC,EAAzC,EAA6C;AAC3C,cAAI00E,IAAI,CAAC10E,CAAD,CAAJ,GAAU0C,GAAd,EACEgyE,IAAI,CAAC10E,CAAD,CAAJ;AACH;AACF,OA/DuB,CAiExB;;;AACAuuF,sBAAgB,CAACnkF,KAAjB;AACAiqF,iBAAW,CAACjqF,KAAZ,GAnEwB,CAqExB;;AACAs+E,wBAAkB;AAClBC,4BAAsB;AAEtB3nC,kBAAY,CAAC+wB,UAAb,GAzEwB,CA2ExB;;AACAwgB,kCAA4B;AAC7B,KA5eM;;AA8eP;;;AAGAgF,cAAU,EAAE,oBAASv+D,KAAT,EAAgB;AAC1B,UAAIh5B,CAAJ;;AAEA,UAAIygF,UAAU,IAAIJ,cAAc,CAACpgF,MAAjC,EAAyC;AACvCikD,aAAK,CAACpH,YAAN,CAAmB+B,SAAnB,EAA6B4hC,UAAU,GAAG,EAA1C;AACAmI,gCAAwB,CAAC/pC,QAAzB;AACD;;AAEDuhC,iBAAW,CAACK,UAAD,CAAX,GAA0BznD,KAAK,CAACrhB,IAAhC;AACA0oE,oBAAc,CAACI,UAAD,CAAd,GAA6BznD,KAAK,CAACjhB,OAAnC;AACAuoE,kBAAY,CAACG,UAAD,CAAZ,GAA2BznD,KAAK,CAAClhB,KAAjC;AACAyoE,mBAAa,CAACE,UAAD,CAAb,GAA4BtF,YAAY,CAAC5jE,MAAb,CAAoByhB,KAAK,CAAClhB,KAA1B,CAA5B;AACA0oE,kBAAY,CAACC,UAAD,CAAZ,GAA2BznD,KAAK,CAAC3iB,KAAjC;AAEA+wE,kBAAY,CAAC3G,UAAD,CAAZ,GAA2B,EAA3B;AACAwG,0BAAoB,CAACxG,UAAD,CAApB,GAAmC,EAAnC;AACA0G,+BAAyB,CAAC1G,UAAD,CAAzB,GAAwC,EAAxC;;AAEA,WAAKzgF,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIygF,UAAjB,EAA6BzgF,CAAC,EAA9B,EAAkC;AAChC07E,gCAAuB,CAAC+E,UAAD,EAAazgF,CAAb,CAAvB;AACD,OApByB,CAqB1B;AACA;AACA;AACA;;;AAEAygF,gBAAU;AACX,KA5gBM;;AA8gBP;;;AAGAqT,iBAAa,EAAE,uBAAS96D,KAAT,EAAgB;AAC7B,UAAIioD,aAAa,GAAG,CAAhB,GAAoBN,oBAAoB,CAAC1gF,MAA7C,EAAqD;AACnDikD,aAAK,CAACpH,YAAN,CAAmBkkC,YAAnB,EAAgCC,aAAa,GAAG,EAAhD;AACA2H,gCAAwB,CAAC5H,WAAzB;AACD;;AAEDC,mBAAa,GANgB,CAQ7B;;AACA3iC,YAAM,CAACk4C,uBAAP,CAA+BvV,aAAa,GAAG,CAA/C,EAAkDjoD,KAAlD;AAEAkoD,wBAAkB,GAAG,IAArB;AACD,KA7hBM;AA+hBPqV,oBAAgB,EAAE,0BAAS7zF,GAAT,EAAc+zF,0BAAd,EAA0C;AAC1D,UAAIz2F,CAAJ,EAAOgD,IAAP;;AAEA,UAAIN,GAAG,IAAIu+E,aAAX,EAA0B;AACxB,cAAM,IAAIphF,KAAJ,CAAU,iBAAiB6C,GAAjB,GAAuB,yCAAjC,CAAN;AACD,OALyD,CAO1D;;;AACAwxF,kCAA4B,CAACvT,oBAAoB,CAACj+E,GAAD,CAArB,EAA4Bk+E,oBAAoB,CAACl+E,GAAD,CAAhD,EAAuD+zF,0BAAvD,CAA5B,CAR0D,CAU1D;;AACApC,iBAAW,CAACC,KAAZ,CAAkB3T,oBAAoB,CAACj+E,GAAD,CAAtC,EAA6Ck+E,oBAAoB,CAACl+E,GAAD,CAAjE,EAX0D,CAa1D;AACA;AACA;AACA;AACA;AACA;;AACA,WAAK1C,CAAC,GAAG0C,GAAT,EAAc1C,CAAC,GAAGihF,aAAlB,EAAiCjhF,CAAC,EAAlC,EAAsC;AACpC,aAAKgD,IAAL,IAAag+E,YAAb,EAA0B;AACxB,cAAIA,YAAW,CAACz9E,cAAZ,CAA2BP,IAA3B,CAAJ,EAAsC;AACpC,gBAAIhD,CAAC,KAAKihF,aAAa,GAAG,CAA1B,EACED,YAAW,CAACh+E,IAAD,CAAX,CAAkBhD,CAAlB,IAAuB,CAAvB,CADF,KAGEghF,YAAW,CAACh+E,IAAD,CAAX,CAAkBhD,CAAlB,IAAuBghF,YAAW,CAACh+E,IAAD,CAAX,CAAkBhD,CAAC,GAAG,CAAtB,CAAvB;AACH;AACF;AACF;;AAEDihF,mBAAa,GA9B6C,CAgC1D;;AACAsN,sBAAgB,CAACnkF,KAAjB;AAEA82E,wBAAkB,GAAG,IAArB;AACD,KAnkBM;;AAqkBP;;;;;AAMAsW,gBAAY,EAAE,sBAASx+D,KAAT,EAAgB;AAC5B,UAAIwoD,YAAY,GAAG,CAAf,GAAmBD,WAAU,CAACjnE,SAAX,CAAqBra,MAA5C,EAAoD;AAClDikD,aAAK,CAACpH,YAAN,CAAmBykC,WAAnB,EAA+BC,YAAY,GAAG,EAA9C;AACAoH,gCAAwB,CAACrH,UAAzB;AACD;;AAEDC,kBAAY,GANgB,CAQ5B;;AACAljC,YAAM,CAACq4C,sBAAP,CAA8BnV,YAAY,GAAG,CAA7C,EAAgDxoD,KAAhD;AACD,KArlBM;;AAulBP;;;;;AAMAy+D,kBAAc,EAAE,wBAASz+D,KAAT,EAAgB;AAC9B,UAAI+oD,cAAc,GAAG,CAAjB,GAAqBD,aAAY,CAAC/nE,KAAb,CAAmB9Z,MAA5C,EAAoD;AAClDikD,aAAK,CAACpH,YAAN,CAAmBglC,aAAnB,EAAiCC,cAAc,GAAG,EAAlD;AACA6G,gCAAwB,CAAC9G,YAAzB;AACD;;AAEDC,oBAAc,GANgB,CAQ9B;;AACAzjC,YAAM,CAACo4C,wBAAP,CAAgC3U,cAAc,GAAG,CAAjD,EAAoD/oD,KAApD;AACD,KAvmBM;AAymBPo7D,qBAAiB,EAAE,2BAAS1xF,GAAT,EAAcyxF,cAAd,EAA8B;AAC/C,UAAIn0F,CAAJ,EAAOgD,IAAP,EAAao+C,EAAb,EAAiBC,EAAjB,EAAqBq2C,EAArB,EAAyBC,SAAzB;;AAEA,UAAIj1F,GAAG,IAAIq/E,cAAX,EAA2B;AACzB,cAAM,IAAIliF,KAAJ,CAAU,kBAAkB6C,GAAlB,GAAwB,yCAAlC,CAAN;AACD;;AAED,UAAIyxF,cAAJ,EAAoB;AAClB/yC,UAAE,GAAGqgC,qBAAqB,CAAC/+E,GAAD,CAA1B;AACA2+C,UAAE,GAAGqgC,qBAAqB,CAACh/E,GAAD,CAA1B;AACAg1F,UAAE,GAAG/V,qBAAqB,CAACj/E,GAAD,CAA1B;AACAi1F,iBAAS,GAAG/V,gBAAgB,CAACl/E,GAAD,CAAhB,GAAwBk1F,IAAI,CAACxf,kBAAL,CAAwBj3E,CAAC,CAACigD,EAAD,CAAzB,EAA+B1qC,CAAC,CAAC0qC,EAAD,CAAhC,EAClCjgD,CAAC,CAACkgD,EAAD,CADiC,EAC3B3qC,CAAC,CAAC2qC,EAAD,CAD0B,EAElClgD,CAAC,CAACu2F,EAAD,CAFiC,EAE3BhhF,CAAC,CAACghF,EAAD,CAF0B,CAApC;AAGAp5C,cAAM,CAACu5C,YAAP,CAAoB,MAAMhW,mBAAmB,CAACn/E,GAAD,CAAzB,GAAiCi1F,SAAjC,GAA6CA,SAAjE,EAA4Ev2C,EAA5E,EAAgFC,EAAhF,EAAoFq2C,EAApF;AACD,OAf8C,CAiB/C;AACA;AACA;AACA;AACA;AACA;;;AACA,WAAK13F,CAAC,GAAG0C,GAAT,EAAc1C,CAAC,GAAG+hF,cAAlB,EAAkC/hF,CAAC,EAAnC,EAAuC;AACrC,aAAKgD,IAAL,IAAa8+E,aAAb,EAA2B;AACzB,cAAIA,aAAY,CAACv+E,cAAb,CAA4BP,IAA5B,CAAJ,EAAuC;AACrC,gBAAIhD,CAAC,KAAK+hF,cAAc,GAAG,CAA3B,EACED,aAAY,CAAC9+E,IAAD,CAAZ,CAAmBhD,CAAnB,IAAwB,CAAxB,CADF,KAGE8hF,aAAY,CAAC9+E,IAAD,CAAZ,CAAmBhD,CAAnB,IAAwB8hF,aAAY,CAAC9+E,IAAD,CAAZ,CAAmBhD,CAAC,GAAG,CAAvB,CAAxB;AACH;AACF;AACF;;AAED+hF,oBAAc;AACf,KA5oBM;;AA8oBP;;;;AAKA+V,kBAAc,EAAE,wBAASx9E,SAAT,EAAoBnZ,CAApB,EAAuBuV,CAAvB,EAA0BuD,QAA1B,EAAoC;AAClD;AACA,UAAImsE,cAAc,GAAG,CAAjB,GAAqBD,aAAY,CAAC,CAAD,CAAZ,CAAgBlmF,MAAzC,EAAiD;AAC/CikD,aAAK,CAACpH,YAAN,CAAmBqpC,aAAnB,EAAiCC,cAAc,GAAG,CAAlD;AACAwC,gCAAwB,CAACzC,YAAzB;AACD;;AAEDJ,2BAAoB,CAACK,cAAD,CAApB,GAAuC9rE,SAAvC;AACA0rE,kBAAY,CAACI,cAAD,CAAZ,GAA+BjlF,CAA/B;AACA8kF,kBAAY,CAACG,cAAD,CAAZ,GAA+B1vE,CAA/B;AACAwvE,yBAAmB,CAACE,cAAD,CAAnB,GAAsCnsE,QAAtC;AAEA,aAAOmsE,cAAc,EAArB;AACD,KAhqBM;AAkqBP2R,qBAAiB,EAAE,2BAAS/3F,CAAT,EAAYmB,CAAZ,EAAeuV,CAAf,EAAkB;AACnCsvE,kBAAY,CAAChmF,CAAD,CAAZ,GAAkBmB,CAAlB;AACA8kF,kBAAY,CAACjmF,CAAD,CAAZ,GAAkB0W,CAAlB;AACD,KArqBM;AAuqBPshF,qBAAiB,EAAE,2BAASt1F,GAAT,EAAc;AAC/B,UAAI1C,CAAJ,EAAOyM,CAAP;;AAEA,UAAI/J,GAAG,IAAI0jF,cAAX,EAA2B;AACzB,cAAM,IAAIvmF,KAAJ,CAAU,kBAAkB6C,GAAlB,GAAwB,yCAAlC,CAAN;AACD;;AAED0jF,oBAAc,GAPiB,CAS/B;;AACA,WAAKpmF,CAAC,GAAG0C,GAAT,EAAc1C,CAAC,GAAGomF,cAAlB,EAAkCpmF,CAAC,EAAnC,EAAuC;AACrC,aAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,CAAhB,EAAmBA,CAAC,EAApB,EAAwB;AACtB05E,uBAAY,CAAC15E,CAAD,CAAZ,CAAgBzM,CAAhB,IAAqBmmF,aAAY,CAAC15E,CAAD,CAAZ,CAAgBzM,CAAC,GAAG,CAApB,CAArB;AACD;AACF;AACF,KAtrBM;AAwrBP+lF,wBAAoB,EAAE,8BAAS/lF,CAAT,EAAY;AAChC,aAAO+lF,qBAAoB,CAAC/lF,CAAD,CAA3B;AACD,KA1rBM;AA4rBPi4F,eAAW,EAAE,qBAASj/D,KAAT,EAAgB;AAC3B,UAAI,CAACslB,MAAM,CAACy4C,gBAAP,CAAwB/9D,KAAK,CAAC73B,CAA9B,EAAiC63B,KAAK,CAACtiB,CAAvC,EAA0CsiB,KAAK,CAAC5tB,KAAhD,EAAuD4tB,KAAK,CAAC3tB,MAA7D,CAAL,EACE,MAAM,IAAIxL,KAAJ,CAAU,iCAAiCm5B,KAAK,CAAC73B,CAAvC,GAA2C,IAA3C,GAAkD63B,KAAK,CAACtiB,CAAxD,GAA4D,GAAtE,CAAN;;AAEF,UAAI8sE,WAAW,GAAG,CAAd,GAAkBD,UAAS,CAACpiF,CAAV,CAAYlB,MAAlC,EAA0C;AACxC;AACA;AACAikD,aAAK,CAACpH,YAAN,CAAmBymC,UAAnB,EAA8BC,WAAW,GAAG,CAA5C;AACAoF,gCAAwB,CAACrF,SAAzB;AACD;;AAEDC,iBAAW,GAXgB,CAa3B;;AACAllC,YAAM,CAACw4C,qBAAP,CAA6BtT,WAAW,GAAG,CAA3C,EAA8CxqD,KAA9C;AACD,KA3sBM;AA6sBPk/D,kBAAc,EAAE,wBAASx1F,GAAT,EAAc;AAC5B,UAAI1C,CAAJ,EAAOgD,IAAP;;AAEA,UAAIN,GAAG,IAAI8gF,WAAX,EAAwB;AACtB,cAAM,IAAI3jF,KAAJ,CAAU,cAAc6C,GAAd,GAAoB,yCAA9B,CAAN;AACD;;AAED8gF,iBAAW,GAPiB,CAS5B;AACA;AACA;AACA;;AACA,WAAKxjF,CAAC,GAAG0C,GAAT,EAAc1C,CAAC,GAAGwjF,WAAlB,EAA+BxjF,CAAC,EAAhC,EAAoC;AAClC,aAAKgD,IAAL,IAAaugF,UAAb,EAAwB;AACtB,cAAIA,UAAS,CAAChgF,cAAV,CAAyBP,IAAzB,CAAJ,EAAoC;AAClCugF,sBAAS,CAACvgF,IAAD,CAAT,CAAgBhD,CAAhB,IAAqBujF,UAAS,CAACvgF,IAAD,CAAT,CAAgBhD,CAAC,GAAG,CAApB,CAArB;AACD;AACF;AACF,OAnB2B,CAqB5B;AACA;;;AACAkkD,WAAK,CAACpH,YAAN,CAAmBymC,UAAnB,EAA8BC,WAA9B;AACAoF,8BAAwB,CAACrF,SAAzB;AACD,KAtuBM;AAwuBP4U,YAAQ,EAAE,kBAASn/D,KAAT,EAAgB;AACxB,UAAIurD,QAAQ,GAAG,CAAX,GAAeD,OAAM,CAACnjF,CAAP,CAASlB,MAA5B,EAAoC;AAClC;AACA;AACAikD,aAAK,CAACpH,YAAN,CAAmBwnC,OAAnB,EAA2BC,QAAQ,GAAG,CAAtC;AACAqE,gCAAwB,CAACtE,MAAzB;AACD;;AAEDC,cAAQ,GARgB,CAUxB;;AACAjmC,YAAM,CAAC04C,kBAAP,CAA0BzS,QAAQ,GAAG,CAArC,EAAwCvrD,KAAxC;AACD,KApvBM;AAsvBPo/D,eAAW,EAAE,qBAAS11F,GAAT,EAAc;AACzB,UAAI1C,CAAJ,EAAOgD,IAAP;;AAEA,UAAIN,GAAG,IAAI6hF,QAAX,EAAqB;AACnB,cAAM,IAAI1kF,KAAJ,CAAU,WAAW6C,GAAX,GAAiB,yCAA3B,CAAN;AACD,OALwB,CAOzB;AAEA;AACA;AACA;AACA;;;AACA1C,OAAC,GAAG,CAAJ;;AACA,aAAOA,CAAC,GAAG0lF,gBAAX,EAA6B;AAC3B,YAAIF,qBAAqB,CAACxlF,CAAD,CAArB,KAA6B0C,GAAjC,EACE47C,MAAM,CAAC+5C,mBAAP,CAA2Br4F,CAA3B,EADF,KAGEA,CAAC;AACJ;;AAEDukF,cAAQ,GArBiB,CAuBzB;AACA;AACA;AACA;;AACA,WAAKvkF,CAAC,GAAG0C,GAAT,EAAc1C,CAAC,GAAGukF,QAAlB,EAA4BvkF,CAAC,EAA7B,EAAiC;AAC/B,aAAKgD,IAAL,IAAashF,OAAb,EAAqB;AACnB,cAAIA,OAAM,CAAC/gF,cAAP,CAAsBP,IAAtB,CAAJ,EAAiC;AAC/BshF,mBAAM,CAACthF,IAAD,CAAN,CAAahD,CAAb,IAAkBskF,OAAM,CAACthF,IAAD,CAAN,CAAahD,CAAC,GAAG,CAAjB,CAAlB;AACD;AACF;AACF,OAjCwB,CAmCzB;;;AACA,WAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0lF,gBAAhB,EAAkC1lF,CAAC,EAAnC,EAAuC;AACrC,YAAIwlF,qBAAqB,CAACxlF,CAAD,CAArB,GAA2B0C,GAA/B,EACE8iF,qBAAqB,CAACxlF,CAAD,CAArB;AACH,OAvCwB,CAyCzB;AACA;;;AACAkkD,WAAK,CAACpH,YAAN,CAAmBwnC,OAAnB,EAA2BC,QAA3B;AACAqE,8BAAwB,CAACtE,MAAzB;AACD,KAnyBM;AAqyBPgU,WAAO,EAAE,iBAASt/D,KAAT,EAAgB;AACvB,UAAIqsD,OAAO,GAAG,CAAV,GAAcp/D,MAAK,CAACzM,EAAN,CAASvZ,MAA3B,EAAmC;AACjC;AACA;AACAikD,aAAK,CAACpH,YAAN,CAAmB72B,MAAnB,EAA0Bo/D,OAAO,GAAG,CAApC;AACAuD,gCAAwB,CAAC3iE,KAAzB;AACD;;AAEDo/D,aAAO,GARgB,CAUvB;;AACA/mC,YAAM,CAAC24C,iBAAP,CAAyB5R,OAAO,GAAG,CAAnC,EAAsCrsD,KAAtC;AACD,KAjzBM;AAmzBPu/D,cAAU,EAAE,oBAAS71F,GAAT,EAAc;AACxB,UAAI1C,CAAJ,EAAOgD,IAAP;;AAEA,UAAIN,GAAG,IAAI2iF,OAAX,EAAoB;AAClB,cAAM,IAAIxlF,KAAJ,CAAU,UAAU6C,GAAV,GAAgB,yCAA1B,CAAN;AACD,OALuB,CAOxB;AACA;AACA;AACA;;;AACA,WAAK1C,CAAC,GAAG0C,GAAT,EAAc1C,CAAC,GAAGqlF,OAAlB,EAA2BrlF,CAAC,EAA5B,EAAgC;AAC9B,aAAKgD,IAAL,IAAaijB,MAAb,EAAoB;AAClB,cAAIA,MAAK,CAAC1iB,cAAN,CAAqBP,IAArB,CAAJ,EAAgC;AAC9BijB,kBAAK,CAACjjB,IAAD,CAAL,CAAYhD,CAAZ,IAAiBimB,MAAK,CAACjjB,IAAD,CAAL,CAAYhD,CAAC,GAAG,CAAhB,CAAjB;AACD;AACF;AACF;;AAEDqlF,aAAO,GAnBiB,CAqBxB;AACA;;AACAnhC,WAAK,CAACpH,YAAN,CAAmB72B,MAAnB,EAA0Bo/D,OAA1B;AACAuD,8BAAwB,CAAC3iE,KAAzB;AACD,KA50BM;AA80BPuyE,oBAAgB,EAAE,0BAASx/D,KAAT,EAAgB;AAChC,UAAI0sD,gBAAgB,GAAG,CAAnB,GAAuBD,eAAc,CAAC/qE,SAAf,CAAyBza,MAApD,EAA4D;AAC1D;AACA;AACAikD,aAAK,CAACpH,YAAN,CAAmB2oC,eAAnB,EAAmCC,gBAAgB,GAAG,CAAtD;AACAkD,gCAAwB,CAACnD,cAAzB;AACD;;AAEDC,sBAAgB,GARgB,CAUhC;;AACApnC,YAAM,CAAC44C,0BAAP,CAAkCxR,gBAAgB,GAAG,CAArD,EAAwD1sD,KAAxD;AACD,KA11BM;AA41BPq/D,uBAAmB,EAAE,6BAAS31F,GAAT,EAAc;AACjC,UAAI1C,CAAJ,EAAOgD,IAAP;;AAEA,UAAIN,GAAG,IAAIgjF,gBAAX,EAA6B;AAC3B,cAAM,IAAI7lF,KAAJ,CAAU,oBAAoB6C,GAApB,GAA0B,yCAApC,CAAN;AACD;;AAEDgjF,sBAAgB,GAPiB,CASjC;;AACA,WAAK1lF,CAAC,GAAG0C,GAAT,EAAc1C,CAAC,GAAG0lF,gBAAlB,EAAoC1lF,CAAC,EAArC,EAAyC;AACvC,aAAKgD,IAAL,IAAayiF,eAAb,EAA6B;AAC3B,cAAIA,eAAc,CAACliF,cAAf,CAA8BP,IAA9B,CAAJ,EAAyC;AACvCyiF,2BAAc,CAACziF,IAAD,CAAd,CAAqBhD,CAArB,IAA0BylF,eAAc,CAACziF,IAAD,CAAd,CAAqBhD,CAAC,GAAG,CAAzB,CAA1B;AACD;AACF;AACF,OAhBgC,CAkBjC;;;AACAkkD,WAAK,CAACpH,YAAN,CAAmB2oC,eAAnB,EAAmCC,gBAAnC;AACAkD,8BAAwB,CAACnD,cAAzB;AACD,KAj3BM;AAm3BPgT,gBAAY,EAAE,sBAASC,EAAT,EAAaC,EAAb,EAAiB34F,CAAjB,EAAoB;AAChC,UAAIwP,CAAC,GAAG+H,MAAM,CAACvX,CAAD,CAAd;AAAA,UACEyM,CADF;;AAGA,UAAIisF,EAAE,GAAGlpF,CAAL,IAAUkpF,EAAE,GAAG35F,IAAI,CAAC,CAAD,CAAJ,GAAUyQ,CAAzB,IAA8BmpF,EAAE,GAAGnpF,CAAnC,IAAwCmpF,EAAE,GAAG55F,IAAI,CAAC,CAAD,CAAJ,GAAUyQ,CAA3D,EAA8D;AAC5D,eAAO,KAAP;AACD;;AACD,WAAK/C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+2E,WAAhB,EAA6B/2E,CAAC,EAA9B,EAAkC;AAChC,YAAIisF,EAAE,GAAI1W,SAAS,CAACv1E,CAAD,CAAT,GAAe+C,CAArB,IAA2BkpF,EAAE,GAAI1W,SAAS,CAACv1E,CAAD,CAAT,GAAey1E,aAAa,CAACz1E,CAAD,CAA5B,GAAkC+C,CAAnE,IACFmpF,EAAE,GAAI1W,SAAS,CAACx1E,CAAD,CAAT,GAAe+C,CADnB,IACyBmpF,EAAE,GAAI1W,SAAS,CAACx1E,CAAD,CAAT,GAAe01E,cAAc,CAAC11E,CAAD,CAA7B,GAAmC+C,CADtE,EAC0E;AACxE,iBAAO,KAAP;AACD;AACF;;AACD,aAAO,IAAP;AACD,KAj4BM;;AAm4BP;;;;;;;AAQAopF,gBAAY,EAAE,sBAAStnF,OAAT,EAAkBonF,EAAlB,EAAsBC,EAAtB,EAA0B34F,CAA1B,EAA6B64F,WAA7B,EAA0C;AACtD,UAAIC,MAAJ,EACEC,MADF,EAEEC,YAFF,EAGEC,KAHF,EAGSC,KAHT,EAGgBC,QAHhB,EAG0BC,QAH1B,EAIE3sF,CAJF,CADsD,CAOtD;;AACA,UAAI,CAAC6xC,MAAM,CAACm6C,YAAP,CAAoBC,EAApB,EAAwBC,EAAxB,EAA4B34F,CAA5B,CAAL,EAAqC;AACnC,eAAO,KAAP;AACD,OAVqD,CAYtD;;;AACA,WAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+2E,WAAhB,EAA6B/2E,CAAC,EAA9B,EAAkC;AAChCwsF,aAAK,GAAGjX,SAAS,CAACv1E,CAAD,CAAjB;AACAysF,aAAK,GAAGjX,SAAS,CAACx1E,CAAD,CAAjB;AACA0sF,gBAAQ,GAAGF,KAAK,GAAG/W,aAAa,CAACz1E,CAAD,CAAhC;AACA2sF,gBAAQ,GAAGF,KAAK,GAAG/W,cAAc,CAAC11E,CAAD,CAAjC;;AACA,YAAKisF,EAAE,GAAGO,KAAL,IAAcP,EAAE,GAAGS,QAApB,IACDR,EAAE,GAAGO,KAAL,IAAcP,EAAE,GAAGS,QADtB,EACiC;AAC/B,iBAAO,KAAP;AACD;AACF;;AAED,UAAIP,WAAJ,EAAiB;AACf,eAAO,IAAP;AACD,OA1BqD,CA4BtD;;;AACA,UAAI,OAAO74F,CAAP,KAAa,QAAjB,EAA2B;AACzB84F,cAAM,GAAG33F,CAAC,CAACnB,CAAD,CAAV;AACA+4F,cAAM,GAAGriF,CAAC,CAAC1W,CAAD,CAAV;AACAmB,SAAC,CAACnB,CAAD,CAAD,GAAO0W,CAAC,CAAC1W,CAAD,CAAD,GAAO2N,QAAd,CAHyB,CAGD;AACzB;;AAEDqrF,kBAAY,GAAG16C,MAAM,CAAC+6C,sBAAP,CAA8B/nF,OAA9B,EAAuC,CAAvC,EAA0C,KAA1C,EAAiDonF,EAAjD,EAAqDC,EAArD,CAAf;;AAEA,UAAI,OAAO34F,CAAP,KAAa,QAAjB,EAA2B;AACzBmB,SAAC,CAACnB,CAAD,CAAD,GAAO84F,MAAP;AACApiF,SAAC,CAAC1W,CAAD,CAAD,GAAO+4F,MAAP;AACD;;AAED,aAAOC,YAAY,IAAI,CAAvB;AACD,KAt7BM;;AAw7BP;;;;;;;;AASAjC,oBAAgB,EAAE,0BAASuC,IAAT,EAAeC,IAAf,EAAqBC,QAArB,EAA+BC,SAA/B,EAA0C/2F,GAA1C,EAA+C;AAC/D,UAAIg3F,OAAO,GAAGJ,IAAI,GAAGE,QAArB;AAAA,UACEG,OAAO,GAAGJ,IAAI,GAAGE,SADnB;AAAA,UAEER,KAFF;AAAA,UAESC,KAFT;AAAA,UAEgBC,QAFhB;AAAA,UAE0BC,QAF1B;AAAA,UAGE5pF,CAHF;AAAA,UAGKxP,CAHL,CAD+D,CAM/D;;AACA,UAAIs5F,IAAI,GAAG,CAAP,IAAYI,OAAO,GAAG36F,IAAI,CAAC,CAAD,CAA1B,IAAiCw6F,IAAI,GAAG,CAAxC,IAA6CI,OAAO,GAAG56F,IAAI,CAAC,CAAD,CAA/D,EAAoE;AAClE,eAAO,KAAP;AACD,OAT8D,CAW/D;;;AACA,WAAKiB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtBwP,SAAC,GAAG+H,MAAM,CAACvX,CAAD,CAAV;;AACA,YAAImB,CAAC,CAACnB,CAAD,CAAD,GAAQs5F,IAAI,GAAG9pF,CAAf,IAAqBrO,CAAC,CAACnB,CAAD,CAAD,GAAQ05F,OAAO,GAAGlqF,CAAvC,IACFkH,CAAC,CAAC1W,CAAD,CAAD,GAAQu5F,IAAI,GAAG/pF,CADb,IACmBkH,CAAC,CAAC1W,CAAD,CAAD,GAAQ25F,OAAO,GAAGnqF,CADzC,EAC6C;AAC3C,iBAAO,KAAP;AACD;AACF,OAlB8D,CAoB/D;;;AACA,WAAKxP,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwjF,WAAhB,EAA6BxjF,CAAC,EAA9B,EAAkC;AAChC,YAAI0C,GAAG,KAAKxD,SAAR,IAAqBwD,GAAG,KAAK1C,CAAjC,EAAoC;AAClC;AACA;AACA;AACD;;AACDi5F,aAAK,GAAGjX,SAAS,CAAChiF,CAAD,CAAjB;AACAk5F,aAAK,GAAGjX,SAAS,CAACjiF,CAAD,CAAjB;AACAm5F,gBAAQ,GAAGF,KAAK,GAAG/W,aAAa,CAACliF,CAAD,CAAhC;AACAo5F,gBAAQ,GAAGF,KAAK,GAAG/W,cAAc,CAACniF,CAAD,CAAjC;;AACA,YAAK05F,OAAO,GAAGT,KAAV,IAAmBK,IAAI,GAAGH,QAA3B,IACDQ,OAAO,GAAGT,KAAV,IAAmBK,IAAI,GAAGH,QAD7B,EACwC;AACtC,iBAAO,KAAP;AACD;AACF;;AAED,aAAO,IAAP;AACD,KAv+BM;AAy+BPQ,sBAAkB,EAAE,4BAASrrF,OAAT,EAAkB;AAEpC,UAAI;AACF2pD,iBAAW,GAAG3pD,OAAO,CAAC2pD,WAAR,IAAuB,GADvC;AAAA,UAGE2hC,KAAK,GAAGz4F,IAAI,CAACwqC,KAAL,CAAWxqC,IAAI,CAAC2O,IAAL,CAAUi8B,CAAV,CAAX,CAHV;AAAA,UAIE8tD,KAAK,GAAG14F,IAAI,CAACg+C,IAAL,CAAUpT,CAAC,GAAG6tD,KAAd,CAJV;AAAA,UAME75F,CANF;AAAA,UAMKwP,CANL;AAAA,UAMQ81C,CANR;AAAA,UAMWy0C,UANX;AAAA,UAMuBC,UANvB;AAAA,UAOEC,UAPF;AAAA,UAOcC,UAPd;AAAA,UAO0BlhE,KAP1B;AASAsmD,yBAAmB,CAACpnB,WAAD,CAAnB;AAEA8hC,gBAAU,GAAGj7F,IAAI,CAAC,CAAD,CAAJ,IAAW,IAAI+6F,KAAf,CAAb;AACAC,gBAAU,GAAGh7F,IAAI,CAAC,CAAD,CAAJ,IAAW,IAAI86F,KAAf,CAAb,CAdoC,CAgBpC;AACA;;AACA75F,OAAC,GAAG,CAAC,CAAL;;AAEA,WAAKwP,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIqqF,KAAjB,EAAwBrqF,CAAC,EAAzB,EAA6B;AAC3B,aAAK81C,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIw0C,KAAjB,EAAwBx0C,CAAC,EAAzB,EAA6B;AAC3BtlD,WAAC;AACD,cAAIA,CAAC,KAAKgsC,CAAV,EAAa;AACbiuD,oBAAU,GAAGrC,IAAI,CAACxoF,MAAL,CAAY,CAAZ,EAAe,IAAI,CAAnB,CAAb;AACA8qF,oBAAU,GAAG,IAAI94F,IAAI,CAACyO,MAAL,EAAJ,GAAoBzO,IAAI,CAAC0O,EAAtC;AAEAkpB,eAAK,GAAG;AACN1nB,mBAAO,EAAElQ,IAAI,CAACwqC,KAAL,CAAWxqC,IAAI,CAACyO,MAAL,KAAgBtB,OAAO,CAAC4rF,YAAnC,CADH;AACqD;AAC3Dh5F,aAAC,EAAEmkD,CAAC,GAAG00C,UAFD;AAGNtjF,aAAC,EAAElH,CAAC,GAAGuqF,UAHD;AAINpjF,cAAE,EAAEsjF,UAAU,GAAG74F,IAAI,CAAC8O,GAAL,CAASgqF,UAAT,CAJX;AAKNtjF,cAAE,EAAEqjF,UAAU,GAAG74F,IAAI,CAAC6O,GAAL,CAASiqF,UAAT,CALX;AAMNnjF,kBAAM,EAAE,KAAK/W,CAAC,GAAG,CAAT,IAAc,CANhB,CAMkB;;AANlB,WAAR;AAQAs+C,gBAAM,CAAC82C,iBAAP,CAAyBp1F,CAAzB,EAA4Bg5B,KAA5B;AACD;AACF,OArCmC,CAuCpC;;;AACAmxD,qBAAe;AACfX,gDAA0C,GAzCN,CA2CpC;AACA;AACA;AACA;AACA;AACA;;AACA8J,uBAAiB,CAACp7B,WAAD,EAAc,IAAd,CAAjB;AACD,KA3hCM;AA6hCPkiC,oBAAgB,EAAE,4BAAW;AAC3B,UAAIp6F,CAAJ;AAAA,UACEyM,CADF;AAAA,UAEE8uC,EAFF;AAAA,UAGEC,EAHF;AAAA,UAIEq/B,IAJF;AAAA,UAKEwf,GALF;AAAA,UAMEC,GANF;AAAA,UAOElS,OAPF;AAAA,UAQEF,SARF;AAAA,UASEG,OATF;AAAA,UAUEF,SAVF;AAAA,UAWEoS,OAXF;AAAA,UAYEC,OAZF;AAAA,UAaEC,GAbF;AAAA,UAcE/iB,GAdF;AAAA,UAeEgjB,iBAAiB,GAAG3a,aAAa,GAAGA,aAftC;AAiBA6F,gBAAU,GAAG,CAAb;;AAEA,WAAK5lF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB;AACAu6F,eAAO,GAAGjpF,OAAO,CAACtR,CAAD,CAAjB;AACAooF,eAAO,GAAG9H,YAAY,CAACia,OAAD,CAAtB;AACArS,iBAAS,GAAG5H,YAAY,CAACia,OAAD,CAAxB;AACAF,WAAG,GAAGl5F,CAAC,CAACnB,CAAD,CAAP;AACAs6F,WAAG,GAAG5jF,CAAC,CAAC1W,CAAD,CAAP;;AAEA,aAAKyM,CAAC,GAAGzM,CAAC,GAAG,CAAb,EAAgByM,CAAC,GAAGu/B,CAApB,EAAuBv/B,CAAC,EAAxB,EAA4B;AAC1B,cAAIw0E,aAAa,KAAK,CAAlB,IAAwBsN,gBAAgB,CAACvuF,CAAD,CAAhB,IAAuBuuF,gBAAgB,CAACvuF,CAAD,CAAhB,CAAoByM,CAApB,CAAnD,EAA4E;AAE5E+tF,iBAAO,GAAGlpF,OAAO,CAAC7E,CAAD,CAAjB;AACA47E,iBAAO,GAAG/H,YAAY,CAACka,OAAD,CAAtB;AACArS,mBAAS,GAAG7H,YAAY,CAACka,OAAD,CAAxB;;AAEA,cAAIzjF,MAAM,CAAC/W,CAAD,CAAN,GAAY+W,MAAM,CAACtK,CAAD,CAAlB,IAAyB,CAA7B,EAAgC;AAC9B8uC,cAAE,GAAGp6C,CAAC,CAACsL,CAAD,CAAD,GAAO4tF,GAAZ;AACA7+C,cAAE,GAAG9kC,CAAC,CAACjK,CAAD,CAAD,GAAO6tF,GAAZ;AACAzf,gBAAI,GAAGt/B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAtB;AAGAi/C,eAAG,GAAG,OAAOrS,OAAO,GAAGC,OAAjB,CAAN;AACAoS,eAAG,IAAIA,GAAP;AACA/iB,eAAG,GAAGwQ,SAAS,GAAGC,SAAlB;;AAEA,gBAAItN,IAAI,GAAG4f,GAAG,GAAGC,iBAAb,IAAkChjB,GAAG,GAAG,CAA5C,EAA+C;AAC7C,kBAAIkO,UAAU,GAAG,CAAb,GAAiBD,SAAQ,CAAC5rE,KAAT,CAAe9Z,MAApC,EAA4C;AAC1CikD,qBAAK,CAACpH,YAAN,CAAmB6oC,SAAnB,EAA6B,CAACC,UAAU,GAAG,CAAd,IAAmB,CAAhD;AACAgD,wCAAwB,CAACjD,QAAzB;AACD;;AACDE,+BAAiB,CAACD,UAAD,CAAjB,GAAgC5lF,CAAhC;AACA8lF,+BAAiB,CAACF,UAAD,CAAjB,GAAgCn5E,CAAhC;AACAm5E,wBAAU;AACX;AACF;AACF;AACF;;AAEDD,eAAQ,CAAC1gE,KAAT,GAAiB2gE,UAAjB;AACA,aAAOD,SAAP;AACD,KAzlCM;AA2lCP;AACA;AACA;AACA;AACA;AACA;AACA;AACAgV,aAAS,EAAE,mBAAS39B,QAAT,EAAmB49B,GAAnB,EAAwB;AACjC,UAAI1tE,KAAJ;AAAA,UAAW2tE,KAAX;AAAA,UAAkBC,MAAM,GAAG7rF,IAA3B,CADiC,CAGjC;;AACA,UAAI+tD,QAAQ,KAAK99D,SAAjB,EAA4B89D,QAAQ,GAAG,GAAX,CAJK,CAMjC;;AACA,UAAI49B,GAAG,KAAK17F,SAAZ,EAAuB07F,GAAG,GAAG,CAAN;AAEvBn2C,QAAE,GAAGm2C,GAAL,CATiC,CASvB;;AACV3a,WAAK,GAAGx7B,EAAE,GAAGA,EAAb,CAViC,CAUhB;AAEjB;AACA;;AACAy8B,wBAAkB,GAAG,KAArB,CAdiC,CAgBjC;AACA;AACA;AACA;AACA;;AACAkR,qCAA+B,GArBE,CAuBjC;AACA;AACA;;AACA,UAAInjF,IAAI,KAAK,CAAb,EAAgB;AACdsjF,oCAA4B;AAC7B,OA5BgC,CA8BjC;;;AACArlE,WAAK,GAAG9rB,IAAI,CAACwqC,KAAL,CAAWoxB,QAAQ,GAAGvY,EAAtB,CAAR,CA/BiC,CAiCjC;AACA;;AACAsvC,wBAAkB,GAnCe,CAqCjC;AACA;;AACAlB,cAAQ;;AAER,WAAKgI,KAAK,GAAG,CAAb,EAAgBA,KAAK,IAAI3tE,KAAzB,EAAgC2tE,KAAK,EAArC,EAAyC;AACvC5rF,YAAI,GAAG6rF,MAAM,GAAGD,KAAK,GAAGp2C,EAAxB,CADuC,CAGvC;;AACAguC,0BAAkB,GAJqB,CAMvC;;AACAC,+BAAuB,GAPgB,CASvC;AACA;;AACAH,oCAA4B,GAXW,CAavC;;AACAM,gBAAQ,GAd+B,CAgBvC;;AACAJ,0BAAkB,GAjBqB,CAmBvC;;AACAK,4BAAoB,GApBmB,CAsBvC;;AACAC,+BAAuB,GAvBgB,CAyBvC;AACA;AACA;AACA;AACA;;AACA,YAAIrgF,gBAAgB,KAAK,CAArB,IAA0B,CAACktE,wBAA/B,EAAyD;AACvDsT,sCAA4B;AAC7B;;AAEDzT,wBAAgB,CAAClB,kBAAjB,CAAoC,oCAApC,EAA0E,CAACv9B,YAAD,EAAeyD,EAAf,EAAmBx1C,IAAnB,CAA1E,EAlCuC,CAoCvC;;AACAqkF,yBAAiB;AAClB,OA/EgC,CA+E/B;AAEF;AACA;AACA;AACA;;;AACAU,kCAA4B,CAACh3B,QAAD,CAA5B,CArFiC,CAuFjC;AACA;;AACAy2B,0BAAoB;AACrB,KA5rCM;AA8rCPlB,gCAA4B,EAAEA,4BA9rCvB;AAgsCP;AACAwI,kBAAc,EAAE,0BAAW;AACzB;AACA,UAAIC,UAAU,GAAG,IAAjB;AAAA,UACE;AACAC,kBAAY,GAAG,IAFjB;AAAA,UAGE;AACAC,eAAS,GAAG,IAJd;AAAA,UAKEC,MALF;AAAA,UAKUC,KALV;AAAA,UAKiBvS,KALjB;AAAA,UAKwBC,KALxB;AAAA,UAK+B9oF,CAL/B;AAAA,UAKkCg4E,IALlC,CAFyB,CASzB;;AACAua,kCAA4B;AAC5BM,cAAQ,GAXiB,CAYzB;;AACAsI,YAAM,GAAG,CAAT;;AACA,WAAKn7F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB,YAAIm7F,MAAM,GAAG/5F,IAAI,CAAC2M,GAAL,CAAS8I,EAAE,CAAC7W,CAAD,CAAX,CAAb,EACEm7F,MAAM,GAAG/5F,IAAI,CAAC2M,GAAL,CAAS8I,EAAE,CAAC7W,CAAD,CAAX,CAAT;AACF,YAAIm7F,MAAM,GAAG/5F,IAAI,CAAC2M,GAAL,CAAS+I,EAAE,CAAC9W,CAAD,CAAX,CAAb,EACEm7F,MAAM,GAAG/5F,IAAI,CAAC2M,GAAL,CAAS+I,EAAE,CAAC9W,CAAD,CAAX,CAAT;AACH;;AAEDg4E,UAAI,GAAG,CAAP;;AACA,aAAOmjB,MAAM,GAAGF,YAAT,IAAyBjjB,IAAI,GAAGkjB,SAAvC,EAAkD;AAChDljB,YAAI;AAEJojB,aAAK,GAAGJ,UAAU,GAAGG,MAArB;;AACA,aAAKn7F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB6oF,eAAK,GAAG1nF,CAAC,CAACnB,CAAD,CAAT;AACA8oF,eAAK,GAAGpyE,CAAC,CAAC1W,CAAD,CAAT;AACAmB,WAAC,CAACnB,CAAD,CAAD,IAAQ6W,EAAE,CAAC7W,CAAD,CAAF,GAAQo7F,KAAhB;AACA1kF,WAAC,CAAC1W,CAAD,CAAD,IAAQ8W,EAAE,CAAC9W,CAAD,CAAF,GAAQo7F,KAAhB,CAJsB,CAMtB;;AACA3Q,gCAAsB,CAACzqF,CAAD,CAAtB,CAPsB,CAQtB;;AACA0qF,oCAA0B,CAAC1qF,CAAD,EAAI6oF,KAAJ,EAAWC,KAAX,EAAkB,KAAlB,CAA1B,CATsB,CAUtB;;AACAgD,iCAAuB,CAAC9rF,CAAD,EAAI6oF,KAAJ,EAAWC,KAAX,CAAvB,CAXsB,CAYtB;;AACA6E,gCAAsB,CAAC3tF,CAAD,EAAI6oF,KAAJ,EAAWC,KAAX,CAAtB;AACD,SAlB+C,CAoBhD;;;AACAyJ,oCAA4B;AAC5BM,gBAAQ,GAtBwC,CAuBhD;;AACAsI,cAAM,GAAG,CAAT;;AACA,aAAKn7F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB,cAAIm7F,MAAM,GAAG/5F,IAAI,CAAC2M,GAAL,CAAS8I,EAAE,CAAC7W,CAAD,CAAX,CAAb,EACEm7F,MAAM,GAAG/5F,IAAI,CAAC2M,GAAL,CAAS8I,EAAE,CAAC7W,CAAD,CAAX,CAAT;AACF,cAAIm7F,MAAM,GAAG/5F,IAAI,CAAC2M,GAAL,CAAS+I,EAAE,CAAC9W,CAAD,CAAX,CAAb,EACEm7F,MAAM,GAAG/5F,IAAI,CAAC2M,GAAL,CAAS+I,EAAE,CAAC9W,CAAD,CAAX,CAAT;AACH;AACF;AACF,KAvvCM;AAyvCPq7F,yBAAqB,EAAE,+BAAS/hE,KAAT,EAAgB;AACrC,UAAIgiE,MAAM,GAAG,EAAb;AAAA,UACEt7F,CADF;AAAA,UAEEyvF,EAFF;AAAA,UAGEC,EAHF;;AAKA,WAAK1vF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGihF,aAAhB,EAA+BjhF,CAAC,EAAhC,EAAoC;AAClCyvF,UAAE,GAAG9O,oBAAoB,CAAC3gF,CAAD,CAAzB;AACA0vF,UAAE,GAAG9O,oBAAoB,CAAC5gF,CAAD,CAAzB;;AACA,YAAIs5B,KAAK,KAAKm2D,EAAV,IAAgBn2D,KAAK,KAAKo2D,EAA9B,EAAkC;AAChC4L,gBAAM,CAAC14F,IAAP,CAAY5C,CAAZ;AACD;AACF;;AACD,aAAOs7F,MAAP;AACD,KAvwCM;AAywCPC,0BAAsB,EAAE,gCAASjiE,KAAT,EAAgB;AACtC,UAAIkiE,MAAM,GAAG,EAAb;AAAA,UACEx7F,CADF;AAAA,UAEEyvF,EAFF;AAAA,UAGEC,EAHF;AAAA,UAIEG,EAJF;;AAMA,WAAK7vF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+hF,cAAhB,EAAgC/hF,CAAC,EAAjC,EAAqC;AACnCyvF,UAAE,GAAGhO,qBAAqB,CAACzhF,CAAD,CAA1B;AACA0vF,UAAE,GAAGhO,qBAAqB,CAAC1hF,CAAD,CAA1B;AACA6vF,UAAE,GAAGlO,qBAAqB,CAAC3hF,CAAD,CAA1B;;AACA,YAAIs5B,KAAK,KAAKm2D,EAAV,IAAgBn2D,KAAK,KAAKo2D,EAA1B,IAAgCp2D,KAAK,KAAKu2D,EAA9C,EAAkD;AAChD2L,gBAAM,CAAC54F,IAAP,CAAY5C,CAAZ;AACD;AACF;;AACD,aAAOw7F,MAAP;AACD,KAzxCM;AA2xCP;AACAzR,gBAAY,EAAE,wBAAW;AACvB,UAAID,SAAS,GAAG,CAAhB;AAAA,UACE9pF,CADF;;AAEA,WAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB8pF,iBAAS,IAAInyE,IAAI,CAAC3X,CAAD,CAAjB;AACD;;AACD,aAAO8pF,SAAP;AACD,KAnyCM;AAqyCP2R,sBAAkB,EAAE,4BAAS78E,EAAT,EAAa;AAC/B,aAAO2hE,aAAa,CAAC3hE,EAAD,CAApB;AACD,KAvyCM;AAyyCPohC,oBAAgB,EAAE,4BAAW;AAC3B,aAAOhU,CAAP;AACD,KA3yCM;AA6yCP0vD,uBAAmB,EAAE,+BAAW;AAC9B,aAAOjb,UAAP;AACD,KA/yCM;AAizCPkb,wBAAoB,EAAE,gCAAW;AAC/B,aAAOnY,WAAP;AACD,KAnzCM;AAqzCPoY,qBAAiB,EAAE,6BAAW;AAC5B,aAAOrX,QAAP;AACD,KAvzCM;AAyzCPsX,oBAAgB,EAAE,4BAAW;AAC3B,aAAOxW,OAAP;AACD,KA3zCM;AA6zCPyW,0BAAsB,EAAE,kCAAW;AACjC,aAAO7a,aAAP;AACD,KA/zCM;AAi0CP8a,2BAAuB,EAAE,mCAAW;AAClC,aAAOha,cAAP;AACD,KAn0CM;AAq0CPia,yBAAqB,EAAE,iCAAW;AAChC,aAAOxa,YAAP;AACD,KAv0CM;AAy0CPya,2BAAuB,EAAE,mCAAW;AAClC,aAAO7V,cAAP;AACD,KA30CM;AA60CP8V,6BAAyB,EAAE,qCAAW;AACpC,aAAOxW,gBAAP;AACD,KA/0CM;;AAi1CP;;;;AAIA;AACAyW,sBAAkB,EAAE,4BAASj1D,KAAT,EAAgB;AAClC,UAAIlnC,CAAJ,EAAOyM,CAAP,EAAU5N,CAAV,EACE4wF,EADF,EACMC,EADN,EACUG,EADV,EAEEvuC,GAFF,EAEOC,GAFP,EAGEhG,EAHF,EAGMC,EAHN,EAIEs0C,IAJF,EAIQC,IAJR,EAIcC,IAJd,EAIoBC,IAJpB,EAKEK,QALF,EAKY5gF,KALZ,EAKmBuiF,IALnB,EAMEpX,IANF,EAMQuV,GANR,EAMaC,GANb,EAOE1jF,CAPF,EAOKyvF,EAPL,EAOSzE,SAPT,EAQE0E,WARF,EASEC,eATF,EAUE;AACAC,iBAXF,EAYE;AACAC,QAbF,CADkC,CAgBlC;AACA;;AACAA,QAAE,GAAG,CAAL;AACAD,iBAAW,GAAG,CAAd;;AAEA,WAAKv8F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AAEtB;AACA,YAAIqS,kBAAJ,EAAwB;AACtBiqF,yBAAe,GAAG3kF,IAAI,CAAC3X,CAAD,CAAJ,GAAUqS,kBAAV,GAA+BqE,CAAC,CAAC1W,CAAD,CAAlD;AACAw8F,YAAE,IAAIx+E,4BAAS,CAACvX,OAAV,CAAkB61F,eAAlB,EAAmC;AACvCp0F,gBAAI,EAAE3B,SAAI,CAACc,cAD4B;AAEvCc,cAAE,EAAE5B,SAAI,CAACgB;AAF8B,WAAnC,CAAN;AAID,SATqB,CAWtB;;;AACA,aAAK1I,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6mF,gBAAhB,EAAkC7mF,CAAC,EAAnC,EAAuC;AACrCozF,cAAI,GAAGzM,qBAAqB,CAAC3mF,CAAD,CAA5B;AACA,cAAIozF,IAAI,IAAI,IAAR,IAAgB,CAACL,YAAY,CAACK,IAAD,EAAO9wF,CAAC,CAACnB,CAAD,CAAR,EAAa0W,CAAC,CAAC1W,CAAD,CAAd,CAAjC,EAAqD;AACrDq8F,qBAAW,GAAGtlF,MAAM,CAAC/W,CAAD,CAAN,GAAY+xF,eAAe,CAAClzF,CAAD,CAAzC;;AACA,kBAAQ0mF,wBAAwB,CAAC1mF,CAAD,CAAhC;AACE,iBAAK,GAAL;AACA,iBAAK,GAAL;AACEw9F,yBAAW,IAAI,CAACpK,IAAI,IAAI,IAAR,GAAetO,MAAM,CAACsO,IAAD,CAArB,GAA8BnkF,IAA/B,IAAuC4I,CAAC,CAAC1W,CAAD,CAAvD;AACA;;AACF,iBAAK,GAAL;AACA,iBAAK,GAAL;AACEq8F,yBAAW,IAAI,CAACpK,IAAI,IAAI,IAAR,GAAevO,MAAM,CAACuO,IAAD,CAArB,GAA8BpkF,IAA/B,IAAuC1M,CAAC,CAACnB,CAAD,CAAvD;AACA;AARJ;;AAUAw8F,YAAE,IAAIx+E,4BAAS,CAACvX,OAAV,CAAkB41F,WAAlB,EAA+B;AACnCn0F,gBAAI,EAAE3B,SAAI,CAACc,cADwB;AAEnCc,cAAE,EAAE5B,SAAI,CAACgB;AAF0B,WAA/B,CAAN;AAID;;AAEDg1F,mBAAW,IAAI,MAAM5kF,IAAI,CAAC3X,CAAD,CAAV,IAAiB2W,EAAE,CAAC3W,CAAD,CAAF,GAAQ2W,EAAE,CAAC3W,CAAD,CAAV,GAAgB4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAA3C,CAAf,CAhCsB,CAkCtB;;AACA,aAAKyM,CAAC,GAAGzM,CAAC,GAAG,CAAb,EAAgByM,CAAC,GAAGu/B,CAApB,EAAuBv/B,CAAC,EAAxB,EAA4B;AAC1B8uC,YAAE,GAAGp6C,CAAC,CAACsL,CAAD,CAAD,GAAOtL,CAAC,CAACnB,CAAD,CAAb;AACAw7C,YAAE,GAAG9kC,CAAC,CAACjK,CAAD,CAAD,GAAOiK,CAAC,CAAC1W,CAAD,CAAb;AAEA66E,cAAI,GAAGt/B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAtB,CAJ0B,CAM1B;;AACA,cAAIqkC,2BAAJ,EAAgC;AAC9B2c,cAAE,IAAIpV,YAAY,CAAC91E,OAAO,CAACtR,CAAD,CAAR,CAAZ,CAAyBsR,OAAO,CAAC7E,CAAD,CAAhC,EAAqCmuE,4BAArC,CAAkEC,IAAlE,CAAN;AACD;;AACD,cAAI6E,sBAAqB,IAAI0P,gBAAgB,CAACnvF,MAAjB,GAA0B,CAAvD,EAA0D;AACxDu8F,cAAE,IAAIthB,YAAO,CAACrC,SAAR,CAAkBz3E,IAAI,CAAC2O,IAAL,CAAU8qE,IAAV,CAAlB,EAAmC9jE,MAAM,CAAC/W,CAAD,CAAzC,EAA8C+W,MAAM,CAACtK,CAAD,CAApD,EAAyDkzE,eAAzD,EAA0EntE,yBAA1E,CAAN;AACD;AACF;AACF,OAtEiC,CAwElC;;;AACA,WAAKxS,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGihF,aAAhB,EAA+BjhF,CAAC,EAAhC,EAAoC;AAClCyvF,UAAE,GAAG9O,oBAAoB,CAAC3gF,CAAD,CAAzB;AACA0vF,UAAE,GAAG9O,oBAAoB,CAAC5gF,CAAD,CAAzB;AACAshD,WAAG,GAAGhwC,OAAO,CAACm+E,EAAD,CAAb;AACAluC,WAAG,GAAGjwC,OAAO,CAACo+E,EAAD,CAAb;AAEAn0C,UAAE,GAAGp6C,CAAC,CAACuuF,EAAD,CAAD,GAAQvuF,CAAC,CAACsuF,EAAD,CAAd;AACAj0C,UAAE,GAAG9kC,CAAC,CAACg5E,EAAD,CAAD,GAAQh5E,CAAC,CAAC+4E,EAAD,CAAd;AACA5U,YAAI,GAAGt/B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAtB,CARkC,CAUlC;;AACA7uC,SAAC,GAAGm0E,kBAAkB,CAAC9gF,CAAD,CAAtB,CAXkC,CAalC;;AACAo8F,UAAE,GAAGh7F,IAAI,CAAC2O,IAAL,CAAU8qE,IAAV,IAAkBgG,gBAAgB,CAAC7gF,CAAD,CAAvC;AAEAw8F,UAAE,IAAI,MAAM7vF,CAAN,GAAUyvF,EAAV,GAAeA,EAArB,CAhBkC,CAkBlC;;AACA,YAAIvc,2BAAJ,EAAgC;AAC9B2c,YAAE,IAAIpV,YAAY,CAAC9lC,GAAD,CAAZ,CAAkBC,GAAlB,EAAuBq5B,4BAAvB,CAAoDC,IAApD,CAAN;AACD;;AACD,YAAI6E,sBAAqB,IAAI3oE,MAAM,CAAC04E,EAAD,CAA/B,IAAuC14E,MAAM,CAAC24E,EAAD,CAAjD,EAAuD;AACrD8M,YAAE,IAAIthB,YAAO,CAACrC,SAAR,CAAkBz3E,IAAI,CAAC2O,IAAL,CAAU8qE,IAAV,CAAlB,EAAmC9jE,MAAM,CAAC04E,EAAD,CAAzC,EAA+C14E,MAAM,CAAC24E,EAAD,CAArD,EAA2D/P,eAA3D,EAA4EntE,yBAA5E,CAAN;AACD;AACF,OAlGiC,CAoGlC;;;AACA,WAAKxS,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+hF,cAAhB,EAAgC/hF,CAAC,EAAjC,EAAqC;AACnCyvF,UAAE,GAAGhO,qBAAqB,CAACzhF,CAAD,CAA1B;AACA0vF,UAAE,GAAGhO,qBAAqB,CAAC1hF,CAAD,CAA1B;AACA6vF,UAAE,GAAGlO,qBAAqB,CAAC3hF,CAAD,CAA1B,CAHmC,CAKnC;AACA;AACA;;AACA8vF,YAAI,GAAG3uF,CAAC,CAACsuF,EAAD,CAAD,GAAQtuF,CAAC,CAAC0uF,EAAD,CAAhB;AACAG,YAAI,GAAG7uF,CAAC,CAACuuF,EAAD,CAAD,GAAQvuF,CAAC,CAAC0uF,EAAD,CAAhB;AACAE,YAAI,GAAGr5E,CAAC,CAAC+4E,EAAD,CAAD,GAAQ/4E,CAAC,CAACm5E,EAAD,CAAhB;AACAI,YAAI,GAAGv5E,CAAC,CAACg5E,EAAD,CAAD,GAAQh5E,CAAC,CAACm5E,EAAD,CAAhB;AACAO,WAAG,GAAGhvF,IAAI,CAAC2O,IAAL,CAAU+/E,IAAI,GAAGA,IAAP,GAAcC,IAAI,GAAGA,IAA/B,CAAN;AACAM,WAAG,GAAGjvF,IAAI,CAAC2O,IAAL,CAAUigF,IAAI,GAAGA,IAAP,GAAcC,IAAI,GAAGA,IAA/B,CAAN,CAbmC,CAcnC;;AACAK,gBAAQ,GAAG,CAACR,IAAI,GAAGE,IAAP,GAAcD,IAAI,GAAGE,IAAtB,KAA+BG,GAAG,GAAGC,GAArC,CAAX;AACA,YAAIC,QAAQ,GAAG,GAAf,EAAoBA,QAAQ,GAAG,GAAX,CAApB,KACK,IAAIA,QAAQ,GAAG,CAAC,GAAhB,EAAqBA,QAAQ,GAAG,CAAC,GAAZ;AAC1B5gF,aAAK,GAAGtO,IAAI,CAACyvF,IAAL,CAAUP,QAAV,CAAR,CAlBmC,CAoBnC;AACA;;AACAqH,iBAAS,GAAGjoF,KAAK,GAAGkyE,gBAAgB,CAAC5hF,CAAD,CAApC,CAtBmC,CAuBnC;;AACAw8F,UAAE,IAAI,MAAM3a,mBAAmB,CAAC7hF,CAAD,CAAzB,GAA+B23F,SAA/B,GAA2CA,SAAjD;AACD,OA9HiC,CAgIlC;;;AACA,WAAK33F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwhF,YAAhB,EAA8BxhF,CAAC,EAA/B,EAAmC;AACjCyvF,UAAE,GAAGtO,kBAAkB,CAACnhF,CAAD,CAAvB;AACAshD,WAAG,GAAGhwC,OAAO,CAACm+E,EAAD,CAAb;AAEAl0C,UAAE,GAAG8lC,WAAW,CAACrhF,CAAD,CAAX,GAAiBmB,CAAC,CAACsuF,EAAD,CAAvB;AACAj0C,UAAE,GAAG8lC,WAAW,CAACthF,CAAD,CAAX,GAAiB0W,CAAC,CAAC+4E,EAAD,CAAvB;AACA5U,YAAI,GAAGt/B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAtB,CANiC,CAQjC;;AACA7uC,SAAC,GAAGy0E,UAAU,CAACphF,CAAD,CAAd,CATiC,CAWjC;;AACAo8F,UAAE,GAAGh7F,IAAI,CAAC2O,IAAL,CAAU8qE,IAAV,CAAL;AAEA2hB,UAAE,IAAI,MAAM7vF,CAAN,GAAUyvF,EAAV,GAAeA,EAArB;AACD,OAhJiC,CAkJlC;;;AACA,WAAKp8F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwjF,WAAhB,EAA6BxjF,CAAC,EAA9B,EAAkC;AAEhC,YAAIyiF,YAAY,CAACziF,CAAD,CAAZ,KAAoB2N,QAAxB,EAAkC;AAChC;AACA,cAAI0E,kBAAJ,EAAwB;AACtBiqF,2BAAe,GAAG7Z,YAAY,CAACziF,CAAD,CAAZ,GAAkBqS,kBAAlB,GAAuC4vE,SAAS,CAACjiF,CAAD,CAAlE;AACAw8F,cAAE,IAAIx+E,4BAAS,CAACvX,OAAV,CAAkB61F,eAAlB,EAAmC;AACvCp0F,kBAAI,EAAE3B,SAAI,CAACc,cAD4B;AAEvCc,gBAAE,EAAE5B,SAAI,CAACgB;AAF8B,aAAnC,CAAN;AAID,WAR+B,CAShC;;;AACAg1F,qBAAW,IAAI,MAAM9Z,YAAY,CAACziF,CAAD,CAAlB,IACZoiF,UAAU,CAACpiF,CAAD,CAAV,GAAgBoiF,UAAU,CAACpiF,CAAD,CAA1B,GAAgCqiF,UAAU,CAACriF,CAAD,CAAV,GAAgBqiF,UAAU,CAACriF,CAAD,CAD9C,CAAf;AAED;AACF,OAlKiC,CAoKlC;;;AACAq/E,OAAC,GAAGL,iBAAY,CAACud,WAAD,EAAcvwD,CAAd,CAAhB,CArKkC,CAuKlC;;AACA9E,WAAK,CAACj4B,IAAN,GAAaA,IAAb;AACAi4B,WAAK,CAACs1D,EAAN,GAAWA,EAAX;AACAt1D,WAAK,CAACu1D,EAAN,GAAWz+E,4BAAS,CAACvX,OAAV,CAAkB81F,WAAlB,EAA+B;AACxCr0F,YAAI,EAAE3B,SAAI,CAACc,cAD6B;AAExCc,UAAE,EAAE5B,SAAI,CAACgB;AAF+B,OAA/B,CAAX;AAIA2/B,WAAK,CAACgxB,WAAN,GAAoBmnB,CAApB;AACAn4C,WAAK,CAACw1D,GAAN,GAAY,CAACjW,KAAD,EAAQC,KAAR,CAAZ,CA/KkC,CA+KN;;AAC5Bx/C,WAAK,CAACy1D,EAAN,GAAW,CAACpW,IAAD,EAAOC,IAAP,CAAX;AACAt/C,WAAK,CAAC01D,GAAN,GAAY,CAACjW,KAAD,EAAQC,KAAR,CAAZ;AACA1/C,WAAK,CAAC6/C,QAAN,GAAiBA,QAAjB,CAlLkC,CAoLlC;AACA;AACA;;AACA7/C,WAAK,CAAC0X,KAAN,GAAcA,MAAd;AACA1X,WAAK,CAAC85C,WAAN,GAAoBA,YAApB,CAxLkC,CA0LlC;;AACAvB,sBAAgB,CAAClB,kBAAjB,CAAoC,oBAApC,EAA0D,CAACr3C,KAAD,CAA1D;AACD,KAlhDM;;AAqhDP;;;;;;AAMAmyD,0BAAsB,EAAE,gCAASwD,WAAT,EAAsBC,UAAtB,EAAkCC,iBAAlC,EAAqD;AAE3E,aAAO,UAAS9D,KAAT,EAAgBC,KAAhB,EAAuB;AAC5B,YAAIsD,EAAE,GAAG,CAAT;AAAA,YACEnO,EAAE,GAAG,CADP;AAAA,YAEEC,EAAE,GAAG,CAFP;AAAA,YAGE0O,KAHF;AAAA,YAIEC,KAJF;AAAA,YAKEC,MAAM,GAAG9V,YAAY,CAACyV,WAAD,CALvB;AAAA,YAME78F,CANF;AAAA,YAOEu7C,EAPF;AAAA,YAQEC,EARF;AAAA,YASEq/B,IATF;AAAA,YAUErrE,CAVF;AAAA,YAWEuhF,QAXF;AAAA,YAYEoM,EAZF;;AAcA,aAAKn9F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtBu7C,YAAE,GAAG09C,KAAK,GAAG93F,CAAC,CAACnB,CAAD,CAAd;AACAw7C,YAAE,GAAG09C,KAAK,GAAGxiF,CAAC,CAAC1W,CAAD,CAAd;AACA66E,cAAI,GAAGt/B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAtB;AACAu1C,kBAAQ,GAAG,CAAX;;AAEA,cAAIlR,2BAAJ,EAAgC;AAC9Bsd,cAAE,GAAGD,MAAM,CAAC5rF,OAAO,CAACtR,CAAD,CAAR,CAAX;AACAw8F,cAAE,IAAI,CAACW,EAAE,CAACviB,4BAAH,CAAgCC,IAAhC,EAAsCgiB,WAAtC,EAAmDvrF,OAAO,CAACtR,CAAD,CAA1D,CAAP;;AACA,gBAAI+8F,iBAAJ,EAAuB;AACrBhM,sBAAQ,IAAIoM,EAAE,CAAC9jB,oCAAH,CAAwCwB,IAAxC,CAAZ;AACD;AACF;;AAED,cAAI6E,sBAAqB,IAAI0P,gBAAgB,CAACnvF,MAAjB,GAA0B,CAAnD,IAAwD68F,UAA5D,EAAwE;AACtEttF,aAAC,GAAGpO,IAAI,CAAC2O,IAAL,CAAU8qE,IAAV,CAAJ;AACA2hB,cAAE,IAAI,CAACthB,YAAO,CAACrC,SAAR,CAAkBrpE,CAAlB,EAAqBstF,UAArB,EAAiC/lF,MAAM,CAAC/W,CAAD,CAAvC,EAA4C2/E,eAA5C,EAA6DntE,yBAA7D,CAAP;;AACA,gBAAIuqF,iBAAJ,EAAuB;AACrBhM,sBAAQ,IAAI7V,YAAO,CAAC7B,oCAAR,CAA6CwB,IAA7C,EAAmDiiB,UAAnD,EAA+D/lF,MAAM,CAAC/W,CAAD,CAArE,EACV2/E,eADU,EACOntE,yBADP,CAAZ;AAED;AACF;;AAED,cAAIu+E,QAAJ,EAAc;AACZ1C,cAAE,IAAI0C,QAAQ,GAAGx1C,EAAjB;AACA+yC,cAAE,IAAIyC,QAAQ,GAAGv1C,EAAjB;AACD;AACF;;AAED,YAAIuhD,iBAAJ,EAAuB;AACrBC,eAAK,GAAGh/E,4BAAS,CAACvX,OAAV,CAAkB4nF,EAAlB,EAAsB;AAC5BnmF,gBAAI,EAAE3B,SAAI,CAACsB,aADiB;AAE5BM,cAAE,EAAE5B,SAAI,CAACwB;AAFmB,WAAtB,CAAR;AAIAk1F,eAAK,GAAGj/E,4BAAS,CAACvX,OAAV,CAAkB6nF,EAAlB,EAAsB;AAC5BpmF,gBAAI,EAAE3B,SAAI,CAACsB,aADiB;AAE5BM,cAAE,EAAE5B,SAAI,CAACwB;AAFmB,WAAtB,CAAR;AAIA,iBAAO,CAACy0F,EAAD,EAAK,CAACQ,KAAD,EAAQC,KAAR,CAAL,CAAP;AACD;;AAED,eAAOT,EAAP;AACD,OAzDD;AA0DD,KAvlDM;AA0lDP;AACA;AACA;AACA;AACA;AACA3E,gBAAY,EAAE,sBAASuF,YAAT,EAAuB;AACnC,UAAIx+C,KAAK,GAAGx/C,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,CAAZ;AAAA,UACEo5F,KAAK,GAAG,CADV;AAAA,UAEEC,KAFF;AAAA,UAGE92F,KAHF;AAAA,UAIExG,CAJF;AAAA,UAIKc,GAJL;AAAA,UAIU4B,GAJV;;AAMA,UAAIk8C,KAAK,CAAC3+C,MAAN,KAAiB,CAArB,EAAwB;AACtB,aAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtB4+C,eAAK,CAACh8C,IAAN,CAAW5C,CAAX;AACD;AACF;;AAED,WAAKA,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG89C,KAAK,CAAC3+C,MAAxB,EAAgCD,CAAC,GAAGc,GAApC,EAAyCd,CAAC,EAA1C,EAA8C;AAC5Cq9F,aAAK,IAAI/+C,MAAM,CAACi/C,oBAAP,CAA4B3+C,KAAK,CAAC5+C,CAAD,CAAjC,CAAT;AACD;;AAEDs9F,WAAK,GAAGD,KAAK,GAAGD,YAAhB;;AAEA,UAAIE,KAAK,IAAI,CAAb,EAAgB;AACd;AACA,eAAO,KAAP;AACD;;AACD,UAAID,KAAK,KAAK,CAAd,EAAiB;AACf36F,WAAG,GAAGk8C,KAAK,CAAC,CAAD,CAAX;AACAjoC,UAAE,CAACjU,GAAD,CAAF,GAAUtB,IAAI,CAACyO,MAAL,KAAgB,CAAhB,GAAoB,IAAI,IAAlC;AACA+G,UAAE,CAAClU,GAAD,CAAF,GAAUtB,IAAI,CAACyO,MAAL,KAAgB,CAAhB,GAAoB,IAAI,IAAlC;AACAwtF,aAAK,GAAG/+C,MAAM,CAACi/C,oBAAP,CAA4B76F,GAA5B,CAAR;AACD;;AAED8D,WAAK,GAAGpF,IAAI,CAAC2O,IAAL,CAAUutF,KAAK,GAAGD,KAAlB,CAAR;;AAEA,WAAKr9F,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG89C,KAAK,CAAC3+C,MAAxB,EAAgCD,CAAC,GAAGc,GAApC,EAAyCd,CAAC,EAA1C,EAA8C;AAC5C0C,WAAG,GAAGk8C,KAAK,CAAC5+C,CAAD,CAAX;AACA2W,UAAE,CAACjU,GAAD,CAAF,IAAW8D,KAAX;AACAoQ,UAAE,CAAClU,GAAD,CAAF,IAAW8D,KAAX,CAH4C,CAI5C;;AACAgR,UAAE,CAAC9U,GAAD,CAAF,IAAW8D,KAAX;AACAiR,UAAE,CAAC/U,GAAD,CAAF,IAAW8D,KAAX;AACD;;AAED,aAAO,IAAP;AACD,KAzoDM;AA2oDPg3F,sCAAkC,EAAE,4CAASC,OAAT,EAAkB1jF,KAAlB,EAAyBC,KAAzB,EAAgC;AAElE;AACA;AAEA,UAAIuhC,EAAE,GAAGp6C,CAAC,CAAC6Y,KAAD,CAAD,GAAW7Y,CAAC,CAAC4Y,KAAD,CAArB;AACA,UAAIyhC,EAAE,GAAG9kC,CAAC,CAACsD,KAAD,CAAD,GAAWtD,CAAC,CAACqD,KAAD,CAArB;AACA,UAAIrK,KAAK,GAAG,CAACtO,IAAI,CAAC65C,KAAL,CAAWO,EAAX,EAAeD,EAAf,CAAb;AACA,UAAI+0C,QAAQ,GAAGlvF,IAAI,CAAC8O,GAAL,CAASR,KAAT,CAAf;AACA,UAAI6gF,QAAQ,GAAGnvF,IAAI,CAAC6O,GAAL,CAASP,KAAT,CAAf;AAEA,UAAIguF,GAAG,GAAGpN,QAAQ,GAAG35E,EAAE,CAACoD,KAAD,CAAb,GAAuBw2E,QAAQ,GAAG35E,EAAE,CAACmD,KAAD,CAA9C;AACA,UAAI4jF,GAAG,GAAGrN,QAAQ,GAAG35E,EAAE,CAACqD,KAAD,CAAb,GAAuBu2E,QAAQ,GAAG35E,EAAE,CAACoD,KAAD,CAA9C;AACA,UAAI4jF,GAAG,GAAGrN,QAAQ,GAAG55E,EAAE,CAACoD,KAAD,CAAb,GAAuBu2E,QAAQ,GAAG15E,EAAE,CAACmD,KAAD,CAA9C;AACA,UAAI8jF,GAAG,GAAGtN,QAAQ,GAAG55E,EAAE,CAACqD,KAAD,CAAb,GAAuBs2E,QAAQ,GAAG15E,EAAE,CAACoD,KAAD,CAA9C;AAEA,UAAIopC,EAAE,GAAGzrC,IAAI,CAACoC,KAAD,CAAb;AACA,UAAIspC,EAAE,GAAG1rC,IAAI,CAACqC,KAAD,CAAb,CAjBkE,CAmBlE;;AACA,UAAIqjF,KAAK,GAAG,MAAMj6C,EAAN,IAAYs6C,GAAG,GAAGA,GAAN,GAAYE,GAAG,GAAGA,GAA9B,IAAqC,MAAMv6C,EAAN,IAAYs6C,GAAG,GAAGA,GAAN,GAAYE,GAAG,GAAGA,GAA9B,CAAjD;AACA,UAAIP,KAAK,GAAGD,KAAK,GAAGr/E,4BAAS,CAACvX,OAAV,CAAkBg3F,OAAlB,EAA2B;AAC7Cv1F,YAAI,EAAE3B,SAAI,CAACgB,EADkC;AAE7CY,UAAE,EAAE5B,SAAI,CAACc;AAFoC,OAA3B,CAApB;;AAKA,UAAIi2F,KAAK,GAAG,CAAZ,EAAe;AACb,eAAO,KAAP;AACD,OA5BiE,CA8BlE;AACA;AACA;;;AACA,UAAIn+F,CAAC,GAAGikD,EAAE,GAAGA,EAAE,GAAGA,EAAL,GAAUC,EAAvB;AACA,UAAIniD,CAAC,GAAG,IAAIkiD,EAAJ,IAAUs6C,GAAG,GAAGC,GAAhB,CAAR;AACA,UAAIr4C,CAAC,GAAG,KAAK+3C,KAAK,GAAGC,KAAb,CAAR;AACA,UAAIQ,IAAI,GAAG58F,CAAC,GAAGA,CAAJ,GAAQ,IAAI/B,CAAJ,GAAQmmD,CAA3B;;AAEA,UAAIw4C,IAAI,GAAG,CAAX,EAAc;AACZ;AACA,eAAO,KAAP;AACD,OAzCiE,CA2ClE;AACA;;;AACAA,UAAI,GAAG18F,IAAI,CAAC2O,IAAL,CAAU+tF,IAAV,CAAP;AACA,UAAIC,QAAQ,GAAG,CAAC,CAAC78F,CAAD,GAAK48F,IAAN,KAAe,IAAI3+F,CAAnB,CAAf;AACA,UAAI6+F,SAAS,GAAG,CAAC,CAAC98F,CAAD,GAAK48F,IAAN,KAAe,IAAI3+F,CAAnB,CAAhB;AACA,UAAI8+F,IAAI,GAAG78F,IAAI,CAAC2M,GAAL,CAASgwF,QAAT,IAAqB38F,IAAI,CAAC2M,GAAL,CAASiwF,SAAT,CAArB,GAA2CD,QAA3C,GAAsDC,SAAjE;AAEAN,SAAG,IAAIO,IAAP;AACAN,SAAG,IAAK,CAACv6C,EAAD,GAAMC,EAAN,GAAW46C,IAAnB,CAnDkE,CAqDlE;;AACA1N,cAAQ,IAAI,CAAC,CAAb;AAEA55E,QAAE,CAACoD,KAAD,CAAF,GAAY2jF,GAAG,GAAGpN,QAAN,GAAiBsN,GAAG,GAAGrN,QAAnC;AACA/4E,QAAE,CAACuC,KAAD,CAAF,GAAYqpC,EAAE,GAAGzsC,EAAE,CAACoD,KAAD,CAAnB;AACAnD,QAAE,CAACmD,KAAD,CAAF,GAAY2jF,GAAG,GAAGnN,QAAN,GAAiBqN,GAAG,GAAGtN,QAAnC;AACA74E,QAAE,CAACsC,KAAD,CAAF,GAAYqpC,EAAE,GAAGxsC,EAAE,CAACmD,KAAD,CAAnB;AAEApD,QAAE,CAACqD,KAAD,CAAF,GAAY2jF,GAAG,GAAGrN,QAAN,GAAiBuN,GAAG,GAAGtN,QAAnC;AACA/4E,QAAE,CAACwC,KAAD,CAAF,GAAYqpC,EAAE,GAAG1sC,EAAE,CAACqD,KAAD,CAAnB;AACApD,QAAE,CAACoD,KAAD,CAAF,GAAY2jF,GAAG,GAAGpN,QAAN,GAAiBsN,GAAG,GAAGvN,QAAnC;AACA74E,QAAE,CAACuC,KAAD,CAAF,GAAYqpC,EAAE,GAAGzsC,EAAE,CAACoD,KAAD,CAAnB;AAEA,aAAO,IAAP;AACD,KA9sDM;;AAgtDP;;;;AAIAkkF,yBAAqB,EAAE,+BAASt/E,EAAT,EAAazd,CAAb,EAAgBuV,CAAhB,EAAmBK,MAAnB,EAA2B;AAChD,UAAIonF,GAAG,GAAG7/C,MAAM,CAAC+6C,sBAAP,CAA8Bz6E,EAA9B,EAAkC7H,MAAlC,EAA0C,IAA1C,CAAV;AAAA,UACEQ,MAAM,GAAGgpE,aAAa,CAAC3hE,EAAD,CADxB;AAAA,UAGEib,GAAG,GAAG+9D,IAAI,CAACxgB,QAAL,CAAc+mB,GAAd,EAAmB,CAACh9F,CAAD,EAAIuV,CAAJ,CAAnB,EAA2B;AAC/B4gE,cAAM,EAAE,CACN,CAAC//D,MAAD,EAASxY,IAAI,CAAC,CAAD,CAAJ,GAAUwY,MAAnB,CADM,EAEN,CAACA,MAAD,EAASxY,IAAI,CAAC,CAAD,CAAJ,GAAUwY,MAAnB,CAFM;AADuB,OAA3B,CAHR;AAUA,UAAIsiB,GAAG,CAAC70B,KAAR,EAAe,OAAO,KAAP;AACf,aAAO60B,GAAG,CAAC,CAAD,CAAV;AACD,KAjuDM;;AAmuDP;;;;;AAKAukE,gCAA4B,EAAE,sCAASx/E,EAAT,EAAazd,CAAb,EAAgBuV,CAAhB,EAAmBK,MAAnB,EAA2B;AACvD,UAAIonF,GAAG,GAAG7/C,MAAM,CAAC+6C,sBAAP,CAA8Bz6E,EAA9B,EAAkC7H,MAAlC,EAA0C,IAA1C,CAAV;AAAA,UAEE;AACAsnF,WAAK,GAAG,SAARA,KAAQ,CAASl9F,CAAT,EAAYuV,CAAZ,EAAe;AACrB,YAAImjB,GAAJ,EAAS+4C,CAAT,EAAYiF,IAAZ;AAEAh+C,WAAG,GAAGskE,GAAG,CAACh9F,CAAD,EAAIuV,CAAJ,CAAT;AACAk8D,SAAC,GAAG/4C,GAAG,CAAC,CAAD,CAAP;AACAg+C,YAAI,GAAGh+C,GAAG,CAAC,CAAD,CAAV,CALqB,CAOrB;;AACAg+C,YAAI,CAAC,CAAD,CAAJ,IAAY,IAAIjF,CAAhB;AACAiF,YAAI,CAAC,CAAD,CAAJ,IAAY,IAAIjF,CAAhB;AAEA,eAAO,CAACA,CAAC,GAAGA,CAAL,EAAQiF,IAAR,CAAP;AACD,OAfH;AAAA,UAiBEtgE,MAAM,GAAGgpE,aAAa,CAAC3hE,EAAD,CAjBxB;AAAA,UAmBEib,GAAG,GAAG+9D,IAAI,CAACxgB,QAAL,CAAcinB,KAAd,EAAqB,CAACl9F,CAAD,EAAIuV,CAAJ,CAArB,EAA6B;AACjC4gE,cAAM,EAAE,CACN,CAAC//D,MAAD,EAASxY,IAAI,CAAC,CAAD,CAAJ,GAAUwY,MAAnB,CADM,EAEN,CAACA,MAAD,EAASxY,IAAI,CAAC,CAAD,CAAJ,GAAUwY,MAAnB,CAFM,CADyB;AAKjCigE,eAAO,EAAE,IALwB;AAMjCH,iBAAS,EAAE;AANsB,OAA7B,CAnBR;;AA4BA,UAAIx9C,GAAG,CAAC70B,KAAR,EAAe,OAAO,KAAP;AACf,aAAO60B,GAAG,CAAC,CAAD,CAAV;AACD,KAvwDM;;AAywDP;;;;AAIA63D,oBAAgB,EAAE,0BAAShvF,GAAT,EAAc;AAC9B;AACA,UAAIqB,MAAM,GAAG,EAAb;AACA,UAAIu6F,KAAK,GAAG,EAAZ;AACA,UAAIne,OAAO,GAAG,EAAd;AACA,UAAIkU,WAAJ,EAAiBkK,UAAjB,EAA6Bv+F,CAA7B,EAAgCc,GAAhC;AAEAw9F,WAAK,CAAC17F,IAAN,CAAWF,GAAX;AACAy9E,aAAO,CAACz9E,GAAD,CAAP,GAAe,IAAf;;AACA,aAAO47F,KAAK,CAACr+F,MAAN,GAAe,CAAtB,EAAyB;AACvBo0F,mBAAW,GAAG/1C,MAAM,CAACkgD,cAAP,CAAsBF,KAAK,CAAC94E,GAAN,EAAtB,CAAd;;AACA,aAAKxlB,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGuzF,WAAW,CAACp0F,MAA9B,EAAsCD,CAAC,GAAGc,GAA1C,EAA+Cd,CAAC,EAAhD,EAAoD;AAClDu+F,oBAAU,GAAGlK,WAAW,CAACr0F,CAAD,CAAxB;;AACA,cAAI,CAACmgF,OAAO,CAACoe,UAAD,CAAZ,EAA0B;AACxBpe,mBAAO,CAACoe,UAAD,CAAP,GAAsB,IAAtB;AACAD,iBAAK,CAAC17F,IAAN,CAAW27F,UAAX;AACAx6F,kBAAM,CAACnB,IAAP,CAAY27F,UAAZ;AACD;AACF;AACF;;AACD,aAAOx6F,MAAP;AACD,KAlyDM;;AAoyDP;;;AAGAy6F,kBAAc,EAAE,wBAAS97F,GAAT,EAAc;AAC5B,aAAO2xF,WAAW,CAAC3xF,GAAD,CAAX,IAAoB,EAA3B;AACD,KAzyDM;AA2yDP+7F,qBAAiB,EAAE,2BAASxF,KAAT,EAAgBC,KAAhB,EAAuBwF,SAAvB,EAAkC;AACnD;AACAA,eAAS,GAAGA,SAAS,IAAI,EAAzB,CAFmD,CAGnD;;AACA,UAAI,CAAChf,sBAAD,IAA0B0P,gBAAgB,CAACnvF,MAAjB,KAA4B,CAA1D,EAA6D;AAC3Dy+F,iBAAS,CAACrQ,EAAV,GAAeqQ,SAAS,CAACpQ,EAAV,GAAe,CAA9B;AACA,eAAOoQ,SAAP;AACD;;AAED,UAAIrQ,EAAE,GAAG,CAAT;AAAA,UACEC,EAAE,GAAG,CADP;AAAA,UAEEtuF,CAFF;AAAA,UAEKc,GAFL;AAAA,UAEUy6C,EAFV;AAAA,UAEcC,EAFd;AAAA,UAEkB49B,GAFlB;AAAA,UAEuBgV,MAFvB;AAAA,UAE+BuQ,UAF/B;AAAA,UAE2CniB,OAF3C;AAAA,UAEoDyV,IAFpD;AAAA,UAE0D7xE,CAF1D;;AAIA,WAAKpgB,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGsuF,gBAAgB,CAACnvF,MAAnC,EAA2CD,CAAC,GAAGc,GAA/C,EAAoDd,CAAC,EAArD,EAAyD;AACvDw8E,eAAO,GAAG4S,gBAAgB,CAACpvF,CAAD,CAA1B;AACA2+F,kBAAU,GAAG5nF,MAAM,CAACylE,OAAD,CAAnB;AAEAjhC,UAAE,GAAGp6C,CAAC,CAACq7E,OAAD,CAAD,GAAayc,KAAlB;AACAz9C,UAAE,GAAG9kC,CAAC,CAAC8lE,OAAD,CAAD,GAAa0c,KAAlB;AACA9f,WAAG,GAAG79B,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAArB;AAEA4yC,cAAM,GAAGlT,YAAO,CAAC7B,oCAAR,CAA6CD,GAA7C,EAAkD,CAAlD,EAAqDulB,UAArD,EACPhf,eADO,EACUntE,yBADV,CAAT;AAGA67E,UAAE,IAAID,MAAM,GAAG7yC,EAAf;AACA+yC,UAAE,IAAIF,MAAM,GAAG5yC,EAAf;AACD;;AAED,WAAKx7C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0lF,gBAAhB,EAAkC1lF,CAAC,EAAnC,EAAuC;AACrCiyF,YAAI,GAAGzM,qBAAqB,CAACxlF,CAAD,CAA5B;AACA,YAAIiyF,IAAI,IAAI,IAAR,IAAgB,CAACL,YAAY,CAACK,IAAD,EAAOgH,KAAP,EAAcC,KAAd,CAAjC,EAAuD;AACvD94E,SAAC,GAAGmlE,wBAAwB,CAACvlF,CAAD,CAA5B;;AACA,YAAIogB,CAAC,KAAK,GAAN,IAAaA,CAAC,KAAK,GAAvB,EAA4B;AAC1BkuE,YAAE,IAAIyD,eAAe,CAAC/xF,CAAD,CAArB,CAD0B,CACA;AAC3B,SAFD,MAEO;AACLquF,YAAE,IAAI0D,eAAe,CAAC/xF,CAAD,CAArB,CADK,CACqB;AAC3B;AACF;;AAGD0+F,eAAS,CAACrQ,EAAV,GAAerwE,4BAAS,CAACvX,OAAV,CAAkB4nF,EAAlB,EAAsB;AACnCnmF,YAAI,EAAE3B,SAAI,CAACsB,aADwB;AAEnCM,UAAE,EAAE5B,SAAI,CAACwB;AAF0B,OAAtB,CAAf;AAIA22F,eAAS,CAACpQ,EAAV,GAAetwE,4BAAS,CAACvX,OAAV,CAAkB6nF,EAAlB,EAAsB;AACnCpmF,YAAI,EAAE3B,SAAI,CAACsB,aADwB;AAEnCM,UAAE,EAAE5B,SAAI,CAACwB;AAF0B,OAAtB,CAAf;AAIA,aAAO22F,SAAP;AACD,KA51DM;;AA81DP;;;AAGAnB,wBAAoB,EAAE,8BAASv9F,CAAT,EAAY;AAChC,UAAIu8F,WAAW,GAAG,MAAM5kF,IAAI,CAAC3X,CAAD,CAAV,IAAiB2W,EAAE,CAAC3W,CAAD,CAAF,GAAQ2W,EAAE,CAAC3W,CAAD,CAAV,GAAgB4W,EAAE,CAAC5W,CAAD,CAAF,GAAQ4W,EAAE,CAAC5W,CAAD,CAA3C,CAAlB;AACA,aAAOge,4BAAS,CAACvX,OAAV,CAAkB81F,WAAlB,EAA+B;AACpCr0F,YAAI,EAAE3B,SAAI,CAACc,cADyB;AAEpCc,UAAE,EAAE5B,SAAI,CAACgB;AAF2B,OAA/B,CAAP;AAID,KAv2DM;AAy2DPq3F,oBAAgB,EAAE,0BAASl8F,GAAT,EAAc;AAC9B,UAAIm3B,GAAG,GAAG,EAAV;AAAA,UACE66C,IAAI,GAAG1zB,YAAY,CAACE,OAAb,EADT;AAAA,UAEElhD,CAFF;AAAA,UAEKc,GAFL;;AAIA,WAAKd,CAAC,GAAGghD,YAAY,CAACmB,cAAb,CAA4Bz/C,GAA5B,CAAJ,EAAsC5B,GAAG,GAAGkgD,YAAY,CAACoB,YAAb,CAA0B1/C,GAA1B,CAAjD,EAAiF1C,CAAC,GAAGc,GAArF,EAA0Fd,CAAC,EAA3F,EAA+F;AAC7F65B,WAAG,CAACj3B,IAAJ,CAAS8xE,IAAI,CAAC10E,CAAD,CAAb;AACD;;AACD,aAAO65B,GAAP;AACD,KAl3DM;AAo3DPglE,mBAAe,EAAE,2BAAW;AAC1B,aAAO79C,YAAP;AACD,KAt3DM;AAw3DP89C,gBAAY,EAAE,sBAAS7wD,CAAT,EAAY;AACxBn7B,eAAS,GAAGm7B,CAAZ;AACD,KA13DM;;AA43DP,QAAIm5C,YAAJ,GAAmB;AACjB,aAAOA,YAAP;AACD,KA93DM;;AAg4DP;;;;AAIA,QAAIlG,kBAAJ,GAAyB;AACvB,aAAOA,kBAAP;AACD,KAt4DM;;AAw4DP;;;AAGA6d,eAAW,EAAE,qBAAS/+F,CAAT,EAAYyM,CAAZ,EAAe;AAC1B,aAAO,CAAC,EAAE8hF,gBAAgB,IAAIA,gBAAgB,CAACvuF,CAAD,CAApC,IAA2CuuF,gBAAgB,CAACvuF,CAAD,CAAhB,CAAoByM,CAApB,CAA7C,CAAR;AACD,KA74DM;AA+4DP;AACA;AAEA;AACA;AACA;AACA;AACA;AACAo6C,YAAQ,EAAE,oBAAW;AACnB,UAAI3f,KAAK,GAAG,CACV;AACA;AACA,UAAIwV,mBAAJ,CAAwBmC,SAAxB,CAHU,EAIV,IAAInC,mBAAJ,CAAwBkC,MAAxB,CAJU,EAKV,IAAIlC,mBAAJ,CAAwB6mC,UAAxB,CALU,EAMV,IAAI7mC,mBAAJ,CAAwB4nC,OAAxB,CANU,EAOV,IAAI5nC,mBAAJ,CAAwBz2B,MAAxB,CAPU,EAQV,IAAIy2B,mBAAJ,CAAwBskC,YAAxB,CARU,EASV,IAAItkC,mBAAJ,CAAwBolC,aAAxB,CATU,EAUV,IAAIplC,mBAAJ,CAAwB6kC,WAAxB,CAVU,EAWV,IAAI7kC,mBAAJ,CAAwBypC,aAAxB,CAXU,EAYV;AACAnuE,0BAbU,EAeV;AACA;AACEjX,aAAK,EAAE,iBAAW;AAChB,iBAAO;AACLkO,gBAAI,EAAEA,IADD;AAEL+8B,aAAC,EAAEA,CAFE;AAGLy0C,sBAAU,EAAEA,UAHP;AAIL+C,uBAAW,EAAEA,WAJR;AAKLe,oBAAQ,EAAEA,QALL;AAMLc,mBAAO,EAAEA,OANJ;AAOLpE,yBAAa,EAAEA,aAPV;AAQLc,0BAAc,EAAEA,cARX;AASLP,wBAAY,EAAEA,YATT;AAUL4E,0BAAc,EAAEA;AAVX,WAAP;AAYD,SAdH;AAeEvpC,eAAO,EAAE,iBAAS3V,KAAT,EAAgB;AACvBj4B,cAAI,GAAGi4B,KAAK,CAACj4B,IAAb;AACA+8B,WAAC,GAAG9E,KAAK,CAAC8E,CAAV;AACAy0C,oBAAU,GAAGv5C,KAAK,CAACu5C,UAAnB;AACA8D,kBAAQ,GAAGr9C,KAAK,CAACq9C,QAAjB;AACAc,iBAAO,GAAGn+C,KAAK,CAACm+C,OAAhB;AACApE,uBAAa,GAAG/5C,KAAK,CAAC+5C,aAAtB;AACAc,wBAAc,GAAG76C,KAAK,CAAC66C,cAAvB;AACAP,sBAAY,GAAGt6C,KAAK,CAACs6C,YAArB;AACA4E,wBAAc,GAAGl/C,KAAK,CAACk/C,cAAvB;AAEAplC,sBAAY,CAAC+wB,UAAb;AACAwc,0BAAgB,CAACnkF,KAAjB;AACAiqF,qBAAW,CAACjqF,KAAZ;AACAglF,0BAAgB,CAAChlF,KAAjB;AACD;AA9BH,OAhBU,CAAZ;AAkDAq1E,sBAAgB,CAAClB,kBAAjB,CAAoC,UAApC,EAAgD,EAAhD,EAAoD,UAASygB,WAAT,EAAsB;AACxE93D,aAAK,GAAGA,KAAK,CAAClR,MAAN,CAAagpE,WAAb,CAAR;AACD,OAFD;AAIA,aAAO93D,KAAP;AACD,KA/8DM;AAi9DP;AACA;AACA;AACA+3D,sBAAkB,EAAE,4BAASC,kBAAT,EAA6BjqE,IAA7B,EAAmC;AACrD,UAAIkqE,WAAJ;AACAlqE,UAAI,GAAGA,IAAI,IAAI,EAAf;AACAwqD,sBAAgB,CAAClB,kBAAjB,CAAoC2gB,kBAApC,EAAwDjqE,IAAxD,EAA8D,UAAS8oC,CAAT,EAAY;AACxEohC,mBAAW,GAAGphC,CAAd;AACD,OAFD;AAGA,aAAOohC,WAAP;AACD;AA39DM,GAAT,CAtxEqC,CAsvIrC;;AACA7wF,YAAU,GAvvI2B,CAyvIrC;AACA;AACA;;AACAgwC,QAAM,CAACtmC,oBAAP,GAA8BA,oBAA9B,CA5vIqC,CA8vIrC;;AACA,SAAOsmC,MAAP;AACD,CAhwIM,C;;;;;;AChFP;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEe;AACb13C,MAAI,EAAE,MADO;AAEbw4F,YAAU,EAAE,KAFC;AAGbrhF,OAAK,EAAE;AAEL9d,UAAM,EAAE;AACN2G,UAAI,EAAE,WADA;AAENgoE,gBAAU,EAAE,YAFN;AAGNC,YAAM,EAAE;AAHF,KAFH;AAQL;AACA;AACAl3D,QAAI,EAAE;AACJ/Q,UAAI,EAAE,kBADF;AAEJgoE,gBAAU,EAAE,mBAFR;AAGJC,YAAM,EAAE;AAHJ,KAVD;AAgBL5/D,QAAI,EAAE;AACJrI,UAAI,EAAE,aADF;AAEJgoE,gBAAU,EAAE,cAFR;AAGJC,YAAM,EAAE,IAHJ;AAIJxhD,kBAAY,EAAE;AACZgyE,wBAAgB,EAAE,IADN;AAEZzwB,kBAAU,EAAE,aAFA;AAGZhoE,YAAI,EAAE,YAHM;AAIZioE,cAAM,EAAE;AAJI;AAJV,KAhBD;AA4BL;AACA;AACA;AACA;AACA;AACAywB,eAAW,EAAE;AACX14F,UAAI,EAAE,eADK;AAEXgoE,gBAAU,EAAE,gBAFD;AAGXC,YAAM,EAAE;AAHG,KAjCR;AAuCL0wB,YAAQ,EAAE;AACR34F,UAAI,EAAE,2BADE;AAERgoE,gBAAU,EAAE,uBAFJ;AAGRC,YAAM,EAAE;AAHA,KAvCL;AA6CL2wB,gBAAY,EAAE;AACZ54F,UAAI,EAAE,mCADM;AAEZgoE,gBAAU,EAAE,oCAFA;AAGZC,YAAM,EAAE;AAHI,KA7CT;AAmDL4wB,YAAQ,EAAE;AACR74F,UAAI,EAAE,+BADE;AAERgoE,gBAAU,EAAE,gCAFJ;AAGRC,YAAM,EAAE;AAHA,KAnDL;AAyDL;AACA;AACA;AACA;AACAyK,SAAK,EAAE;AACL1yE,UAAI,EAAE,uCADD;AAELgoE,gBAAU,EAAE,wCAFP;AAGLC,YAAM,EAAE;AAHH,KA7DF;AAmELzqB,UAAM,EAAE;AACNx9C,UAAI,EAAE,eADA;AAENgoE,gBAAU,EAAE,gBAFN;AAGNC,YAAM,EAAE;AAHF,KAnEH;AAyEL;AACA;AACA6wB,sBAAkB,EAAE;AAClB94F,UAAI,EAAE,qBADY;AAElBgoE,gBAAU,EAAE,sBAFM;AAGlBC,YAAM,EAAE;AAHU,KA3Ef;AAiFL;AACA8wB,aAAS,EAAE;AACT/4F,UAAI,EAAE,qCADG;AAETgoE,gBAAU,EAAE,sCAFH;AAGTC,YAAM,EAAE;AAHC,KAlFN;AAwFL;AACA;AACA;AACA;AACA+wB,uBAAmB,EAAE;AACnBh5F,UAAI,EAAE,0BADa;AAEnBgoE,gBAAU,EAAE,2BAFO;AAGnBC,YAAM,EAAE;AAHW,KA5FhB;AAkGL93D,UAAM,EAAE;AACNnQ,UAAI,EAAE,mBADA;AAENgoE,gBAAU,EAAE,oBAFN;AAGNC,YAAM,EAAE;AAHF,KAlGH;AAwGL3W,eAAW,EAAE;AACX;AACAtxD,UAAI,EAAE,QAFK;AAGX;AACAgoE,gBAAU,EAAE,QAJD;AAKXC,YAAM,EAAE;AALG,KAxGR;AAgHLgxB,YAAQ,EAAE;AACRj5F,UAAI,EAAE,KADE;AAER;AACAgoE,gBAAU,EAAE,KAHJ;AAIRC,YAAM,EAAE;AAJA,KAhHL;AAuHLz0D,SAAK,EAAE;AACLxT,UAAI,EAAE,QADD;AAELgoE,gBAAU,EAAE,SAFP;AAGLC,YAAM,EAAE;AAHH;AAvHF;AAHM,CAAf,E;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe;AACbjoE,MAAI,EAAE,KADO;AAEbw4F,YAAU,EAAE,IAFC;AAGbrhF,OAAK,EAAE;AAEL9d,UAAM,EAAE;AACN2G,UAAI,EAAE,OADA;AAENgoE,gBAAU,EAAE,QAFN;AAGNC,YAAM,EAAE,GAHF;AAINixB,+BAAyB,EAAE,CAJrB;AAKNC,oBAAc,EAAE;AALV,KAFH;AAULpoF,QAAI,EAAE;AACJ/Q,UAAI,EAAE,UADF;AAEJgoE,gBAAU,EAAE,WAFR;AAGJC,YAAM,EAAE,IAHJ;AAIJixB,+BAAyB,EAAE,CAJvB;AAKJC,oBAAc,EAAE;AALZ,KAVD;AAkBL9wF,QAAI,EAAE;AACJrI,UAAI,EAAE,QADF;AAEJgoE,gBAAU,EAAE,SAFR;AAGJC,YAAM,EAAE,GAHJ;AAIJixB,+BAAyB,EAAE,GAJvB;AAKJC,oBAAc,EAAE;AALZ,KAlBD;AA0BLT,eAAW,EAAE;AACX14F,UAAI,EAAE,UADK;AAEXgoE,gBAAU,EAAE,WAFD;AAGXC,YAAM,EAAE,KAHG;AAIXkxB,oBAAc,EAAE;AAJL,KA1BR;AAiCLR,YAAQ,EAAE;AACR34F,UAAI,EAAE,kBADE;AAERgoE,gBAAU,EAAE,mBAFJ;AAGRC,YAAM,EAAE,KAHA;AAIRkxB,oBAAc,EAAE;AAJR,KAjCL;AAwCLP,gBAAY,EAAE;AACZ54F,UAAI,EAAE,0BADM;AAEZgoE,gBAAU,EAAE,2BAFA;AAGZC,YAAM,EAAE,MAHI;AAIZkxB,oBAAc,EAAE;AAJJ,KAxCT;AA+CLzmB,SAAK,EAAE;AACL1yE,UAAI,EAAE,QADD;AAELgoE,gBAAU,EAAE,SAFP;AAGLC,YAAM,EAAE,GAHH;AAILkxB,oBAAc,EAAE;AAJX,KA/CF;AAsDL37C,UAAM,EAAE;AACNx9C,UAAI,EAAE,OADA;AAENgoE,gBAAU,EAAE,QAFN;AAGNC,YAAM,EAAE,GAHF;AAINkxB,oBAAc,EAAE;AAJV,KAtDH;AA6DLL,sBAAkB,EAAE;AAClB94F,UAAI,EAAE,yBADY;AAElBgoE,gBAAU,EAAE,0BAFM;AAGlBC,YAAM,EAAE,OAHU;AAIlBkxB,oBAAc,EAAE;AAJE,KA7Df;AAoEL;AACAJ,aAAS,EAAE;AACT/4F,UAAI,EAAE,kBADG;AAETgoE,gBAAU,EAAE,mBAFH;AAGTC,YAAM,EAAE,KAHC;AAITkxB,oBAAc,EAAE;AAJP,KArEN;AA4EL;AACAH,uBAAmB,EAAE;AACnBh5F,UAAI,EAAE,yBADa;AAEnBgoE,gBAAU,EAAE,0BAFO;AAGnBC,YAAM,EAAE,SAHW;AAInBkxB,oBAAc,EAAE;AAJG,KA7EhB;AAoFLhpF,UAAM,EAAE;AACNnQ,UAAI,EAAE,SADA;AAENgoE,gBAAU,EAAE,UAFN;AAGNC,YAAM,EAAE,GAHF;AAINkxB,oBAAc,EAAE;AAJV;AApFH;AAHM,CAAf,E;;AC5BA;AACA;AACA;AAEA,IAAIl9E,IAAI,GAAG;AACTm9E,MAAI,EAAEC,IADG;AAETC,KAAG,EAAEC,GAAQA;AAFJ,CAAX;AAKe;AACbp7E,KAAG,EAAE,aAAUne,IAAV,EAAgB;AACnB,QAAI6I,GAAJ;AACA,QAAI7I,IAAI,KAAK,MAAb,EAAqB,OAAOic,IAAI,CAACm9E,IAAZ,CAFF,CAInB;AACA;;AACAvwF,OAAG,GAAGsuD,oBAAC,CAAC57D,MAAF,CAAS,EAAT,EAAa0gB,IAAI,CAACjc,IAAD,CAAjB,CAAN;AACA6I,OAAG,CAACsO,KAAJ,GAAYggD,oBAAC,CAAC57D,MAAF,CAAS,EAAT,EAAa0gB,IAAI,CAACm9E,IAAL,CAAUjiF,KAAvB,EAA8B8E,IAAI,CAACjc,IAAD,CAAJ,CAAWmX,KAAzC,CAAZ;AACA,WAAOtO,GAAP;AACD;AAVY,CAAf,E;;ACTA;AAEA;AACA;AACA;AAEA,IAAI8O,gBAAgB,GAAGP,4BAAS,CAACO,gBAAV,CAA2B/V,EAA3B,CAA8BwV,4BAAS,CAACzX,IAAV,CAAeL,gBAA7C,CAAvB;AAAA,IACEk6F,aAAa,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,MAAnB,CADlB;AAGe,SAASC,gBAAT,CAA0BrwB,eAA1B,EAA2C;AAExD,MAAI;AACFswB,UAAQ,GAAG,EADb;AAAA,MAGE;AACA5+E,QAAM,GAAG,EAJX;AAAA,MAME43D,KANF;;AAQAvb,sBAAC,CAACl+C,IAAF,CAAOugF,aAAP,EAAsB,UAASvuF,QAAT,EAAmB;AACvC,QAAIw8D,CAAC,GAAG2B,eAAe,CAACjyD,KAAhB,CAAsBlM,QAAtB,CAAR;AACAyuF,YAAQ,CAACzuF,QAAD,CAAR,GAAqBw8D,CAAC,CAAC0xB,cAAF,GAAmB1xB,CAAC,CAACyxB,yBAA1C;AACD,GAHD;;AAKAQ,UAAQ,CAAChB,WAAT,GAAuB,IAAIgB,QAAQ,CAACrxF,IAApC;AACAqxF,UAAQ,CAACf,QAAT,GAAoBe,QAAQ,CAACrgG,MAAT,GAAkBqgG,QAAQ,CAACrxF,IAA/C;AACAqxF,UAAQ,CAACd,YAAT,GAAwBc,QAAQ,CAACf,QAAT,GAAoBe,QAAQ,CAACrxF,IAArD;AACAqxF,UAAQ,CAAChnB,KAAT,GAAiBgnB,QAAQ,CAAC3oF,IAAT,GAAgB2oF,QAAQ,CAACd,YAA1C,CAlBwD,CAoBxD;;AACAc,UAAQ,CAACl8C,MAAT,GAAkBpmC,4BAAS,CAACxX,KAAV,CAAgBwX,4BAAS,CAACzX,IAAV,CAAec,cAA/B,EAA+C;AAC/DkB,OAAG,EAAEyV,4BAAS,CAACzX,IAAV,CAAegB;AAD2C,GAA/C,CAAlB,CArBwD,CAwBxD;;AACA+4F,UAAQ,CAACl8C,MAAT,IAAmBk8C,QAAQ,CAAChnB,KAAT,GAAiBgnB,QAAQ,CAACrgG,MAA7C;AAEAqgG,UAAQ,CAACZ,kBAAT,GAA8BY,QAAQ,CAAChnB,KAAT,GAAiBgnB,QAAQ,CAACf,QAAxD,CA3BwD,CA4BxD;;AACAe,UAAQ,CAACX,SAAT,GAAqBW,QAAQ,CAACl8C,MAAT,GAAkBk8C,QAAQ,CAACrgG,MAA3B,GAAoCqgG,QAAQ,CAACrgG,MAAlE,CA7BwD,CA8BxD;;AACAqgG,UAAQ,CAACV,mBAAT,GAA+BU,QAAQ,CAACl8C,MAAT,GAAkBk8C,QAAQ,CAACrgG,MAA1D,CA/BwD,CAiCxD;;AACAq5E,OAAK,GAAG4B,OAAO,CAAC5B,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,EAAqB,CAArB,EAAwB,CAAxB,CAAR,CAlCwD,CAmCxD;;AACAgnB,UAAQ,CAACvpF,MAAT,GAAkB3V,IAAI,CAAC2O,IAAL,CAAUupE,KAAK,GAAGgnB,QAAQ,CAAChnB,KAAjB,GAAyBgnB,QAAQ,CAACrgG,MAAlC,GAA2CqgG,QAAQ,CAACrgG,MAApD,GAA6Dse,gBAAvE,CAAlB;;AAEAw/C,sBAAC,CAACl+C,IAAF,CAAOk+C,oBAAC,CAAC7hD,IAAF,CAAOokF,QAAP,CAAP,EAAyB,UAASzuF,QAAT,EAAmB;AAC1C6P,UAAM,CAAC7P,QAAD,CAAN,GAAmByuF,QAAQ,CAACzuF,QAAD,CAAR,GAAqBm+D,eAAe,CAACjyD,KAAhB,CAAsBlM,QAAtB,EAAgCkuF,cAAxE;AACD,GAFD;;AAIA,SAAO;AACLlsB,yBAAqB,EAAE,+BAAS0sB,oBAAT,EAA+B1uF,QAA/B,EAAyC;AAC9D,UAAI6P,MAAM,CAAC7P,QAAD,CAAN,IAAoB,IAAxB,EAA8B;AAC5B,eAAO0uF,oBAAP;AACD;;AACD,aAAOA,oBAAoB,GAAG7+E,MAAM,CAAC7P,QAAD,CAApC;AACD,KANI;AAQLiiE,2BAAuB,EAAE,iCAAS0sB,cAAT,EAAyB3uF,QAAzB,EAAmC;AAC1D,UAAI6P,MAAM,CAAC7P,QAAD,CAAN,IAAoB,IAAxB,EAA8B;AAC5B,eAAO2uF,cAAP;AACD;;AACD,aAAOA,cAAc,GAAG9+E,MAAM,CAAC7P,QAAD,CAA9B;AACD;AAbI,GAAP;AAeD;AAAA,C;;;;;AClED;AACA;AAEA,IACE4uF,MAAM,GAAG,CACP,WADO,EAEP,aAFO,EAGP,aAHO,EAIP,aAJO,EAKP,aALO,EAMP,kBANO,EAOP,KAPO,EAQP,eARO,EASP,mBATO,EAUP,qBAVO,EAWP,oBAXO,EAYP,aAZO,EAaP,iBAbO,CADX;AAAA,IAgBEC,WAAW,GAAG,EAhBhB;AAAA,IAkBEC,cAAc,GAAG,CAlBnB;AAAA,IAoBEC,YAAY,GAAG,2CApBjB;AAAA,IAqBEC,cAAc,GAAG,mCArBnB;AAAA,IAsBEC,iBAAiB,GAAGC,qBAAqB,CAACH,YAAD,CAtB3C;AAAA,IAuBEI,mBAAmB,GAAGD,qBAAqB,CAACF,cAAD,CAvB7C;AAAA,IAwBEI,QAxBF;AAAA,IAyBEC,aAzBF;AAAA,IA2BEC,SAAS,GAAG,QA3Bd;;AA6BA,SAASJ,qBAAT,CAA+B9tF,GAA/B,EAAoC;AAClC;AACA;AACA;AACA;AAEA;AACA;AACA;AACA,SAAOA,GAAG,CACPnH,OADI,CACI,IADJ,EACU,GADV,EAEJA,OAFI,CAEI,IAFJ,EAEU,GAFV,EAGJA,OAHI,CAGI,IAHJ,EAGU,GAHV,EAIJA,OAJI,CAII,IAJJ,EAIU,GAJV,EAKJoH,WALI,EAAP;AAMD,C,CACD;;;AACA,SAASkuF,YAAT,CAAsBtgG,GAAtB,EAA2B;AACzB,MAAIugG,OAAO,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAAd;AAAA,MACEC,UAAU,GAAGD,OAAO,CAACphG,MADvB;AAAA,MAEEshG,GAAG,GAAG,EAFR;AAAA,MAGEvhG,CAHF;;AAIA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGc,GAAhB,EAAqBd,CAAC,EAAtB,EAA0B;AACxBuhG,OAAG,IAAIF,OAAO,CAACjgG,IAAI,CAACwqC,KAAL,CAAWxqC,IAAI,CAACyO,MAAL,KAAgByxF,UAA3B,CAAD,CAAd;AACD;;AACD,SAAOC,GAAP;AACD;;AAED,SAASC,WAAT,GAAuB;AACrB,SAAOb,cAAc,EAArB;AACD;;AAEA,aAAW;AACV,MAAI3gG,CAAJ,EAAOc,GAAP;;AACA,OAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG2/F,MAAM,CAACxgG,MAAzB,EAAiCD,CAAC,GAAGc,GAArC,EAA0Cd,CAAC,EAA3C,EAA+C;AAC7C0gG,eAAW,CAACD,MAAM,CAACzgG,CAAD,CAAP,CAAX,GAAyBA,CAAzB;AACD;;AACDihG,UAAQ,GAAGG,YAAY,CAAC,EAAD,CAAvB;AACAF,eAAa,GAAGH,qBAAqB,CAACE,QAAD,CAArC;AACD,CAPA,GAAD;;AASe,SAASQ,iBAAT,CAA2B7yF,KAA3B,EAAkC;AAC/C,MAAI4P,GAAJ;AAAA,MACE;AACA;AACA;AACAkjF,WAAS,GAAGP,SAJd;AAAA,MAKE;AACA;AACAQ,oBAAkB,GAAG,EAPvB;AAAA,MAQE;AACAC,SAAO,GAAG,EATZ;AAAA,MAUE;AACA;AACAC,MAAI,GAAG,EAZT;AAAA,MAaE;AACAC,iBAdF;AAAA,MAeE;AACAC,sBAhBF;AAAA,MAkBExsE,QAAQ,GAAGjT,EAAE,CAACiT,QAAH,CAAY,QAAZ,EAAsB,YAAtB,CAlBb;AAAA,MAoBEysE,aAAa,GAAG,SAAhBA,aAAgB,GAAW;AACzB,QAAIC,OAAO,GAAGC,QAAQ,CAAC,CAAD,CAAtB;AAAA,QACEL,IAAI,GAAG,EADT;;AAEA,WAAOI,OAAP,EAAgB;AACdJ,UAAI,IAAII,OAAR;AACAA,aAAO,GAAGC,QAAQ,CAACL,IAAI,CAAC5hG,MAAN,CAAlB;AACD;;AACD,WAAO4hG,IAAP;AACD,GA5BH;AAAA,MA8BEM,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAW;AACnC,QAAIhrB,KAAJ,EAAWn3E,CAAX,EAAcc,GAAd;AAEAghG,mBAAc,GAAG,EAAjB;AACAC,wBAAmB,GAAG,IAAtB;;AACA,SAAK/hG,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG+gG,IAAI,CAAC5hG,MAAvB,EAA+BD,CAAC,GAAGc,GAAnC,EAAwCd,CAAC,IAAI,CAA7C,EAAgD;AAC9Cm3E,WAAK,GAAG0qB,IAAI,CAAChwC,MAAL,CAAY7xD,CAAZ,EAAe,CAAf,CAAR;;AACA,UAAIsyF,iBAAgB,CAACpb,WAAjB,CAA6BC,KAA7B,MAAwC,MAA5C,EAAoD;AAClD,YAAI4qB,oBAAmB,KAAK,IAA5B,EAAkC;AAChCA,8BAAmB,GAAG/hG,CAAC,GAAG,CAA1B;AACD,SAHiD,CAIlD;AACA;AACA;;;AACA,YAAIm3E,KAAK,CAACl3E,MAAN,KAAiB,CAArB,EAAwB;AACtB6hG,yBAAc,CAAC9hG,CAAD,CAAd,GAAoB8hG,eAAc,CAAC9hG,CAAC,GAAG,CAAL,CAAd,GAAwB8hG,eAAc,CAAC9hG,CAAC,GAAG,CAAL,CAAd,GAAwB,IAApE;AACD;AACF;AACF;;AACD,QAAI+hG,oBAAmB,KAAK,IAA5B,EAAkC;AAChC;AACAA,0BAAmB,GAAG3gG,IAAI,CAACwqC,KAAL,CAAWi2D,IAAI,CAAC5hG,MAAL,GAAc,CAAzB,CAAtB;AACD;AACF,GArDH;AAAA,MAuDEiiG,QAAQ,GAAG,SAAXA,QAAW,CAAS5oE,KAAT,EAAgB;AACzB,QAAIA,KAAK,IAAIsoE,OAAO,CAAC3hG,MAArB,EAA6B;AAC3B;AACA,aAAO,IAAP;AACD;;AACD,YAAQ2hG,OAAO,CAACtoE,KAAD,CAAf;AACE,WAAK,GAAL;AACE,eAAO,GAAP;;AACF,WAAK,GAAL;AACE,eAAO,GAAP;;AACF,WAAK,GAAL;AACE,eAAO,GAAP;;AACF,WAAK,GAAL;AACE,eAAO,GAAP;AARJ;AAUD,GAtEH;AAAA,MAwEE8oE,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAStiG,KAAT,EAAgBuiG,QAAhB,EAA0B;AAChD,QAAIriG,CAAJ,EAAOc,GAAP,EAAYwhG,MAAZ,CADgD,CAEhD;;AACAxiG,SAAK,CAACG,MAAN,GAAeoiG,QAAQ,CAACpiG,MAAxB;;AACA,SAAKD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGuhG,QAAQ,CAACpiG,MAA3B,EAAmCD,CAAC,GAAGc,GAAvC,EAA4Cd,CAAC,EAA7C,EAAiD;AAC/CsiG,YAAM,GAAGxiG,KAAK,CAACE,CAAD,CAAL,IAAY,EAArB,CAD+C,CACtB;;AACzBsiG,YAAM,CAAC5/F,GAAP,GAAa1C,CAAb,CAF+C,CAG/C;AACA;AACA;AACA;;AACA,UAAIsiG,MAAM,CAACz7F,IAAP,KAAgBw7F,QAAQ,CAACriG,CAAD,CAA5B,EAAiC;AAC/BsiG,cAAM,CAACz7F,IAAP,GAAcw7F,QAAQ,CAACriG,CAAD,CAAtB;AACAsiG,cAAM,CAAC32F,EAAP,GAAY61F,WAAW,EAAvB,CAF+B,CAG/B;AACA;;AACA1hG,aAAK,CAACE,CAAD,CAAL,GAAWsiG,MAAX;AACD;AACF;;AACD,WAAOxiG,KAAP;AACD,GA5FH;AAAA,MA8FEyiG,oBAAoB,GAAG,SAAvBA,oBAAuB,CAASziG,KAAT,EAAgBmT,GAAhB,EAAqBy3B,IAArB,EAA2B;AAChD,QAAI23D,QAAQ,GAAG,CAAC33D,IAAD,GAAQu2D,QAAQ,GAAGL,YAAX,GAA0B3tF,GAA1B,GAAgC4tF,cAAhC,GAAiDI,QAAzD,GACbC,aAAa,GAAGJ,iBAAhB,GAAoC7tF,GAApC,GAA0C+tF,mBAA1C,GAAgEE,aADlE;AAAA,QAEEsB,SAAS,GAAGvB,QAAQ,CAAChhG,MAFvB;AAAA,QAGEwiG,aAAa,GAAGD,SAAS,GAAG5B,YAAY,CAAC3gG,MAH3C;AAAA,QAIEyiG,WAAW,GAAGD,aAAa,GAAGxvF,GAAG,CAAChT,MAJpC;AAAA,QAKE0iG,eAAe,GAAGD,WAAW,GAAG7B,cAAc,CAAC5gG,MALjD;AAAA,QAMED,CANF;AAAA,QAMKc,GANL;AAAA,QAMUwhG,MANV,CADgD,CAShD;;AACAxiG,SAAK,CAACG,MAAN,GAAeoiG,QAAQ,CAACpiG,MAAxB;;AACA,SAAKD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGuhG,QAAQ,CAACpiG,MAA3B,EAAmCD,CAAC,GAAGc,GAAvC,EAA4Cd,CAAC,EAA7C,EAAiD;AAC/CsiG,YAAM,GAAGxiG,KAAK,CAACE,CAAD,CAAL,IAAY,EAArB,CAD+C,CACtB;;AACzBsiG,YAAM,CAAC5/F,GAAP,GAAa1C,CAAb;AACA,UAAIA,CAAC,GAAGwiG,SAAR,EAAmBF,MAAM,CAACM,MAAP,GAAgB,GAAhB,CAAnB,KACK,IAAI5iG,CAAC,GAAGyiG,aAAR,EAAuBH,MAAM,CAACM,MAAP,GAAgB,GAAhB,CAAvB,KACA,IAAI5iG,CAAC,GAAG0iG,WAAR,EAAqBJ,MAAM,CAACM,MAAP,GAAgB,GAAhB,CAArB,KACA,IAAI5iG,CAAC,GAAG2iG,eAAR,EAAyBL,MAAM,CAACM,MAAP,GAAgB,GAAhB,CAAzB,KACAN,MAAM,CAACM,MAAP,GAAgB,GAAhB,CAP0C,CAQ/C;AACA;AACA;AACA;;AACA,UAAIN,MAAM,CAACz7F,IAAP,KAAgBw7F,QAAQ,CAACriG,CAAD,CAA5B,EAAiC;AAC/BsiG,cAAM,CAACz7F,IAAP,GAAcw7F,QAAQ,CAACriG,CAAD,CAAtB;AACAsiG,cAAM,CAAC32F,EAAP,GAAY61F,WAAW,EAAvB,CAF+B,CAG/B;AACA;;AACA1hG,aAAK,CAACE,CAAD,CAAL,GAAWsiG,MAAX;AACD;AACF;;AACD,WAAOxiG,KAAP;AACD,GA9HH;AAAA,MAgIE+iG,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAW;AACnC,QAAI5vF,GAAG,GAAGrE,KAAK,CAACmW,GAAN,CAAU,KAAV,CAAV;AAEAw9E,wBAAoB,CAAC/jF,GAAG,CAACskF,SAAJ,CAAc7vF,GAAf,EAAoBA,GAApB,EAAyB,KAAzB,CAApB;AAEA2uF,WAAO,GAAGb,qBAAqB,CAAC9tF,GAAD,CAA/B;AACAsvF,wBAAoB,CAAC/jF,GAAG,CAACskF,SAAJ,CAAclB,OAAf,EAAwBA,OAAxB,EAAiC,IAAjC,CAApB;AAEAC,QAAI,GAAGG,aAAa,EAApB;AACAG,2BAAuB,GATY,CAUnC;;AACA,QAAI3jF,GAAG,CAACukF,WAAJ,CAAgB,iBAAhB,CAAJ,EAAwC;AACtCX,2BAAqB,CAAC5jF,GAAG,CAACskF,SAAJ,CAAcjB,IAAf,EAAqB,EAArB,CAArB;AACD,KAFD,MAEO,IAAIrjF,GAAG,CAAC0oB,KAAJ,GAAYtgC,IAAZ,KAAqB,eAAzB,EAA0C;AAC/Cw7F,2BAAqB,CAAC5jF,GAAG,CAACskF,SAAJ,CAAcjB,IAAf,EAAqBA,IAAI,CAAChwC,MAAL,CAAY,CAAZ,EAAerzC,GAAG,CAAC0oB,KAAJ,GAAYxJ,IAA3B,CAArB,CAArB;AACD,KAFM,MAEA,IAAIlf,GAAG,CAACwkF,UAAJ,CAAe,eAAf,CAAJ,EAAqC;AAC1C;AACAZ,2BAAqB,CAAC5jF,GAAG,CAACskF,SAAJ,CAAcjB,IAAf,EAAqBA,IAArB,CAArB;AACD;;AAED,QAAIH,SAAS,KAAK,YAAlB,EAAgC;AAC9B;AACA;AACA,UAAIljF,GAAG,CAACukF,WAAJ,CAAgB,eAAhB,CAAJ,EAAsC;AACpCE,wBAAgB;AACjB,OAFD,MAEO,IAAIzkF,GAAG,CAAC0kF,UAAJ,CAAe,iBAAf,CAAJ,EAAuC;AAC5CC,4BAAoB;AACrB;AACF;AACF,GA7JH;AAAA,MA+JEF,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAW;AAC5B,QAAIG,OAAJ;AAEAA,WAAO,GAAGx0F,KAAK,CAACoxC,gBAAN,EAAV;;AACA,QAAIojD,OAAO,GAAG,CAAd,EAAiB;AACfx0F,WAAK,CAACqnB,UAAN;;AACA,aAAOmtE,OAAO,GAAG,CAAjB,EAAoB;AAClBx0F,aAAK,CAACwoF,UAAN,CAAiBgM,OAAO,GAAG,CAA3B;AACAA,eAAO;AACR;;AACDx0F,WAAK,CAACsnB,QAAN;AACD;;AACDtnB,SAAK,CAAC89B,IAAN;AACD,GA5KH;AAAA,MA8KEy2D,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAW;AAChC,QAAIE,WAAW,GAAG,EAAlB;AAAA,QACErjG,CAAC,GAAG,CADN;AAAA,QAEEi3E,IAAI,GAAGqb,iBAAgB,CAACpb,WAAjB,CAA6B14D,GAAG,CAAC24D,KAAJ,CAAU,CAAV,CAA7B,CAFT;;AAIA,WAAOF,IAAI,KAAK,MAAhB,EAAwB;AACtBosB,iBAAW,CAACzgG,IAAZ,CAAiBq0E,IAAjB;AACAA,UAAI,GAAGqb,iBAAgB,CAACpb,WAAjB,CAA6B14D,GAAG,CAAC24D,KAAJ,CAAU,EAAEn3E,CAAZ,CAA7B,CAAP;AACD;;AACDwe,OAAG,CAAC8kF,eAAJ,CAAoBD,WAApB,EAAiCnkG,SAAjC,EAA4C,GAA5C,EAAiD,GAAjD;AACAsf,OAAG,CAAC+kF,aAAJ;AACA30F,SAAK,CAAC+/B,KAAN;AACD,GA1LH;AAAA,MA4LE60D,SAAS,GAAG,SAAZA,SAAY,CAASt8D,KAAT,EAAgB;AAC1B,QAAItgC,IAAI,GAAGsgC,KAAK,CAACtgC,IAAjB;AAAA,QACEyI,IADF;AAAA,QACQ4nE,IADR;;AAGA,QAAIrwE,IAAI,KAAK,eAAb,EAA8B;AAC5B,UAAIsgC,KAAK,CAACxJ,IAAN,GAAa9uB,KAAK,CAACmW,GAAN,CAAU,KAAV,EAAiB9kB,MAAjB,GAA0B,CAA3C,EAA8C;AAC5C,eAAO,oBAAoBinC,KAAK,CAACxJ,IAAN,GAAa,CAAjC,CAAP;AACD,OAFD,MAEO;AACL,eAAO,mBAAP;AACD;AACF,KAND,MAMO,IAAI92B,IAAI,KAAK,aAAb,EAA4B;AACjCqwE,UAAI,GAAGqb,iBAAgB,CAACpb,WAAjB,CAA6B14D,GAAG,CAAC24D,KAAJ,CAAUjwC,KAAK,CAACxJ,IAAhB,CAA7B,CAAP;;AACA,UAAIu5C,IAAI,KAAK,MAAb,EAAqB;AACnB,eAAO,kBAAkB/vC,KAAK,CAACxJ,IAAN,GAAa,CAA/B,CAAP;AACD,OAFD,MAEO;AACL,eAAO,iBAAP;AACD;AACF,KAPM,MAOA;AACL;AACAruB,UAAI,GAAGoxF,MAAM,CAACC,WAAW,CAACx5D,KAAK,CAACtgC,IAAP,CAAX,GAA0B,CAA3B,CAAb;;AACA,UAAIyI,IAAI,KAAK,eAAT,IAA4BA,IAAI,KAAK,aAAzC,EAAwD;AACtDA,YAAI,IAAI,IAAR;AACD;;AACD,aAAOA,IAAP;AACD;AACF,GArNH;AAAA,MAuNEo0F,SAAS,GAAG,SAAZA,SAAY,CAASv8D,KAAT,EAAgB;AAC1B,QAAItgC,IAAI,GAAGsgC,KAAK,CAACtgC,IAAjB;AAAA,QACE82B,IAAI,GAAGwJ,KAAK,CAACxJ,IADf;;AAGA,QAAI92B,IAAI,KAAK,eAAT,IAA4B82B,IAAI,GAAG,CAAvC,EAA0C;AACxC,aAAO,oBAAoBA,IAAI,GAAG,CAA3B,CAAP;AACD,KAFD,MAEO,IAAI92B,IAAI,KAAK,mBAAb,EAAkC;AACvC,aAAO,oBAAoBgI,KAAK,CAACmW,GAAN,CAAU,KAAV,EAAiB9kB,MAAjB,GAA0B,CAA9C,CAAP;AACD,KAFM,MAEA,IAAI2G,IAAI,KAAK,iBAAT,IAA+BA,IAAI,KAAK,aAAT,IAA0B82B,IAAI,GAAG,CAApE,EAAwE;AAC7E;AACA;AACA,aAAO,eAAP;AACD,KAJM,MAIA;AACL,aAAO+iE,MAAM,CAACC,WAAW,CAAC95F,IAAD,CAAX,GAAoB,CAArB,CAAb;AACD;AACF,GAtOH;AAAA,MAwOE;AACA88F,WAAS,GAAG,SAAZA,SAAY,CAASC,MAAT,EAAiBC,MAAjB,EAAyB;AACnC,QAAID,MAAM,KAAKC,MAAf,EAAuB;AACrB,aAAO,CAAP;AACD;;AACDD,UAAM,GAAGnlF,GAAG,CAACqlF,UAAJ,CAAeF,MAAf,CAAT;AACAC,UAAM,GAAGplF,GAAG,CAACqlF,UAAJ,CAAeD,MAAf,CAAT;;AACA,QAAID,MAAM,CAAC/8F,IAAP,KAAgBg9F,MAAM,CAACh9F,IAA3B,EAAiC;AAC/B,UAAIoH,KAAK,CAAC21F,MAAM,CAACjmE,IAAR,CAAL,IAAsB1vB,KAAK,CAAC41F,MAAM,CAAClmE,IAAR,CAA/B,EAA8C;AAC5C;AACA;AACA,eAAO,CAAP;AACD;;AACD,aAAOimE,MAAM,CAACjmE,IAAP,GAAckmE,MAAM,CAAClmE,IAArB,GAA4B,CAAC,CAA7B,GAAiC,CAAxC;AACD;;AACD,WAAOgjE,WAAW,CAACiD,MAAM,CAAC/8F,IAAR,CAAX,GAA2B85F,WAAW,CAACkD,MAAM,CAACh9F,IAAR,CAAtC,GAAsD,CAAC,CAAvD,GAA2D,CAAlE;AACD,GAxPH;AAAA,MA0PEk9F,iBAAiB,GAAG,SAApBA,iBAAoB,CAASl9F,IAAT,EAAe;AACjC,QAAI,OAAOA,IAAP,KAAgB,WAApB,EAAiC;;AACjC,QAAI+6F,kBAAkB,CAAC1hG,MAAnB,GAA4B,CAAhC,EAAmC;AACjC;AACA0hG,wBAAkB,CAAC/+F,IAAnB,CAAwBgE,IAAxB;AACD,KAHD,MAGO;AACL;AACA;AACA+6F,wBAAkB,CAAC/+F,IAAnB,CAAwBgE,IAAxB;AACAm9F,uBAAiB,CAACn9F,IAAD,CAAjB;AACD;AACF,GArQH;AAAA,MAuQEm9F,iBAAiB,GAAG,SAApBA,iBAAoB,CAASn9F,IAAT,EAAe;AACjCrE,OAAG,CAAC,UAAD,EAAaqE,IAAb,EAAmB,YAAnB,CAAH;AACD,GAzQH;AAAA,MA2QEo9F,eAAe,GAAG,SAAlBA,eAAkB,CAASC,MAAT,EAAiB;AACjC1hG,OAAG,CAAC,KAAD,EAAQ0hG,MAAR,EAAgB,YAAhB,CAAH;AACD,GA7QH;AAAA,MA+QEC,cAAc,GAAG,SAAjBA,cAAiB,CAASC,sBAAT,EAAiC;AAChD;AACAxC,sBAAkB,CAAC1hG,MAAnB,GAA4B,CAA5B;AACA2O,SAAK,CAACw1F,iBAAN;AAEA7uE,YAAQ,CAACigB,MAAT,CAAgB2uD,sBAAhB;AACD,GArRH;AAAA,MAuRE;AACA;AACA;AACA;AACA;AACA;AACA5hG,KAAG,GAAG,SAANA,GAAM,CAASqE,IAAT,EAAe7G,KAAf,EAAsBskG,SAAtB,EAAiC;AACrC3C,aAAS,GAAG2C,SAAS,IAAIlD,SAAzB;AACAvyF,SAAK,CAACwb,UAAN,CAAiBxjB,IAAjB,IAAyB7G,KAAzB;AACA2hG,aAAS,GAAGP,SAAZ;AACD,GAjSH;AAAA,MAmSEmD,YAAY,GAAG,SAAfA,YAAe,GAAW;AACxB,QAAIp9D,KAAK,GAAGt4B,KAAK,CAACmW,GAAN,CAAU,UAAV,CAAZ;;AAEA,QAAI28E,SAAS,KAAK,UAAlB,EAA8B;AAC5B;AACD;;AAEDmB,2BAAuB;;AAEvB,QAAInB,SAAS,KAAK,YAAlB,EAAgC;AAC9BnsE,cAAQ,CAACgvE,UAAT,CAAoBr9D,KAApB;AACD,KAFD,MAEO;AAEL,UAAI1oB,GAAG,CAACwkF,UAAJ,CAAe,eAAf,KAAmCxkF,GAAG,CAACukF,WAAJ,CAAgB,iBAAhB,CAAvC,EAA2E;AACzE;AACA;AACAj+F,+CAAK,CAAC,MAAMoiC,KAAN,GAAc,8BAAd,GACJ,uDADI,GAEJA,KAFI,GAEI,wBAFL,CAAL;AAGA3kC,WAAG,CAAC,UAAD,EAAa,eAAb,CAAH;AACA;AACD;;AAED2hG,oBAAc;AACf;AACF,GA5TH;AAAA,MA8TEM,UAAU,GAAG,SAAbA,UAAa,GAAW;AACtB,QAAI9C,SAAS,KAAK,UAAlB,EAA8B;AAC5B;AACD;;AAED,QAAIljF,GAAG,CAACwkF,UAAJ,CAAe,eAAf,KAAmCxkF,GAAG,CAACukF,WAAJ,CAAgB,iBAAhB,CAAvC,EAA2E;AACzE;AACA;AACA;AACAxgG,SAAG,CAAC,UAAD,EAAa,eAAb,CAAH;AACA;AACD;;AAEDsgG,2BAAuB;;AAEvB,QAAInB,SAAS,KAAK,YAAlB,EAAgC;AAC9BnsE,cAAQ,CAACgvE,UAAT,CAAoB,aAApB,EAAmC,IAAnC;AACD,KAFD,MAEO;AACLL,oBAAc,CAAC,IAAD,CAAd;AACD;AACF,GAlVH,CAD+C,CAqV/C;;;AACA1lF,KAAG,GAAG;AACJ;;;;AAIAimF,iBAAa,EAAExD,QAAQ,CAAChhG,MAAT,GAAkB2gG,YAAY,CAAC3gG,MAL1C;;AAOJ;;;;;;;;;;;;AAYA6iG,aAAS,EAAE;AACTjB,UAAI,EAAE,EADG;AAET5uF,SAAG,EAAE,EAFI;AAGT2uF,aAAO,EAAE;AAHA,KAnBP;;AAyBJ;;;;;;AAMAtkF,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD,KAjCG;;AAmCJ;;;;;;;AAOAwwE,UAAM,EAAE,gBAAShiG,GAAT,EAAciiG,OAAd,EAAuBC,aAAvB,EAAsC;AAC5C,UAAI3xF,GAAG,GAAGrE,KAAK,CAACmW,GAAN,CAAU,KAAV,CAAV;AAAA,UACEuB,GAAG,GAAG5jB,GAAG,GAAG8b,GAAG,CAACimF,aADlB;;AAGA,UAAIn+E,GAAG,GAAG,CAAN,IAAWA,GAAG,IAAIrT,GAAG,CAAChT,MAA1B,EAAkC;AAChC,cAAM,IAAIJ,KAAJ,CAAU,sDAAV,CAAN;AACD;;AAEDoT,SAAG,GAAGA,GAAG,CAAC4+C,MAAJ,CAAW,CAAX,EAAcvrC,GAAd,KACHs+E,aAAa,GAAG7D,qBAAqB,CAAC4D,OAAD,CAAxB,GAAoCA,OAD9C,IAEJ1xF,GAAG,CAAC4+C,MAAJ,CAAWvrC,GAAG,GAAG,CAAjB,CAFF,CAR4C,CAW5C;AACA;;AACA/jB,SAAG,CAAC,KAAD,EAAQ0Q,GAAR,CAAH;AACD,KAxDG;;AA0DJ;;;;;;;AAOA4xF,UAAM,EAAE,gBAASniG,GAAT,EAAcmE,IAAd,EAAoB+9F,aAApB,EAAmC;AACzC,UAAIE,YAAY,GAAG;AACfj+F,YAAI,EAAE+9F,aAAa,GAAG7D,qBAAqB,CAACl6F,IAAD,CAAxB,GAAiCA,IADrC;AAEf8E,UAAE,EAAE61F,WAAW,EAFA;AAGfoB,cAAM,EAAE;AAHO,OAAnB;AAAA,UAKEmC,gBAAgB,GAAG;AACjBl+F,YAAI,EAAE+9F,aAAa,GAAG/9F,IAAH,GAAUk6F,qBAAqB,CAACl6F,IAAD,CADjC;AAEjB8E,UAAE,EAAE61F,WAAW,EAFE;AAGjBoB,cAAM,EAAE;AAHS,OALrB;AAAA,UAUEoC,aAAa,GAAG;AACdn+F,YAAI,EAAE+9F,aAAa,GAAG7D,qBAAqB,CAACl6F,IAAD,CAAxB,GAAiCA,IADtC;AAEd8E,UAAE,EAAE61F,WAAW,EAFD;AAGdoB,cAAM,EAAE;AAHM,OAVlB;AAAA,UAeE3vF,GAAG,GAAGrE,KAAK,CAACmW,GAAN,CAAU,KAAV,CAfR;AAAA,UAgBEmiB,KAAK,GAAG1oB,GAAG,CAAC0oB,KAAJ,EAhBV;AAAA,UAiBE5gB,GAAG,GAAG5jB,GAAG,GAAG8b,GAAG,CAACimF,aAjBlB;;AAmBA,UAAIn+E,GAAG,GAAG,CAAN,IAAWA,GAAG,IAAIrT,GAAG,CAAChT,MAA1B,EAAkC;AAChC,cAAM,IAAIJ,KAAJ,CAAU,sDAAV,CAAN;AACD,OAtBwC,CAwBzC;AACA;AACA;;;AACA2e,SAAG,CAACskF,SAAJ,CAAc7vF,GAAd,CAAkBq6C,MAAlB,CAAyB5qD,GAAzB,EAA8B,CAA9B,EAAiCoiG,YAAjC;AACAtmF,SAAG,CAACskF,SAAJ,CAAclB,OAAd,CAAsBt0C,MAAtB,CAA6B5qD,GAA7B,EAAkC,CAAlC,EAAqCqiG,gBAArC;AACAvmF,SAAG,CAACskF,SAAJ,CAAcjB,IAAd,CAAmBv0C,MAAnB,CAA0BhnC,GAA1B,EAA+B,CAA/B,EAAkC0+E,aAAlC,EA7ByC,CA+BzC;AACA;;AACA/xF,SAAG,GAAGA,GAAG,CAAC4+C,MAAJ,CAAW,CAAX,EAAcvrC,GAAd,IAAqBw+E,YAAY,CAACj+F,IAAlC,GAAyCoM,GAAG,CAAC4+C,MAAJ,CAAWvrC,GAAX,CAA/C,CAjCyC,CAmCzC;AACA;AACA;AACA;AACA;;AACA,UAAI4gB,KAAK,CAACtgC,IAAN,KAAe,eAAf,IAAkC0f,GAAG,GAAG4gB,KAAK,CAACxJ,IAAlD,EAAwD;AACtD;AACA;AACA;AACAn7B,WAAG,CAAC,UAAD,EAAa2kC,KAAK,CAACtgC,IAAN,GAAa,GAAb,IAAoBsgC,KAAK,CAACxJ,IAAN,GAAa,CAAjC,CAAb,EAAkD,UAAlD,CAAH;AACD;;AACDsmE,qBAAe,CAAC/wF,GAAD,CAAf;AACD,KAhHG;;AAkHJ;;;;AAIA,cAAQ,iBAASvQ,GAAT,EAAc;AACpB,UAAIuQ,GAAG,GAAGrE,KAAK,CAACmW,GAAN,CAAU,KAAV,CAAV;AAAA,UACEmiB,KAAK,GAAG1oB,GAAG,CAAC0oB,KAAJ,EADV;AAAA,UAEE5gB,GAAG,GAAG5jB,GAAG,GAAG8b,GAAG,CAACimF,aAFlB;;AAIA,UAAIn+E,GAAG,GAAG,CAAN,IAAWA,GAAG,IAAIrT,GAAG,CAAChT,MAA1B,EAAkC;AAChC,cAAM,IAAIJ,KAAJ,CAAU,sDAAV,CAAN;AACD,OAPmB,CASpB;AACA;AACA;;;AACA2e,SAAG,CAACskF,SAAJ,CAAc7vF,GAAd,CAAkBq6C,MAAlB,CAAyB5qD,GAAzB,EAA8B,CAA9B;AACA8b,SAAG,CAACskF,SAAJ,CAAclB,OAAd,CAAsBt0C,MAAtB,CAA6B5qD,GAA7B,EAAkC,CAAlC;AACA8b,SAAG,CAACskF,SAAJ,CAAcjB,IAAd,CAAmBv0C,MAAnB,CAA0BhnC,GAA1B,EAA+B,CAA/B,EAdoB,CAgBpB;AACA;;AACArT,SAAG,GAAGA,GAAG,CAAC4+C,MAAJ,CAAW,CAAX,EAAcvrC,GAAd,IAAqBrT,GAAG,CAAC4+C,MAAJ,CAAWvrC,GAAG,GAAG,CAAjB,CAA3B,CAlBoB,CAoBpB;AACA;AACA;AACA;AACA;;AACA,UAAI4gB,KAAK,CAACtgC,IAAN,KAAe,eAAf,IAAkC0f,GAAG,GAAG4gB,KAAK,CAACxJ,IAAlD,EAAwD;AACtDn7B,WAAG,CAAC,UAAD,EAAakhG,SAAS,CAACv8D,KAAD,CAAtB,EAA+B,UAA/B,CAAH;AACD;;AACD88D,qBAAe,CAAC/wF,GAAD,CAAf;AACD,KAnJG;;AAqJJ;;;;;AAKAgyF,yBAAqB,EAAE,iCAAW;AAChCzmF,SAAG,CAAC0mF,cAAJ;;AACA,UAAIvD,kBAAkB,CAAC1hG,MAAnB,KAA8B,CAAlC,EAAqC;AACnC6jG,yBAAiB,CAACN,SAAS,CAAChlF,GAAG,CAACg3D,SAAJ,EAAD,CAAV,CAAjB;AACD;AACF,KA/JG;;AAiKJ;;;;AAIA0vB,kBAAc,EAAE,0BAAW;AACzB,UAAIvD,kBAAkB,CAAC1hG,MAAnB,GAA4B,CAAhC,EAAmC;AACjC;AACA;AACA0hG,0BAAkB,CAAC1hG,MAAnB,GAA4B,CAA5B;AACD;AACF,KA3KG;AA6KJklG,mBAAe,EAAE,2BAAW;AAC1B,UAAI3mF,GAAG,CAACukF,WAAJ,CAAgB,eAAhB,CAAJ,EAAsC;AACpCxgG,WAAG,CAAC,UAAD,EAAaihG,SAAS,CAAChlF,GAAG,CAAC0oB,KAAJ,EAAD,CAAtB,CAAH;AACD,OAFD,MAEO,IAAI1oB,GAAG,CAACukF,WAAJ,CAAgB,iBAAhB,CAAJ,EAAwC;AAC7CxgG,WAAG,CAAC,UAAD,EAAa,iBAAb,CAAH;AACD;AACF,KAnLG;AAqLJ6iG,mBAAe,EAAE,2BAAW;AAC1B,UAAI5mF,GAAG,CAACwkF,UAAJ,CAAe,aAAf,CAAJ,EAAmC;AACjCzgG,WAAG,CAAC,UAAD,EAAakhG,SAAS,CAACjlF,GAAG,CAAC0oB,KAAJ,EAAD,CAAtB,CAAH;AACD;AACF,KAzLG;;AA2LJ;;;;;;AAMAm+D,gBAAY,EAAE,sBAASC,SAAT,EAAoB;AAChC,aAAO9mF,GAAG,CAAC+mF,eAAJ,CAAoBD,SAApB,CAAP,EAAuC;AACrCxB,yBAAiB,CAACN,SAAS,CAAChlF,GAAG,CAACg3D,SAAJ,EAAD,CAAV,CAAjB;AACD;AACF,KArMG;;AAuMJ;;;;;;;;;;;;;;AAcAgwB,kBAAc,EAAE,wBAASC,kBAAT,EAA6B;AAC3C,UAAIv+D,KAAJ,EAAW+6D,OAAX;AAEA/6D,WAAK,GAAG1oB,GAAG,CAAC0oB,KAAJ,EAAR;;AACA,UAAIA,KAAK,CAACtgC,IAAN,KAAe,KAAf,IAAwB,OAAO6+F,kBAAP,KAA8B,WAA1D,EAAuE;AACrEjnF,WAAG,CAACymF,qBAAJ;AACD,OAFD,MAEO,IAAI/9D,KAAK,CAACtgC,IAAN,KAAe,eAAnB,EAAoC;AACzCq7F,eAAO,GAAGC,QAAQ,CAACh7D,KAAK,CAACxJ,IAAP,CAAlB;;AACA,YAAI+nE,kBAAkB,IAAIA,kBAAkB,CAACvyF,WAAnB,OAAqC+uF,OAA/D,EAAwE;AACtE;AACA;AACD;;AACDzjF,WAAG,CAACymF,qBAAJ;AACD;AACF,KAnOG;AAqOJ;;AAEA;;;;;;;;;;AAUA/9D,SAAK,EAAE,iBAAW;AAChB,aAAO1oB,GAAG,CAACqlF,UAAJ,CAAej1F,KAAK,CAACmW,GAAN,CAAU,UAAV,CAAf,CAAP;AACD,KAnPG;AAqPJg+E,eAAW,EAAE,qBAASn8F,IAAT,EAAe;AAC1B,aAAO88F,SAAS,CAAC90F,KAAK,CAACmW,GAAN,CAAU,UAAV,CAAD,EAAwBne,IAAxB,CAAT,KAA2C,CAAC,CAAnD;AACD,KAvPG;AAyPJs8F,cAAU,EAAE,oBAASt8F,IAAT,EAAe;AACzB,aAAO88F,SAAS,CAAC90F,KAAK,CAACmW,GAAN,CAAU,UAAV,CAAD,EAAwBne,IAAxB,CAAT,KAA2C,CAAlD;AACD,KA3PG;AA6PJo8F,cAAU,EAAE,oBAASp8F,IAAT,EAAe;AACzB,aAAO88F,SAAS,CAAC90F,KAAK,CAACmW,GAAN,CAAU,UAAV,CAAD,EAAwBne,IAAxB,CAAT,KAA2C,CAAlD;AACD,KA/PG;;AAiQJ;;;;;;;;;;;;;AAaA4uE,aAAS,EAAE,qBAAW;AACpB,UAAIkwB,QAAQ,GAAG/D,kBAAkB,CAAC1hG,MAAlC;;AACA,UAAIylG,QAAQ,GAAG,CAAf,EAAkB;AAChB,eAAOlnF,GAAG,CAACqlF,UAAJ,CAAelC,kBAAkB,CAAC+D,QAAQ,GAAG,CAAZ,CAAjC,CAAP;AACD;;AACD,aAAOlnF,GAAG,CAAC0oB,KAAJ,EAAP;AACD,KApRG;AAsRJq+D,mBAAe,EAAE,yBAAS3+F,IAAT,EAAe;AAC9B,UAAI8+F,QAAQ,GAAG/D,kBAAkB,CAAC1hG,MAAlC;AAAA,UACE0lG,aAAa,GAAGD,QAAQ,GAAG/D,kBAAkB,CAAC+D,QAAQ,GAAG,CAAZ,CAArB,GAAsC92F,KAAK,CAACmW,GAAN,CAAU,UAAV,CADhE;AAEA,aAAO2+E,SAAS,CAACiC,aAAD,EAAgB/+F,IAAhB,CAAT,KAAmC,CAAC,CAApC,GAAwC,IAAxC,GAA+C,KAAtD;AACD,KA1RG;AA4RJg/F,kBAAc,EAAE,wBAASh/F,IAAT,EAAe;AAC7B,UAAI8+F,QAAQ,GAAG/D,kBAAkB,CAAC1hG,MAAlC;AAAA,UACE0lG,aAAa,GAAGD,QAAQ,GAAG/D,kBAAkB,CAAC+D,QAAQ,GAAG,CAAZ,CAArB,GAAsC92F,KAAK,CAACmW,GAAN,CAAU,UAAV,CADhE;AAEA,aAAO2+E,SAAS,CAACiC,aAAD,EAAgB/+F,IAAhB,CAAT,KAAmC,CAAnC,GAAuC,IAAvC,GAA8C,KAArD;AACD,KAhSG;AAkSJi9F,cAAU,EAAE,oBAAS38D,KAAT,EAAgB;AAC1B;AACA;AACAA,WAAK,GAAGA,KAAK,CAAC74B,KAAN,CAAY,GAAZ,CAAR;AACA,aAAO;AACLzH,YAAI,EAAEsgC,KAAK,CAAC,CAAD,CADN;AAELxJ,YAAI,EAAEh8B,MAAM,CAACwlC,KAAK,CAAC,CAAD,CAAN,CAFP,CAEkB;;AAFlB,OAAP;AAID,KA1SG;AA4SJiwC,SAAK,EAAE,eAAS79C,KAAT,EAAgB;AACrB,aAAOuoE,IAAI,CAAChwC,MAAL,CAAY,IAAIv4B,KAAhB,EAAuB,CAAvB,CAAP;AACD,KA9SG;AAgTJusE,mBAAe,EAAE,yBAASvsE,KAAT,EAAgB;AAC/B,aAAO9a,GAAG,CAAC24D,KAAJ,CAAU79C,KAAV,EACJxtB,OADI,CACI,IADJ,EACU,GADV,EAEJA,OAFI,CAEI,IAFJ,EAEU,GAFV,EAGJA,OAHI,CAGI,IAHJ,EAGU,GAHV,EAIJA,OAJI,CAII,IAJJ,EAIU,GAJV,EAKJoH,WALI,EAAP;AAMD,KAvTG;AAyTJ4yF,0BAAsB,EAAE,gCAASC,QAAT,EAAmB5kG,CAAnB,EAAsBuV,CAAtB,EAAyBsvF,IAAzB,EAA+BC,IAA/B,EAAqCjpC,QAArC,EAA+C;AACrE,UAAIia,IAAI,GAAGqb,iBAAgB,CAACpb,WAAjB,CAA6B14D,GAAG,CAAC24D,KAAJ,CAAU4uB,QAAV,CAA7B,CAAX;AAAA,UACEG,IAAI,GAAG5T,iBAAgB,CAAC5b,aAAjB,CAA+BO,IAA/B,CADT,CADqE,CAIrE;AACA;;AACAgvB,UAAI,IAAI7kG,IAAI,CAACyO,MAAL,KAAgB,IAAhB,GAAuB,IAA/B;AACAjB,WAAK,CAACuoF,OAAN,CAAc;AACZh2F,SAAC,EAAEA,CADS;AAEZuV,SAAC,EAAEA,CAFS;AAGZpF,eAAO,EAAE40F,IAHG;AAIZhvF,eAAO,EAAE,IAJG;AAKZC,cAAM,EAAE;AALI,OAAd,EAMG;AACDgvF,qBAAa,EAAE;AADd,OANH,EAPqE,CAgBrE;;AACAv3F,WAAK,CAACw3F,cAAN,GAAuBz6F,EAAvB,CAA0Bo6F,QAA1B,EAAoC/oC,QAApC,CAA6CA,QAA7C,EAAuDh6D,IAAvD,CAA4D,GAA5D,EAAiEgjG,IAAjE;AACAp3F,WAAK,CAACw3F,cAAN,GAAuBz6F,EAAvB,CAA0Bo6F,QAA1B,EAAoC/oC,QAApC,CAA6CA,QAA7C,EAAuDh6D,IAAvD,CAA4D,GAA5D,EAAiEijG,IAAjE,EAlBqE,CAmBrE;;AACAr3F,WAAK,CAAC+/B,KAAN;AACD,KA9UG;AAgVJ03D,mBAAe,EAAE,yBAASphF,KAAT,EAAgBqhF,MAAhB,EAAwBtpC,QAAxB,EAAkC;AACjD,UAAI/3C,KAAK,GAAG,CAAZ,EAAe;AACf,UAAIjlB,CAAJ,EAAOmB,CAAP,EAAUuV,CAAV,CAFiD,CAGjD;;AACA,WAAK1W,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGilB,KAAhB,EAAuBjlB,CAAC,EAAxB,EAA4B;AAC1BmB,SAAC,GAAGyN,KAAK,CAAC23F,iBAAN,CAAwBvmG,CAAxB,EAA2BmB,CAA3B,GAA+BmlG,MAAnC;AACA5vF,SAAC,GAAG9H,KAAK,CAAC23F,iBAAN,CAAwBvmG,CAAxB,EAA2B0W,CAA/B;AACA9H,aAAK,CAACw3F,cAAN,GAAuBz6F,EAAvB,CAA0B3L,CAA1B,EAA6Bg9D,QAA7B,CAAsCA,QAAtC,EAAgDh6D,IAAhD,CAAqD,GAArD,EAA0D7B,CAA1D,EAH0B,CAI1B;AACA;AACA;;AACAyN,aAAK,CAACw3F,cAAN,GAAuBz6F,EAAvB,CAA0B3L,CAA1B,EAA6Bg9D,QAA7B,CAAsCA,QAAtC,EAAgDh6D,IAAhD,CAAqD,GAArD,EAA0D0T,CAA1D;AACD;AACF,KA7VG;AA+VJ6sF,iBAAa,EAAE,uBAASvmC,QAAT,EAAmB;AAChCpuD,WAAK,CAAC43F,KAAN,CAAY,YAAW;AACrB,YAAIhV,EAAE,GAAGhzE,GAAG,CAACioF,mBAAJ,EAAT;AAAA,YACE7S,KAAK,GAAGhlF,KAAK,CAACwb,UAAN,CAAiBvW,SAAjB,GACRjF,KAAK,CAACwb,UAAN,CAAiB1W,aAAjB,GAAiC,CADzB,GAC6B89E,EAAE,CAACrwF,CAF1C;AAAA,YAGE0yF,KAAK,GAAGjlF,KAAK,CAACwb,UAAN,CAAiBtW,SAAjB,GACRlF,KAAK,CAACwb,UAAN,CAAiBzW,cAAjB,GAAkC,CAD1B,GAC8B69E,EAAE,CAAC96E,CAJ3C;AAAA,YAKE7I,IAAI,GAAGe,KAAK,CAACwb,UAAN,CAAiBvc,IAAjB,GAAwB,GALjC;AAAA,YAMEH,IAAI,GAAGkB,KAAK,CAACwb,UAAN,CAAiB1c,IAAjB,GAAwB,GANjC;AAAA,YAOEI,IAAI,GAAGc,KAAK,CAACwb,UAAN,CAAiBtc,IAAjB,GAAwB,GAPjC;AAAA,YAQEF,IAAI,GAAGgB,KAAK,CAACwb,UAAN,CAAiBxc,IAAjB,GAAwB,GARjC;AAAA,YASE9M,GAAG,GAAG8N,KAAK,CAACoxC,gBAAN,EATR;AAAA,YAUEhgD,CAVF;AAAA,YAUKmB,CAVL;AAAA,YAUQuV,CAVR;;AAYA,aAAK1W,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGc,GAAhB,EAAqBd,CAAC,EAAtB,EAA0B;AACxBmB,WAAC,GAAGyN,KAAK,CAAC23F,iBAAN,CAAwBvmG,CAAxB,EAA2BmB,CAA/B;AACAuV,WAAC,GAAG9H,KAAK,CAAC23F,iBAAN,CAAwBvmG,CAAxB,EAA2B0W,CAA/B;AACA,cAAIvV,CAAC,GAAGyyF,KAAJ,GAAYlmF,IAAhB,EAAsBkmF,KAAK,GAAGlmF,IAAI,GAAGvM,CAAf;AACtB,cAAIA,CAAC,GAAGyyF,KAAJ,GAAY/lF,IAAhB,EAAsB+lF,KAAK,GAAG/lF,IAAI,GAAG1M,CAAf;AACtB,cAAIuV,CAAC,GAAGm9E,KAAJ,GAAYjmF,IAAhB,EAAsBimF,KAAK,GAAGjmF,IAAI,GAAG8I,CAAf;AACtB,cAAIA,CAAC,GAAGm9E,KAAJ,GAAY/lF,IAAhB,EAAsB+lF,KAAK,GAAG/lF,IAAI,GAAG4I,CAAf;AACvB;;AACD,aAAK1W,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGc,GAAhB,EAAqBd,CAAC,EAAtB,EAA0B;AACxBmB,WAAC,GAAGyN,KAAK,CAAC23F,iBAAN,CAAwBvmG,CAAxB,EAA2BmB,CAA3B,GAA+ByyF,KAAnC;AACAl9E,WAAC,GAAG9H,KAAK,CAAC23F,iBAAN,CAAwBvmG,CAAxB,EAA2B0W,CAA3B,GAA+Bm9E,KAAnC;;AACA,cAAI72B,QAAJ,EAAc;AACZpuD,iBAAK,CAACw3F,cAAN,GAAuBz6F,EAAvB,CAA0B3L,CAA1B,EAA6Bg9D,QAA7B,CAAsCA,QAAtC,EAAgDh6D,IAAhD,CAAqD,GAArD,EAA0D7B,CAA1D;AACAyN,iBAAK,CAACw3F,cAAN,GAAuBz6F,EAAvB,CAA0B3L,CAA1B,EAA6Bg9D,QAA7B,CAAsCA,QAAtC,EAAgDh6D,IAAhD,CAAqD,GAArD,EAA0D0T,CAA1D;AACD,WAHD,MAGO;AACL9H,iBAAK,CAACwmF,iBAAN,CAAwBp1F,CAAxB,EAA2B;AACzBmB,eAAC,EAAEA,CADsB;AAEzBuV,eAAC,EAAEA;AAFsB,aAA3B;AAID;AACF;AACF,OAlCD;AAmCA9H,WAAK,CAAC83F,WAAN;AACD,KApYG;AAsYJC,oBAAgB,EAAE,0BAASZ,QAAT,EAAmB;AACnC,UAAIA,QAAQ,GAAG,CAAf,EAAkB;AAClB,UAAInhD,EAAE,GAAGh2C,KAAK,CAAC23F,iBAAN,CAAwBR,QAAQ,GAAG,CAAnC,EAAsCxuF,MAA/C;AAAA,UACEstC,EAAE,GAAGj2C,KAAK,CAAC23F,iBAAN,CAAwBR,QAAxB,EAAkCxuF,MADzC;AAAA,UAEE;AACAqvF,aAAO,GAAG,CAAChiD,EAAE,GAAGC,EAAN,IAAY,IAHxB,CAFmC,CAMnC;;AACAj2C,WAAK,CAACklF,aAAN,CAAoB;AAClB/5E,aAAK,EAAEgsF,QADW;AAElB/rF,aAAK,EAAE+rF,QAAQ,GAAG,CAFA;AAGlB9lG,cAAM,EAAE2mG,OAHU;AAIlB3sF,gBAAQ,EAAE;AAJQ,OAApB;AAMArL,WAAK,CAACwmF,iBAAN,CAAwB2Q,QAAQ,GAAG,CAAnC,EAAsC;AACpC5uF,cAAM,EAAE;AAD4B,OAAtC;AAGD,KAtZG;AAwZJ0vF,wBAAoB,EAAE,gCAAW;AAC/B,UAAIC,UAAU,GAAGl4F,KAAK,CAACoxC,gBAAN,EAAjB;;AACA,UAAI8mD,UAAU,GAAG,CAAjB,EAAoB;AAClB;AACA;AACAl4F,aAAK,CAACwmF,iBAAN,CAAwB0R,UAAU,GAAG,CAArC,EAAwC;AACtC3vF,gBAAM,EAAE;AAD8B,SAAxC;AAGD;AACF,KAjaG;AAmaJ4vF,mBAAe,EAAE,2BAAW;AAC1B;AACA;AACApF,wBAAkB,CAACl8E,KAAnB;;AACA,UAAIk8E,kBAAkB,CAAC1hG,MAAnB,GAA4B,CAAhC,EAAmC;AACjC8jG,yBAAiB,CAACpC,kBAAkB,CAAC,CAAD,CAAnB,CAAjB;AACD;AACF,KA1aG;AA4aJG,kBAAc,EAAE,0BAAW;AACzB,aAAOA,eAAP;AACD,KA9aG;AAgbJC,uBAAmB,EAAE,+BAAW;AAC9B,aAAOA,oBAAP;AACD,KAlbG;;AAobJ;;;;;;;AAOA0E,uBAAmB,EAAE,+BAAW;AAC9B,UAAI3c,SAAS,GAAG,CAAhB;AAAA,UACEqH,GAAG,GAAG,CADR;AAAA,UAEEC,GAAG,GAAG,CAFR;AAAA,UAGEtwF,GAAG,GAAG8N,KAAK,CAACoxC,gBAAN,EAHR;AAAA,UAIEvpC,IAJF;AAAA,UAIQzW,CAJR;;AAMA,UAAIc,GAAG,KAAK,CAAZ,EAAe;AACb,eAAO,IAAP;AACD,OAT6B,CAW9B;AACA;;;AACA,WAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG8N,KAAK,CAACoxC,gBAAN,EAAlB,EAA4ChgD,CAAC,GAAGc,GAAhD,EAAqDd,CAAC,EAAtD,EAA0D;AACxDyW,YAAI,GAAG7H,KAAK,CAAC23F,iBAAN,CAAwBvmG,CAAxB,CAAP;AACAmxF,WAAG,IAAI16E,IAAI,CAACtV,CAAL,GAASsV,IAAI,CAACkB,IAArB;AACAy5E,WAAG,IAAI36E,IAAI,CAACC,CAAL,GAASD,IAAI,CAACkB,IAArB;AACAmyE,iBAAS,IAAIrzE,IAAI,CAACkB,IAAlB;AACD;;AACDw5E,SAAG,IAAIrH,SAAP;AACAsH,SAAG,IAAItH,SAAP;AACA,aAAO;AACL3oF,SAAC,EAAEgwF,GADE;AAELz6E,SAAC,EAAE06E;AAFE,OAAP;AAID,KApdG;;AAsdJ;;;;;;;;;;;AAWAkS,mBAAe,EAAE,yBAAS0D,UAAT,EAAqBC,cAArB,EAAqCh9F,UAArC,EAAiDE,aAAjD,EAAgE;AAC/E;AACA88F,oBAAc,GAAGD,UAAU,GAAGA,UAAU,CAAC/mG,MAAd,GAAuBgnG,cAAlD;AACAh9F,gBAAU,GAAGA,UAAU,IAAI,CAA3B;AACAE,mBAAa,GAAGA,aAAa,IAAI,CAAjC;AAEA,UAAI0D,IAAI,GAAGe,KAAK,CAACwb,UAAN,CAAiBvc,IAA5B;AAAA,UACEC,IAAI,GAAGc,KAAK,CAACwb,UAAN,CAAiBtc,IAAjB,GAAwB3D,aADjC;AAAA,UAEEuD,IAAI,GAAGkB,KAAK,CAACwb,UAAN,CAAiB1c,IAF1B;AAAA,UAGEE,IAAI,GAAGgB,KAAK,CAACwb,UAAN,CAAiBxc,IAAjB,GAAwB3D,UAHjC;AAAA,UAIEi9F,SAAS,GAAG,CAJd,CAN+E,CAY/E;;AACAjE,sBAAgB;AAEhBr0F,WAAK,CAAC43F,KAAN,CAAY,YAAW;AACrB;AACA,YAAIW,GAAG,GAAG;AACNhB,uBAAa,EAAE;AADT,SAAV;AAAA,YAGE/6F,KAAK,GAAGsC,IAAI,GAAGG,IAHjB;AAAA,YAIExC,MAAM,GAAGuC,IAAI,GAAGE,IAJlB;AAAA,YAKEs1F,OAAO,GAAG9Q,iBAAgB,CAAC/b,aAAjB,GAAiC+b,iBAAgB,CAAChc,cAAlD,GAAmE,CAL/E;AAAA,YAME8wB,IANF;AAAA,YAMQC,IANR;AAAA,YAMcC,KANd;AAAA,YAMqBC,KANrB;AAAA,YAM4B3oF,EAN5B;AAAA,YAMgCoa,KANhC;AAAA,YAMuCzhB,MANvC;AAAA,YAM+CiwF,UAN/C;AAAA,YAM2DZ,OAN3D;AAAA,YAMoE5mG,CANpE;AAAA,YAQE;AACA;AACAynG,kBAAU,GAAG,GAVf;AAAA,YAWEC,SAAS,GAAG,SAAZA,SAAY,CAAShxF,CAAT,EAAY;AACtB,cAAIA,CAAC,GAAGrL,MAAM,GAAGo8F,UAAb,IAA2B/wF,CAAC,GAAG+wF,UAAnC,EAA+C;AAC7C;AACA,mBAAO,GAAP;AACD;;AACD,iBAAO,OAAOrmG,IAAI,CAACyO,MAAL,KAAgB,IAA9B;AACD,SAjBH;AAAA,YAmBE;AACA;AACA83F,oBAAY,GAAG,GArBjB;AAAA,YAsBEC,SAAS,GAAG,SAAZA,SAAY,CAASlxF,CAAT,EAAYgqD,IAAZ,EAAkB;AAC5B,cAAIA,IAAI,KAAK,CAAb,EAAgB;AACd;AACA;AACA,gBAAIhqD,CAAC,GAAG,MAAM9I,IAAd,EAAoB;AAClB,qBAAO,CAAC,GAAR;AACD;;AACD,mBAAO,GAAP;AACD;;AACD,cAAIy5F,IAAI,GAAGz5F,IAAI,GAAG+5F,YAAd,IAA8BN,IAAI,GAAGM,YAAzC,EAAuD;AACrD;AACA,mBAAO,CAAP;AACD,WAZ2B,CAa5B;;;AACA,iBAAOjnC,IAAP;AACD,SArCH;AAAA,YAuCEmnC,WAAW,GAAG,SAAdA,WAAc,GAAW;AACvB,iBAAOzmG,IAAI,CAACwqC,KAAL,CAAWw3D,OAAO,GAAGhiG,IAAI,CAACyO,MAAL,EAArB,IAAsCyiF,iBAAgB,CAAChc,cAA9D;AACD,SAzCH,CAFqB,CA6CrB;AACA;;;AACA8wB,YAAI,GAAGv5F,IAAI,GAAG,GAAd;AACAw5F,YAAI,GAAGv5F,IAAI,GAAG,GAAd;AACAw5F,aAAK,GAAG,CAAR;AACAC,aAAK,GAAG,CAAR;AACA3oF,UAAE,GAAGooF,UAAU,GAAG1U,iBAAgB,CAAC5b,aAAjB,CAA+BswB,UAAU,CAAC,CAAD,CAAzC,CAAH,GAAmDa,WAAW,EAA7E;AACAtwF,cAAM,GAAG3I,KAAK,CAACk5F,oBAAN,CAA2BlpF,EAA3B,EAA+BrH,MAAxC;AACAyhB,aAAK,GAAG;AACN73B,WAAC,EAAEimG,IADG;AAEN1wF,WAAC,EAAE2wF,IAFG;AAGN/1F,iBAAO,EAAEsN,EAHH;AAIN1H,iBAAO,EAAE;AAJH,SAAR;AAOAtI,aAAK,CAACuoF,OAAN,CAAcn+D,KAAd,EAAqBmuE,GAArB;AACAD,iBAAS,IAAI,CAAb,CA7DqB,CA+DrB;;AACA,aAAKlnG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGinG,cAAhB,EAAgCjnG,CAAC,EAAjC,EAAqC;AACnConG,cAAI,GAAGpuE,KAAK,CAAC73B,CAAb;AACAkmG,cAAI,GAAGruE,KAAK,CAACtiB,CAAb,CAFmC,CAInC;;AACA4wF,eAAK,GAAGI,SAAS,CAACL,IAAD,CAAjB;AACAE,eAAK,GAAGK,SAAS,CAACP,IAAD,EAAOE,KAAP,CAAjB,CANmC,CAQnC;;AACAH,cAAI,IAAIE,KAAK,GAAG,GAAhB;AACAD,cAAI,IAAIE,KAAK,GAAG,GAAhB;;AAEA,cAAIH,IAAI,GAAGh8F,KAAK,GAAG,GAAnB,EAAwB;AACtB;AACA;AACD;;AAEDwT,YAAE,GAAGooF,UAAU,GAAG1U,iBAAgB,CAAC5b,aAAjB,CAA+BswB,UAAU,CAAChnG,CAAD,CAAzC,CAAH,GAAmD6nG,WAAW,EAA7E;AACA7uE,eAAK,GAAG;AACN73B,aAAC,EAAEimG,IADG;AAEN1wF,aAAC,EAAE2wF,IAFG;AAGN/1F,mBAAO,EAAEsN,EAHH;AAIN1H,mBAAO,EAAE;AAJH,WAAR;AAMAtI,eAAK,CAACuoF,OAAN,CAAcn+D,KAAd,EAAqBmuE,GAArB;AACAD,mBAAS,IAAI,CAAb,CAzBmC,CA2BnC;;AACAM,oBAAU,GAAGjwF,MAAb;AACAA,gBAAM,GAAG3I,KAAK,CAACk5F,oBAAN,CAA2BlpF,EAA3B,EAA+BrH,MAAxC;AACAqvF,iBAAO,GAAG,CAACrvF,MAAM,GAAGiwF,UAAV,IAAwB,IAAlC,CA9BmC,CA+BnC;;AACA54F,eAAK,CAACklF,aAAN,CAAoB;AAClB/5E,iBAAK,EAAE/Z,CADW;AAElBga,iBAAK,EAAEha,CAAC,GAAG,CAFO;AAGlBC,kBAAM,EAAE2mG,OAHU;AAIlB3sF,oBAAQ,EAAE;AAJQ,WAApB;AAMD;AACF,OAvGD,EAf+E,CAuH/E;AACA;;AACArL,WAAK,CAAC43F,KAAN,CAAY,YAAW;AACrB;AACA;AACA,YAAIuB,YAAY,GAAGn5F,KAAK,CAAC23F,iBAAN,CAAwBW,SAAS,GAAG,CAApC,EAAuC/lG,CAA1D;AAAA,YACE6mG,cAAc,GAAG,CAACD,YAAY,GAAGl6F,IAAhB,IAAwB,CAD3C;AAAA,YAEEo6F,cAAc,GAAGr5F,KAAK,CAACwb,UAAN,CAAiBvW,SAAjB,GAA6BjF,KAAK,CAACwb,UAAN,CAAiB1W,aAAjB,GAAiC,CAFjF;AAAA,YAGEw0F,YAAY,GAAGx6F,IAAI,GAAGq6F,YAHxB;AAAA,YAIEtiF,KAAK,GAAGrkB,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS2mG,cAAc,GAAGD,cAA1B,EAA0CE,YAA1C,CAAZ,CAJV;AAAA,YAKEloG,CALF,CAHqB,CAUrB;;AACA,aAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGinG,cAAhB,EAAgCjnG,CAAC,EAAjC,EAAqC;AACnC4O,eAAK,CAACwmF,iBAAN,CAAwBp1F,CAAxB,EAA2B;AACzBmB,aAAC,EAAEyN,KAAK,CAAC23F,iBAAN,CAAwBvmG,CAAxB,EAA2BmB,CAA3B,GAA+BskB;AADT,WAA3B;AAGD;AACF,OAhBD,EAzH+E,CA2I/E;;AACA7W,WAAK,CAACmsF,cAAN,GA5I+E,CA8I/E;;AACA,aAAOmM,SAAP;AACD;AAjnBG,GAAN;AAonBAt4F,OAAK,CAACusB,qBAAN,CAA4B,CAAC,KAAD,CAA5B,EAAqCqpE,UAArC;AACA51F,OAAK,CAACusB,qBAAN,CAA4B,CAAC,UAAD,CAA5B,EAA0CmpE,YAA1C;AACAzB,yBAAuB;AACvB,SAAOrkF,GAAP;AACD,C;;ACthCD,IAAI2pF,OAAO,GAAG,GAAd;;AAEA,SAASC,oBAAT,CAA8Bx5F,KAA9B,EAAqC;AACnC;AACA,OAAK4nB,MAAL,GAAc5nB,KAAd;AACA;;AACA,OAAKy5F,gBAAL,GAAwB,KAAK7xE,MAAL,CAAYzR,GAAZ,CAAgB,UAAhB,CAAxB;AACA;;AACA,OAAKujF,YAAL,GAAoB,KAAKD,gBAAL,GAAwB,CAA5C;AACA;;AACA,OAAKE,mBAAL,GAA2B,KAAKF,gBAAL,GAAwB,KAAK7xE,MAAL,CAAYzR,GAAZ,CAAgB,kBAAhB,CAAxB,GAA8D,EAAzF,CARmC,CAQ0D;;AAC7F;;;;;AAIA,OAAKgG,OAAL,GAAe,KAAf;AACD;;AAEDq9E,oBAAoB,CAAC5nG,SAArB,CAA+BgoG,kBAA/B,GAAoD,YAAW;AAC7D,MAAI,CAAC,KAAKz9E,OAAN,IAAiB,KAAKyL,MAAL,CAAYsS,SAAZ,EAArB,EAA8C;AAC5C;AACD;;AAED,MAAI2/D,YAAY,GAAG,KAAKjyE,MAAL,CAAY8Y,yBAAZ,EAAnB;AAAA,MACEo5D,GAAG,GAAG,KAAKlyE,MAAL,CAAY6Y,MAAZ,EADR;AAAA,MAEE/8B,QAAQ,GAAG,KAAKkkB,MAAL,CAAYzR,GAAZ,CAAgB,UAAhB,CAFb;AAAA,MAGEhS,gBAAgB,GAAG,KAAKyjB,MAAL,CAAYzR,GAAZ,CAAgB,kBAAhB,CAHrB;AAAA,MAIE4jF,kBAAkB,GAAG,KAAKnyE,MAAL,CAAYzR,GAAZ,CAAgB,oBAAhB,IAAwC,KAAKujF,YAAL,GAAoB,GAA5D,GAAkE,KAAKA,YAJ9F;;AAMA,MAAIG,YAAY,GAAG,MAAM,KAAKF,mBAA9B,EAAmD;AACjD;AACA;AACA;AACA,QAAI,MAAMj2F,QAAN,GAAiBq2F,kBAArB,EAAyC;AACvC,WAAKnyE,MAAL,CAAYj0B,GAAZ,CAAgB,UAAhB,EAA4B,MAAM+P,QAAlC;AACD,KAFD,MAEO,IAAIo2F,GAAG,GAAGP,OAAV,EAAmB;AACxB,WAAK3xE,MAAL,CAAYj0B,GAAZ,CAAgB,kBAAhB,EAAoCnB,IAAI,CAAC4kB,KAAL,CAAW,MAAMjT,gBAAN,GAAyB,GAApC,CAApC;AACD;AACF,GATD,MASO,IAAI01F,YAAY,GAAG,MAAM,KAAKF,mBAA9B,EAAmD;AACxD;AACA;AACA,SAAK/xE,MAAL,CAAYj0B,GAAZ,CAAgB,kBAAhB,EAAoCnB,IAAI,CAAC4kB,KAAL,CAAW,MAAMjT,gBAAN,GAAyB,GAApC,CAApC;AACD;;AACDm9B,YAAU,CAACtrC,CAAC,CAACshE,KAAF,CAAQ,KAAKsiC,kBAAb,EAAiC,IAAjC,CAAD,EAAyC,GAAzC,CAAV;AACD,CA1BD;;AA4BAJ,oBAAoB,CAAC5nG,SAArB,CAA+BivC,MAA/B,GAAwC,YAAW;AACjD,MAAI,KAAK1kB,OAAT,EAAkB;AAChB;AACD;;AACD,OAAKyL,MAAL,CAAYmY,KAAZ;;AACA,OAAK5jB,OAAL,GAAe,IAAf;;AACA,OAAKyL,MAAL,CAAYj0B,GAAZ,CAAgB,kBAAhB,EAAoC,CAApC;;AACA2tC,YAAU,CAACtrC,CAAC,CAACshE,KAAF,CAAQ,KAAKsiC,kBAAb,EAAiC,IAAjC,CAAD,EAAyC,GAAzC,CAAV;AACD,CARD;;AAUAJ,oBAAoB,CAAC5nG,SAArB,CAA+Bi4D,OAA/B,GAAyC,YAAW;AAClD,OAAK1tC,OAAL,GAAe,KAAf;AACD,CAFD;;AAIeq9E,8EAAf,E;;AC5DA;;;;;;;;;;;;;AAaA,SAASQ,kBAAT,GAA8B;AAC5B,OAAKC,UAAL,GAAkB,KAAlB;AACA,OAAKC,SAAL,GAAiB,CAAjB;AACA,OAAKC,SAAL,GAAiBzmF,EAAE,CAAC0mF,IAAH,CAAQ,cAAR,CAAjB,CAH4B,CAGc;;AAC1C,OAAKC,YAAL,GAAoB,CAApB;AACA,OAAKC,GAAL,GAAW,IAAX;AACA,OAAKC,SAAL,GAAiB,IAAjB;AACA,OAAKC,SAAL,GAAiB,IAAjB;AACA,OAAKC,aAAL,GAAqB,IAArB,CAR4B,CAU5B;AACA;AACA;;AACA,MAAI,KAAKC,mBAAL,IAA4B,IAAhC,EAAsC;AACpC,UAAM,IAAIzpG,KAAJ,CAAU,+DAAV,CAAN;AACD;;AACD,MAAI,KAAK0pG,mBAAL,IAA4B,IAAhC,EAAsC;AACpC,UAAM,IAAI1pG,KAAJ,CAAU,+DAAV,CAAN;AACD;AACF;AAED;;;;;;;;AAMA+oG,kBAAkB,CAACpoG,SAAnB,CAA6BmL,EAA7B,GAAkC,UAASA,EAAT,EAAa;AAC7C,OAAKu9F,GAAL,GAAWv9F,EAAX;AACA,SAAO,IAAP;AACD,CAHD;AAKA;;;;;;;;AAMAi9F,kBAAkB,CAACpoG,SAAnB,CAA6BwC,IAA7B,GAAoC,UAASK,QAAT,EAAmBmmG,QAAnB,EAA6B;AAC/D,OAAKL,SAAL,GAAiB9lG,QAAjB;AACA,OAAK+lG,SAAL,GAAiBI,QAAjB;AACA,SAAO,IAAP;AACD,CAJD;AAMA;;;;;;;AAKAZ,kBAAkB,CAACpoG,SAAnB,CAA6Bw8D,QAA7B,GAAwC,UAASA,QAAT,EAAmB;AACzD,OAAK8rC,SAAL,GAAiB9rC,QAAjB;AACA,SAAO,IAAP;AACD,CAHD;AAKA;;;;;;;AAKA4rC,kBAAkB,CAACpoG,SAAnB,CAA6BipG,KAA7B,GAAqC,UAASA,KAAT,EAAgB;AACnD,OAAKR,YAAL,GAAoB,CAACQ,KAArB;AACA,SAAO,IAAP;AACD,CAHD;AAKA;;;;;;;;;;;AASAb,kBAAkB,CAACpoG,SAAnB,CAA6BwoG,IAA7B,GAAoC,UAASrzE,QAAT,EAAmB;AACrD,OAAKozE,SAAL,GAAiBzmF,EAAE,CAAC0mF,IAAH,CAAQrzE,QAAR,CAAjB;AACA,SAAO,IAAP;AACD,CAHD;AAKA;;;;;;;;;AAOAizE,kBAAkB,CAACpoG,SAAnB,CAA6BkpG,OAA7B,GAAuC,UAASv2B,WAAT,EAAsB;AAC3D,MAAI,KAAK01B,UAAL,IAAmB,KAAKc,eAAL,EAAvB,EAA+C;AAC7C;AACD;;AACD,MAAIpjF,CAAJ,EAAOyS,KAAP;AAEA,OAAKiwE,YAAL,IAAqB91B,WAArB;;AACA,MAAI,KAAK81B,YAAL,GAAoB,CAAxB,EAA2B;AACzB;AACA;AACA;AACD;;AACD,MAAI,KAAKI,aAAL,IAAsB,IAA1B,EAAgC;AAC9B,SAAKA,aAAL,GAAqB/mF,EAAE,CAACsnF,WAAH,CAAe,KAAKN,mBAAL,CAAyB,KAAKJ,GAA9B,EAAmC,KAAKC,SAAxC,CAAf,EAAmE,KAAKC,SAAxE,CAArB;AACD;;AACD7iF,GAAC,GAAGnlB,IAAI,CAACE,GAAL,CAAS,CAAT,EAAY,KAAK2nG,YAAL,GAAoB,KAAKH,SAArC,CAAJ;AACAviF,GAAC,GAAG,KAAKwiF,SAAL,CAAexiF,CAAf,CAAJ;AACAyS,OAAK,GAAG,EAAR;AACAA,OAAK,CAAC,KAAKmwE,SAAN,CAAL,GAAwB,KAAKE,aAAL,CAAmB9iF,CAAnB,CAAxB,CAlB2D,CAmB3D;;AACA,OAAKgjF,mBAAL,CAAyB,KAAKL,GAA9B,EAAmClwE,KAAnC;;AACA,MAAIzS,CAAC,IAAI,CAAT,EAAY;AACV;AACA,SAAKsiF,UAAL,GAAkB,IAAlB;AACD;AACF,CAzBD;AA2BA;;;;;;;;;AAOAD,kBAAkB,CAACpoG,SAAnB,CAA6B8oG,mBAA7B,GAAmD,IAAnD;AAEA;;;;;;;;AAOAV,kBAAkB,CAACpoG,SAAnB,CAA6B+oG,mBAA7B,GAAmD,IAAnD;AAEA;;;;;AAIAX,kBAAkB,CAACpoG,SAAnB,CAA6BmpG,eAA7B,GAA+C,YAAW;AACxD,SAAO,KAAKT,GAAL,IAAY,IAAZ,IAAoB,KAAKC,SAAL,IAAkB,IAAtC,IAA8C,KAAKC,SAAL,IAAkB,IAAvE;AACD,CAFD;;AAIeR,0EAAf,E;;ACvJA;AACA;;AAGA,SAASiB,cAAT,CAAwBj7F,KAAxB,EAA+B;AAC7B;AACAg6F,qBAAkB,CAACloG,IAAnB,CAAwB,IAAxB;AACA,OAAK81B,MAAL,GAAc5nB,KAAd;AACD;;AACD4iC,OAAO,CAACq4D,cAAD,EAAiBjB,mBAAjB,CAAP;;AAGAiB,cAAc,CAACrpG,SAAf,CAAyB+oG,mBAAzB,GAA+C,UAAS59F,EAAT,EAAaqtB,KAAb,EAAoB;AACjE,OAAKxC,MAAL,CAAY4+D,iBAAZ,CAA8BzpF,EAA9B,EAAkCqtB,KAAlC;AACD,CAFD;;AAIA6wE,cAAc,CAACrpG,SAAf,CAAyB8oG,mBAAzB,GAA+C,UAAS39F,EAAT,EAAa;AAC1D,SAAO,KAAK6qB,MAAL,CAAY+vE,iBAAZ,CAA8B56F,EAA9B,CAAP;AACD,CAFD;;AAIek+F,kEAAf,E;;ACrBA;;;;;;;;;AAUA;AACA;AACA;AACA;AACA;AACA;;AAEA,IACEtjG,uBAAI,GAAGyX,4BAAS,CAACzX,IADnB;AAAA,IAGEujG,cAAc,GAAG,GAHnB;AAAA,IAGwB;AACtB;AACAC,SAAS,GAAG;AACV,KAAG,GADO;AACF;AACR,KAAG,GAFO;AAEF;AACR,KAAG,GAHO,CAGH;;AAHG,CALd;AAAA,IAUEC,aAAa,GAAI,YAAW;AAC1B,MAAIjmG,MAAM,GAAG,EAAb;AACAxD,QAAM,CAAC2b,IAAP,CAAY6tF,SAAZ,EAAuB5tF,OAAvB,CAA+B,UAASC,GAAT,EAAc;AAC3CrY,UAAM,CAACgmG,SAAS,CAAC3tF,GAAD,CAAV,CAAN,GAAyBA,GAAzB;AACD,GAFD;AAGA,SAAOrY,MAAP;AACD,CANgB,EAVnB;AAAA,IAkBEkmG,qBAAqB,GAAG,EAlB1B,C,CAkB8B;AAE9B;;;AACA,SAASC,GAAT,CAAa1wF,EAAb,EAAiBC,EAAjB,EAAqBC,EAArB,EAAyBC,EAAzB,EAA6B;AAC3B,SAAOH,EAAE,GAAGE,EAAL,GAAUD,EAAE,GAAGE,EAAtB;AACD,C,CAED;;;AACA,SAASwwF,aAAT,CAAuBC,MAAvB,EAA+BC,MAA/B,EAAuC;AACrC,MAAIC,IAAI,GAAGF,MAAM,CAACnqG,MAAlB;AAAA,MACEsqG,IAAI,GAAGF,MAAM,CAACpqG,MADhB;AAAA,MAEED,CAFF;AAAA,MAEKyM,CAFL;AAAA,MAEQ60C,GAFR,CADqC,CAIrC;AACA;AACA;;AACA,OAAKthD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsqG,IAAhB,EAAsBtqG,CAAC,EAAvB,EAA2B;AACzBshD,OAAG,GAAG8oD,MAAM,CAACpqG,CAAD,CAAZ;;AACA,SAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG89F,IAAhB,EAAsB99F,CAAC,EAAvB,EAA2B;AACzB,UAAI60C,GAAG,KAAK+oD,MAAM,CAAC59F,CAAD,CAAlB,EAAuB,OAAO,IAAP;AACxB;AACF;;AACD,SAAO,KAAP;AACD;;AAEc,SAAS+9F,iBAAT,CAA2BlsD,MAA3B,EAAmC9U,WAAnC,EAAgD;AAC7D,MAAIhrB,GAAJ;AAAA,MAEE4L,UAAU,GAAGsM,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAAC4X,iBAAxC,EAA2D8tB,WAA3D,CAFf;AAAA,MAGE7tB,cAAc,GAAGyO,UAAU,CAACzO,cAH9B;AAAA,MAIEC,kBAAkB,GAAGwO,UAAU,CAACxO,kBAJlC;AAAA,MAKEC,OAAO,GAAGuO,UAAU,CAACvO,OALvB;AAAA,MAMEC,gBAAgB,GAAGsO,UAAU,CAACtO,gBANhC;AAAA,MAOEC,UAAU,GAAGqO,UAAU,CAACrO,UAP1B;AAAA,MAQEC,gBAAgB,GAAGoO,UAAU,CAACpO,gBARhC;AAAA,MASEC,eAAe,GAAGmO,UAAU,CAACnO,eAT/B;AAAA,MAWE;AACA;AACA;AACAwuF,gBAAc,GAAG,EAdnB;AAAA,MAgBE;AACA;AACAC,cAAY,GAAG,KAlBjB;AAAA,MAoBE;AACAC,eAAa,GAAG,EArBlB;AAAA,MAuBE/rD,KAvBF;AAAA,MAwBEC,QAxBF;AAAA,MAyBEmiC,WAzBF;AAAA,MA0BEc,YA1BF;;AA4BA,WAAS9iC,gBAAT,GAA4B;AAC1B,QAAI/+C,MAAM,GAAG2+C,KAAK,CAACz9C,CAAN,CAAQlB,MAArB;AACA2+C,SAAK,CAAC/mC,eAAN,GAAwBvZ,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAACzB,QAApC,CAAxB;AACD;;AAED,WAASotD,sBAAT,GAAkC;AAChC,QAAI3qG,MAAM,GAAG+gF,WAAW,CAACjnE,KAAZ,CAAkB9Z,MAA/B;AACA+gF,eAAW,CAAC6pB,iBAAZ,GAAgCvsG,yBAAM,CAACQ,MAAP,CAAcmB,MAAd,EAAsB,CAAtB,EAAyBg/C,WAAU,CAAC5B,SAApC,CAAhC;AACD;;AAED,WAASytD,SAAT,CAAmB9qG,CAAnB,EAAsB;AACpB,QAAIiuC,CAAC,GAAGnyB,gBAAgB,CAAC8iC,KAAK,CAACttC,OAAN,CAActR,CAAd,CAAD,CAAxB;AAAA,QACEouB,CAAC,GAAGwwB,KAAK,CAAC/mC,eAAN,CAAsB7X,CAAtB,CADN;AAEA,WAAQouB,CAAC,GAAG6f,CAAL,IAAYA,CAAC,GAAG7f,CAAJ,GAAQ,CAA3B;AACD,GA3C4D,CA6C7D;;;AACA,WAAS28E,aAAT,CAAuB/qG,CAAvB,EAA0ByM,CAA1B,EAA6B;AAC3B,WAAOq9F,cAAc,IAAIjrD,QAAQ,CAAC/mC,KAAT,CAAe9X,CAAf,IAAoB6+C,QAAQ,CAAC/mC,KAAT,CAAerL,CAAf,CAAxB,CAArB;AACD,GAhD4D,CAkD7D;;;AACA,WAASu+F,eAAT,CAAyBhrG,CAAzB,EAA4ByM,CAA5B,EAA+B;AAC7B;AACA;AACA,WAAO,MAAMrL,IAAI,CAAC2O,IAAL,CAAU8uC,QAAQ,CAAC9mC,OAAT,CAAiB/X,CAAjB,IAAsB6+C,QAAQ,CAAC9mC,OAAT,CAAiBtL,CAAjB,CAAhC,CAAb;AACD;;AAED,WAASw+F,oBAAT,CAA8BjrG,CAA9B,EAAiC;AAC/B;AACA;AACA,QAAIiuC,CAAC,GAAGnyB,gBAAgB,CAAC8iC,KAAK,CAACttC,OAAN,CAActR,CAAd,CAAD,CAAxB;AACA,WAAOoB,IAAI,CAACE,GAAL,CAASF,IAAI,CAACE,GAAL,CAAS,IAAI2sC,CAAb,EAAgBA,CAAhB,IAAqB2Q,KAAK,CAAC/mC,eAAN,CAAsB7X,CAAtB,CAA9B,CAAP;AACD,GA9D4D,CAgE7D;AACA;AACA;AACA;AACA;AACA;;;AACA,WAASkrG,mBAAT,CAA6BnxF,KAA7B,EAAoCC,KAApC,EAA2CmxF,QAA3C,EAAqD;AACnD,QAAIA,QAAQ,KAAKjsG,SAAjB,EAA4BisG,QAAQ,GAAG,CAAX;AAC5B,QAAIC,OAAO,GAAGhqG,IAAI,CAACE,GAAL,CAAS,CAAT,EAAY2pG,oBAAoB,CAAClxF,KAAD,CAAhC,EAAyCkxF,oBAAoB,CAACjxF,KAAD,CAApB,GAA8BmxF,QAAvE,CAAd,CAFmD,CAGnD;;AACA,QAAIC,OAAO,IAAI,CAAf,EAAkB;AAChB,aAAOA,OAAP;AACD,KAFD,MAEO;AACL;AACA,UAAIC,IAAI,GAAGC,sBAAsB,CAAC1sD,KAAK,CAACttC,OAAN,CAAcyI,KAAd,CAAD,EAAuB6kC,KAAK,CAACttC,OAAN,CAAc0I,KAAd,CAAvB,CAAjC;AAAA,UACEuxF,WAAW,GAAGnqG,IAAI,CAACyO,MAAL,EADhB;;AAGA,UAAIu7F,OAAO,KAAK,CAAhB,EAAmB;AACjB,YAAIG,WAAW,GAAGF,IAAI,CAAC,CAAD,CAAtB,EAA2B;AACzB,iBAAO,CAAP;AACD,SAFD,MAEO,IAAIE,WAAW,GAAGF,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC,CAAD,CAAhC,EAAqC;AAC1C,iBAAO,CAAP;AACD,SAFM,MAEA;AACL,iBAAO,CAAP;AACD;AACF,OARD,MAQO;AAAE;AACP;AACA;AACA;AACA,YAAIE,WAAW,GAAGF,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC,CAAD,CAAhC,EAAqC;AACnC,iBAAO,CAAP;AACD,SAFD,MAEO;AACL,iBAAO,CAAP;AACD;AACF;AACF;AACF,GApG4D,CAsG7D;;;AACA,WAASG,WAAT,CAAqBC,OAArB,EAA8B;AAC5B;AACA,QAAI5kG,IAAI,GAAGm6E,WAAW,CAACn6E,IAAZ,CAAiB4kG,OAAjB,IAA4B,GAAvC,CAF4B,CAG5B;;AACA,WAAO5kG,IAAI,GAAG,CAAP,GAAW,CAAX,GAAeA,IAAtB;AACD,GA5G4D,CA8G7D;AAEA;AACA;;;AACA,WAAS6kG,aAAT,CAAuB1rG,CAAvB,EAA0ByM,CAA1B,EAA6B5F,IAA7B,EAAmC;AACjC,QAAIA,IAAI,KAAK3H,SAAb,EAAwB2H,IAAI,GAAG,CAAP;;AACxB,YAAQA,IAAR;AACE,WAAK,CAAL;AACE,eAAOkV,UAAU,CAAC/b,CAAC,GAAG,GAAJ,GAAUyM,CAAX,CAAV,IAA2B,IAA3B,GAAkCsP,UAAU,CAAC/b,CAAC,GAAG,GAAJ,GAAUyM,CAAX,CAA5C,GACLsP,UAAU,CAACtP,CAAC,GAAG,GAAJ,GAAUzM,CAAX,CAAV,IAA2B,IAA3B,GAAkC+b,UAAU,CAACtP,CAAC,GAAG,GAAJ,GAAUzM,CAAX,CAA5C,GACA+b,UAAU,CAAC,SAAD,CAFZ;;AAGF,WAAK,CAAL;AACE,eAAOA,UAAU,CAAC/b,CAAC,GAAG,GAAJ,GAAUyM,CAAX,CAAV,IAA2B,IAA3B,GAAkCsP,UAAU,CAAC/b,CAAC,GAAG,GAAJ,GAAUyM,CAAX,CAA5C,GACLsP,UAAU,CAACtP,CAAC,GAAG,GAAJ,GAAUzM,CAAX,CAAV,IAA2B,IAA3B,GAAkC+b,UAAU,CAACtP,CAAC,GAAG,GAAJ,GAAUzM,CAAX,CAA5C,GACA0rG,aAAa,CAAC1rG,CAAD,EAAIyM,CAAJ,EAAO,CAAP,CAAb,GAAyB,CAF3B;;AAGF,WAAK,CAAL;AACE,eAAOsP,UAAU,CAAC/b,CAAC,GAAG,GAAJ,GAAUyM,CAAX,CAAV,IAA2B,IAA3B,GAAkCsP,UAAU,CAAC/b,CAAC,GAAG,GAAJ,GAAUyM,CAAX,CAA5C,GACLsP,UAAU,CAACtP,CAAC,GAAG,GAAJ,GAAUzM,CAAX,CAAV,IAA2B,IAA3B,GAAkC+b,UAAU,CAACtP,CAAC,GAAG,GAAJ,GAAUzM,CAAX,CAA5C,GACA0rG,aAAa,CAAC1rG,CAAD,EAAIyM,CAAJ,EAAO,CAAP,CAAb,GAAyB,CAF3B;AAVJ;AAcD,GAlI4D,CAoI7D;;;AACA,WAASk/F,mBAAT,CAA6B3rG,CAA7B,EAAgCyM,CAAhC,EAAmCE,CAAnC,EAAsC;AACpC;AACA,WAAOqP,gBAAgB,CAAChc,CAAC,GAAG,GAAJ,GAAUyM,CAAV,GAAc,GAAd,GAAoBE,CAArB,CAAhB,IAA2C,IAA3C,GAAkDqP,gBAAgB,CAAChc,CAAC,GAAG,GAAJ,GAAUyM,CAAV,GAAc,GAAd,GAAoBE,CAArB,CAAlE,GACLqP,gBAAgB,CAAChc,CAAC,GAAG,GAAJ,GAAU2M,CAAV,GAAc,GAAd,GAAoBF,CAArB,CAAhB,IAA2C,IAA3C,GAAkDuP,gBAAgB,CAAChc,CAAC,GAAG,GAAJ,GAAU2M,CAAV,GAAc,GAAd,GAAoBF,CAArB,CAAlE,GACAuP,gBAAgB,CAAC,SAAD,CAFlB;AAGD,GA1I4D,CA4I7D;;;AACA,WAASsvF,sBAAT,CAAgCtrG,CAAhC,EAAmCyM,CAAnC,EAAsC;AACpC;AACA,WAAOwP,eAAe,CAACjc,CAAC,GAAG,GAAJ,GAAUyM,CAAX,CAAf,IAAgC,IAAhC,GAAuCwP,eAAe,CAACjc,CAAC,GAAG,GAAJ,GAAUyM,CAAX,CAAtD,GACLwP,eAAe,CAACxP,CAAC,GAAG,GAAJ,GAAUzM,CAAX,CAAf,IAAgC,IAAhC,GAAuCic,eAAe,CAACxP,CAAC,GAAG,GAAJ,GAAUzM,CAAX,CAAtD,GACAic,eAAe,CAAC,SAAD,CAFjB;AAGD,GAlJ4D,CAqJ7D;AACA;;;AACA,WAAS2vF,wBAAT,CAAkC5rG,CAAlC,EAAqCyM,CAArC,EAAwCE,CAAxC,EAA2Ck/F,OAA3C,EAAoDlH,OAApD,EAA6D;AAC3D,QAAImH,SAAS,GAAGJ,aAAa,CAACj/F,CAAD,EAAIE,CAAJ,EAAOk/F,OAAP,CAA7B;AAAA,QACEE,SAAS,GAAGL,aAAa,CAAC1rG,CAAD,EAAIyM,CAAJ,EAAOk4F,OAAP,CAD3B;;AAGA,QAAIoH,SAAS,GAAGD,SAAhB,EAA2B;AACzB;AACA;AACA,aAAOH,mBAAmB,CAAC3rG,CAAD,EAAIyM,CAAJ,EAAOE,CAAP,CAA1B;AACD,KAJD,MAIO;AACL;AACA;AACA;AACA,aAAOg/F,mBAAmB,CAAC3rG,CAAD,EAAIyM,CAAJ,EAAOE,CAAP,CAAnB,GAA+Bm/F,SAA/B,GAA2CC,SAAlD;AACD;AACF;;AAED,WAASjY,aAAT,CAAuB96D,KAAvB,EAA8BooB,EAA9B,EAAkCC,EAAlC,EAAsC2qD,QAAtC,EAAgD;AAC9ChzE,SAAK,CAACjf,KAAN,GAAcqnC,EAAd;AACApoB,SAAK,CAAChf,KAAN,GAAcqnC,EAAd;AACAroB,SAAK,CAACnyB,IAAN,GAAakjG,SAAS,CAACiC,QAAD,CAAtB;AACA1tD,UAAM,CAACw1C,aAAP,CAAqB96D,KAArB;AACA0xE,gBAAY,GAAG,IAAf;AACAC,iBAAa,CAACvpD,EAAD,CAAb,GAAoB,IAApB;AACAupD,iBAAa,CAACtpD,EAAD,CAAb,GAAoB,IAApB,CAP8C,CAQ9C;;AACAzC,SAAK,CAAC/mC,eAAN,CAAsBupC,EAAtB,KAA6B4qD,QAA7B;AACAptD,SAAK,CAAC/mC,eAAN,CAAsBwpC,EAAtB,KAA6B2qD,QAA7B,CAV8C,CAW9C;AACA;AACA;AACA;AACD;;AAED,WAASzV,gBAAT,CAA0Bv2F,CAA1B,EAA6BohD,EAA7B,EAAiCC,EAAjC,EAAqC2qD,QAArC,EAA+C;AAC7C1tD,UAAM,CAACi4C,gBAAP,CAAwBv2F,CAAxB,EAA2B,IAA3B;AACA0qG,gBAAY,GAAG,IAAf;AACAC,iBAAa,CAACvpD,EAAD,CAAb,GAAoB,IAApB;AACAupD,iBAAa,CAACtpD,EAAD,CAAb,GAAoB,IAApB,CAJ6C,CAK7C;;AACAzC,SAAK,CAAC/mC,eAAN,CAAsBupC,EAAtB,KAA6B4qD,QAA7B;AACAptD,SAAK,CAAC/mC,eAAN,CAAsBwpC,EAAtB,KAA6B2qD,QAA7B;AACD;;AAED,WAASC,kBAAT,CAA4BjsG,CAA5B,EAA+Bg5B,KAA/B,EAAsCooB,EAAtC,EAA0CC,EAA1C,EAA8Cq2C,EAA9C,EAAkDiN,OAAlD,EAA2DkH,OAA3D,EAAoE;AAClE7yE,SAAK,CAACjf,KAAN,GAAcqnC,EAAd;AACApoB,SAAK,CAAChf,KAAN,GAAcqnC,EAAd;AACAroB,SAAK,CAACnyB,IAAN,GAAakjG,SAAS,CAACpF,OAAD,CAAtB;AACArmD,UAAM,CAACk4C,uBAAP,CAA+Bx2F,CAA/B,EAAkCg5B,KAAlC,EAAyC,IAAzC;AACA0xE,gBAAY,GAAG,IAAf;AACAC,iBAAa,CAACvpD,EAAD,CAAb,GAAoB,IAApB;AACAupD,iBAAa,CAACtpD,EAAD,CAAb,GAAoB,IAApB;AACAspD,iBAAa,CAACjT,EAAD,CAAb,GAAoB,IAApB,CARkE,CASlE;;AACA94C,SAAK,CAAC/mC,eAAN,CAAsBupC,EAAtB,KAA6BujD,OAA7B;AACA/lD,SAAK,CAAC/mC,eAAN,CAAsBwpC,EAAtB,KAA6BsjD,OAAO,GAAGkH,OAAvC;AACAjtD,SAAK,CAAC/mC,eAAN,CAAsB6/E,EAAtB,KAA6BmU,OAA7B,CAZkE,CAalE;;AACA,QAAIpB,cAAc,CAAC/S,EAAD,CAAd,KAAuB13F,CAA3B,EAA8ByqG,cAAc,CAAC/S,EAAD,CAAd,GAAqBx4F,SAArB,CAdoC,CAelE;AACA;AACA;AACA;AACA;;AACAurG,kBAAc,CAACppD,EAAD,CAAd,GAAqBniD,SAArB;AACD;;AAED,WAASu4F,cAAT,CAAwBz+D,KAAxB,EAA+B;AAC7BslB,UAAM,CAACm5C,cAAP,CAAsBz+D,KAAtB;AACA0xE,gBAAY,GAAG,IAAf;AACD;;AAED,WAAShU,wBAAT,CAAkC12F,CAAlC,EAAqCg5B,KAArC,EAA4C;AAC1CslB,UAAM,CAACo4C,wBAAP,CAAgC12F,CAAhC,EAAmCg5B,KAAnC;AACA0xE,gBAAY,GAAG,IAAf;AACD;;AAED,WAASwB,4BAAT,GAAwC;AACtCxB,gBAAY,GAAG,KAAf;AACAnqG,UAAM,CAAC2b,IAAP,CAAYyuF,aAAZ,EAA2BxuF,OAA3B,CAAmC,UAASC,GAAT,EAAc;AAC/C,aAAOuuF,aAAa,CAACvuF,GAAD,CAApB;AACD,KAFD;AAGD,GAxO4D,CA0O7D;AACA;AACA;;;AACA,WAAS+vF,4BAAT,GAAwC;AACtC,QAAItlG,IAAJ,EAAU7G,CAAV,EAAac,GAAb;;AACA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGw9C,MAAM,CAAC0B,gBAAP,EAAlB,EAA6ChgD,CAAC,GAAGc,GAAjD,EAAsDd,CAAC,EAAvD,EAA2D;AACzD4+C,WAAK,CAAC/mC,eAAN,CAAsB7X,CAAtB,IAA2B,CAA3B;AACD;;AACD,SAAKA,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGw9C,MAAM,CAACw9C,sBAAP,EAAlB,EAAmD97F,CAAC,GAAGc,GAAvD,EAA4Dd,CAAC,EAA7D,EAAiE;AAC/D6G,UAAI,GAAG2kG,WAAW,CAACxrG,CAAD,CAAlB;AACA4+C,WAAK,CAAC/mC,eAAN,CAAsBmpE,WAAW,CAACjnE,KAAZ,CAAkB/Z,CAAlB,CAAtB,KAA+C6G,IAA/C;AACA+3C,WAAK,CAAC/mC,eAAN,CAAsBmpE,WAAW,CAAChnE,KAAZ,CAAkBha,CAAlB,CAAtB,KAA+C6G,IAA/C;AACD;AACF;;AAED,WAASulG,yBAAT,GAAqC;AACnC,QAAIpsG,CAAJ,EAAOc,GAAP;AACA2pG,kBAAc,CAACxqG,MAAf,GAAwB,CAAxB;;AACA,SAAKD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGw9C,MAAM,CAACw9C,sBAAP,EAAlB,EAAmD97F,CAAC,GAAGc,GAAvD,EAA4Dd,CAAC,EAA7D,EAAiE;AAC/D;AACA;AACAyqG,oBAAc,CAACzpB,WAAW,CAACjnE,KAAZ,CAAkB/Z,CAAlB,CAAD,CAAd,GAAuCyqG,cAAc,CAACzpB,WAAW,CAAChnE,KAAZ,CAAkBha,CAAlB,CAAD,CAAd,GAAuCA,CAA9E;AACD;AACF,GAjQ4D,CAmQ7D;;;AACA,WAASqsG,YAAT,CAAsBC,aAAtB,EAAqC;AACnC,QAAItsG,CAAJ,EAAOohD,EAAP,EAAWC,EAAX,EAAeC,GAAf,EAAoBC,GAApB,EAAyBgrD,IAAzB,EACE3qD,GADF,EACOC,GADP,EACYC,IADZ,EACkB8kD,OADlB,EAC2BoF,QAD3B,EACqCQ,UADrC,EAEEC,YAFF,EAGEC,WAHF;AAKA1sG,KAAC,GAAG,CAAJ;;AACA,WAAOA,CAAC,GAAGs+C,MAAM,CAACw9C,sBAAP,EAAX,EAA4C;AAC1C4Q,iBAAW,GAAG,KAAd;AAEAtrD,QAAE,GAAG4/B,WAAW,CAACjnE,KAAZ,CAAkB/Z,CAAlB,CAAL;AACAqhD,QAAE,GAAG2/B,WAAW,CAAChnE,KAAZ,CAAkBha,CAAlB,CAAL;AACA4mG,aAAO,GAAG5lB,WAAW,CAAC/gF,MAAZ,CAAmBD,CAAnB,CAAV;AAEA4hD,SAAG,GAAGhD,KAAK,CAACz9C,CAAN,CAAQigD,EAAR,IAAcxC,KAAK,CAACz9C,CAAN,CAAQkgD,EAAR,CAApB;AACAQ,SAAG,GAAGjD,KAAK,CAACloC,CAAN,CAAQ0qC,EAAR,IAAcxC,KAAK,CAACloC,CAAN,CAAQ2qC,EAAR,CAApB;AACAS,UAAI,GAAGF,GAAG,GAAGA,GAAN,GAAYC,GAAG,GAAGA,GAAzB;AAEA0qD,UAAI,GAAGnrG,IAAI,CAAC2O,IAAL,CAAU+xC,IAAV,IAAkB8kD,OAAzB;;AACA,UAAI2F,IAAI,GAAG,CAAP,IAAYD,aAAhB,EAA+B;AAC7B;AACAC,YAAI,GAAG,MAAMvrB,WAAW,CAAC/mE,QAAZ,CAAqBja,CAArB,CAAN,GAAgCusG,IAAhC,GAAuCA,IAA9C,CAF6B,CAG7B;;AACAjrD,WAAG,GAAG1C,KAAK,CAACttC,OAAN,CAAc8vC,EAAd,CAAN;AACAG,WAAG,GAAG3C,KAAK,CAACttC,OAAN,CAAc+vC,EAAd,CAAN;AACA2qD,gBAAQ,GAAGR,WAAW,CAACxrG,CAAD,CAAtB,CAN6B,CAQ7B;AACA;;AACAysG,oBAAY,GAAG,CAACzrB,WAAW,CAAC6pB,iBAAZ,CAA8B7qG,CAA9B,CAAD,GAAoCs+C,MAAM,CAAC8oC,YAAP,CAAoB9lC,GAApB,EAAyBC,GAAzB,EAA8Bq5B,4BAA9B,CAA2D94B,IAA3D,CAAnD;AACA0qD,kBAAU,GAAGd,aAAa,CAACpqD,GAAD,EAAMC,GAAN,EAAWyqD,QAAX,CAA1B;;AAEA,YAAIO,IAAI,GAAGE,YAAP,GAAsBD,UAAtB,IAAoCF,aAAxC,EAAuD;AACrD;AACAC,cAAI,IAAIC,UAAR,CAFqD,CAGrD;;AACAD,cAAI,IAAIE,YAAR;;AAEA,cAAInuD,MAAM,CAACk/C,kCAAP,CAA0C+O,IAA1C,EAAgDnrD,EAAhD,EAAoDC,EAApD,CAAJ,EAA6D;AAC3Dk1C,4BAAgB,CAACv2F,CAAD,EAAIohD,EAAJ,EAAQC,EAAR,EAAY2qD,QAAZ,CAAhB;AACAU,uBAAW,GAAG,IAAd;AACD,WAHD,MAGO,IAAIJ,aAAJ,EAAmB;AACxB;AACA;AACA;AACAhuD,kBAAM,CAACu5C,YAAP,CAAoB0U,IAApB;AACAhW,4BAAgB,CAACv2F,CAAD,EAAIohD,EAAJ,EAAQC,EAAR,EAAY2qD,QAAZ,CAAhB;AACAU,uBAAW,GAAG,IAAd;AACD;AACF;AACF,OA3CyC,CA4C1C;;;AACA,UAAI,CAACA,WAAL,EAAkB1sG,CAAC;AACpB;AACF;;AAED,WAAS2sG,WAAT,CAAqB3rD,YAArB,EAAmC;AACjC,QAAIhV,CAAC,GAAGsS,MAAM,CAAC0B,gBAAP,EAAR;AAAA,QACEiB,KAAK,GAAGD,YAAY,CAACE,OAAb,EADV;AAAA,QAEElhD,CAFF;AAAA,QAEKc,GAFL;AAAA,QAGEsgD,EAHF;AAAA,QAGMC,EAHN;AAAA,QAIEC,GAJF;AAAA,QAIOC,GAJP;AAAA,QAKEG,EALF;AAAA,QAKMC,EALN;AAAA,QAKUC,GALV;AAAA,QAKeC,GALf;AAAA,QAKoBC,IALpB;AAAA,QAK0B8kD,OAL1B,CADiC,CAQjC;;AACA,SAAKxlD,EAAE,GAAG,CAAV,EAAaA,EAAE,GAAGpV,CAAlB,EAAqBoV,EAAE,EAAvB,EAA2B;AACzBE,SAAG,GAAG1C,KAAK,CAACttC,OAAN,CAAc8vC,EAAd,CAAN;AACAM,QAAE,GAAG9C,KAAK,CAACz9C,CAAN,CAAQigD,EAAR,CAAL;AACAO,QAAE,GAAG/C,KAAK,CAACloC,CAAN,CAAQ0qC,EAAR,CAAL;;AAEA,WAAKphD,CAAC,GAAGghD,YAAY,CAACmB,cAAb,CAA4Bf,EAA5B,CAAJ,EAAqCtgD,GAAG,GAAGkgD,YAAY,CAACoB,YAAb,CAA0BhB,EAA1B,CAAhD,EAA+EphD,CAAC,GAAGc,GAAnF,EAAwFd,CAAC,EAAzF,EAA6F;AAC3FqhD,UAAE,GAAGJ,KAAK,CAACjhD,CAAD,CAAV,CAD2F,CAG3F;;AACA,YAAIs+C,MAAM,CAACygD,WAAP,CAAmB39C,EAAnB,EAAuBC,EAAvB,CAAJ,EAAgC;AAEhCE,WAAG,GAAG3C,KAAK,CAACttC,OAAN,CAAc+vC,EAAd,CAAN;AACAO,WAAG,GAAGF,EAAE,GAAG9C,KAAK,CAACz9C,CAAN,CAAQkgD,EAAR,CAAX;AACAQ,WAAG,GAAGF,EAAE,GAAG/C,KAAK,CAACloC,CAAN,CAAQ2qC,EAAR,CAAX;AAEAS,YAAI,GAAGF,GAAG,GAAGA,GAAN,GAAYC,GAAG,GAAGA,GAAzB;AACA+kD,eAAO,GAAGkD,cAAc,IAAIjrD,QAAQ,CAAC/mC,KAAT,CAAewpC,GAAf,IAAsBzC,QAAQ,CAAC/mC,KAAT,CAAeypC,GAAf,CAA1B,CAAxB;;AAEA,YAAIO,IAAI,GAAG8kD,OAAO,GAAGA,OAArB,EAA8B;AAC5B;AACAgG,iBAAO,CAACxrD,EAAD,EAAKC,EAAL,EAASO,GAAT,EAAcC,GAAd,EAAmBC,IAAnB,CAAP;AACD;AACF;AACF;AACF;;AAED,WAAS+qD,WAAT,CAAqBzrD,EAArB,EAAyBC,EAAzB,EAA6BO,GAA7B,EAAkCC,GAAlC,EAAuC;AACrC;AACA;AACA;AACA,WAAO,EAAEqoD,GAAG,CAACtrD,KAAK,CAACjoC,EAAN,CAASyqC,EAAT,CAAD,EAAexC,KAAK,CAAChoC,EAAN,CAASwqC,EAAT,CAAf,EAA6BQ,GAA7B,EAAkCC,GAAlC,CAAH,IAA6C,GAA7C,IACPqoD,GAAG,CAACtrD,KAAK,CAACjoC,EAAN,CAAS0qC,EAAT,CAAD,EAAezC,KAAK,CAAChoC,EAAN,CAASyqC,EAAT,CAAf,EAA6BO,GAA7B,EAAkCC,GAAlC,CAAH,IAA6C,GADxC,CAAP;AAED;;AAED,WAAS+qD,OAAT,CAAiBxrD,EAAjB,EAAqBC,EAArB,EAAyBO,GAAzB,EAA8BC,GAA9B,EAAmCC,IAAnC,EAAyC;AACvC,QAAIgrD,SAAJ,EAAeC,SAAf,EAA0BC,WAA1B,EAAuCC,YAAvC,EAAqDC,YAArD;;AAEA,QAAIL,WAAW,CAACzrD,EAAD,EAAKC,EAAL,EAASO,GAAT,EAAcC,GAAd,CAAf,EAAmC;AACjCirD,eAAS,GAAGhC,SAAS,CAAC1pD,EAAD,CAArB;AACA2rD,eAAS,GAAGjC,SAAS,CAACzpD,EAAD,CAArB;AACA2rD,iBAAW,GAAGF,SAAS,IAAIC,SAA3B;AACAE,kBAAY,GAAGH,SAAS,IAAIrC,cAAc,CAACppD,EAAD,CAAd,KAAuBniD,SAAnD;AACAguG,kBAAY,GAAGH,SAAS,IAAItC,cAAc,CAACrpD,EAAD,CAAd,KAAuBliD,SAAnD;;AAEA,UAAI8tG,WAAW,IAAIC,YAAf,IAA+BC,YAAnC,EAAiD;AAC/C;AACA;AACA;AACA,YAAI/C,aAAa,CAAC7rD,MAAM,CAACkgD,cAAP,CAAsBp9C,EAAtB,CAAD,EAA4B9C,MAAM,CAACkgD,cAAP,CAAsBn9C,EAAtB,CAA5B,CAAjB,EAAyE,OAJ1B,CAK/C;;AACA,YAAIxlC,OAAO,IAAIyiC,MAAM,CAACozC,gBAAP,CAAwBrwC,EAAxB,EAA4B3hC,OAA5B,CAAoC0hC,EAApC,MAA4C,CAAC,CAA5D,EAA+D;;AAE/D,YAAI4rD,WAAJ,EAAiB;AACf;AACAG,kBAAQ,CAAC/rD,EAAD,EAAKC,EAAL,EAASS,IAAT,CAAR;AACD,SAHD,MAGO,IAAImrD,YAAJ,EAAkB;AACvBG,2BAAiB,CAAChsD,EAAD,EAAKC,EAAL,EAASopD,cAAc,CAACppD,EAAD,CAAvB,EAA6BO,GAA7B,EAAkCC,GAAlC,EAAuCC,IAAvC,CAAjB;AACD,SAFM,MAEA,IAAIorD,YAAJ,EAAkB;AACvBE,2BAAiB,CAAC/rD,EAAD,EAAKD,EAAL,EAASqpD,cAAc,CAACrpD,EAAD,CAAvB,EAA6BQ,GAA7B,EAAkCC,GAAlC,EAAuCC,IAAvC,CAAjB;AACD;AACF;AACF;AACF;;AAED,WAASqrD,QAAT,CAAkB/rD,EAAlB,EAAsBC,EAAtB,EAA0BS,IAA1B,EAAgC;AAC9B,QAAIR,GAAG,GAAG1C,KAAK,CAACttC,OAAN,CAAc8vC,EAAd,CAAV;AAAA,QACEG,GAAG,GAAG3C,KAAK,CAACttC,OAAN,CAAc+vC,EAAd,CADR;AAAA,QAEE2qD,QAAQ,GAAGd,mBAAmB,CAAC9pD,EAAD,EAAKC,EAAL,CAFhC;AAAA,QAGEgsD,EAAE,GAAG3B,aAAa,CAACpqD,GAAD,EAAMC,GAAN,EAAWyqD,QAAX,CAHpB;AAAA,QAIE/rG,MAJF;AAAA,QAIUga,QAJV;AAAA,QAIoBsyF,IAJpB;AAAA,QAI0B1B,iBAJ1B;AAMA,QAAIwC,EAAE,IAAI,CAAV,EAAa,OAPiB,CAOT;;AAErBptG,UAAM,GAAG8qG,aAAa,CAACzpD,GAAD,EAAMC,GAAN,CAAtB;AACAtnC,YAAQ,GAAG+wF,eAAe,CAAC1pD,GAAD,EAAMC,GAAN,CAA1B,CAV8B,CAY9B;AACA;;AACAgrD,QAAI,GAAGnrG,IAAI,CAAC2O,IAAL,CAAU+xC,IAAV,IAAkB7hD,MAAzB;AACAssG,QAAI,GAAG,CAAC,GAAD,GAAOtyF,QAAP,GAAkBsyF,IAAlB,GAAyBA,IAAhC,CAf8B,CAgB9B;;AACAA,QAAI,IAAIc,EAAR,CAjB8B,CAmB9B;AACA;;AACAxC,qBAAiB,GAAG,CAACvsD,MAAM,CAAC8oC,YAAP,CAAoB9lC,GAApB,EAAyBC,GAAzB,EAA8Bq5B,4BAA9B,CAA2D94B,IAA3D,CAArB;;AAEA,QAAI+oD,iBAAiB,GAAG,CAAxB,EAA2B;AACzB;AACA;AACA;AACA;AACD;;AAED,QAAIvsD,MAAM,CAACk/C,kCAAP,CAA0C+O,IAA1C,EAAgDnrD,EAAhD,EAAoDC,EAApD,CAAJ,EAA6D;AAC3DyyC,mBAAa,CAAC;AACZ7zF,cAAM,EAAEA,MADI;AAEZga,gBAAQ,EAAEA,QAFE;AAGZ4wF,yBAAiB,EAAEA;AAHP,OAAD,EAIVzpD,EAJU,EAINC,EAJM,EAIF2qD,QAJE,CAAb;AAKD;AACF;;AAED,WAASoB,iBAAT,CAA2BhsD,EAA3B,EAA+BC,EAA/B,EAAmCoqD,OAAnC,EAA4C7pD,GAA5C,EAAiDC,GAAjD,EAAsDC,IAAtD,EAA4D;AAC1D,QAAIR,GAAG,GAAG1C,KAAK,CAACttC,OAAN,CAAc8vC,EAAd,CAAV;AAAA,QACEG,GAAG,GAAG3C,KAAK,CAACttC,OAAN,CAAc+vC,EAAd,CADR;AAAA,QAEEisD,KAAK,GAAGtsB,WAAW,CAACjnE,KAAZ,CAAkB0xF,OAAlB,CAFV;AAAA,QAGE8B,KAAK,GAAGvsB,WAAW,CAAChnE,KAAZ,CAAkByxF,OAAlB,CAHV;AAAA,QAIE+B,MAAM,GAAG5uD,KAAK,CAACttC,OAAN,CAAcg8F,KAAd,CAJX;AAAA,QAKEG,MAAM,GAAG7uD,KAAK,CAACttC,OAAN,CAAci8F,KAAd,CALX;AAAA,QAME;AACA7V,MAAE,GAAG4V,KAAK,KAAKlsD,EAAV,IAAgBksD,KAAK,KAAKjsD,EAA1B,GAA+BisD,KAA/B,GAAuCC,KAP9C;AAAA,QAQEG,GAAG,GAAG9uD,KAAK,CAACttC,OAAN,CAAcomF,EAAd,CARR;AAAA,QAUEmU,OAAO,GAAGL,WAAW,CAACC,OAAD,CAVvB;AAAA,QAWE;AACA9G,WAAO,GAAGuG,mBAAmB,CAAC9pD,EAAD,EAAKC,EAAL,EAASwqD,OAAT,CAZ/B;AAAA,QAcE8B,kBAAkB,GAAG/B,wBAAwB,CAACtqD,GAAD,EAAMC,GAAN,EAAWmsD,GAAX,EAAgB7B,OAAhB,EAAyBlH,OAAzB,CAd/C;AAAA,QAgBE;AACAiJ,QAAI,GAAG,MAAMxsG,IAAI,CAAC2O,IAAL,CAAU+xC,IAAV,CAjBf;AAAA,QAkBE+rD,IAAI,GAAGjvD,KAAK,CAACjoC,EAAN,CAASyqC,EAAT,IAAexC,KAAK,CAACjoC,EAAN,CAAS0qC,EAAT,CAlBxB;AAAA,QAmBEysD,IAAI,GAAGlvD,KAAK,CAAChoC,EAAN,CAASwqC,EAAT,IAAexC,KAAK,CAAChoC,EAAN,CAASyqC,EAAT,CAnBxB;AAAA,QAoBE0sD,GAAG,GAAGF,IAAI,GAAGjsD,GAAP,GAAagsD,IAAb,GAAoBE,IAAI,GAAGjsD,GAAP,GAAa+rD,IApBzC;AAAA,QAsBEI,MAAM,GAAGpvD,KAAK,CAACjnC,IAAN,CAAWypC,EAAX,CAtBX;AAAA,QAuBE6sD,MAAM,GAAGrvD,KAAK,CAACjnC,IAAN,CAAW0pC,EAAX,CAvBX;AAAA,QAyBE6sD,eAAe,GAAGlwF,4BAAS,CAACvX,OAAV,CAAkBunG,MAAM,GAAGC,MAAT,IAAmBD,MAAM,GAAGC,MAA5B,IAAsCF,GAAtC,GAA4CA,GAA9D,EAAmE;AACnF7lG,UAAI,EAAE3B,uBAAI,CAACc,cADwE;AAEnFc,QAAE,EAAE5B,uBAAI,CAACgB;AAF0E,KAAnE,CAzBpB;AAAA,QA8BEnF,SA9BF;AAAA,QA8Ba+rG,WA9Bb;AAAA,QA8B0BC,SA9B1B;AAAA,QA8BqCC,WA9BrC;AAAA,QA+BEC,OA/BF;AAAA,QA+BW/B,IA/BX;AAAA,QAgCEE,YAhCF;AAAA,QAgCgB5B,iBAhChB,CAD0D,CAmC1D;;AACA,QAAIqD,eAAe,GAAGP,kBAAtB,EAA0C;AACxC;AAEAvrG,eAAS,GAAG2oG,aAAa,CAACzpD,GAAD,EAAMC,GAAN,CAAzB;AACA4sD,iBAAW,GAAGnD,eAAe,CAAC1pD,GAAD,EAAMC,GAAN,CAA7B;AACA6sD,eAAS,GAAGptB,WAAW,CAAC/gF,MAAZ,CAAmBwrG,OAAnB,CAAZ;AACA4C,iBAAW,GAAGrtB,WAAW,CAAC/mE,QAAZ,CAAqBwxF,OAArB,CAAd,CANwC,CAQxC;AACA;AACA;;AACA6C,aAAO,GAAGltG,IAAI,CAAC2O,IAAL,CAAU+xC,IAAV,IAAkB1/C,SAA5B;AACAmqG,UAAI,GAAG,CAAC,GAAD,GAAO4B,WAAP,GAAqBG,OAArB,GAA+BA,OAAtC,CAZwC,CAaxC;;AACA/B,UAAI,IAAIb,aAAa,CAACpqD,GAAD,EAAMC,GAAN,EAAWojD,OAAX,CAArB;AACAkG,uBAAiB,GAAG,CAACvsD,MAAM,CAAC8oC,YAAP,CAAoB9lC,GAApB,EAAyBC,GAAzB,EAA8Bq5B,4BAA9B,CAA2D94B,IAA3D,CAArB;;AAEA,UAAI+oD,iBAAiB,GAAG,CAAxB,EAA2B;AACzB;AACA;AACD,OApBuC,CAsBxC;;;AACAjpD,SAAG,GAAGhD,KAAK,CAACz9C,CAAN,CAAQmsG,KAAR,IAAiB1uD,KAAK,CAACz9C,CAAN,CAAQosG,KAAR,CAAvB;AACA1rD,SAAG,GAAGjD,KAAK,CAACloC,CAAN,CAAQ42F,KAAR,IAAiB1uD,KAAK,CAACloC,CAAN,CAAQ62F,KAAR,CAAvB;AACAzrD,UAAI,GAAGF,GAAG,GAAGA,GAAN,GAAYC,GAAG,GAAGA,GAAzB,CAzBwC,CA0BxC;;AACAysD,aAAO,GAAGltG,IAAI,CAAC2O,IAAL,CAAU+xC,IAAV,IAAkBssD,SAA5B;AACA7B,UAAI,IAAI,MAAM8B,WAAN,GAAoBC,OAApB,GAA8BA,OAAtC,CA5BwC,CA6BxC;;AACA/B,UAAI,IAAIb,aAAa,CAAC8B,MAAD,EAASC,MAAT,EAAiB5B,OAAjB,CAArB,CA9BwC,CAgCxC;AACA;;AACAY,kBAAY,GAAG,CAACzrB,WAAW,CAAC6pB,iBAAZ,CAA8BY,OAA9B,CAAD,GAA0CntD,MAAM,CAAC8oC,YAAP,CAAoBomB,MAApB,EAA4BC,MAA5B,EAAoC7yB,4BAApC,CAAiE94B,IAAjE,CAAzD;AACAyqD,UAAI,IAAIE,YAAR;;AAEA,UAAInuD,MAAM,CAACu5C,YAAP,CAAoB0U,IAApB,EAA0BnrD,EAA1B,EAA8BC,EAA9B,EAAkCq2C,EAAlC,CAAJ,EAA2C;AACzC;AACAuU,0BAAkB,CAACR,OAAD,EAAU;AAC1BxrG,gBAAM,EAAEmC,SADkB;AAE1B6X,kBAAQ,EAAEk0F,WAFgB;AAG1BtD,2BAAiB,EAAEA;AAHO,SAAV,EAIfzpD,EAJe,EAIXC,EAJW,EAIPq2C,EAJO,EAIHiN,OAJG,EAIMkH,OAJN,CAAlB;AAKD;AACF;AACF;;AAED,WAAS0C,+BAAT,GAA2C;AACzC;AACA;AACA;AACA;AACA,QAAIvuG,CAAC,GAAG,CAAR;;AACA,WAAOA,CAAC,GAAGs+C,MAAM,CAACy9C,uBAAP,EAAX,EAA6C;AAC3C,UAAI4O,aAAa,CAAC7oB,YAAY,CAAC3nE,KAAb,CAAmBna,CAAnB,CAAD,CAAjB,EAA0C;AACxCs+C,cAAM,CAAC81C,iBAAP,CAAyBp0F,CAAzB,EAA4B,IAA5B;AACD,OAFD,MAEO;AACLA,SAAC;AACF;AACF;AACF;;AAED,WAASwuG,6BAAT,GAAyC;AACvC,QAAIxuG,CAAJ,EAAOc,GAAP,EAAYsgD,EAAZ,EAAgBC,EAAhB,EAAoBq2C,EAApB,EAAwB6U,IAAxB,CADuC,CAEvC;AACA;AACA;AACA;;AACA,SAAKvsG,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGw9C,MAAM,CAACy9C,uBAAP,EAAlB,EAAoD/7F,CAAC,GAAGc,GAAxD,EAA6Dd,CAAC,EAA9D,EAAkE;AAChE,UAAI8hF,YAAY,CAAC7nE,QAAb,CAAsBja,CAAtB,MAA6B,CAAjC,EAAoC;AAClCohD,UAAE,GAAG0gC,YAAY,CAAC/nE,KAAb,CAAmB/Z,CAAnB,CAAL;AACAqhD,UAAE,GAAGygC,YAAY,CAAC9nE,KAAb,CAAmBha,CAAnB,CAAL;AACA03F,UAAE,GAAG5V,YAAY,CAAC3nE,KAAb,CAAmBna,CAAnB,CAAL;AACAusG,YAAI,GAAGzqB,YAAY,CAAC1nE,KAAb,CAAmBpa,CAAnB,IAAwByuG,oBAAoB,CAACrtD,EAAD,EAAKC,EAAL,EAASq2C,EAAT,CAAnD;AACA6U,YAAI,GAAG,CAAC,GAAD,GAAOtC,qBAAP,GAA+BsC,IAA/B,GAAsCA,IAA7C;;AAEA,YAAIjuD,MAAM,CAACu5C,YAAP,CAAoB0U,IAApB,EAA0BnrD,EAA1B,EAA8BC,EAA9B,EAAkCq2C,EAAlC,CAAJ,EAA2C;AACzChB,kCAAwB,CAAC12F,CAAD,EAAI;AAC1Bia,oBAAQ,EAAEgwF;AADgB,WAAJ,CAAxB;AAGD;AACF;AACF;AACF,GApiB4D,CAsiB7D;;;AACA,WAASwE,oBAAT,CAA8BrtD,EAA9B,EAAkCC,EAAlC,EAAsCq2C,EAAtC,EAA0C;AACxC,WAAOtf,wCAAkB,CAACx5B,KAAK,CAACz9C,CAAN,CAAQigD,EAAR,CAAD,EAAcxC,KAAK,CAACloC,CAAN,CAAQ0qC,EAAR,CAAd,EACvBxC,KAAK,CAACz9C,CAAN,CAAQkgD,EAAR,CADuB,EACVzC,KAAK,CAACloC,CAAN,CAAQ2qC,EAAR,CADU,EAEvBzC,KAAK,CAACz9C,CAAN,CAAQu2F,EAAR,CAFuB,EAEV94C,KAAK,CAACloC,CAAN,CAAQghF,EAAR,CAFU,CAAzB;AAGD;;AAED,WAASgX,gBAAT,CAA0B5yF,gBAA1B,EAA4CjE,eAA5C,EAA6D82F,UAA7D,EAAyE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAO,IAAIvtG,IAAI,CAAC0O,EAAT,IAAe1O,IAAI,CAACE,GAAL,CAAS,CAAT,EAAYwa,gBAAZ,KAAiCjE,eAAe,GAAG82F,UAAnD,CAAf,CAAP;AACD;;AAED,WAASC,oBAAT,GAAgC;AAC9B,QAAI5uG,CAAJ,EAAOc,GAAP,EAAYsgD,EAAZ,EAAgBC,EAAhB,EAAoBx6C,IAApB,EAA0BuT,KAA1B,EAAiCy0F,EAAjC,EAAqCC,aAArC,CAD8B,CAE9B;;AACA,QAAIza,WAAW,GAAG,EAAlB;;AACA,SAAKr0F,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGw9C,MAAM,CAACw9C,sBAAP,EAAlB,EAAmD97F,CAAC,GAAGc,GAAvD,EAA4Dd,CAAC,EAA7D,EAAiE;AAC/DohD,QAAE,GAAG4/B,WAAW,CAACjnE,KAAZ,CAAkB/Z,CAAlB,CAAL;AACAqhD,QAAE,GAAG2/B,WAAW,CAAChnE,KAAZ,CAAkBha,CAAlB,CAAL;AACA6G,UAAI,GAAGmjG,aAAa,CAAChpB,WAAW,CAACn6E,IAAb,CAApB;;AACA,UAAI8jG,aAAa,CAACvpD,EAAD,CAAjB,EAAuB;AACrB,YAAI,CAACizC,WAAW,CAACjzC,EAAD,CAAhB,EAAsB;AACpBizC,qBAAW,CAACjzC,EAAD,CAAX,GAAkB,CAACC,EAAD,CAAlB;AACD,SAFD,MAEO;AACLgzC,qBAAW,CAACjzC,EAAD,CAAX,CAAgBx+C,IAAhB,CAAqBy+C,EAArB;AACD;AACF;;AACD,UAAIspD,aAAa,CAACtpD,EAAD,CAAjB,EAAuB;AACrB,YAAI,CAACgzC,WAAW,CAAChzC,EAAD,CAAhB,EAAsB;AACpBgzC,qBAAW,CAAChzC,EAAD,CAAX,GAAkB,CAACD,EAAD,CAAlB;AACD,SAFD,MAEO;AACLizC,qBAAW,CAAChzC,EAAD,CAAX,CAAgBz+C,IAAhB,CAAqBw+C,EAArB;AACD;AACF;AACF,KAtB6B,CAwB9B;;;AACA,SAAKphD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGuzF,WAAW,CAACp0F,MAA9B,EAAsCD,CAAC,GAAGc,GAA1C,EAA+Cd,CAAC,EAAhD,EAAoD;AAClD6uG,QAAE,GAAGxa,WAAW,CAACr0F,CAAD,CAAhB;AACA,UAAI,CAAC6uG,EAAD,IAAOA,EAAE,CAAC5uG,MAAH,GAAY,CAAvB,EAA0B;AAE1Bma,WAAK,GAAGs0F,gBAAgB,CAAC5yF,gBAAgB,CAAC8iC,KAAK,CAACttC,OAAN,CAActR,CAAd,CAAD,CAAjB,EAAqC4+C,KAAK,CAAC/mC,eAAN,CAAsB7X,CAAtB,CAArC,EAA+D6uG,EAAE,CAAC5uG,MAAlE,CAAxB;;AAEA,UAAI4uG,EAAE,CAAC5uG,MAAH,KAAc,CAAlB,EAAqB;AACnB;AACAmhD,UAAE,GAAGytD,EAAE,CAAC,CAAD,CAAP;AACAxtD,UAAE,GAAGwtD,EAAE,CAAC,CAAD,CAAP;AACAE,6BAAqB,CAAC3tD,EAAD,EAAKC,EAAL,EAASrhD,CAAT,EAAYoa,KAAZ,CAArB;AACD,OALD,MAKO;AACL00F,qBAAa,GAAG,EAAhB;;AACA,YAAID,EAAE,CAAC5uG,MAAH,KAAc,CAAlB,EAAqB;AACnB;AACA;AACA;AACA+uG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACAgvG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACAgvG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACD,SAPD,MAOO,IAAI6uG,EAAE,CAAC5uG,MAAH,KAAc,CAAlB,EAAqB;AAC1B;AACA;AACA;AACA;AACA;AACA+uG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACAgvG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACAgvG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACAgvG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACAgvG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACAgvG,0BAAgB,CAACF,aAAD,EAAgBD,EAAE,CAAC,CAAD,CAAlB,EAAuBA,EAAE,CAAC,CAAD,CAAzB,EAA8B7uG,CAA9B,CAAhB;AACD;;AACD8uG,qBAAa,CAACphD,IAAd,CAAmBuhD,oBAAnB;AACAC,iCAAyB,CAACJ,aAAD,EAAgBD,EAAE,CAAC5uG,MAAH,GAAY,CAA5B,EAA+Bma,KAA/B,CAAzB;AACD;AACF;AACF;;AAED,WAAS40F,gBAAT,CAA0B/7E,GAA1B,EAA+BmuB,EAA/B,EAAmCC,EAAnC,EAAuC8tD,QAAvC,EAAiD;AAC/Cl8E,OAAG,CAACrwB,IAAJ,CAAS;AACPwX,WAAK,EAAEq0F,oBAAoB,CAACrtD,EAAD,EAAKC,EAAL,EAAS8tD,QAAT,CADpB;AAEP/tD,QAAE,EAAEA,EAFG;AAGPC,QAAE,EAAEA,EAHG;AAIP8tD,cAAQ,EAAEA;AAJH,KAAT;AAMD;;AAED,WAASF,oBAAT,CAA8B9vG,CAA9B,EAAiC+B,CAAjC,EAAoC;AAClC,QAAI/B,CAAC,CAACib,KAAF,GAAUlZ,CAAC,CAACkZ,KAAhB,EAAuB,OAAO,CAAC,CAAR;AACvB,QAAIjb,CAAC,CAACib,KAAF,GAAUlZ,CAAC,CAACkZ,KAAhB,EAAuB,OAAO,CAAP;AACvB,WAAO,CAAP;AACD;;AAED,WAAS80F,yBAAT,CAAmCpvG,KAAnC,EAA0CksC,CAA1C,EAA6CojE,SAA7C,EAAwD;AACtD,QAAIpvG,CAAJ,EAAOqvG,OAAP;;AACA,SAAKrvG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgsC,CAAhB,EAAmBhsC,CAAC,EAApB,EAAwB;AACtBqvG,aAAO,GAAGvvG,KAAK,CAACE,CAAD,CAAf;AACA+uG,2BAAqB,CAACM,OAAO,CAACjuD,EAAT,EAAaiuD,OAAO,CAAChuD,EAArB,EAAyBguD,OAAO,CAACF,QAAjC,EAA2CC,SAA3C,EAAsDC,OAAO,CAACj1F,KAA9D,CAArB;AACD;AACF;;AAED,WAAS20F,qBAAT,CAA+B3tD,EAA/B,EAAmCC,EAAnC,EAAuC8tD,QAAvC,EAAiDC,SAAjD,EAA4DE,YAA5D,EAA0E;AACxE,QAAI,CAACA,YAAL,EAAmB;AACjBA,kBAAY,GAAGb,oBAAoB,CAACrtD,EAAD,EAAKC,EAAL,EAAS8tD,QAAT,CAAnC;AACD;;AACD,QAAIn2E,KAAK,GAAG;AACVjf,WAAK,EAAEqnC,EADG;AAEVpnC,WAAK,EAAEqnC,EAFG;AAGVlnC,WAAK,EAAEg1F,QAHG;AAIV/0F,WAAK,EAAEg1F;AAJG,KAAZ,CAJwE,CAUxE;;AACA,QAAI7C,IAAI,GAAG6C,SAAS,GAAGE,YAAvB;AACA/C,QAAI,GAAG,CAAC,GAAD,GAAOtC,qBAAP,GAA+BsC,IAA/B,GAAsCA,IAA7C,CAZwE,CAaxE;AACA;AACA;;AACA,QAAIjuD,MAAM,CAACu5C,YAAP,CAAoB0U,IAApB,EAA0BnrD,EAA1B,EAA8BC,EAA9B,EAAkC8tD,QAAlC,CAAJ,EAAiD;AAC/Cn2E,WAAK,CAAC/e,QAAN,GAAiBgwF,qBAAjB;AACD,KAFD,MAEO;AACLjxE,WAAK,CAAC/e,QAAN,GAAiB,CAAjB;AACD;;AACDw9E,kBAAc,CAACz+D,KAAD,CAAd;AACD,GA9rB4D,CAgsB7D;;;AACA,WAASu2E,kBAAT,GAA8B;AAC5B,QAAI/S,EAAE,GAAG,CAAT;AAAA,QACEx8F,CADF;AAAA,QACKc,GADL;;AAGA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGw9C,MAAM,CAACw9C,sBAAP,EAAlB,EAAmD97F,CAAC,GAAGc,GAAvD,EAA4D,EAAEd,CAA9D,EAAiE;AAC/Dw8F,QAAE,IAAKkP,aAAa,CAAC9sD,KAAK,CAACttC,OAAN,CAAc0vE,WAAW,CAACjnE,KAAZ,CAAkB/Z,CAAlB,CAAd,CAAD,EAClB4+C,KAAK,CAACttC,OAAN,CAAc0vE,WAAW,CAAChnE,KAAZ,CAAkBha,CAAlB,CAAd,CADkB,EAElBwrG,WAAW,CAACxrG,CAAD,CAFO,CAAb,GAEaghF,WAAW,CAAC6pB,iBAAZ,CAA8B7qG,CAA9B,CAFpB;AAGD;;AAED,WAAOw8F,EAAP;AACD,GA5sB4D,CA8sB7D;;;AACAh+E,KAAG,GAAG;AACJlQ,cAAU,EAAE,oBAASm3C,UAAT,EAAqB;AAC/B7G,WAAK,GAAG6G,UAAU,CAAC7G,KAAnB;AACAC,cAAQ,GAAG4G,UAAU,CAAC5G,QAAtB;AACAmiC,iBAAW,GAAGv7B,UAAU,CAACu7B,WAAzB;AACAc,kBAAY,GAAGr8B,UAAU,CAACq8B,YAA1B;AACA9iC,sBAAgB;AAChB4rD,4BAAsB;AACvB,KARG;AAUJllD,sCAAkC,EAAE,4CAAS1E,YAAT,EAAuByD,EAAvB,EAA2Bx1C,IAA3B,EAAiC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,UAAIugG,GAAG,GAAGvgG,IAAI,GAAG0M,cAAjB;;AACA,UAAI6zF,GAAG,KAAK,CAAR,IAAcA,GAAG,GAAG/qD,EAAN,IAAYrjD,IAAI,CAACwqC,KAAL,CAAW38B,IAAI,GAAG0M,cAAlB,MAAsCva,IAAI,CAAC4kB,KAAL,CAAW/W,IAAI,GAAG0M,cAAlB,CAApE,EAAwG;AACtGuwF,oCAA4B;AAC5BC,oCAA4B;AAC5BE,oBAAY,GAH0F,CAItG;AACA;;AACAD,iCAAyB;AACzBO,mBAAW,CAAC3rD,YAAD,CAAX;;AAEA,YAAIplC,kBAAJ,EAAwB;AACtB,cAAIrb,MAAM,CAAC2b,IAAP,CAAYyuF,aAAZ,EAA2B1qG,MAA3B,GAAoC,CAAxC,EAA2C;AACzC;AACAsuG,2CAA+B;AAC/BC,yCAA6B;AAC7BI,gCAAoB;AACrB,WALD,MAKO;AACL;AACA;AACAJ,yCAA6B;AAC9B;AACF;;AAED,YAAI9D,YAAJ,EAAkB;AAChB;AACApsD,gBAAM,CAACi0C,4BAAP;AACD;AACF;AACF,KA7CG;AA+CJ;AACA;AACA1rC,YAAQ,EAAE,oBAAW;AACnB,aAAO,EAAP;AACD,KAnDG;AAqDJ4oD,sBAAkB,EAAE,4BAASvoE,KAAT,EAAgB;AAClCA,WAAK,CAACs1D,EAAN,IAAY+S,kBAAkB,EAA9B;AACD,KAvDG;;AAyDJ;;;;;;AAMAG,iBAAa,EAAE,uBAASC,eAAT,EAA0B5vG,KAA1B,EAAiC;AAC9Cgc,gBAAU,CAAC4zF,eAAD,CAAV,GAA8B5vG,KAA9B;AACD,KAjEG;;AAmEJ;;;;;AAKA6vG,uBAAmB,EAAE,6BAASt+F,OAAT,EAAkBvR,KAAlB,EAAyB;AAC5C+b,sBAAgB,CAACxK,OAAD,CAAhB,GAA4BvR,KAA5B,CAD4C,CAE5C;;AACAssG,kBAAY,CAAC,IAAD,CAAZ;AACAF,kCAA4B;AAC7B;AA7EG,GAAN;AAgFA,SAAO3tF,GAAP;AACD;AAAA,C;;AC31BA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAEA;;AACA,IAAI;AAIFqxF,cAAc,GAAG,CAJnB;AAMe,SAASrvF,aAAT,CAAekzD,iBAAf,EAAkCo8B,qBAAlC,EAAyD/oF,IAAzD,EAA+D;AAE5E;AACA,OAAKzmB,WAAL,CAAiBuG,IAAjB,GAAwB,MAAxB;AAEAipG,uBAAqB,GAAGA,qBAAqB,IAAI,EAAjD;;AAEA,MAAIlhG,KAAK,GAAG,EAAZ;AAAA,MACEylB,SAAS,GAAG,cAAe,EAAEw7E,cAD/B;AAAA,MAGEE,aAAa,GAAG;AACd59F,qBAAiB,EAAE,2BAASpS,KAAT,EAAgB;AACjCu+C,YAAM,CAACg3C,oBAAP,CAA4Bv1F,KAA5B;AACD,KAHa;AAKdmS,sBAAkB,EAAE,4BAASnS,KAAT,EAAgB;AAClCu+C,YAAM,CAACwhC,aAAP,CAAqB//E,KAArB;AACD,KAPa;AASdgS,sBAAkB,EAAE,4BAAShS,KAAT,EAAgB;AAClCu+C,YAAM,CAACuhC,0BAAP,CAAkC9/E,KAAlC;AACD,KAXa;AAadkS,iBAAa,EAAE,uBAASlS,KAAT,EAAgB;AAC7Bu+C,YAAM,CAACohC,qBAAP,CAA6B3/E,KAA7B;AACD,KAfa;AAiBd2S,oBAAgB,EAAE,0BAAS3S,KAAT,EAAgB;AAChCu+C,YAAM,CAACo3C,mBAAP,CAA2B31F,KAA3B;AACD,KAnBa;AAqBdiT,YAAQ,EAAE,kBAASjT,KAAT,EAAgB;AACxBu+C,YAAM,CAACs3C,WAAP,CAAmB71F,KAAnB;AACD,KAvBa;AAyBd0S,sBAAkB,EAAE,4BAAS1S,KAAT,EAAgB;AAClCu+C,YAAM,CAACu3C,qBAAP,CAA6B91F,KAA7B;AACD,KA3Ba;AA6Bd4S,8BAA0B,EAAE,oCAAS5S,KAAT,EAAgB;AAC1Cu+C,YAAM,CAACy3C,6BAAP,CAAqCh2F,KAArC;AACD,KA/Ba;AAiCd6S,mCAA+B,EAAE,yCAAS7S,KAAT,EAAgB;AAC/Cu+C,YAAM,CAAC23C,kCAAP,CAA0Cl2F,KAA1C;AACD,KAnCa;AAqCdwS,sBAAkB,EAAE,4BAASxS,KAAT,EAAgB;AAClCu+C,YAAM,CAACi3C,qBAAP,CAA6Bx1F,KAA7B;AACD,KAvCa;AAyCdyS,6BAAyB,EAAE,mCAASzS,KAAT,EAAgB;AACzCu+C,YAAM,CAACm3C,4BAAP,CAAoC11F,KAApC;AACD,KA3Ca;AA6Cd+U,kBAAc,EAAE,wBAAS/U,KAAT,EAAgB;AAC9B,UAAIyG,KAAK,GAAGwpG,iBAAiB,CAACjwG,KAAD,CAA7B;;AACA,UAAIyG,KAAJ,EAAW;AACT83C,cAAM,CAACk2C,gBAAP,CAAwBhuF,KAAxB;AACD;AACF,KAlDa;AAoDd6L,sBAAkB,EAAE,4BAAStS,KAAT,EAAgB;AAClCu+C,YAAM,CAACo2C,qBAAP,CAA6B30F,KAA7B;AACD,KAtDa;AAwDdqS,mBAAe,EAAE,2BAAW;AAC1B,UAAI,CAACxD,KAAK,CAACk6B,SAAN,EAAL,EAAwBl6B,KAAK,CAAC0kE,OAAN;AACzB,KA1Da;AA4DdxgE,aAAS,EAAE,mBAAS/S,KAAT,EAAgB;AACzBu+C,YAAM,CAACwgD,YAAP,CAAoB/+F,KAApB;AACD,KA9Da;AAgEd8S,kBAAc,EAAE,wBAAS9S,KAAT,EAAgB;AAC9B,UAAIkwG,QAAJ,EAAch4F,QAAd,EAAwBC,QAAxB,EACElY,CADF,EACKyM,CADL,EACQ3L,GADR,CAD8B,CAI9B;AACA;;AACAmvG,cAAQ,GAAG3d,iBAAgB,CAACtb,kBAAjB,EAAX;;AACA,WAAKh3E,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGmvG,QAAQ,CAAChwG,MAA3B,EAAmCD,CAAC,GAAGc,GAAvC,EAA4Cd,CAAC,EAA7C,EAAiD;AAC/CiY,gBAAQ,GAAGg4F,QAAQ,CAACjwG,CAAD,CAAnB;;AACA,aAAKyM,CAAC,GAAGzM,CAAC,GAAG,CAAb,EAAgByM,CAAC,GAAG3L,GAApB,EAAyB2L,CAAC,EAA1B,EAA8B;AAC5ByL,kBAAQ,GAAG+3F,QAAQ,CAACxjG,CAAD,CAAnB,CAD4B,CAE5B;;AACA6xC,gBAAM,CAACtmC,oBAAP,CAA4BzV,GAA5B,CAAgC0V,QAAhC,EAA0CC,QAA1C,EAAoD;AAClDH,mBAAO,EAAEhY;AADyC,WAApD;AAGD;AACF;AACF,KAjFa;AAmFdmV,wBAAoB,EAAE,8BAASnV,KAAT,EAAgB;AACpC0a,mBAAa,CAACxa,MAAd,GAAuB,CAAvB,CADoC,CACV;;AAC1B,UAAI,CAACF,KAAL,EAAY;AACZ,UAAI8N,IAAI,GAAG,CAAX;AAAA,UACEC,IAAI,GAAG,CADT;AAAA,UAEEJ,IAAI,GAAGkB,KAAK,CAACwb,UAAN,CAAiBhf,KAF1B;AAAA,UAGEwC,IAAI,GAAGgB,KAAK,CAACwb,UAAN,CAAiB/e,MAH1B;AAAA,UAIE8mF,IAAI,GAAGvjF,KAAK,CAACwb,UAAN,CAAiBhf,KAAjB,GAAyBrL,KAJlC;AAAA,UAKEmwG,OAAO,GAAKtiG,IAAI,GAAGukF,IAAR,GAAgB,CAAjB,GAAsBA,IALlC;AAAA,UAMEz7E,CAAC,GAAG5I,IAAI,GAAG,OAAOoiG,OAAO,IAAI/d,IAAI,IAAIvkF,IAAR,GAAeukF,IAAf,GAAsB,CAA1B,CAAd,CANb;AAAA,UAOEhxF,CAPF;;AAQA,aAAOuV,CAAC,GAAG9I,IAAX,EAAiB;AACfzM,SAAC,GAAG0M,IAAI,GAAG,MAAMskF,IAAjB;;AACA,eAAOhxF,CAAC,GAAGuM,IAAX,EAAiB;AACf+M,uBAAa,CAAC7X,IAAd,CAAmB;AACjBzB,aAAC,EAAEA,CADc;AAEjBuV,aAAC,EAAEA;AAFc,WAAnB;AAIAvV,WAAC,IAAIgxF,IAAL;AACD;;AACDz7E,SAAC,IAAIy7E,IAAL;AACD;AACF;AAzGa,GAHlB;AAAA,MA+GE;AACA;AACAniB,iBAAe,GAAGmgC,gBAAe,CAACprF,GAAhB,CAAoB2uD,iBAAiB,CAAC5hE,WAAlB,IAAiC,MAArD,CAjHpB;AAAA,MAmHE;AACA;AACA0hE,kBAAgB,GAAI,YAAW;AAC7B,QAAI48B,MAAM,GAAG18B,iBAAiB,CAAC5hE,WAAlB,IAAiC,MAA9C,CAD6B,CAE7B;AACA;AACA;AACA;;AACA,QAAIs+F,MAAM,KAAK,MAAf,EAAuB;AACrB,aAAO,IAAI/P,gBAAJ,CAAqBrwB,eAArB,CAAP;AACD;;AACD,WAAO9wE,SAAP;AACD,GAVmB,EArHtB;AAAA,MAiIEmxG,eAAe,GAAG,IAAIt8B,eAAJ,CAAoB;AACpCjwE,YAAQ,EAAEA,kCAD0B;AAEpC2vE,WAAO,EAAEs8B,aAF2B;AAGpC//B,mBAAe,EAAEA,eAHmB;AAIpCwD,oBAAgB,EAAEA,gBAJkB;AAKpCE,qBAAiB,EAAEA;AALiB,GAApB,CAjIpB;AAAA,MAyIEn+C,QAAQ,GAAI,YAAW;AACrB,QAAIxP,CAAC,GAAGsqF,eAAe,CAACl8B,eAAxB;AACApuD,KAAC,CAACgQ,aAAF,CAAgB,MAAhB,EACE,SADF,EACa,YADb,EAC2B,eAD3B,EAC4C,kBAD5C,EAEE,kBAFF,EAEsB,qBAFtB,EAE6C,qBAF7C,EAGE,mBAHF,EAGuB,kBAHvB,EAG2C,eAH3C;AAIA,WAAOhQ,CAAP;AACD,GAPW,EAzId;AAAA,MAkJEgqD,eAAe,GAAGsgC,eAAe,CAACtgC,eAlJpC;AAAA,MAoJEmE,aApJF;AAAA,MAsJE87B,iBAAiB,GAAG;AAClB,aAAS,IADS;AAElB,cAAU,IAFQ;AAGlB,YAAQ;AAHU,GAtJtB;AAAA,MA2JEM,qBAAqB,GAAG,IA3J1B;AAAA,MA4JEC,OAAO,GAAG,KA5JZ;AAAA,MA6JEC,cA7JF;AAAA,MA8JEC,WAAW,GAAG,EA9JhB;AAAA,MAgKE;AACAj8B,YAAU,GAAG/1E,MAAM,CAACyoC,KAAP,GAAe,EAjK9B;AAAA,MAkKEmqC,WAlKF;AAAA,MAoKE;AACAq/B,aAAW,GAAG,EArKhB;AAAA,MAuKE;AACApyD,QAAM,GAAI,YAAW;AACnB,QAAIz/C,CAAC,GAAG0gF,iBAAY,EAApB,CADmB,CAEnB;AACA;;AACA1gF,KAAC,CAACmZ,oBAAF,CAAuB24F,mBAAvB,CAA2C5gC,eAAe,CAAC5C,yBAA3D,EAAsF4C,eAAe,CAAC3C,0BAAtG;AACA,WAAOvuE,CAAP;AACD,GANS,EAxKZ;AAAA,MAgLE;AACA+xG,eAjLF;AAAA,MAmLE;AACAC,kBApLF;AAAA,MAsLE;AACA;AACA;AAEA;AACAhyD,UA3LF;AAAA,MA6LE;AACA0kC,WA9LF;AAAA,MAgME;AACAe,QAjMF;AAAA,MAmME;AACAr+D,OApMF;AAAA,MAsME;AACAw/D,gBAvMF;AAAA,MAyME;AACAzE,aA1MF;AAAA,MA4ME;AACAc,cA7MF;AAAA,MA+ME;AACA;AACAP,YAjNF;AAAA,MAmNE;AAEA;AACA;AACA;AACAuvB,WAAS,GAAG,EAxNd;AAAA,MA0NE;AACA;AACAC,iBAAe,GAAG,EA5NpB;AAAA,MA8NE;AACA;AACAzqD,aAhOF;AAAA,MAkOE;AACA;AACA7rC,eAAa,GAAG,EApOlB;AAAA,MAsOE;AACAu2F,0BAAwB,GAAG,IAvO7B;AAAA,MAyOE;AACAC,uBA1OF;AAAA,MA4OE;AACAC,kBA7OF;;AA+OA,WAASC,kBAAT,CAA4B1gC,QAA5B,EAAsC;AACpC,QAAIzwE,CAAJ,EAAOc,GAAP;AACA8N,SAAK,CAACqnB,UAAN;;AACA,SAAKj2B,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG4vG,WAAW,CAACzwG,MAA9B,EAAsCD,CAAC,GAAGc,GAA1C,EAA+Cd,CAAC,EAAhD,EAAoD;AAClD0wG,iBAAW,CAAC1wG,CAAD,CAAX,CAAe0pG,OAAf,CAAuBj5B,QAAvB;AACD,KALmC,CAMpC;;;AACAzwE,KAAC,GAAG,CAAJ;;AACA,WAAOA,CAAC,GAAG0wG,WAAW,CAACzwG,MAAvB,EAA+B;AAC7B,UAAIywG,WAAW,CAAC1wG,CAAD,CAAX,CAAe6oG,UAAnB,EAA+B;AAC7B6H,mBAAW,CAACpjD,MAAZ,CAAmBttD,CAAnB,EAAsB,CAAtB;AACD,OAFD,MAEO;AACLA,SAAC;AACF;AACF;;AACD4O,SAAK,CAACsnB,QAAN;AACD,GAtQ2E,CAwQ5E;AACA;;;AACA,WAASk7E,SAAT,CAAmB3lE,GAAnB,EAAwBr7B,EAAxB,EAA4B;AAC1Bq7B,OAAG,GAAGsyB,oBAAC,CAAC57D,MAAF,CAAS,EAAT,EAAaspC,GAAb,CAAN;;AACA,SAAK,IAAI9+B,CAAT,IAAc8+B,GAAd,EAAmB;AACjB,UAAIA,GAAG,CAACloC,cAAJ,CAAmBoJ,CAAnB,CAAJ,EAA2B8+B,GAAG,CAAC9+B,CAAD,CAAH,GAASyD,EAAE,CAACzD,CAAD,EAAI8+B,GAAG,CAAC9+B,CAAD,CAAP,CAAX;AAC5B;;AACD,WAAO8+B,GAAP;AACD,GAhR2E,CAkR5E;AACA;AACA;;;AACA,WAAS4lE,oBAAT,CAA8BjnF,UAA9B,EAA0CtmB,QAA1C,EAAoD;AAClD,QAAI,CAAC0vE,gBAAL,EAAuB,OAAOppD,UAAP;AACvB,WAAOgnF,SAAS,CAAChnF,UAAD,EAAa,UAAShO,GAAT,EAAcrc,KAAd,EAAqB;AAChD,aAAOyzE,gBAAgB,CAACK,qBAAjB,CAAuC9zE,KAAvC,EAA8C+D,QAAQ,CAACsY,GAAD,CAAR,IAAiBtY,QAAQ,CAACsY,GAAD,CAAR,CAAcvK,QAA7E,CAAP;AACD,KAFe,CAAhB;AAGD,GA1R2E,CA4R5E;AACA;AACA;;;AACA,WAASy/F,sBAAT,CAAgClnF,UAAhC,EAA4CtmB,QAA5C,EAAsD;AACpD,QAAI,CAAC0vE,gBAAL,EAAuB,OAAOppD,UAAP;AACvB,WAAOgnF,SAAS,CAAChnF,UAAD,EAAa,UAAShO,GAAT,EAAcrc,KAAd,EAAqB;AAChD,aAAOyzE,gBAAgB,CAACM,uBAAjB,CAAyC/zE,KAAzC,EAAgD+D,QAAQ,CAACsY,GAAD,CAAR,IAAiBtY,QAAQ,CAACsY,GAAD,CAAR,CAAcvK,QAA/E,CAAP;AACD,KAFe,CAAhB;AAGD;AAED;;;;;;;AAMA,MAAI0/F,iCAAiC,GAAI,YAAW;AAClD,QAAIC,OAAO,GAAG,CAAC;AACbC,YAAM,EAAE,kBADK;AAEbC,cAAQ,EAAE,SAFG;AAGbC,iBAAW,EAAE;AAHA,KAAD,EAIX;AACDF,YAAM,EAAE,wBADP;AAEDC,cAAQ,EAAE,eAFT;AAGDC,iBAAW,EAAE;AAHZ,KAJW,CAAd;AAUA,WAAO,UAAS9/B,OAAT,EAAkB;AACvB,UAAI7xE,CAAJ,EAAOogB,CAAP,EAAUwxF,MAAV;;AACA,WAAK5xG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwxG,OAAO,CAACvxG,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnCogB,SAAC,GAAGoxF,OAAO,CAACxxG,CAAD,CAAX;AACAogB,SAAC,CAACvf,GAAF,GAAQy9C,MAAM,CAACl+B,CAAC,CAACqxF,MAAH,CAAN,EAAR;AACD;;AAED5/B,aAAO;;AAEP,WAAK7xE,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwxG,OAAO,CAACvxG,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnCogB,SAAC,GAAGoxF,OAAO,CAACxxG,CAAD,CAAX;AACA4xG,cAAM,GAAGtzD,MAAM,CAACl+B,CAAC,CAACqxF,MAAH,CAAN,EAAT;;AACA,YAAIG,MAAM,GAAGxxF,CAAC,CAACvf,GAAf,EAAoB;AAClB00B,kBAAQ,CAACnV,CAAC,CAACsxF,QAAH,CAAR;AACD,SAFD,MAEO,IAAIE,MAAM,GAAGxxF,CAAC,CAACvf,GAAf,EAAoB;AACzB00B,kBAAQ,CAACnV,CAAC,CAACuxF,WAAH,CAAR;AACD;AACF;AACF,KAlBD;AAmBD,GA9BuC,EAAxC;AAgCA;;;;;;;;;;AASA,WAASE,cAAT,GAA0B;AACxBvzD,UAAM,CAACi0C,4BAAP;AACAj0C,UAAM,CAAC69C,kBAAP,CAA0B3nB,UAA1B,EAFwB,CAGxB;AACA;;AACAluB,eAAW,GAAGhI,MAAM,CAAC2gD,kBAAP,CAA0B,gBAA1B,CAAd;AACA6S,mBAAe,CAACt9B,UAAU,CAAC51B,KAAZ,CAAf;AACAmzD,yBAAqB,CAACv9B,UAAU,CAACwM,WAAZ,EAAyBxM,UAAU,CAAC51B,KAApC,CAArB;AACAozD,2BAAuB;AACxB,GA9V2E,CAgW5E;;;AACA,WAASF,eAAT,CAAyBlzD,KAAzB,EAAgC;AAC9B,QAAIzwB,CAAC,GAAGmwB,MAAM,CAAC0B,gBAAP,EAAR;AAAA,QACEhgD,CADF;AAAA,QAEEgD,IAFF;AAAA,QAGEszF,KAHF;AAAA,QAIE2b,QAJF,CAD8B,CAO9B;AACA;AACA;AACA;;AAEAnB,aAAS,CAAC7wG,MAAV,GAAmBkuB,CAAnB;;AAEA,SAAKnuB,CAAC,GAAG,CAAJ,EAAOmuB,CAAZ,EAAenuB,CAAC,GAAGmuB,CAAnB,EAAsBnuB,CAAC,EAAvB,EAA2B;AACzB,UAAI,CAAC8wG,SAAS,CAAC9wG,CAAD,CAAd,EAAmB;AACjB8wG,iBAAS,CAAC9wG,CAAD,CAAT,GAAe;AACb0C,aAAG,EAAE1C;AADQ,SAAf;AAGD;;AACDiyG,cAAQ,GAAGnB,SAAS,CAAC9wG,CAAD,CAApB;;AAEA,WAAKgD,IAAL,IAAa47C,KAAb,EAAoB;AAClB,YAAIA,KAAK,CAACr7C,cAAN,CAAqBP,IAArB,CAAJ,EAAgC;AAC9BivG,kBAAQ,CAACjvG,IAAD,CAAR,GAAiB47C,KAAK,CAAC57C,IAAD,CAAL,CAAYhD,CAAZ,CAAjB;AACD;AACF;;AAEDiyG,cAAQ,CAACC,SAAT,GAAqB5f,iBAAgB,CAACvb,WAAjB,CAA6Bn4B,KAAK,CAACttC,OAAN,CAActR,CAAd,CAA7B,CAArB;;AACA,UAAIiyG,QAAQ,CAACC,SAAb,EAAwB;AACtB5b,aAAK,GAAGhE,iBAAgB,CAACzb,qBAAjB,CAAuCj4B,KAAK,CAACttC,OAAN,CAActR,CAAd,CAAvC,CAAR;AACAiyG,gBAAQ,CAACpjC,MAAT,GAAkBynB,KAAK,CAACznB,MAAxB;AACAojC,gBAAQ,CAAClwF,KAAT,GAAiBu0E,KAAK,CAAC3f,YAAvB;AACD;AACF;AACF;;AAED,WAASo7B,qBAAT,CAA+B/wB,WAA/B,EAA4CpiC,KAA5C,EAAmD;AACjD,QAAIzwB,CAAC,GAAGmwB,MAAM,CAACw9C,sBAAP,EAAR;AAAA,QACEqW,QADF;AAAA,QACYnvG,IADZ;AAAA,QACkBhD,CADlB;AAGA+wG,mBAAe,CAAC9wG,MAAhB,GAAyBkuB,CAAzB;;AAEA,SAAKnuB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmuB,CAAhB,EAAmBnuB,CAAC,EAApB,EAAwB;AACtB,UAAI,CAAC+wG,eAAe,CAAC/wG,CAAD,CAApB,EAAyB;AACvB+wG,uBAAe,CAAC/wG,CAAD,CAAf,GAAqB;AACnB0C,aAAG,EAAE1C;AADc,SAArB;AAGD;;AACDmyG,cAAQ,GAAGpB,eAAe,CAAC/wG,CAAD,CAA1B;;AAEA,WAAKgD,IAAL,IAAag+E,WAAb,EAA0B;AACxBmxB,gBAAQ,CAACnvG,IAAD,CAAR,GAAiBg+E,WAAW,CAACh+E,IAAD,CAAX,CAAkBhD,CAAlB,CAAjB;AACD,OAVqB,CAYtB;;;AACAmyG,cAAQ,CAAC34F,EAAT,GAAcolC,KAAK,CAACz9C,CAAN,CAAQgxG,QAAQ,CAACp4F,KAAjB,CAAd;AACAo4F,cAAQ,CAAC14F,EAAT,GAAcmlC,KAAK,CAACloC,CAAN,CAAQy7F,QAAQ,CAACp4F,KAAjB,CAAd;AACAo4F,cAAQ,CAACz4F,EAAT,GAAcklC,KAAK,CAACz9C,CAAN,CAAQgxG,QAAQ,CAACn4F,KAAjB,CAAd;AACAm4F,cAAQ,CAACx4F,EAAT,GAAcilC,KAAK,CAACloC,CAAN,CAAQy7F,QAAQ,CAACn4F,KAAjB,CAAd;AACD;AACF;;AAED,WAASg4F,uBAAT,GAAmC;AACjC;AACA;AACA;AACA,QAAI,CAACv3F,aAAa,CAACxa,MAAf,IAAyB,CAAC2O,KAAK,CAACwb,UAAN,CAAiBnV,iBAA/C,EAAkE;AAClE,QAAIjV,CAAJ,EAAOc,GAAP,EAAYub,CAAZ;;AACA,SAAKrc,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG2Z,aAAa,CAACxa,MAAhC,EAAwCD,CAAC,GAAGc,GAA5C,EAAiDd,CAAC,EAAlD,EAAsD;AACpDqc,OAAC,GAAG5B,aAAa,CAACza,CAAD,CAAjB;AACAs+C,YAAM,CAACmgD,iBAAP,CAAyBpiF,CAAC,CAAClb,CAA3B,EAA8Bkb,CAAC,CAAC3F,CAAhC,EAAmC2F,CAAnC;AACD;AACF;AAED;;;;;AAGA,WAAS+1F,aAAT,GAAyB;AACvB,QAAItxG,GAAG,GAAGw9C,MAAM,CAACo9C,mBAAP,EAAV;AAAA,QACE98E,EAAE,GAAGxd,IAAI,CAACwqC,KAAL,CAAWxqC,IAAI,CAACyO,MAAL,KAAgB/O,GAA3B,CADP;;AAEA,WAAOwxF,iBAAgB,CAACvb,WAAjB,CAA6Bn4D,EAA7B,CAAP,EAAyC;AACvCA,QAAE,GAAGxd,IAAI,CAACwqC,KAAL,CAAWxqC,IAAI,CAACyO,MAAL,KAAgB/O,GAA3B,CAAL;AACD;;AACD,WAAO8d,EAAP;AACD;AAED;;;;;;AAIA,WAASyzF,gBAAT,GAA4B;AAC1B,QAAIC,kBAAJ,EACEC,SADF,EAEEvyG,CAFF,EAEKc,GAFL,CAD0B,CAK1B;AACA;AACA;AAEA;;AACA,SAAKd,CAAC,GAAGs+C,MAAM,CAACo9C,mBAAP,EAAT,EAAuC17F,CAAC,IAAIsyF,iBAAgB,CAAC/b,aAA7D,EAA4Ev2E,CAAC,EAA7E,EAAiF;AAC/E4O,WAAK,CAAC2oF,UAAN,CAAiB;AACf5rF,UAAE,EAAE3L;AADW,OAAjB;AAGD,KAdyB,CAgB1B;;;AACA,SAAKA,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG0xG,gBAAU,CAACvyG,MAA7B,EAAqCD,CAAC,GAAGc,GAAzC,EAA8Cd,CAAC,EAA/C,EAAmD;AACjD;AACA;AACA;AACAsyG,wBAAkB,GAAG,KAAKlxG,IAAI,CAACg6C,GAAL,CAASo3D,gBAAU,CAACxyG,CAAD,CAAV,CAAcyyG,MAAd,GAAuBD,gBAAU,CAAC,CAAD,CAAV,CAAcC,MAA9C,EAAsD,eAAtD,CAA1B;AACAF,eAAS,GAAGx0F,eAAK,CAACtX,OAAN,CAAc6rG,kBAAkB,GAAG,EAAnC,EAAuC;AACjDpqG,YAAI,EAAE6V,eAAK,CAACxX,IAAN,CAAWS,QADgC;AAEjDmB,UAAE,EAAE4V,eAAK,CAACxX,IAAN,CAAWQ;AAFkC,OAAvC,CAAZ,CALiD,CASjD;AACA;AACA;;AACAu3C,YAAM,CAACs4C,oBAAP,CAA4BtE,iBAAgB,CAAChc,cAAjB,GAAkCt2E,CAA9D,EAAiE;AAC/D2X,YAAI,EAAE66F,gBAAU,CAACxyG,CAAD,CAAV,CAAc0yG,SAD2C;AAE/D56F,aAAK,EAAEy6F,SAFwD,CAG7D;AACA;AACA;;AAL6D,OAAjE;AAOD;AACF,GAje2E,CAme5E;AACA;AACA;AACA;AACA;;AAEA;;;;;AAGA3jG,OAAK,CAACgpB,WAAN,GAAoB,YAAW;AAC7B,WAAOy5C,WAAW,CAACtsD,GAAZ,CAAgB,SAAhB,CAAP;AACD,GAFD;AAIA;;;;;;AAIAnW,OAAK,CAAC+jG,gBAAN,GAAyB,YAAW;AAClC,WAAOthC,WAAW,CAACtsD,GAAZ,CAAgB,cAAhB,CAAP;AACD,GAFD;AAIA;;;;;AAGAnW,OAAK,CAACse,KAAN,GAAc,YAAW;AACvB,WAAOmkD,WAAW,CAACtsD,GAAZ,CAAgB,QAAhB,CAAP;AACD,GAFD;;AAIAnW,OAAK,CAACogC,SAAN,GAAkB,YAAW;AAC3B,WAAOuhE,OAAP;AACD,GAFD;;AAIA3hG,OAAK,CAACgkG,IAAN,GAAa,UAASp8C,QAAT,EAAmB;AAC9B,QAAI,CAACvyD,SAAS,CAAChE,MAAf,EAAuB;AACrBu2D,cAAQ,GAAG,CAAX;AACD;;AACD,QAAI,CAAC5nD,KAAK,CAACk6B,SAAN,EAAL,EAAwB;AACtBl6B,WAAK,CAAC89B,IAAN;AACD;;AACD6jE,WAAO,GAAG,KAAV;AACAgB,qCAAiC,CAAC,YAAW;AAC3ClgC,iBAAW,CAAC6E,WAAZ,CAAwB1f,QAAxB;AACAq7C,oBAAc;AACdjjG,WAAK,CAACujE,yBAAN;AACA58C,cAAQ,CAACq9E,IAAT;AACD,KALgC,CAAjC;AAMA,WAAOvhC,WAAW,CAACtsD,GAAZ,CAAgB,SAAhB,CAAP;AACD,GAfD;;AAiBAnW,OAAK,CAACsgC,QAAN,GAAiB,UAASruC,GAAT,EAAc;AAC7B,QAAI,CAACoD,SAAS,CAAChE,MAAf,EAAuB;AACrBY,SAAG,GAAG,CAAN;AACD;;AACD,QAAI,CAAC+N,KAAK,CAACk6B,SAAN,EAAL,EAAwB;AACtBl6B,WAAK,CAAC89B,IAAN;AACD;;AACD6jE,WAAO,GAAG,KAAV;AACAgB,qCAAiC,CAAC,YAAW;AAC3C,UAAIvxG,CAAJ,EAAOs5B,KAAP;AACAt5B,OAAC,GAAG,CAAC,CAAL;;AACA,aAAO,EAAEA,CAAF,GAAMa,GAAb,EAAkB;AAChBy4B,aAAK,GAAG+3C,WAAW,CAACtsD,GAAZ,CAAgB,OAAhB,CAAR;;AACA,YAAIuU,KAAK,GAAG,CAAZ,EAAe;AACb+3C,qBAAW,CAAC2E,gBAAZ;AACA67B,wBAAc;AACdjjG,eAAK,CAACujE,yBAAN;AACA58C,kBAAQ,CAAC2Z,QAAT;AACD;AACF;AACF,KAZgC,CAAjC;AAaA,WAAOmiC,WAAW,CAACtsD,GAAZ,CAAgB,SAAhB,CAAP;AACD,GAtBD;;AAwBAnW,OAAK,CAACmgC,WAAN,GAAoB,UAASluC,GAAT,EAAc;AAChC,QAAI,CAACoD,SAAS,CAAChE,MAAf,EAAuB;AACrBY,SAAG,GAAG,CAAN;AACD;;AACD,QAAI,CAAC+N,KAAK,CAACk6B,SAAN,EAAL,EAAwB;AACtBl6B,WAAK,CAAC89B,IAAN;AACD;;AACD6kE,qCAAiC,CAAC,YAAW;AAC3C,UAAIvxG,CAAJ,EAAOs5B,KAAP,EAAcv6B,IAAd;AACAiB,OAAC,GAAG,CAAC,CAAL;;AACA,aAAO,EAAEA,CAAF,GAAMa,GAAb,EAAkB;AAChBy4B,aAAK,GAAG+3C,WAAW,CAACtsD,GAAZ,CAAgB,OAAhB,CAAR;AACAhmB,YAAI,GAAGsyE,WAAW,CAACtsD,GAAZ,CAAgB,QAAhB,CAAP;;AACA,YAAIuU,KAAK,GAAGv6B,IAAI,GAAG,CAAnB,EAAsB;AACpBsyE,qBAAW,CAAC4E,gBAAZ;AACA47B,wBAAc;AACdjjG,eAAK,CAACujE,yBAAN;AACA58C,kBAAQ,CAACwZ,WAAT;AACD,SALD,MAKO;AACLngC,eAAK,CAACugC,IAAN;AACD;AACF;AACF,KAfgC,CAAjC;AAgBA,WAAOkiC,WAAW,CAACtsD,GAAZ,CAAgB,SAAhB,CAAP;AACD,GAxBD;AA0BA;;;;;;AAIA,WAAS8tF,oBAAT,CAA8BzoF,UAA9B,EAA0C;AACxC,QAAIvc,IAAI,GAAGuc,UAAU,CAACvc,IAAtB;AAAA,QACEC,IAAI,GAAGsc,UAAU,CAACtc,IADpB;AAAA,QAEEJ,IAAI,GAAG0c,UAAU,CAAC1c,IAFpB;AAAA,QAGEE,IAAI,GAAGwc,UAAU,CAACxc,IAHpB;AAKAwc,cAAU,CAACvc,IAAX,GAAkBA,IAAI,IAAI,IAAR,GAAeA,IAAf,GAAsB,CAAxC;AACAuc,cAAU,CAAC1c,IAAX,GAAkBA,IAAI,IAAI,IAAR,GAAeA,IAAf,GAAsB0c,UAAU,CAAChf,KAAnD;AACAgf,cAAU,CAACtc,IAAX,GAAkBA,IAAI,IAAI,IAAR,GAAeA,IAAf,GAAsB,CAAxC;AACAsc,cAAU,CAACxc,IAAX,GAAkBA,IAAI,IAAI,IAAR,GAAeA,IAAf,GAAsBwc,UAAU,CAAC/e,MAAnD;AACD;AAED;;;;;AAGA,WAASynG,gBAAT,CAA0B1oF,UAA1B,EAAsC8mF,gBAAtC,EAAwD;AACtD5yD,UAAM,CAAC83C,aAAP,CAAqB,CAAChsE,UAAU,CAACvc,IAAZ,EAAkBuc,UAAU,CAACtc,IAA7B,EAAmCsc,UAAU,CAAC1c,IAA9C,EAAoD0c,UAAU,CAACxc,IAA/D,CAArB;;AAEA,QAAIsjG,gBAAgB,CAACj0F,eAArB,EAAsC;AACpCmN,gBAAU,CAAChX,kBAAX,GAAgC,IAAhC;AACAkrC,YAAM,CAACi2C,SAAP,CAAiB,IAAIl2C,gBAAJ,CAAoBC,MAApB,EAA4B4yD,gBAAgB,CAACj0F,eAA7C,CAAjB;AACD,KAHD,MAGO;AACLmN,gBAAU,CAAChX,kBAAX,GAAgC,KAAhC;AACD;;AAED,QAAI89F,gBAAgB,CAACx1F,iBAArB,EAAwC;AACtC0O,gBAAU,CAAC/W,oBAAX,GAAkC,IAAlC;AACAirC,YAAM,CAACi2C,SAAP,CAAiB,IAAIiW,iBAAJ,CAAsBlsD,MAAtB,EAA8B4yD,gBAAgB,CAACx1F,iBAA/C,CAAjB;AACD,KAHD,MAGO;AACL0O,gBAAU,CAAC/W,oBAAX,GAAkC,KAAlC;AACD,KAfqD,CAiBtD;AACA;;;AACAwrC,YAAQ,GAAGP,MAAM,CAACO,QAAlB;AACAmiC,eAAW,GAAG1iC,MAAM,CAAC0iC,WAArB;AACAc,gBAAY,GAAGxjC,MAAM,CAACwjC,YAAtB;AACAP,cAAU,GAAGjjC,MAAM,CAACijC,UAApB;AACAgC,aAAS,GAAGjlC,MAAM,CAACilC,SAAnB;AACAe,UAAM,GAAGhmC,MAAM,CAACgmC,MAAhB;AACAr+D,SAAK,GAAGq4B,MAAM,CAACr4B,KAAf;AACAw/D,kBAAc,GAAGnnC,MAAM,CAACmnC,cAAxB;AACD;;AAED72E,OAAK,CAACmkG,cAAN,GAAuB,UAASC,SAAT,EAAoB;AACzC,QAAIhzG,CAAJ,EAAOa,GAAP,EAAYmC,IAAZ,EAAkBiwG,YAAlB,CADyC,CAGzC;;AACArkG,SAAK,CAACqnB,UAAN;;AAEA,QAAI+8E,SAAS,KAAK9zG,SAAlB,EAA6B;AAC3B;AACA;AACA0P,WAAK,CAAC2oF,UAAN,CAAiB;AACf5rF,UAAE,EAAE;AADW,OAAjB;AAGAiD,WAAK,CAACsnB,QAAN;AACA;AACD,KAdwC,CAgBzC;AACA;AACA;AACA;;;AACA,SAAKl2B,CAAC,GAAG,CAAJ,EAAOa,GAAG,GAAGmyG,SAAS,CAACr7F,IAAV,CAAe1X,MAAjC,EAAyCD,CAAC,GAAGa,GAA7C,EAAkDb,CAAC,EAAnD,EAAuD;AACrDizG,kBAAY,GAAG,EAAf;;AACA,WAAKjwG,IAAL,IAAagwG,SAAb,EAAwB;AACtB,YAAIA,SAAS,CAACzvG,cAAV,CAAyBP,IAAzB,CAAJ,EAAoC;AAClCiwG,sBAAY,CAACjwG,IAAD,CAAZ,GAAqBgwG,SAAS,CAAChwG,IAAD,CAAT,CAAgBhD,CAAhB,CAArB;AACD;AACF;;AACD4O,WAAK,CAAC2oF,UAAN,CAAiB0b,YAAjB;AACD,KA5BwC,CA8BzC;;;AACArkG,SAAK,CAACsnB,QAAN;AAEA,WAAOtnB,KAAP;AACD,GAlCD;AAoCA;;;;;;AAKAA,OAAK,CAACskG,WAAN,GAAoB,UAASlhF,MAAT,EAAiB;AACnC;AACA,QAAIzjB,OAAO,GAAG;AACV;AACA43F,mBAAa,EAAE;AAFL,KAAd;AAAA,QAIEnmG,CAJF;AAAA,QAIKa,GAJL;AAAA,QAIUmC,IAJV;AAAA,QAIgBmwG,SAJhB;AAMA59E,YAAQ,CAAC4zC,SAAT,GARmC,CAUnC;;AACAv6D,SAAK,CAACqnB,UAAN;AAEAp1B,OAAG,GAAGmxB,MAAM,CAAC7wB,CAAP,CAASlB,MAAf,CAbmC,CAenC;AACA;AACA;;AACA,SAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGa,GAAhB,EAAqBb,CAAC,EAAtB,EAA0B;AACxBmzG,eAAS,GAAG,EAAZ;;AACA,WAAKnwG,IAAL,IAAagvB,MAAb,EAAqB;AACnB,YAAIA,MAAM,CAACzuB,cAAP,CAAsBP,IAAtB,CAAJ,EAAiC;AAC/BmwG,mBAAS,CAACnwG,IAAD,CAAT,GAAkBgvB,MAAM,CAAChvB,IAAD,CAAN,CAAahD,CAAb,CAAlB;AACD;AACF;;AACD4O,WAAK,CAACuoF,OAAN,CAAcgc,SAAd,EAAyB5kG,OAAzB;AACD,KA1BkC,CA4BnC;;;AACAK,SAAK,CAACsnB,QAAN,GA7BmC,CA+BnC;;AACAX,YAAQ,CAACnrB,KAAT;AACD,GAjCD;;AAmCAwE,OAAK,CAACwkG,iBAAN,GAA0B,UAASC,YAAT,EAAuB;AAC/C,QAAIxyG,GAAG,GAAGwyG,YAAY,CAACp5F,QAAb,CAAsBha,MAAhC;AAAA,QACED,CADF;AAAA,QACKgD,IADL;AAAA,QACWswG,eADX,CAD+C,CAI/C;;AACA1kG,SAAK,CAACqnB,UAAN,GAL+C,CAO/C;AACA;AACA;AACA;;AACA,SAAKj2B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGa,GAAhB,EAAqBb,CAAC,EAAtB,EAA0B;AACxBszG,qBAAe,GAAG,EAAlB;;AACA,WAAKtwG,IAAL,IAAaqwG,YAAb,EAA2B;AACzB,YAAIA,YAAY,CAAC9vG,cAAb,CAA4BP,IAA5B,CAAJ,EAAuC;AACrCswG,yBAAe,CAACtwG,IAAD,CAAf,GAAwBqwG,YAAY,CAACrwG,IAAD,CAAZ,CAAmBhD,CAAnB,CAAxB;AACD;AACF;;AACD4O,WAAK,CAACklF,aAAN,CAAoBwf,eAApB;AACD,KAnB8C,CAqB/C;;;AACA1kG,SAAK,CAACsnB,QAAN;AAEA,WAAOtnB,KAAP;AACD,GAzBD;;AA2BAA,OAAK,CAACgN,kBAAN,GAA2B,UAAS23F,aAAT,EAAwB;AACjD,QAAI1yG,GAAG,GAAG0yG,aAAa,CAACt5F,QAAd,CAAuBha,MAAjC;AAAA,QACED,CADF;AAAA,QACKgD,IADL;AAAA,QACWwwG,gBADX,CADiD,CAIjD;;AACA5kG,SAAK,CAACqnB,UAAN,GALiD,CAOjD;AACA;AACA;AACA;;AACA,SAAKj2B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGa,GAAhB,EAAqBb,CAAC,EAAtB,EAA0B;AACxBwzG,sBAAgB,GAAG,EAAnB;;AACA,WAAKxwG,IAAL,IAAauwG,aAAb,EAA4B;AAC1B,YAAIA,aAAa,CAAChwG,cAAd,CAA6BP,IAA7B,CAAJ,EAAwC;AACtCwwG,0BAAgB,CAACxwG,IAAD,CAAhB,GAAyBuwG,aAAa,CAACvwG,IAAD,CAAb,CAAoBhD,CAApB,CAAzB;AACD;AACF;;AACD4O,WAAK,CAAC6oF,cAAN,CAAqB+b,gBAArB;AACD,KAnBgD,CAqBjD;;;AACA5kG,SAAK,CAACsnB,QAAN;AAEA,WAAOtnB,KAAP;AACD,GAzBD;;AA2BAA,OAAK,CAAC6kG,gBAAN,GAAyB,UAASC,WAAT,EAAsB;AAC7C,QAAI7yG,GAAG,GAAG6yG,WAAW,CAACp5F,SAAZ,CAAsBra,MAAhC;AAAA,QACED,CADF;AAAA,QACKgD,IADL;AAAA,QACW2wG,eADX,CAD6C,CAI7C;AACA;AACA;AACA;;AACA,SAAK3zG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGa,GAAhB,EAAqBb,CAAC,EAAtB,EAA0B;AACxB2zG,qBAAe,GAAG,EAAlB;;AACA,WAAK3wG,IAAL,IAAa0wG,WAAb,EAA0B;AACxB,YAAIA,WAAW,CAACnwG,cAAZ,CAA2BP,IAA3B,CAAJ,EAAsC;AACpC2wG,yBAAe,CAAC3wG,IAAD,CAAf,GAAwB0wG,WAAW,CAAC1wG,IAAD,CAAX,CAAkBhD,CAAlB,CAAxB;AACD;AACF;;AACD4O,WAAK,CAAC4oF,YAAN,CAAmBmc,eAAnB;AACD;;AAED,WAAO/kG,KAAP;AACD,GAnBD;;AAqBAA,OAAK,CAACglG,eAAN,GAAwB,UAASC,UAAT,EAAqB;AAC3C,QAAIC,YAAY,GAAGD,UAAU,CAAC1yG,CAAX,CAAalB,MAAhC;AAAA,QACED,CADF;AAAA,QACKgD,IADL;AAAA,QACW+wG,aADX,CAD2C,CAI3C;AACA;AACA;AACA;;AACA,SAAK/zG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG8zG,YAAhB,EAA8B9zG,CAAC,EAA/B,EAAmC;AACjC+zG,mBAAa,GAAG,EAAhB;;AACA,WAAK/wG,IAAL,IAAa6wG,UAAb,EAAyB;AACvB,YAAIA,UAAU,CAACtwG,cAAX,CAA0BP,IAA1B,CAAJ,EAAqC;AACnC+wG,uBAAa,CAAC/wG,IAAD,CAAb,GAAsB6wG,UAAU,CAAC7wG,IAAD,CAAV,CAAiBhD,CAAjB,CAAtB;AACD;AACF;;AACD4O,WAAK,CAACqpF,WAAN,CAAkB8b,aAAlB;AACD;;AAED,WAAOnlG,KAAP;AACD,GAnBD;;AAqBAA,OAAK,CAAColG,YAAN,GAAqB,UAASC,OAAT,EAAkB;AACrC,QAAIC,SAAS,GAAGD,OAAO,CAAC9yG,CAAR,CAAUlB,MAA1B;AAAA,QACED,CADF;AAAA,QACKgD,IADL;AAAA,QACWmxG,UADX,CADqC,CAIrC;;AACA,SAAKn0G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGk0G,SAAhB,EAA2Bl0G,CAAC,EAA5B,EAAgC;AAC9Bm0G,gBAAU,GAAG,EAAb;;AACA,WAAKnxG,IAAL,IAAaixG,OAAb,EAAsB;AACpB,YAAIA,OAAO,CAAC1wG,cAAR,CAAuBP,IAAvB,CAAJ,EAAkC;AAChCmxG,oBAAU,CAACnxG,IAAD,CAAV,GAAmBixG,OAAO,CAACjxG,IAAD,CAAP,CAAchD,CAAd,CAAnB;AACD;AACF;;AACD4O,WAAK,CAACupF,QAAN,CAAegc,UAAf;AACD;;AAED,WAAOvlG,KAAP;AACD,GAhBD;;AAkBAA,OAAK,CAACwlG,WAAN,GAAoB,UAASC,MAAT,EAAiB;AACnC,QAAIC,QAAQ,GAAGD,MAAM,CAAC76F,EAAP,CAAUvZ,MAAzB;AAAA,QACED,CADF;AAAA,QACKgD,IADL;AAAA,QACWuxG,SADX,CADmC,CAInC;;AACA,SAAKv0G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGs0G,QAAhB,EAA0Bt0G,CAAC,EAA3B,EAA+B;AAC7Bu0G,eAAS,GAAG,EAAZ;;AACA,WAAKvxG,IAAL,IAAaqxG,MAAb,EAAqB;AACnB,YAAIA,MAAM,CAAC9wG,cAAP,CAAsBP,IAAtB,CAAJ,EAAiC;AAC/BuxG,mBAAS,CAACvxG,IAAD,CAAT,GAAkBqxG,MAAM,CAACrxG,IAAD,CAAN,CAAahD,CAAb,CAAlB;AACD;AACF;;AACD4O,WAAK,CAAC0pF,OAAN,CAAcic,SAAd;AACD;;AAED,WAAO3lG,KAAP;AACD,GAhBD;;AAkBAA,OAAK,CAAC4lG,oBAAN,GAA6B,UAASC,QAAT,EAAmB;AAC9C7lG,SAAK,CAAC43F,KAAN,CAAY,YAAW;AACrB,UAAIvhF,KAAK,GAAGwvF,QAAQ,CAAC/5F,SAAT,CAAmBza,MAA/B;AAAA,UACED,CADF;AAAA,UACKgD,IADL;AAAA,UACW0xG,WADX;;AAGA,WAAK10G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGilB,KAAhB,EAAuBjlB,CAAC,EAAxB,EAA4B;AAC1B00G,mBAAW,GAAG,EAAd;;AACA,aAAK1xG,IAAL,IAAayxG,QAAb,EAAuB;AACrB,cAAIA,QAAQ,CAAClxG,cAAT,CAAwBP,IAAxB,CAAJ,EAAmC;AACjC0xG,uBAAW,CAAC1xG,IAAD,CAAX,GAAoByxG,QAAQ,CAACzxG,IAAD,CAAR,CAAehD,CAAf,CAApB;AACD;AACF;;AACD4O,aAAK,CAAC4pF,gBAAN,CAAuBkc,WAAvB;AACD;AACF,KAbD;AAcA,WAAO9lG,KAAP;AACD,GAhBD,CAt0B4E,CAw1B5E;AACA;;;AACAA,OAAK,CAACxE,KAAN,GAAc,YAAW;AACvBmrB,YAAQ,CAAC4zC,SAAT;AACA4G,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC63C,OAAP,CAAe,CAAf;AACA9kB,eAAW,CAAC0E,mBAAZ;AACAhG,mBAAe,CAAC3C,0BAAhB;AACAx+D,SAAK,CAACwjE,wBAAN;AACA78C,YAAQ,CAACnrB,KAAT;AACD,GARD;;AAUAwE,OAAK,CAACm7E,YAAN,GAAqB,YAAW;AAC9B,WAAOzrC,MAAM,CAACyrC,YAAP,EAAP;AACD,GAFD;;AAIAn7E,OAAK,CAAC2uF,oBAAN,GAA6B,UAASv9F,CAAT,EAAY;AACvC,WAAOs+C,MAAM,CAACi/C,oBAAP,CAA4Bv9F,CAA5B,CAAP;AACD,GAFD;AAIA;;;;;;;;AAOA4O,OAAK,CAAC+lG,aAAN,GAAsB,UAAS/1F,EAAT,EAAa7H,MAAb,EAAqB;AACzC,QAAI6H,EAAE,IAAI,IAAV,EAAgBA,EAAE,GAAGwzF,aAAa,EAAlB;AAChB,QAAIr7F,MAAM,IAAI,IAAd,EAAoBA,MAAM,GAAG,CAAT;AAEpB,QAAI3L,KAAK,GAAGwD,KAAK,CAACmW,GAAN,CAAU,OAAV,CAAZ;AAAA,QACE1Z,MAAM,GAAGuD,KAAK,CAACmW,GAAN,CAAU,QAAV,CADX;AAAA,QAEElX,IAAI,GAAGe,KAAK,CAACmW,GAAN,CAAU,MAAV,CAFT;AAAA,QAGEjX,IAAI,GAAGc,KAAK,CAACmW,GAAN,CAAU,MAAV,CAHT;AAAA,QAIExN,MAAM,GAAG+mC,MAAM,CAACm9C,kBAAP,CAA0B78E,EAA1B,CAJX;AAAA,QAKEzd,CALF;AAAA,QAMEuV,CANF;AAAA,QAOEsjC,GAPF;AAAA,QAQE46D,QAAQ,GAAG,CARb;AAAA,QASE;AACAC,YAAQ,GAAG,EAVb;;AAYA,OAAG;AACD1zG,OAAC,GAAG0M,IAAI,GAAGzM,IAAI,CAACyO,MAAL,KAAgBzE,KAAvB,GAA+B,IAAImM,MAAvC;AACAb,OAAC,GAAG5I,IAAI,GAAG1M,IAAI,CAACyO,MAAL,KAAgBxE,MAAvB,GAAgC,IAAIkM,MAAxC,CAFC,CAID;AACA;;AACAyiC,SAAG,GAAGsE,MAAM,CAAC4/C,qBAAP,CAA6Bt/E,EAA7B,EAAiCzd,CAAjC,EAAoCuV,CAApC,EAAuC,CAAvC,EAA0C,CAA1C,EAA6CK,MAA7C,CAAN;AACA,UAAIijC,GAAG,IAAIprC,KAAK,CAACuoF,OAAN,CAAc;AACrB7lF,eAAO,EAAEsN,EADY;AAErBzd,SAAC,EAAE64C,GAAG,CAAC,CAAD,CAFe;AAGrBtjC,SAAC,EAAEsjC,GAAG,CAAC,CAAD,CAHe;AAIrBjjC,cAAM,EAAEA;AAJa,OAAd,CAAX,EAKM,OAAO,IAAP;AACP,KAbD,QAaS,EAAE69F,QAAF,GAAaC,QAbtB;;AAeA,WAAO,KAAP;AACD,GAhCD;AAkCA;;;;;;;;;;;;AAcAjmG,OAAK,CAACuoF,OAAN,GAAgB,UAASn+D,KAAT,EAAgBzqB,OAAhB,EAAyB;AACvC,QAAIV,IAAI,GAAGe,KAAK,CAACmW,GAAN,CAAU,MAAV,CAAX;AAAA,QACEjX,IAAI,GAAGc,KAAK,CAACmW,GAAN,CAAU,MAAV,CADT;AAAA,QAEErX,IAAI,GAAGkB,KAAK,CAACmW,GAAN,CAAU,MAAV,CAFT;AAAA,QAGEnX,IAAI,GAAGgB,KAAK,CAACmW,GAAN,CAAU,MAAV,CAHT;AAAA,QAIExN,MAJF;AAMAhJ,WAAO,GAAGA,OAAO,IAAI,EAArB,CAPuC,CASvC;;AACAyqB,SAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAAC2S,IAAxC,EAA8CuiB,KAA9C,CAAR,CAVuC,CAYvC;;AACAzhB,UAAM,GAAG+mC,MAAM,CAACm9C,kBAAP,CAA0BziE,KAAK,CAAC1nB,OAAhC,CAAT;AACA,QAAI0nB,KAAK,CAAC73B,CAAN,GAAW0M,IAAI,GAAG0J,MAAtB,EAA+ByhB,KAAK,CAAC73B,CAAN,GAAU0M,IAAI,GAAG0J,MAAjB;AAC/B,QAAIyhB,KAAK,CAAC73B,CAAN,GAAWuM,IAAI,GAAG6J,MAAtB,EAA+ByhB,KAAK,CAAC73B,CAAN,GAAUuM,IAAI,GAAG6J,MAAjB;AAC/B,QAAIyhB,KAAK,CAACtiB,CAAN,GAAW5I,IAAI,GAAGyJ,MAAtB,EAA+ByhB,KAAK,CAACtiB,CAAN,GAAU5I,IAAI,GAAGyJ,MAAjB;AAC/B,QAAIyhB,KAAK,CAACtiB,CAAN,GAAW9I,IAAI,GAAG2J,MAAtB,EAA+ByhB,KAAK,CAACtiB,CAAN,GAAU9I,IAAI,GAAG2J,MAAjB,CAjBQ,CAmBvC;;AACA,QAAI,CAAChJ,OAAO,CAAC43F,aAAT,IAA0B,CAAC7nD,MAAM,CAACs6C,YAAP,CAAoB5/D,KAAK,CAAC1nB,OAA1B,EAAmC0nB,KAAK,CAAC73B,CAAzC,EAA4C63B,KAAK,CAACtiB,CAAlD,EAAqD,IAArD,EAA2D9H,KAAK,CAACmW,GAAN,CAAU,sBAAV,CAA3D,CAA/B,EAA8H;AAC5H;AACA,aAAO,KAAP;AACD;;AAEDgrD,mBAAe,CAAC5C,yBAAhB;AAEA7uB,UAAM,CAAC64C,OAAP,CAAen+D,KAAf;AAEA+2C,mBAAe,CAAC3C,0BAAhB;AAEA73C,YAAQ,CAAC4hE,OAAT;AAEA,WAAO,IAAP;AACD,GAlCD;;AAoCAvoF,OAAK,CAACwoF,UAAN,GAAmB,UAASp3F,CAAT,EAAY;AAC7B,QAAI80G,iBAAiB,GAAGx2D,MAAM,CAACw9C,sBAAP,EAAxB;AAAA,QACEiZ,iBAAiB,GAAGz2D,MAAM,CAACy9C,uBAAP,EADtB;AAGAhsB,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC84C,UAAP,CAAkBp3F,CAAlB,EAL6B,CAM7B;;AACA8wG,aAAS,CAAC7wG,MAAV,GAAmB,CAAnB;AACA8vE,mBAAe,CAAC3C,0BAAhB,GAR6B,CAU7B;;AACA73C,YAAQ,CAAC6hE,UAAT,GAX6B,CAa7B;AACA;;AACA,QAAI94C,MAAM,CAACw9C,sBAAP,OAAoCgZ,iBAAxC,EAA2D;AACzDv/E,cAAQ,CAACghE,gBAAT;AACD;;AACD,QAAIj4C,MAAM,CAACy9C,uBAAP,OAAqCgZ,iBAAzC,EAA4D;AAC1Dx/E,cAAQ,CAAC6+D,iBAAT;AACD;AACF,GArBD;;AAuBAxlF,OAAK,CAAC2oF,UAAN,GAAmB,UAASv+D,KAAT,EAAgB;AACjC;AACAA,SAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACwN,OAAxC,EAAiD0nB,KAAjD,CAAR,CAFiC,CAGjC;;AACAslB,UAAM,CAACi5C,UAAP,CAAkBv+D,KAAlB;AACD,GALD;;AAOApqB,OAAK,CAACqpF,WAAN,GAAoB,UAASj/D,KAAT,EAAgB;AAClC,QAAIg8E,cAAJ,CADkC,CAElC;;AACAA,kBAAc,GAAGt+E,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACqU,QAAxC,EAAkD6gB,KAAlD,CAAjB,CAHkC,CAIlC;;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC25C,WAAP,CAAmB+c,cAAnB;AACAjlC,mBAAe,CAAC3C,0BAAhB;AACD,GARD;;AAUAx+D,OAAK,CAACspF,cAAN,GAAuB,UAASx1F,GAAT,EAAc;AACnCqtE,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC45C,cAAP,CAAsBx1F,GAAtB;AACAqtE,mBAAe,CAAC3C,0BAAhB;AACD,GAJD;;AAMAx+D,OAAK,CAACupF,QAAN,GAAiB,UAASn/D,KAAT,EAAgB;AAC/B,QAAIg8E,cAAJ,CAD+B,CAE/B;;AACAA,kBAAc,GAAGt+E,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACkV,KAAxC,EAA+CggB,KAA/C,CAAjB,CAH+B,CAI/B;;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC65C,QAAP,CAAgB6c,cAAhB;AACAjlC,mBAAe,CAAC3C,0BAAhB;AACD,GARD;;AAUAx+D,OAAK,CAACwpF,WAAN,GAAoB,UAAS11F,GAAT,EAAc;AAChC,QAAIuyG,iBAAiB,GAAG32D,MAAM,CAAC49C,yBAAP,EAAxB;AAEAnsB,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC85C,WAAP,CAAmB11F,GAAnB;AACAqtE,mBAAe,CAAC3C,0BAAhB;;AAEA,QAAI9uB,MAAM,CAAC49C,yBAAP,OAAuC+Y,iBAA3C,EAA8D;AAC5D1/E,cAAQ,CAAC8iE,mBAAT;AACD,KAT+B,CAUhC;;AACD,GAXD;;AAaAzpF,OAAK,CAAC0pF,OAAN,GAAgB,UAASt/D,KAAT,EAAgB;AAC9B,QAAIg8E,cAAJ,CAD8B,CAE9B;;AACAA,kBAAc,GAAGt+E,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACyV,IAAxC,EAA8Cyf,KAA9C,CAAjB,CAH8B,CAI9B;;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACg6C,OAAP,CAAe0c,cAAf;AACAjlC,mBAAe,CAAC3C,0BAAhB;AACD,GARD;;AAUAx+D,OAAK,CAAC2pF,UAAN,GAAmB,UAAS71F,GAAT,EAAc;AAC/B;AAEAqtE,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACi6C,UAAP,CAAkB71F,GAAlB;AACAqtE,mBAAe,CAAC3C,0BAAhB,GAL+B,CAM/B;AACD,GAPD;;AASAx+D,OAAK,CAAC4pF,gBAAN,GAAyB,UAASx/D,KAAT,EAAgB;AACvC,QAAIg8E,cAAJ,CADuC,CAEvC;;AACAA,kBAAc,GAAGt+E,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAAC2W,aAAxC,EAAuDue,KAAvD,CAAjB,CAHuC,CAIvC;;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACk6C,gBAAP,CAAwBwc,cAAxB;AACAjlC,mBAAe,CAAC3C,0BAAhB;AACA73C,YAAQ,CAACijE,gBAAT;AACD,GATD;;AAWA5pF,OAAK,CAACypF,mBAAN,GAA4B,UAAS31F,GAAT,EAAc;AACxCqtE,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC+5C,mBAAP,CAA2B31F,GAA3B;AACAqtE,mBAAe,CAAC3C,0BAAhB;AACA73C,YAAQ,CAAC8iE,mBAAT;AACD,GALD;;AAOAzpF,OAAK,CAACklF,aAAN,GAAsB,UAAS96D,KAAT,EAAgB;AACpCA,SAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACgW,UAAxC,EAAoDkf,KAApD,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACw1C,aAAP,CAAqB96D,KAArB;AACA+2C,mBAAe,CAAC3C,0BAAhB;AACA73C,YAAQ,CAACu+D,aAAT;AACD,GAND;;AAQAllF,OAAK,CAAC2nF,gBAAN,GAAyB,UAAS7zF,GAAT,EAAc;AACrCqtE,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACi4C,gBAAP,CAAwB7zF,GAAxB;AACAqtE,mBAAe,CAAC3C,0BAAhB;AACA73C,YAAQ,CAACghE,gBAAT;AACD,GALD;;AAOA3nF,OAAK,CAAC6oF,cAAN,GAAuB,UAASz+D,KAAT,EAAgB;AACrCA,SAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACoW,WAAxC,EAAqD8e,KAArD,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACm5C,cAAP,CAAsBz+D,KAAtB;AACA+2C,mBAAe,CAAC3C,0BAAhB;AACD,GALD;;AAOAx+D,OAAK,CAACwlF,iBAAN,GAA0B,UAAS1xF,GAAT,EAAc;AACtCqtE,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC81C,iBAAP,CAAyB1xF,GAAzB;AACAqtE,mBAAe,CAAC3C,0BAAhB;AACA73C,YAAQ,CAAC6+D,iBAAT;AACD,GALD;;AAOAxlF,OAAK,CAAC4oF,YAAN,GAAqB,UAASx+D,KAAT,EAAgB;AACnC;AACAA,SAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACuW,SAAxC,EAAmD2e,KAAnD,CAAR,CAFmC,CAGnC;;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACk5C,YAAP,CAAoBx+D,KAApB;AACA+2C,mBAAe,CAAC3C,0BAAhB;AACD,GAPD;AASA;;;;;;;;AAOAx+D,OAAK,CAACsmG,sBAAN,GAA+B,UAAS56F,SAAT,EAAoB;AAEjD,QAAIskC,KAAK,GAAG41B,UAAU,CAAC51B,KAAvB;AAAA,QACE2yC,aADF;AAAA,QAEEvxF,CAFF;AAAA,QAGEmB,CAHF;AAAA,QAIEuV,CAJF;AAAA,QAKElH,CALF;AAAA,QAME7E,GAAG,GAAG,CAACgD,QANT;AAAA,QAOE9C,IAAI,GAAG8C,QAPT;AAAA,QAQEZ,MAAM,GAAGY,QARX;AAAA,QASEP,KAAK,GAAG,CAACO,QATX;AAAA,QAUEwnG,EAVF;AAAA,QAWEC,EAXF;AAaA7jB,iBAAa,GAAGjzC,MAAM,CAACozC,gBAAP,CAAwBp3E,SAAxB,CAAhB;AACAi3E,iBAAa,CAAC3uF,IAAd,CAAmB0X,SAAnB;;AAEA,SAAKta,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuxF,aAAa,CAACtxF,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzCmB,OAAC,GAAGy9C,KAAK,CAACz9C,CAAN,CAAQowF,aAAa,CAACvxF,CAAD,CAArB,CAAJ;AACA0W,OAAC,GAAGkoC,KAAK,CAACloC,CAAN,CAAQ66E,aAAa,CAACvxF,CAAD,CAArB,CAAJ;AACAwP,OAAC,GAAGovC,KAAK,CAACrnC,MAAN,CAAag6E,aAAa,CAACvxF,CAAD,CAA1B,CAAJ;AAEA,UAAImB,CAAC,GAAGqO,CAAJ,GAAQ3E,IAAZ,EAAkBA,IAAI,GAAG1J,CAAC,GAAGqO,CAAX;AAClB,UAAIrO,CAAC,GAAGqO,CAAJ,GAAQpC,KAAZ,EAAmBA,KAAK,GAAGjM,CAAC,GAAGqO,CAAZ;AACnB,UAAIkH,CAAC,GAAGlH,CAAJ,GAAQzC,MAAZ,EAAoBA,MAAM,GAAG2J,CAAC,GAAGlH,CAAb;AACpB,UAAIkH,CAAC,GAAGlH,CAAJ,GAAQ7E,GAAZ,EAAiBA,GAAG,GAAG+L,CAAC,GAAGlH,CAAV;AAClB;;AAED2lG,MAAE,GAAGv2D,KAAK,CAACz9C,CAAN,CAAQmZ,SAAR,CAAL;AACA86F,MAAE,GAAGx2D,KAAK,CAACloC,CAAN,CAAQ4D,SAAR,CAAL;AAEA,WAAO;AACL3P,SAAG,EAAEA,GAAG,GAAGyqG,EADN;AAELvqG,UAAI,EAAEA,IAAI,GAAGsqG,EAFR;AAGLpoG,YAAM,EAAEA,MAAM,GAAGqoG,EAHZ;AAILhoG,WAAK,EAAEA,KAAK,GAAG+nG;AAJV,KAAP;AAMD,GAtCD;;AAwCAvmG,OAAK,CAACgmF,qBAAN,GAA8B,UAAS1L,WAAT,EAAsB7J,CAAtB,EAAyB;AACrDtP,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACs2C,qBAAP,CAA6B1L,WAA7B,EAA0C7J,CAA1C;AACAtP,mBAAe,CAAC3C,0BAAhB;AACD,GAJD;;AAMAx+D,OAAK,CAACipF,YAAN,GAAqB,UAASzzC,MAAT,EAAiB8kC,WAAjB,EAA8B;AACjDnZ,mBAAe,CAAC5C,yBAAhB;;AAEA,QAAI+b,WAAW,IAAI,IAAnB,EAAyB;AACvB5qC,YAAM,CAACu5C,YAAP,CAAoBzzC,MAApB;AACD,KAFD,MAEO;AACL;AACA9F,YAAM,CAACu5C,YAAP,CAAoBt2F,KAApB,CAA0B+8C,MAA1B,EAAkC,CAAC8F,MAAD,EAASpuB,MAAT,CAAgBkzD,WAAhB,CAAlC;AACD;;AAEDnZ,mBAAe,CAAC3C,0BAAhB;AACD,GAXD;;AAaAx+D,OAAK,CAACymF,qBAAN,GAA8B,UAASnM,WAAT,EAAsB;AAClD,WAAO5qC,MAAM,CAAC+2C,qBAAP,CAA6BnM,WAA7B,CAAP;AACD,GAFD;AAIA;;;;;;;;;;;AAYAt6E,OAAK,CAACwmF,iBAAN,GAA0B,UAASp1F,CAAT,EAAYg5B,KAAZ,EAAmBq8E,aAAnB,EAAkCC,YAAlC,EAAgDzc,WAAhD,EAA6D;AACrF,QAAIj6C,KAAK,GAAG41B,UAAU,CAAC51B,KAAvB;AAAA,QACE2yC,aADF;AAAA,QAEEh2C,EAFF;AAAA,QAEMC,EAFN;AAAA,QAGE+5D,KAHF;AAAA,QAGSC,KAHT;AAAA,QAIE/oG,CAJF;AAAA,QAIKC,EAJL,CADqF,CAOrF;;AACAssB,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAAC2S,IAA5B,EAAkCuiB,KAAlC,CAAR;;AAEA,QAAIs8E,YAAJ,EAAkB;AAChB/jB,mBAAa,GAAGjzC,MAAM,CAACozC,gBAAP,CAAwB1xF,CAAxB,CAAhB;;AACA,UAAIuxF,aAAa,CAACtxF,MAAd,GAAuB,CAA3B,EAA8B;AAC5Bs7C,UAAE,GAAG,OAAOviB,KAAK,CAAC73B,CAAb,KAAmB,QAAnB,GAA8B63B,KAAK,CAAC73B,CAAN,GAAUy9C,KAAK,CAACz9C,CAAN,CAAQnB,CAAR,CAAxC,GAAqD,CAA1D;AACAw7C,UAAE,GAAG,OAAOxiB,KAAK,CAACtiB,CAAb,KAAmB,QAAnB,GAA8BsiB,KAAK,CAACtiB,CAAN,GAAUkoC,KAAK,CAACloC,CAAN,CAAQ1W,CAAR,CAAxC,GAAqD,CAA1D;;AACA,aAAKyM,CAAC,GAAG,CAAJ,EAAOC,EAAE,GAAG6kF,aAAa,CAACtxF,MAA/B,EAAuCwM,CAAC,GAAGC,EAA3C,EAA+CD,CAAC,EAAhD,EAAoD;AAClD8oG,eAAK,GAAG32D,KAAK,CAACz9C,CAAN,CAAQowF,aAAa,CAAC9kF,CAAD,CAArB,IAA4B8uC,EAApC;AACAi6D,eAAK,GAAG52D,KAAK,CAACloC,CAAN,CAAQ66E,aAAa,CAAC9kF,CAAD,CAArB,IAA4B+uC,EAApC;;AACA,cAAI,CAAC5sC,KAAK,CAACwmF,iBAAN,CAAwB7D,aAAa,CAAC9kF,CAAD,CAArC,EAA0C;AAC3CtL,aAAC,EAAEo0G,KADwC;AAE3C7+F,aAAC,EAAE8+F;AAFwC,WAA1C,EAGAH,aAHA,EAGe,KAHf,CAAL,EAG4B;AAC1B,mBAAO,KAAP;AACD;AACF;AACF;AACF;;AAED,QAAIA,aAAJ,EAAmB;AACjB,UAAIl0G,CAAC,GAAG,OAAO63B,KAAK,CAAC73B,CAAb,KAAmB,QAAnB,GAA8B63B,KAAK,CAAC73B,CAApC,GAAwCy9C,KAAK,CAACz9C,CAAN,CAAQnB,CAAR,CAAhD;AAAA,UACE0W,CAAC,GAAG,OAAOsiB,KAAK,CAACtiB,CAAb,KAAmB,QAAnB,GAA8BsiB,KAAK,CAACtiB,CAApC,GAAwCkoC,KAAK,CAACloC,CAAN,CAAQ1W,CAAR,CAD9C;AAAA,UAEE4e,EAAE,GAAG,OAAOoa,KAAK,CAAC1nB,OAAb,KAAyB,QAAzB,GAAoC0nB,KAAK,CAACtiB,CAA1C,GAA8CkoC,KAAK,CAACttC,OAAN,CAActR,CAAd,CAFrD;;AAIA,UAAI,CAACs+C,MAAM,CAACs6C,YAAP,CAAoBh6E,EAApB,EAAwBzd,CAAxB,EAA2BuV,CAA3B,EAA8B1W,CAA9B,EAAiC64F,WAAjC,CAAL,EAAoD;AAClD,eAAO,KAAP;AACD;AACF;;AAED9oB,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC82C,iBAAP,CAAyBp1F,CAAzB,EAA4BqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAAC2S,IAAjB,CAAhD;AACAs5D,mBAAe,CAAC3C,0BAAhB;AACA,WAAO,IAAP;AACD,GA1CD;;AA4CAx+D,OAAK,CAAC23F,iBAAN,GAA0B,UAASvmG,CAAT,EAAY;AACpC,QAAI4+C,KAAK,GAAG41B,UAAU,CAAC51B,KAAvB;AAAA,QACE62D,YAAY,GAAG3xG,kCAAQ,CAAC2S,IAD1B;AAAA,QAEEuiB,KAAK,GAAG,EAFV;AAAA,QAGE31B,QAHF;;AAKA,SAAKA,QAAL,IAAiBoyG,YAAjB,EAA+B;AAC7B,UAAIA,YAAY,CAAClyG,cAAb,CAA4BF,QAA5B,KAAyCu7C,KAAK,CAACv7C,QAAD,CAAlD,EAA8D;AAC5D21B,aAAK,CAAC31B,QAAD,CAAL,GAAkBu7C,KAAK,CAACv7C,QAAD,CAAL,CAAgBrD,CAAhB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQy8E,YAAR,CAA7B;AACD,GAZD;;AAcA7mG,OAAK,CAACysF,qBAAN,GAA8B,UAASr7F,CAAT,EAAY;AACxC,WAAOs+C,MAAM,CAAC+8C,qBAAP,CAA6Br7F,CAA7B,CAAP;AACD,GAFD;;AAIA4O,OAAK,CAAC4vF,cAAN,GAAuB,UAASx+F,CAAT,EAAY;AACjC,WAAOs+C,MAAM,CAACkgD,cAAP,CAAsBx+F,CAAtB,CAAP;AACD,GAFD;;AAIA4O,OAAK,CAAC2sF,sBAAN,GAA+B,UAASv7F,CAAT,EAAY;AACzC,WAAOs+C,MAAM,CAACi9C,sBAAP,CAA8Bv7F,CAA9B,CAAP;AACD,GAFD;;AAIA4O,OAAK,CAAC8iF,gBAAN,GAAyB,UAAS1xF,CAAT,EAAY;AACnC,WAAOs+C,MAAM,CAACozC,gBAAP,CAAwB1xF,CAAxB,CAAP;AACD,GAFD;;AAIA4O,OAAK,CAACgoF,oBAAN,GAA6B,UAAS52F,CAAT,EAAYg5B,KAAZ,EAAmB;AAC9C;AACAA,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACwN,OAA5B,EAAqC0nB,KAArC,CAAR;;AACA,QAAIs5D,iBAAgB,CAACvb,WAAjB,CAA6B/2E,CAA7B,CAAJ,EAAqC;AACnC,YAAM,IAAIH,KAAJ,CAAU,gCAAgCG,CAAhC,GAAoC,gDAA9C,CAAN;AACD;;AACD+vE,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACs4C,oBAAP,CAA4B52F,CAA5B,EAA+BqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAACwN,OAAjB,CAAnD;AACAy+D,mBAAe,CAAC3C,0BAAhB;AACD,GATD;;AAWAx+D,OAAK,CAACk5F,oBAAN,GAA6B,UAAS9nG,CAAT,EAAY;AACvC,QAAI01G,eAAe,GAAG5xG,kCAAQ,CAACwN,OAA/B;AAAA,QACE0nB,KAAK,GAAG,EADV;AAAA,QAEE31B,QAFF;;AAGA,SAAKA,QAAL,IAAiBqyG,eAAjB,EAAkC;AAChC,UAAIA,eAAe,CAACnyG,cAAhB,CAA+BF,QAA/B,CAAJ,EAA8C;AAC5C21B,aAAK,CAAC31B,QAAD,CAAL,GAAkBw7C,QAAQ,CAACx7C,QAAD,CAAR,CAAmBrD,CAAnB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQ08E,eAAR,CAA7B;AACD,GAVD;;AAYA9mG,OAAK,CAACioE,qBAAN,GAA8B,UAAS72E,CAAT,EAAY;AACxC,QAAIsyF,iBAAgB,CAACvb,WAAjB,CAA6B/2E,CAA7B,CAAJ,EAAqC;AACnC,aAAOsyF,iBAAgB,CAACzb,qBAAjB,CAAuC72E,CAAvC,CAAP;AACD,KAFD,MAEO;AACL,aAAOd,SAAP;AACD;AACF,GAND;;AAQA0P,OAAK,CAACkoF,qBAAN,GAA8B,UAAS92F,CAAT,EAAYg5B,KAAZ,EAAmB;AAC/C;AACAA,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACqU,QAA5B,EAAsC6gB,KAAtC,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACw4C,qBAAP,CAA6B92F,CAA7B,EAAgCqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAACqU,QAAjB,CAApD;AACA43D,mBAAe,CAAC3C,0BAAhB;AACD,GAND;;AAQAx+D,OAAK,CAAC+mG,qBAAN,GAA8B,UAAS31G,CAAT,EAAY;AACxC,QAAI41G,gBAAgB,GAAG9xG,kCAAQ,CAACqU,QAAhC;AAAA,QACE6gB,KAAK,GAAG,EADV;AAAA,QAEE31B,QAFF;;AAGA,SAAKA,QAAL,IAAiBuyG,gBAAjB,EAAmC;AACjC,UAAIA,gBAAgB,CAACryG,cAAjB,CAAgCF,QAAhC,CAAJ,EAA+C;AAC7C21B,aAAK,CAAC31B,QAAD,CAAL,GAAkBkgF,SAAS,CAAClgF,QAAD,CAAT,CAAoBrD,CAApB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQ48E,gBAAR,CAA7B;AACD,GAVD;;AAYAhnG,OAAK,CAACooF,kBAAN,GAA2B,UAASh3F,CAAT,EAAYg5B,KAAZ,EAAmB;AAC5C;AACAA,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACkV,KAA5B,EAAmCggB,KAAnC,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC04C,kBAAP,CAA0Bh3F,CAA1B,EAA6BqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAACkV,KAAjB,CAAjD;AACA+2D,mBAAe,CAAC3C,0BAAhB;AACD,GAND;;AAQAx+D,OAAK,CAACinG,kBAAN,GAA2B,UAAS71G,CAAT,EAAY;AACrC,QAAI81G,aAAa,GAAGhyG,kCAAQ,CAACkV,KAA7B;AAAA,QACEggB,KAAK,GAAG,EADV;AAAA,QAEE31B,QAFF;;AAGA,SAAKA,QAAL,IAAiByyG,aAAjB,EAAgC;AAC9B,UAAIA,aAAa,CAACvyG,cAAd,CAA6BF,QAA7B,CAAJ,EAA4C;AAC1C21B,aAAK,CAAC31B,QAAD,CAAL,GAAkBihF,MAAM,CAACjhF,QAAD,CAAN,CAAiBrD,CAAjB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQ88E,aAAR,CAA7B;AACD,GAVD;;AAYAlnG,OAAK,CAACqoF,iBAAN,GAA0B,UAASj3F,CAAT,EAAYg5B,KAAZ,EAAmB;AAC3C;AACAA,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACyV,IAA5B,EAAkCyf,KAAlC,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC24C,iBAAP,CAAyBj3F,CAAzB,EAA4BqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAACyV,IAAjB,CAAhD;AACAw2D,mBAAe,CAAC3C,0BAAhB;AACD,GAND;;AAQAx+D,OAAK,CAACmnG,iBAAN,GAA0B,UAAS/1G,CAAT,EAAY;AACpC,QAAIg2G,YAAY,GAAGlyG,kCAAQ,CAACyV,IAA5B;AAAA,QACEyf,KAAK,GAAG,EADV;AAAA,QAEE31B,QAFF;;AAGA,SAAKA,QAAL,IAAiB2yG,YAAjB,EAA+B;AAC7B,UAAIA,YAAY,CAACzyG,cAAb,CAA4BF,QAA5B,CAAJ,EAA2C;AACzC21B,aAAK,CAAC31B,QAAD,CAAL,GAAkB4iB,KAAK,CAAC5iB,QAAD,CAAL,CAAgBrD,CAAhB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQg9E,YAAR,CAA7B;AACD,GAVD;;AAYApnG,OAAK,CAACsoF,0BAAN,GAAmC,UAASl3F,CAAT,EAAYg5B,KAAZ,EAAmB;AACpD;AACAA,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAAC2W,aAA5B,EAA2Cue,KAA3C,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAAC44C,0BAAP,CAAkCl3F,CAAlC,EAAqCqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAAC2W,aAAjB,CAAzD;AACAs1D,mBAAe,CAAC3C,0BAAhB;AACA73C,YAAQ,CAAC0gF,mBAAT;AACD,GAPD;;AASArnG,OAAK,CAACsnG,0BAAN,GAAmC,UAASl2G,CAAT,EAAY;AAC7C,QAAIm2G,eAAe,GAAGryG,kCAAQ,CAAC2W,aAA/B;AAAA,QACEue,KAAK,GAAG,EADV;AAAA,QAEE31B,QAFF;;AAGA,SAAKA,QAAL,IAAiB8yG,eAAjB,EAAkC;AAChC,UAAIA,eAAe,CAAC5yG,cAAhB,CAA+BF,QAA/B,CAAJ,EAA8C;AAC5C21B,aAAK,CAAC31B,QAAD,CAAL,GAAkBoiF,cAAc,CAACpiF,QAAD,CAAd,CAAyBrD,CAAzB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQm9E,eAAR,CAA7B;AACD,GAVD;;AAYAvnG,OAAK,CAAC4nF,uBAAN,GAAgC,UAASx2F,CAAT,EAAYg5B,KAAZ,EAAmB;AACjD;AACAA,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACgW,UAA5B,EAAwCkf,KAAxC,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACk4C,uBAAP,CAA+Bx2F,CAA/B,EAAkCqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAACgW,UAAjB,CAAtD;AACAi2D,mBAAe,CAAC3C,0BAAhB;AACD,GAND;;AAQAx+D,OAAK,CAACwnG,uBAAN,GAAgC,UAASp2G,CAAT,EAAY;AAC1C,QAAIq2G,kBAAkB,GAAGvyG,kCAAQ,CAACgW,UAAlC;AAAA,QACEkf,KAAK,GAAG,EADV;AAAA,QAEE31B,QAFF;;AAGA,SAAKA,QAAL,IAAiBgzG,kBAAjB,EAAqC;AACnC,UAAIA,kBAAkB,CAAC9yG,cAAnB,CAAkCF,QAAlC,CAAJ,EAAiD;AAC/C21B,aAAK,CAAC31B,QAAD,CAAL,GAAkB29E,WAAW,CAAC39E,QAAD,CAAX,CAAsBrD,CAAtB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQq9E,kBAAR,CAA7B;AACD,GAVD;;AAYAznG,OAAK,CAAC+nF,sBAAN,GAA+B,UAAS32F,CAAT,EAAYg5B,KAAZ,EAAmB;AAChD;AACAA,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACuW,SAA5B,EAAuC2e,KAAvC,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACq4C,sBAAP,CAA8B32F,CAA9B,EAAiCqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAACuW,SAAjB,CAArD;AACA01D,mBAAe,CAAC3C,0BAAhB;AACD,GAND;;AAQAx+D,OAAK,CAAC0nG,sBAAN,GAA+B,UAASt2G,CAAT,EAAY;AACzC,QAAIu2G,iBAAiB,GAAGzyG,kCAAQ,CAACuW,SAAjC;AAAA,QACE2e,KAAK,GAAG,EADV;AAAA,QAEE31B,QAFF;;AAGA,SAAKA,QAAL,IAAiBkzG,iBAAjB,EAAoC;AAClC,UAAIA,iBAAiB,CAAChzG,cAAlB,CAAiCF,QAAjC,CAAJ,EAAgD;AAC9C21B,aAAK,CAAC31B,QAAD,CAAL,GAAkBk+E,UAAU,CAACl+E,QAAD,CAAV,CAAqBrD,CAArB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQu9E,iBAAR,CAA7B;AACD,GAVD;;AAYA3nG,OAAK,CAAC8nF,wBAAN,GAAiC,UAAS12F,CAAT,EAAYg5B,KAAZ,EAAmB;AAClD;AACAA,SAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACoW,WAA5B,EAAyC8e,KAAzC,CAAR;AACA+2C,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACo4C,wBAAP,CAAgC12F,CAAhC,EAAmCqxG,oBAAoB,CAACr4E,KAAD,EAAQl1B,kCAAQ,CAACoW,WAAjB,CAAvD;AACA61D,mBAAe,CAAC3C,0BAAhB;AACD,GAND;;AAQAx+D,OAAK,CAAC4nG,wBAAN,GAAiC,UAASx2G,CAAT,EAAY;AAC3C,QAAIy2G,mBAAmB,GAAG3yG,kCAAQ,CAACoW,WAAnC;AAAA,QACE8e,KAAK,GAAG,EADV;AAAA,QAEE31B,QAFF;;AAGA,SAAKA,QAAL,IAAiBozG,mBAAjB,EAAsC;AACpC,UAAIA,mBAAmB,CAAClzG,cAApB,CAAmCF,QAAnC,CAAJ,EAAkD;AAChD21B,aAAK,CAAC31B,QAAD,CAAL,GAAkBy+E,YAAY,CAACz+E,QAAD,CAAZ,CAAuBrD,CAAvB,CAAlB;AACD;AACF;;AACD,WAAOsxG,sBAAsB,CAACt4E,KAAD,EAAQy9E,mBAAR,CAA7B;AACD,GAVD;;AAYA7nG,OAAK,CAAC8nG,UAAN,GAAmB,UAASC,WAAT,EAAsB;AACvC,QAAIC,OAAO,GAAG,IAAIC,iCAAJ,CAAYF,WAAZ,CAAd;AAAA,QACE39E,KAAK,GAAG;AACNtmB,sBAAgB,EAAEkkG,OAAO,CAACE,SADpB;AAENvkG,wBAAkB,EAAEqkG,OAAO,CAACrkG,kBAFtB;AAGNyB,qBAAe,EAAE4iG,OAAO,CAACvgG;AAHnB,KADV;AAMAzH,SAAK,CAACrM,GAAN,CAAUy2B,KAAV;AACD,GARD;AAUA;;;;;;;;;;AAUApqB,OAAK,CAACkpF,cAAN,GAAuB,UAASx9E,SAAT,EAAoBnZ,CAApB,EAAuBuV,CAAvB,EAA0BqgG,cAA1B,EAA0C;AAC/D,QAAIA,cAAc,IAAI,IAAtB,EAA4BA,cAAc,GAAG,GAAjB;;AAE5B,QAAIvjC,gBAAJ,EAAsB;AACpBujC,oBAAc,GAAGvjC,gBAAgB,CAACK,qBAAjB,CAAuCkjC,cAAvC,EAAuD,WAAvD,CAAjB;AACD;;AACD,WAAOz4D,MAAM,CAACw5C,cAAP,CAAsBx9E,SAAtB,EAAiCnZ,CAAjC,EAAoCuV,CAApC,EAAuCqgG,cAAvC,CAAP;AACD,GAPD;AASA;;;;;AAGAnoG,OAAK,CAACmpF,iBAAN,GAA0B,UAASif,gBAAT,EAA2B71G,CAA3B,EAA8BuV,CAA9B,EAAiC;AACzD4nC,UAAM,CAACy5C,iBAAP,CAAyBif,gBAAzB,EAA2C71G,CAA3C,EAA8CuV,CAA9C;AACD,GAFD;AAIA;;;;;AAGA9H,OAAK,CAACopF,iBAAN,GAA0B,UAASgf,gBAAT,EAA2B;AACnD14D,UAAM,CAAC05C,iBAAP,CAAyBgf,gBAAzB;AACD,GAFD;;AAIApoG,OAAK,CAACqoG,UAAN,GAAmB,UAASj+E,KAAT,EAAgB;AACjCA,SAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAAC+W,OAAxC,EAAiDme,KAAjD,CAAR;AACApqB,SAAK,CAACmW,GAAN,CAAU,WAAV,EAAuBniB,IAAvB,CAA4Bo2B,KAA5B;AACAzD,YAAQ,CAAC2hF,gBAAT;AACD,GAJD;;AAMAtoG,OAAK,CAACuoG,aAAN,GAAsB,UAASn3G,CAAT,EAAY;AAChC,QAAI8a,IAAI,GAAGlM,KAAK,CAACmW,GAAN,CAAU,WAAV,CAAX;;AACA,QAAI/kB,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG8a,IAAI,CAAC7a,MAAvB,EAA+B;AAC7B2O,WAAK,CAACrM,GAAN,CAAU,WAAV,EAAuBuY,IAAI,CAAC9Z,KAAL,CAAW,CAAX,EAAchB,CAAd,EAAiBg2B,MAAjB,CAAwBlb,IAAI,CAAC9Z,KAAL,CAAWhB,CAAC,GAAG,CAAf,CAAxB,CAAvB;AACAu1B,cAAQ,CAAC2hF,gBAAT;AACD,KAHD,MAGO;AACL,YAAM,IAAIr3G,KAAJ,CAAU,gBAAgBG,CAAhB,GAAoB,6CAA9B,CAAN;AACD;AACF,GARD;;AAUA4O,OAAK,CAACwoG,oBAAN,GAA6B,UAASp3G,CAAT,EAAYg5B,KAAZ,EAAmB;AAC9C,QAAIne,OAAO,GAAGjM,KAAK,CAACmW,GAAN,CAAU,WAAV,EAAuB/kB,CAAvB,CAAd;AAAA,QACEgD,IADF;;AAGA,QAAI6X,OAAJ,EAAa;AACXme,WAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAAC+W,OAA5B,EAAqCme,KAArC,CAAR;;AACA,WAAKh2B,IAAL,IAAag2B,KAAb,EAAoB;AAClB,YAAIA,KAAK,CAACz1B,cAAN,CAAqBP,IAArB,CAAJ,EAAgC;AAC9B6X,iBAAO,CAAC7X,IAAD,CAAP,GAAgBg2B,KAAK,CAACh2B,IAAD,CAArB;AACD;AACF;;AACDuyB,cAAQ,CAAC2hF,gBAAT;AACD,KARD,MAQO;AACL,YAAM,IAAIr3G,KAAJ,CAAU,gBAAgBG,CAAhB,GAAoB,sDAA9B,CAAN;AACD;AACF,GAfD;;AAiBA4O,OAAK,CAACyoG,QAAN,GAAiB,UAASr+E,KAAT,EAAgB;AAC/BA,SAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACwY,KAAxC,EAA+C0c,KAA/C,CAAR;AACApqB,SAAK,CAACmW,GAAN,CAAU,QAAV,EAAoBniB,IAApB,CAAyBo2B,KAAzB;AACAzD,YAAQ,CAAC+hF,aAAT;AACD,GAJD;;AAMA1oG,OAAK,CAAC2oG,WAAN,GAAoB,UAASv3G,CAAT,EAAY;AAC9B,QAAIsV,MAAM,GAAG1G,KAAK,CAACmW,GAAN,CAAU,QAAV,CAAb;;AACA,QAAI/kB,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAGsV,MAAM,CAACrV,MAAzB,EAAiC;AAC/B2O,WAAK,CAACrM,GAAN,CAAU,QAAV,EAAoB+S,MAAM,CAACtU,KAAP,CAAa,CAAb,EAAgBhB,CAAhB,EAAmBg2B,MAAnB,CAA0B1gB,MAAM,CAACtU,KAAP,CAAahB,CAAC,GAAG,CAAjB,CAA1B,CAApB;AACAu1B,cAAQ,CAAC+hF,aAAT;AACD,KAHD,MAGO;AACL,YAAM,IAAIz3G,KAAJ,CAAU,aAAaG,CAAb,GAAiB,6CAA3B,CAAN;AACD;AACF,GARD;;AAUA4O,OAAK,CAAC4oG,kBAAN,GAA2B,UAASx3G,CAAT,EAAYg5B,KAAZ,EAAmB;AAC5C,QAAI1c,KAAK,GAAG1N,KAAK,CAACmW,GAAN,CAAU,QAAV,EAAoB/kB,CAApB,CAAZ;AAAA,QACEgD,IADF;;AAGA,QAAIsZ,KAAJ,EAAW;AACT0c,WAAK,GAAGtC,4BAAS,CAAC7yB,QAAV,CAAmBC,kCAAQ,CAACwY,KAA5B,EAAmC0c,KAAnC,CAAR;;AACA,WAAKh2B,IAAL,IAAag2B,KAAb,EAAoB;AAClB,YAAIA,KAAK,CAACz1B,cAAN,CAAqBP,IAArB,CAAJ,EAAgC;AAC9BsZ,eAAK,CAACtZ,IAAD,CAAL,GAAcg2B,KAAK,CAACh2B,IAAD,CAAnB;AACD;AACF;;AACDuyB,cAAQ,CAAC+hF,aAAT;AACD,KARD,MAQO;AACL,YAAM,IAAIz3G,KAAJ,CAAU,aAAaG,CAAb,GAAiB,sDAA3B,CAAN;AACD;AACF,GAfD;;AAiBA4O,OAAK,CAAC6oG,oBAAN,GAA6B,UAASz3G,CAAT,EAAY;AACvC,WAAO4O,KAAK,CAACmW,GAAN,CAAU,WAAV,EAAuB/kB,CAAvB,CAAP;AACD,GAFD;;AAIA4O,OAAK,CAAC8oG,kBAAN,GAA2B,UAAS13G,CAAT,EAAY;AACrC,WAAO4O,KAAK,CAACmW,GAAN,CAAU,QAAV,EAAoB/kB,CAApB,CAAP;AACD,GAFD;AAIA;;;;;;;AAKA4O,OAAK,CAAC+oG,aAAN,GAAsB,UAASr9F,SAAT,EAAoBnZ,CAApB,EAAuBuV,CAAvB,EAA0B;AAC9C,QAAIs6F,wBAAwB,IAAI,IAAhC,EAAsC,OADQ,CACA;;AAE9C,QAAI7vG,CAAC,IAAI,IAAT,EAAeA,CAAC,GAAGqzE,UAAU,CAAC51B,KAAX,CAAiBz9C,CAAjB,CAAmBmZ,SAAnB,CAAJ;AACf,QAAI5D,CAAC,IAAI,IAAT,EAAeA,CAAC,GAAG89D,UAAU,CAAC51B,KAAX,CAAiBloC,CAAjB,CAAmB4D,SAAnB,CAAJ;AAEf22F,yBAAqB,GAAGriG,KAAK,CAAC23F,iBAAN,CAAwBjsF,SAAxB,EAAmCtD,QAA3D,CAN8C,CAQ9C;AACA;AACA;AACA;AACA;;AAEApI,SAAK,CAACwmF,iBAAN,CAAwB96E,SAAxB,EAAmC;AACjCtD,cAAQ,EAAEpI,KAAK,CAACgpG;AADiB,KAAnC;AAIA5G,4BAAwB,GAAGpiG,KAAK,CAACkpF,cAAN,CAAqBx9E,SAArB,EAAgCnZ,CAAhC,EAAmCuV,CAAnC,EAAsC,GAAtC,CAA3B;AACD,GAnBD;AAqBA;;;;;AAGA9H,OAAK,CAACipG,QAAN,GAAiB,UAAS12G,CAAT,EAAYuV,CAAZ,EAAe;AAC9B9H,SAAK,CAACmpF,iBAAN,CAAwBiZ,wBAAxB,EAAkD7vG,CAAlD,EAAqDuV,CAArD;AACD,GAFD;AAIA;;;;;;AAIA9H,OAAK,CAACkpG,WAAN,GAAoB,YAAW;AAC7B,QAAIx9F,SAAS,GAAGgkC,MAAM,CAACynC,oBAAP,CAA4BirB,wBAA5B,CAAhB;AAEApiG,SAAK,CAACwmF,iBAAN,CAAwB96E,SAAxB,EAAmC;AACjCtD,cAAQ,EAAEi6F;AADuB,KAAnC;AAGAriG,SAAK,CAACopF,iBAAN,CAAwBgZ,wBAAxB;AACAA,4BAAwB,GAAG,IAA3B;AACD,GARD;AAUA;;;;;;AAIApiG,OAAK,CAACygC,MAAN,GAAe,YAAW;AACxB,QAAIjhB,CAAC,GAAG,CAAR;AAAA,QACED,CAAC,GAAGsiF,WAAW,CAACxwG,MADlB;AAAA,QAEED,CAAC,GAAG,CAAC,CAFP;;AAIA,WAAO,EAAEA,CAAF,GAAMmuB,CAAb,EAAgB;AACdC,OAAC,IAAIqiF,WAAW,CAACzwG,CAAD,CAAhB;AACD;;AACDouB,KAAC,IAAID,CAAL;AACA,WAAQC,CAAC,GAAG,IAAIA,CAAJ,GAAQ,IAAX,GAAkB,CAA3B;AACD,GAVD;AAYA;;;;;;;;AAMAxf,OAAK,CAAC0gC,yBAAN,GAAkC,YAAW;AAC3C,WAAO1gC,KAAK,CAACygC,MAAN,KAAiBzgC,KAAK,CAACmW,GAAN,CAAU,UAAV,CAAjB,GAAyCnW,KAAK,CAACmW,GAAN,CAAU,kBAAV,CAAhD;AACD,GAFD;;AAIAnW,OAAK,CAACmpG,YAAN,GAAqB,YAAW;AAC9B,WAAOl5D,QAAP;AACD,GAFD;;AAIAjwC,OAAK,CAACopG,QAAN,GAAiB,YAAW;AAC1B,WAAOlH,SAAP;AACD,GAFD;;AAIAliG,OAAK,CAACqpG,cAAN,GAAuB,YAAW;AAChC,WAAOlH,eAAP;AACD,GAFD;;AAIAniG,OAAK,CAACspG,gBAAN,GAAyB,YAAW;AAClC,WAAOz9F,aAAP;AACD,GAFD;;AAIA7L,OAAK,CAACu3C,UAAN,GAAmB,YAAW;AAC5B,WAAOG,WAAP;AACD,GAFD,CA7mD4E,CAinD5E;;;AACA13C,OAAK,CAAC+2C,iBAAN,GAA0B,YAAW;AACnC;AACA;AACArH,UAAM,CAAC2gD,kBAAP,CAA0B,mBAA1B;AACD,GAJD;;AAMArwF,OAAK,CAACg3C,kBAAN,GAA2B,YAAW;AACpCtH,UAAM,CAAC2gD,kBAAP,CAA0B,oBAA1B;AACD,GAFD;;AAIArwF,OAAK,CAACi3C,mBAAN,GAA4B,UAASzrC,KAAT,EAAgB;AAC1CkkC,UAAM,CAAC2gD,kBAAP,CAA0B,qBAA1B,EAAiD,CAAC7kF,KAAD,CAAjD;AACD,GAFD;;AAIAxL,OAAK,CAACk3C,uBAAN,GAAgC,UAASC,IAAT,EAAe;AAC7CzH,UAAM,CAAC2gD,kBAAP,CAA0B,yBAA1B,EAAqD,CAACl5C,IAAD,CAArD;AACD,GAFD;;AAIAn3C,OAAK,CAACo3C,oBAAN,GAA6B,UAASr7B,MAAT,EAAiB;AAC5C2zB,UAAM,CAAC2gD,kBAAP,CAA0B,sBAA1B,EAAkD,CAACt0E,MAAD,CAAlD;AACD,GAFD;;AAIA/b,OAAK,CAACq3C,oBAAN,GAA6B,UAASC,MAAT,EAAiB;AAC5C5H,UAAM,CAAC2gD,kBAAP,CAA0B,sBAA1B,EAAkD,CAAC/4C,MAAD,CAAlD;AACD,GAFD;;AAIAt3C,OAAK,CAAC8gG,aAAN,GAAsB,UAASC,eAAT,EAA0B5vG,KAA1B,EAAiC;AACrDu+C,UAAM,CAAC2gD,kBAAP,CAA0B,eAA1B,EAA2C,CAAC0Q,eAAD,EAAkB5vG,KAAlB,CAA3C;AACD,GAFD;;AAIA6O,OAAK,CAACghG,mBAAN,GAA4B,UAASt+F,OAAT,EAAkBvR,KAAlB,EAAyB;AACnDu+C,UAAM,CAAC2gD,kBAAP,CAA0B,qBAA1B,EAAiD,CAAC3tF,OAAD,EAAUvR,KAAV,CAAjD;AACD,GAFD;;AAIA,MAAIo4G,4BAA4B,GAAG,CAAnC;;AACAvpG,OAAK,CAACy4C,gBAAN,GAAyB,UAAShnC,OAAT,EAAkB;AACzC;AACAi+B,UAAM,CAAC2gD,kBAAP,CAA0B,IAA1B,EAAgC,CAAC,qCAAqCkZ,4BAAtC,EAAoE93F,OAApE,CAAhC;AACD,GAHD;AAKA;;;;;;;;;;AAYAzR,OAAK,CAACoxC,gBAAN,GAAyB,UAAS4yB,CAAT,EAAY;AACnC,QAAI,CAACA,CAAL,EAAQ;AACN,aAAOk+B,SAAS,CAAC7wG,MAAjB;AACD;;AACD,WAAO6wG,SAAS,CAAC3/B,MAAV,CAAiB,UAAStc,KAAT,EAAgBp+C,IAAhB,EAAsB;AAC5C,aAAOm8D,CAAC,CAACn8D,IAAD,CAAD,GAAUo+C,KAAK,GAAG,CAAlB,GAAsBA,KAA7B;AACD,KAFM,EAEJ,CAFI,CAAP;AAGD,GAPD;;AASAjmD,OAAK,CAACwpG,aAAN,GAAsB,YAAW;AAC/B,WAAO70B,SAAP;AACD,GAFD;;AAIA30E,OAAK,CAACypG,UAAN,GAAmB,YAAW;AAC5B,WAAO/zB,MAAP;AACD,GAFD;;AAIA11E,OAAK,CAAC0pG,SAAN,GAAkB,YAAW;AAC3B,WAAOryF,KAAP;AACD,GAFD,CAvrD4E,CA2rD5E;;;AACArX,OAAK,CAAC8sF,mBAAN,GAA4B,YAAW;AACrC,WAAOp9C,MAAM,CAACo9C,mBAAP,EAAP;AACD,GAFD,CA5rD4E,CAgsD5E;;;AACA9sF,OAAK,CAAC+sF,oBAAN,GAA6B,YAAW;AACtC,WAAOr9C,MAAM,CAACq9C,oBAAP,EAAP;AACD,GAFD;;AAIA/sF,OAAK,CAACgtF,iBAAN,GAA0B,YAAW;AACnC,WAAOt9C,MAAM,CAACs9C,iBAAP,EAAP;AACD,GAFD;;AAIAhtF,OAAK,CAACitF,gBAAN,GAAyB,YAAW;AAClC,WAAOv9C,MAAM,CAACu9C,gBAAP,EAAP;AACD,GAFD,CAzsD4E,CA6sD5E;;;AACAjtF,OAAK,CAACktF,sBAAN,GAA+B,YAAW;AACxC,WAAOx9C,MAAM,CAACw9C,sBAAP,EAAP;AACD,GAFD,CA9sD4E,CAktD5E;;;AACAltF,OAAK,CAACmtF,uBAAN,GAAgC,YAAW;AACzC,WAAOz9C,MAAM,CAACy9C,uBAAP,EAAP;AACD,GAFD,CAntD4E,CAutD5E;;;AACAntF,OAAK,CAACqtF,uBAAN,GAAgC,YAAW;AACzC,WAAO39C,MAAM,CAAC29C,uBAAP,EAAP;AACD,GAFD,CAxtD4E,CA4tD5E;;;AACArtF,OAAK,CAACstF,yBAAN,GAAkC,YAAW;AAC3C,WAAO59C,MAAM,CAAC49C,yBAAP,EAAP;AACD,GAFD;;AAIAttF,OAAK,CAAC2pG,oBAAN,GAA6B,YAAW;AACtC,WAAO3pG,KAAK,CAACmW,GAAN,CAAU,WAAV,EAAuB9kB,MAA9B;AACD,GAFD;;AAIA2O,OAAK,CAAC4pG,cAAN,GAAuB,YAAW;AAChC,WAAOj3B,UAAP;AACD,GAFD;;AAIA3yE,OAAK,CAAC6pG,uBAAN,GAAgC,YAAW;AACzC,WAAOn6D,MAAM,CAACtmC,oBAAd;AACD,GAFD;;AAIApJ,OAAK,CAACgiG,aAAN,GAAsB,YAAW;AAC/B,WAAOA,aAAP;AACD,GAFD;;AAIAhiG,OAAK,CAAC8pG,aAAN,GAAsB,YAAW;AAC/B,WAAOp6D,MAAM,CAAC87C,gBAAP,EAAP;AACD,GAFD;;AAIAxrF,OAAK,CAAC83F,WAAN,GAAoB,YAAW;AAC7BnxE,YAAQ,CAAC4Z,IAAT;AACA,WAAOvgC,KAAP;AACD,GAHD;;AAKAA,OAAK,CAACugC,IAAN,GAAa,YAAW;AACtB,QAAI78B,QAAQ,GAAG1D,KAAK,CAACmW,GAAN,CAAU,UAAV,CAAf;AAAA,QACEwB,CADF;AAAA,QACKoyF,UADL;;AAGA,QAAInlC,gBAAJ,EAAsB;AACpBlhE,cAAQ,GAAGkhE,gBAAgB,CAACK,qBAAjB,CAAuCvhE,QAAvC,EAAiD,MAAjD,CAAX;AACD;;AAED,QAAI,CAAC1D,KAAK,CAACk6B,SAAN,EAAL,EAAwB;AACtBviB,OAAC,GAAGqhD,kBAAW,CAACzhC,GAAZ,EAAJ;;AACA,UAAIqqE,cAAJ,EAAoB;AAClBmI,kBAAU,GAAGpyF,CAAC,GAAGiqF,cAAjB;AACAA,sBAAc,GAAGjqF,CAAjB;AACAkqF,mBAAW,CAAC7tG,IAAZ,CAAiB+1G,UAAjB;AACAlI,mBAAW,CAACnjD,MAAZ,CAAmB,CAAnB,EAAsBmjD,WAAW,CAACxwG,MAAZ,GAAqB,EAA3C,EAJkB,CAMlB;AACA;;AACAkxG,0BAAkB,CAACwH,UAAD,CAAlB;AACD,OATD,MASO;AACLnI,sBAAc,GAAGjqF,CAAjB;AACD;AACF;;AAEDqhD,sBAAW,CAACE,UAAZ,CAAuB,QAAvB,EAxBsB,CAyBtB;AACA;AACA;;AACAxpB,UAAM,CAACq8C,SAAP,CAAiB/rF,KAAK,CAACmW,GAAN,CAAU,kBAAV,IAAgCzS,QAAjD,EAA2DA,QAA3D;AACAs1D,sBAAW,CAACK,UAAZ,CAAuB,QAAvB;AAEA4pC,kBAAc;AACdjjG,SAAK,CAACujE,yBAAN;AACAd,eAAW,CAACzuE,IAAZ;AAEA2tG,WAAO,GAAG,IAAV,CAnCsB,CAqCtB;AACA;;AACA,QAAIjyD,MAAM,CAAC4iC,kBAAX,EAA+B3rD,QAAQ,CAACu+D,aAAT;AAE/Bv+D,YAAQ,CAAC4Z,IAAT;AACD,GA1CD;;AA4CAvgC,OAAK,CAACmsF,cAAN,GAAuB,YAAW;AAChChrB,mBAAe,CAAC5C,yBAAhB;AACA7uB,UAAM,CAACy8C,cAAP;AACAhrB,mBAAe,CAAC3C,0BAAhB,GAHgC,CAIhC;AACA;;AACA73C,YAAQ,CAAC4Z,IAAT;AACA,WAAOvgC,KAAP;AACD,GARD;;AAUAA,OAAK,CAAC60B,UAAN,GAAmB,YAAW;AAC5B,WAAO6a,MAAM,CAACG,aAAP,EAAP;AACD,GAFD;;AAIA7vC,OAAK,CAACyT,MAAN,GAAe,UAASqI,QAAT,EAAmBpmB,IAAnB,EAAyB;AACtCA,QAAI,GAAGA,IAAI,IAAI,EAAf;AAEA,QAAIokC,IAAI,GAAG95B,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,CAAX;;AACA,QAAIge,IAAJ,EAAU;AACR,aAAOA,IAAI,CAACrmB,MAAL,CAAYzT,KAAK,CAACmW,GAAN,CAAU2F,QAAV,CAAZ,EAAiCpmB,IAAjC,CAAP;AACD;;AACD,WAAOge,EAAE,CAACD,MAAH,CAAU/d,IAAI,CAAC+d,MAAL,IAAe,GAAzB,EAA8BzT,KAAK,CAACmW,GAAN,CAAU2F,QAAV,CAA9B,CAAP;AACD,GARD;AAUA;;;;;;AAIA9b,OAAK,CAACgqG,iBAAN,GAA0B,UAAShyG,IAAT,EAAe;AACvC,WAAOopE,eAAe,CAACjyD,KAAhB,CAAsBnX,IAAtB,CAAP;AACD,GAFD;AAIA;;;;;;;;;;;;;;;;;;;;;;;AAqBAgI,OAAK,CAACw3F,cAAN,GAAuB,YAAW;AAChC,QAAI7/E,CAAC,GAAG,IAAIsjF,eAAJ,CAAmBj7F,KAAnB,CAAR;AACA8hG,eAAW,CAAC9tG,IAAZ,CAAiB2jB,CAAjB;AACA,WAAOA,CAAP;AACD,GAJD;AAMA;;;;;AAGA3X,OAAK,CAACw1F,iBAAN,GAA0B,YAAW;AACnCsM,eAAW,CAACzwG,MAAZ,GAAqB,CAArB;AACD,GAFD;AAIA;;;;;;;;;;;AAUA2O,OAAK,CAACqnB,UAAN,GAAmB,YAAW;AAC5B85C,mBAAe,CAAC95C,UAAhB,GAD4B,CAE5B;AACA;;AACAV,YAAQ,CAACU,UAAT;AACD,GALD;;AAOArnB,OAAK,CAACsnB,QAAN,GAAiB,YAAW;AAC1B65C,mBAAe,CAAC75C,QAAhB,GAD0B,CAE1B;;AACAX,YAAQ,CAACW,QAAT;AACD,GAJD;AAMA;;;;;;AAIAtnB,OAAK,CAAC43F,KAAN,GAAc,UAAS55E,MAAT,EAAiB;AAC7Bhe,SAAK,CAACqnB,UAAN;AACArJ,UAAM;AACNhe,SAAK,CAACsnB,QAAN;AACD,GAJD,CAn4D4E,CAy4D5E;AACA;;;AACA,WAAS2iF,MAAT,CAAgB/4G,KAAhB,EAAuB;AACrB,QAAI2P,GAAG,GAAG,EAAV;;AAEA,QAAI3P,KAAK,CAACG,MAAN,KAAiB,CAArB,EAAwB;AACtB,aAAO,EAAP;AACD;;AAEDM,UAAM,CAAC2b,IAAP,CAAYpc,KAAK,CAAC,CAAD,CAAjB,EAAsBqc,OAAtB,CAA8B,UAASC,GAAT,EAAc;AAC1C3M,SAAG,CAAC2M,GAAD,CAAH,GAAW,EAAX;AACD,KAFD;AAIAtc,SAAK,CAACqc,OAAN,CAAc,UAASrZ,MAAT,EAAiB;AAC7BvC,YAAM,CAAC2b,IAAP,CAAYpZ,MAAZ,EAAoBqZ,OAApB,CAA4B,UAASC,GAAT,EAAc;AACxC3M,WAAG,CAAC2M,GAAD,CAAH,CAASxZ,IAAT,CAAcE,MAAM,CAACsZ,GAAD,CAApB;AACD,OAFD;AAGD,KAJD;AAKA,WAAO3M,GAAP;AACD;;AAED,WAASqpG,wBAAT,GAAoC;AAClC,QAAI37F,OAAO,GAAGvO,KAAK,CAACu3C,UAAN,EAAd;AAAA,QACExgC,IAAI,GAAG;AACLxI,aAAO,EAAE1Y,mBAAS,CAACX,kCAAQ,CAAC8Z,MAAV,EAAkBi7F,MAAM,CAAC17F,OAAD,CAAxB,EAAmCA,OAAO,CAACld,MAA3C,CADb;AAELid,yBAAmB,EAAEohC,MAAM,CAAC2gD,kBAAP,CAA0B,wBAA1B,CAFhB;AAGL7hF,sCAAgC,EAAEkhC,MAAM,CAAC2gD,kBAAP,CAA0B,qCAA1B,CAH7B;AAIL5hF,iBAAW,EAAEihC,MAAM,CAAC2gD,kBAAP,CAA0B,gBAA1B;AAJR,KADT;AAQA,QAAI,CAACt5E,IAAI,CAACtI,WAAV,EAAuB,OAAOsI,IAAI,CAACtI,WAAZ;AAEvB,WAAOsI,IAAP;AACD;;AAED,WAASozF,0BAAT,GAAsC;AACpC,WAAO,EAAP;AACD;;AAEDnqG,OAAK,CAACnK,SAAN,GAAkB,YAAW;AAC3B,QAAIu0G,QAAQ,GAAG,EAAf;AAAA,QACEC,OADF;AAAA,QACWj5G,CADX;AAAA,QACcc,GADd;AAAA,QAEEo4G,aAAa,GAAGnpC,eAAe,CAACnC,SAFlC;AAAA,QAIEurC,yBAAyB,GAAG,SAA5BA,yBAA4B,CAASvyG,IAAT,EAAewyG,UAAf,EAA2B;AACrD,UAAIJ,QAAQ,CAACp6D,KAAT,CAAeh4C,IAAf,EAAqByyG,KAArB,CAA2B,UAASr5G,CAAT,EAAY;AACvC,eAAOA,CAAC,KAAKo5G,UAAb;AACD,OAFC,CAAJ,EAEM;AACJ,eAAOJ,QAAQ,CAACp6D,KAAT,CAAeh4C,IAAf,CAAP;AACD;AACF,KAVH;;AAYAoyG,YAAQ,GAAGv0G,mBAAS,CAACX,kCAAQ,CAAC2N,cAAV,EAA0BynG,aAA1B,CAApB;AACAF,YAAQ,CAACvlG,WAAT,GAAuBhP,mBAAS,CAACX,kCAAQ,CAAC2P,WAAV,EAAuBylG,aAAvB,CAAhC;AACAF,YAAQ,CAACp6D,KAAT,GAAiBn6C,mBAAS,CAACX,kCAAQ,CAAC2S,IAAV,EAAgB+9D,UAAU,CAAC51B,KAA3B,EAAkCN,MAAM,CAAC0B,gBAAP,EAAlC,CAA1B;;AAEA,QAAI1B,MAAM,CAACw9C,sBAAP,EAAJ,EAAqC;AACnCkd,cAAQ,CAACh4B,WAAT,GAAuBv8E,mBAAS,CAACX,kCAAQ,CAACgW,UAAV,EAAsBknE,WAAtB,EAAmC1iC,MAAM,CAACw9C,sBAAP,EAAnC,CAAhC;AACD;;AACD,QAAIx9C,MAAM,CAACy9C,uBAAP,EAAJ,EAAsC;AACpCid,cAAQ,CAACl3B,YAAT,GAAwBr9E,mBAAS,CAACX,kCAAQ,CAACoW,WAAV,EAAuB4nE,YAAvB,EAAqCxjC,MAAM,CAACy9C,uBAAP,EAArC,CAAjC;AACD;;AACD,QAAIz9C,MAAM,CAACq9C,oBAAP,EAAJ,EAAmC;AACjCqd,cAAQ,CAACz1B,SAAT,GAAqB9+E,mBAAS,CAACX,kCAAQ,CAACqU,QAAV,EAAoBorE,SAApB,EAA+BjlC,MAAM,CAACq9C,oBAAP,EAA/B,CAA9B;;AACA,WAAK37F,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGk4G,QAAQ,CAACz1B,SAAT,CAAmBpiF,CAAnB,CAAqBlB,MAAvC,EAA+CD,CAAC,GAAGc,GAAnD,EAAwDd,CAAC,EAAzD,EAA6D;AAC3D;AACA;AACAg5G,gBAAQ,CAACz1B,SAAT,CAAmBhrE,SAAnB,CAA6BvY,CAA7B,IAAkCs5G,OAAO,CAACN,QAAQ,CAACz1B,SAAT,CAAmBhrE,SAAnB,CAA6BvY,CAA7B,CAAD,CAAzC;AACAg5G,gBAAQ,CAACz1B,SAAT,CAAmB9qE,UAAnB,CAA8BzY,CAA9B,IAAmCs5G,OAAO,CAACN,QAAQ,CAACz1B,SAAT,CAAmB9qE,UAAnB,CAA8BzY,CAA9B,CAAD,CAA1C;AACAg5G,gBAAQ,CAACz1B,SAAT,CAAmB5qE,SAAnB,CAA6B3Y,CAA7B,IAAkCs5G,OAAO,CAACN,QAAQ,CAACz1B,SAAT,CAAmB5qE,SAAnB,CAA6B3Y,CAA7B,CAAD,CAAzC;AACAg5G,gBAAQ,CAACz1B,SAAT,CAAmB1qE,UAAnB,CAA8B7Y,CAA9B,IAAmCs5G,OAAO,CAACN,QAAQ,CAACz1B,SAAT,CAAmB1qE,UAAnB,CAA8B7Y,CAA9B,CAAD,CAA1C;AACD;AACF;;AACD,QAAIs+C,MAAM,CAACs9C,iBAAP,EAAJ,EAAgC;AAC9Bod,cAAQ,CAAC10B,MAAT,GAAkB7/E,mBAAS,CAACX,kCAAQ,CAACkV,KAAV,EAAiBsrE,MAAjB,EAAyBhmC,MAAM,CAACs9C,iBAAP,EAAzB,CAA3B;AACD;;AACD,QAAIt9C,MAAM,CAACu9C,gBAAP,EAAJ,EAA+B;AAC7Bmd,cAAQ,CAAC/yF,KAAT,GAAiBxhB,mBAAS,CAACX,kCAAQ,CAACyV,IAAV,EAAgB0M,KAAhB,EAAuBq4B,MAAM,CAACu9C,gBAAP,EAAvB,CAA1B;AACD;;AACD,QAAIv9C,MAAM,CAAC49C,yBAAP,EAAJ,EAAwC;AACtC8c,cAAQ,CAACvzB,cAAT,GAA0BhhF,mBAAS,CAACX,kCAAQ,CAAC2W,aAAV,EAAyBgrE,cAAzB,EAAyCnnC,MAAM,CAAC49C,yBAAP,EAAzC,CAAnC;AACD;;AACD,QAAI59C,MAAM,CAAC09C,qBAAP,EAAJ,EAAoC;AAClCgd,cAAQ,CAACz3B,UAAT,GAAsB98E,mBAAS,CAACX,kCAAQ,CAACuW,SAAV,EAAqBknE,UAArB,EAAiCjjC,MAAM,CAAC09C,qBAAP,EAAjC,CAA/B;AACD,KA7C0B,CA+C3B;AACA;;;AACAgd,YAAQ,CAACn6D,QAAT,GAAoBp6C,mBAAS,CAACX,kCAAQ,CAACwN,OAAV,EAAmButC,QAAnB,EAA6B,CAA7B,CAA7B,CAjD2B,CAmD3B;;AACAm6D,YAAQ,CAAChhG,oBAAT,GAAgC,EAAhC;AACAihG,WAAO,GAAG36D,MAAM,CAACtmC,oBAAP,CAA4BvT,SAA5B,EAAV;;AACA,SAAKzE,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGm4G,OAAO,CAACh5G,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9C,UAAIi5G,OAAO,CAACj5G,CAAD,CAAP,CAAWiY,QAAX,IAAuB,CAAvB,IAA4BghG,OAAO,CAACj5G,CAAD,CAAP,CAAWkY,QAAX,IAAuB,CAAvD,EAA0D;AACxD8gG,gBAAQ,CAAChhG,oBAAT,CAA8BpV,IAA9B,CAAmCq2G,OAAO,CAACj5G,CAAD,CAA1C;AACD;AACF,KA1D0B,CA4D3B;AACA;;;AACA,QAAIg5G,QAAQ,CAAC9mG,kBAAT,KAAgC,KAApC,EAA2C;AACzC,aAAO8mG,QAAQ,CAAC7mG,iBAAhB;AACD,KAhE0B,CAiE3B;;;AACA,QAAI6mG,QAAQ,CAACvlG,WAAT,CAAqB2B,aAArB,KAAuC,KAA3C,EAAkD;AAChD,aAAO4jG,QAAQ,CAACvlG,WAAT,CAAqB4B,WAA5B;AACD;;AACD,QAAI2jG,QAAQ,CAAC5mG,eAAT,KAA6B,SAAjC,EAA4C;AAC1C,aAAO4mG,QAAQ,CAAC5mG,eAAhB;AACD,KAvE0B,CAyE3B;;;AACA,QAAIxD,KAAK,CAACwb,UAAN,CAAiBhX,kBAArB,EAAyC;AACvC4lG,cAAQ,CAAC/7F,eAAT,GAA2B67F,wBAAwB,EAAnD;AACD;;AAED,QAAIlqG,KAAK,CAACwb,UAAN,CAAiB/W,oBAArB,EAA2C;AACzC2lG,cAAQ,CAACt9F,iBAAT,GAA6Bq9F,0BAA0B,EAAvD;AACD,KAFD,MAEO;AACL,aAAOC,QAAQ,CAACp6D,KAAT,CAAe3nC,OAAtB;AACD;;AAED,KAAC,QAAD,EAAW,SAAX,EAAsB,WAAtB,EAAmC,sBAAnC,EAA2DkF,OAA3D,CAAmE,UAASnZ,IAAT,EAAe;AAChFm2G,+BAAyB,CAACn2G,IAAD,EAAOc,kCAAQ,CAAC2S,IAAT,CAAczT,IAAd,EAAoB0B,YAA3B,CAAzB;AACD,KAFD;AAIA,WAAOs0G,QAAP;AACD,GAzFD,CAh7D4E,CA2gE5E;AACA;AACA;AAEA;;;AACApqG,OAAK,CAACgpG,kBAAN,GAA2B,EAA3B,CAhhE4E,CAkhE5E;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAIlkC,iBAAiB,CAACzgE,GAAtB,EAA2B;AACzB;AACAygE,qBAAiB,CAACtoE,KAAlB,GAA0B,GAA1B;AACAsoE,qBAAiB,CAACroE,MAAlB,GAA2B,CAA3B,CAHyB,CAIzB;;AACAqoE,qBAAiB,CAACjgE,WAAlB,GAAgCigE,iBAAiB,CAACjgE,WAAlB,IAAiC,EAAjE;AACAigE,qBAAiB,CAACjgE,WAAlB,CAA8BI,SAA9B,GAA0C,CAA1C;AACA6/D,qBAAiB,CAACjgE,WAAlB,CAA8BK,SAA9B,GAA0C,CAA1C;AACA4/D,qBAAiB,CAACjgE,WAAlB,CAA8BC,aAA9B,GAA8C,CAA9C;AACAggE,qBAAiB,CAACjgE,WAAlB,CAA8BE,cAA9B,GAA+C,CAA/C;AACD;;AAEA,eAAW;AACV,QAAI,CAAC+/D,iBAAiB,CAACjgE,WAAvB,EAAoC;AAClC;AACD,KAHS,CAKV;AACA;AACA;AACA;;;AACA,QAAI+B,SAAS,GAAGk+D,iBAAiB,CAACjgE,WAAlB,CAA8B+B,SAA9B,IAA2C,EAA3D;AAAA,QACEF,MAAM,GAAGo+D,iBAAiB,CAACjgE,WAAlB,CAA8B6B,MAA9B,IAAwC,EADnD;AAAA,QAEEtV,CAFF;AAAA,QAEKc,GAFL;;AAIA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG0U,SAAS,CAACvV,MAA5B,EAAoCD,CAAC,GAAGc,GAAxC,EAA6Cd,CAAC,EAA9C,EAAkD;AAChDwV,eAAS,CAACxV,CAAD,CAAT,GAAe02B,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAAC+W,OAAxC,EAAiDrF,SAAS,CAACxV,CAAD,CAA1D,CAAf;AACD;;AACD,SAAKA,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGwU,MAAM,CAACrV,MAAzB,EAAiCD,CAAC,GAAGc,GAArC,EAA0Cd,CAAC,EAA3C,EAA+C;AAC7CsV,YAAM,CAACtV,CAAD,CAAN,GAAY02B,4BAAS,CAACryB,oBAAV,CAA+BP,kCAAQ,CAACwY,KAAxC,EAA+ChH,MAAM,CAACtV,CAAD,CAArD,CAAZ;AACD;AACF,GAnBA,GAAD,CAxiE4E,CA6jE5E;AACA;AACA;AACA;;;AACAkxG,kBAAgB,GAAG;AACjBj0F,mBAAe,EAAEy2D,iBAAiB,CAACz2D,eADlB;AAEjBvB,qBAAiB,EAAEg4D,iBAAiB,CAACh4D;AAFpB,GAAnB,CAjkE4E,CAskE5E;AACA;;AACAm1F,kBAAgB,GAAGn9B,iBAAiB,CAAC70B,QAArC,CAxkE4E,CAykE5E;;AACAjwC,OAAK,CAACmkG,cAAN,CAAqBlC,gBAArB,EA1kE4E,CA2kE5E;;AACAwB,kBAAgB,GA5kE4D,CA8kE5E;AACA;AACA;;AACAhC,iBAAe,CAACz6E,OAAhB,CAAwBhnB,KAAxB,EAjlE4E,CAmlE5E;;AACAikG,sBAAoB,CAACjkG,KAAK,CAACwb,UAAP,CAApB;AAEAxb,OAAK,CAAC0O,EAAN,CAAS,6BAAT,EAAwC,YAAW;AACjD;AACA;AACA;AACAkzF,kBAAc,GAAG,IAAjB;AACD,GALD;AAMAzgC,iBAAe,CAACzyD,EAAhB,CAAmB,0CAAnB,EAA+Du0F,cAA/D;AACA9hC,iBAAe,CAACzyD,EAAhB,CAAmB,8CAAnB,EAAmE,YAAW;AAC5E,QAAI+zD,WAAJ,EAAiBA,WAAW,CAACoE,wBAAZ;AACjBlgD,YAAQ,CAACgkF,YAAT;AACD,GAHD,EA7lE4E,CAkmE5E;;AACAzG,kBAAgB,CAAClkG,KAAK,CAACwb,UAAP,EAAmB8mF,gBAAnB,CAAhB,CAnmE4E,CAqmE5E;;AACAN,eAAa,GAAG,IAAI4I,iBAAJ,CAAkB5qG,KAAlB,CAAhB,CAtmE4E,CAwmE5E;AACA;AAEA;AACA;AACA;AACA;;AACAA,OAAK,CAACrM,GAAN,CAAU;AACRsQ,kBAAc,EAAEjE,KAAK,CAACmW,GAAN,CAAU,gBAAV;AADR,GAAV;AAIA,MAAI2uD,iBAAiB,CAAC90B,KAAtB,EAA6BhwC,KAAK,CAACskG,WAAN,CAAkBx/B,iBAAiB,CAAC90B,KAApC;AAC7B,MAAI80B,iBAAiB,CAACsN,WAAtB,EAAmCpyE,KAAK,CAACwkG,iBAAN,CAAwB1/B,iBAAiB,CAACsN,WAA1C;AACnC,MAAItN,iBAAiB,CAACoO,YAAtB,EAAoClzE,KAAK,CAACgN,kBAAN,CAAyB83D,iBAAiB,CAACoO,YAA3C;AACpC,MAAIpO,iBAAiB,CAAC6N,UAAtB,EAAkC3yE,KAAK,CAAC6kG,gBAAN,CAAuB//B,iBAAiB,CAAC6N,UAAzC;AAClC,MAAI7N,iBAAiB,CAAC6P,SAAtB,EAAiC30E,KAAK,CAACglG,eAAN,CAAsBlgC,iBAAiB,CAAC6P,SAAxC;AACjC,MAAI7P,iBAAiB,CAAC4Q,MAAtB,EAA8B11E,KAAK,CAAColG,YAAN,CAAmBtgC,iBAAiB,CAAC4Q,MAArC;AAC9B,MAAI5Q,iBAAiB,CAACztD,KAAtB,EAA6BrX,KAAK,CAACwlG,WAAN,CAAkB1gC,iBAAiB,CAACztD,KAApC;AAC7B,MAAIytD,iBAAiB,CAAC+R,cAAtB,EAAsC72E,KAAK,CAAC4lG,oBAAN,CAA2B9gC,iBAAiB,CAAC+R,cAA7C,EA1nEsC,CA2nE5E;AACA;;AACA,MAAI/R,iBAAiB,CAAC17D,oBAAtB,EACEsmC,MAAM,CAACtmC,oBAAP,CAA4ByhG,WAA5B,CAAwC/lC,iBAAiB,CAAC17D,oBAA1D,EA9nE0E,CAgoE5E;;AACAq5D,aAAW,GAAG,IAAIkD,WAAJ,CAAgB;AAC5BQ,iBAAa,EAAE,yBAAW;AACxB,aAAOhF,eAAe,CAACpC,qBAAvB;AACD,KAH2B;AAI5B+H,qBAAiB,EAAE3F,eAAe,CAAClC,YAJP;AAK5B3mC,SAAK,EAAEoX,MAAM,CAACuI,QAAP;AALqB,GAAhB,EAMXj4C,KANW,EAMJ0hG,qBANI,CAAd,CAjoE4E,CAyoE5E;AACA;;AACAD,iBAAe,CAACh/B,WAAhB,GAA8BA,WAA9B,CA3oE4E,CA6oE5E;AACA;AACA;AACA;;AACA6C,eAAa,GAAG,IAAI9C,aAAJ,CAAkB;AAChCrB,mBAAe,EAAEA,eADe;AAEhCC,mBAAe,EAAEA,eAFe;AAGhCqB,eAAW,EAAEA;AAHmB,GAAlB,CAAhB;AAKA6C,eAAa,CAACt+C,OAAd,CAAsBhnB,KAAtB;AAEA2hG,SAAO,GAAG,IAAV,CAxpE4E,CA0pE5E;;AACA3hG,OAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B;AACzB1vD,SAAK,EAAE,MADkB;AAEzBlQ,YAAQ,EAAE,MAFe;AAGzBwQ,UAAM,EAAE;AAHiB,GAA3B,EAIG,YAAW;AACZ;AACA;AACA,QAAItiB,KAAK,GAAGy0E,UAAU,CAACvlE,IAAvB;;AACA,QAAIukE,gBAAJ,EAAsB;AACpBzzE,WAAK,GAAGyzE,gBAAgB,CAACM,uBAAjB,CAAyC/zE,KAAzC,EAAgD,MAAhD,CAAR;AACD;;AACD,WAAOA,KAAP;AACD,GAZD;AAcA6O,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE,qBADyB;AAEhClQ,YAAQ,EAAE,MAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAOzT,KAAK,CAACmW,GAAN,CAAU,UAAV,IAAwBnW,KAAK,CAACmW,GAAN,CAAU,kBAAV,CAA/B;AACD,GAND;;AAQC,eAAW;AACV,QAAI20F,gBAAJ;AACA,QAAIC,8BAAJ,CAFU,CAIV;AACA;;AAEA,QAAI3pC,eAAe,CAACjyD,KAAhB,CAAsB9O,IAAtB,CAA2Boe,YAA/B,EAA6C;AAC3CqsF,sBAAgB,GAAG1pC,eAAe,CAACjyD,KAAhB,CAAsB9O,IAAtB,CAA2Boe,YAA9C;AACD,KAFD,MAEO;AACLqsF,sBAAgB,GAAG37C,oBAAC,CAAC57D,MAAF,CAAS,EAAT,EAAa6tE,eAAe,CAACjyD,KAAhB,CAAsB9O,IAAnC,CAAnB;AACAyqG,sBAAgB,CAACra,gBAAjB,GAAoC,CAApC;AACD;;AAEDsa,kCAA8B,GAAG,IAAIzrC,oBAAJ,CAAwBwrC,gBAAxB,EAA0C;AACzE3vF,cAAQ,EAAE2vF,gBAAgB,CAAC9yG,IAD8C;AAEzEojB,oBAAc,EAAE0vF,gBAAgB,CAAC9qC,UAFwC;AAGzE3kD,sBAAgB,EAAEyvF,gBAAgB,CAAC7qC,MAHsC;AAIzExsD,YAAM,EAAE;AAJiE,KAA1C,CAAjC;AAOAzT,SAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,WAAK,EAAE,MADyB;AAEhCgI,cAAQ,EAAE2vF,gBAAgB,CAAC9yG,IAFK;AAGhCojB,oBAAc,EAAE0vF,gBAAgB,CAAC9qC,UAHD;AAIhC3kD,sBAAgB,EAAEyvF,gBAAgB,CAAC7qC,MAJH;AAKhCxsD,YAAM,EAAE;AALwB,KAAlC,EAMG,YAAW;AACZ,aAAOzT,KAAK,CAACmW,GAAN,CAAU,MAAV,IAAoB20F,gBAAgB,CAACra,gBAA5C;AACD,KARD;AAUAzwF,SAAK,CAAC6iE,YAAN,CAAmB,oBAAnB,EAAyC;AACvC1vD,WAAK,EAAE,qBADgC;AAEvCgI,cAAQ,EAAE2vF,gBAAgB,CAAC9yG,IAFY;AAGvCojB,oBAAc,EAAE0vF,gBAAgB,CAAC9qC,UAHM;AAIvC3kD,sBAAgB,EAAEyvF,gBAAgB,CAAC7qC,MAJI;AAKvCxsD,YAAM,EAAE;AAL+B,KAAzC,EAMG,YAAW;AACZ,aAAOzT,KAAK,CAACmW,GAAN,CAAU,aAAV,IAA2B20F,gBAAgB,CAACra,gBAAnD;AACD,KARD;;AAUAzwF,SAAK,CAACquD,UAAN,GAAmB,UAAShuD,IAAT,EAAe;AAChC,aAAO0qG,8BAA8B,CAACt3F,MAA/B,CAAsCpT,IAAI,GAAGyqG,gBAAgB,CAACra,gBAA9D,CAAP;AACD,KAFD;AAGD,GA5CA,GAAD;;AA8CAzwF,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE,cADyB;AAEhClQ,YAAQ,EAAE,EAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAOgvD,WAAW,CAACtsD,GAAZ,CAAgB,SAAhB,CAAP;AACD,GAND;AAQAnW,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE,UADqB;AAE5BlQ,YAAQ,EAAE,EAFkB;AAG5BwQ,UAAM,EAAE;AAHoB,GAA9B,EAIG,YAAW;AACZ,WAAOkuF,OAAP;AACD,GAND;AAQA3hG,OAAK,CAAC6iE,YAAN,CAAmB,eAAnB,EAAoC;AAClC1vD,SAAK,EAAE,gBAD2B;AAElClQ,YAAQ,EAAE,QAFwB;AAGlCwQ,UAAM,EAAE;AAH0B,GAApC,EAIG,YAAW;AACZ,QAAItiB,KAAK,GAAGy0E,UAAU,CAACioB,EAAvB;;AACA,QAAIjpB,gBAAJ,EAAsB;AACpBzzE,WAAK,GAAGyzE,gBAAgB,CAACM,uBAAjB,CAAyC/zE,KAAzC,EAAgD,QAAhD,CAAR;AACD;;AACD,WAAOA,KAAP;AACD,GAVD;AAYA6O,OAAK,CAAC6iE,YAAN,CAAmB,iBAAnB,EAAsC;AACpC1vD,SAAK,EAAE,kBAD6B;AAEpClQ,YAAQ,EAAE,QAF0B;AAGpCwQ,UAAM,EAAE;AAH4B,GAAtC,EAIG,YAAW;AACZ,QAAItiB,KAAK,GAAGy0E,UAAU,CAACgoB,EAAvB;;AACA,QAAIhpB,gBAAJ,EAAsB;AACpBzzE,WAAK,GAAGyzE,gBAAgB,CAACM,uBAAjB,CAAyC/zE,KAAzC,EAAgD,QAAhD,CAAR;AACD;;AACD,WAAOA,KAAP;AACD,GAVD;AAYA6O,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE,cADyB;AAEhClQ,YAAQ,EAAE,QAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,QAAItiB,KAAK,GAAGy0E,UAAU,CAACioB,EAAX,GAAgBjoB,UAAU,CAACgoB,EAAvC;;AACA,QAAIhpB,gBAAJ,EAAsB;AACpBzzE,WAAK,GAAGyzE,gBAAgB,CAACM,uBAAjB,CAAyC/zE,KAAzC,EAAgD,QAAhD,CAAR;AACD;;AACD,WAAOA,KAAP;AACD,GAVD;AAYA6O,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE,aADyB;AAEhClQ,YAAQ,EAAE,aAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,QAAItiB,KAAK,GAAGy0E,UAAU,CAACtc,WAAvB;;AACA,QAAIsb,gBAAJ,EAAsB;AACpBzzE,WAAK,GAAGyzE,gBAAgB,CAACM,uBAAjB,CAAyC/zE,KAAzC,EAAgD,aAAhD,CAAR;AACD;;AACD,WAAOA,KAAP;AACD,GAVD,EAnxE4E,CA+xE5E;AACA;AACA;AAEA;;AACA6O,OAAK,CAAC0O,EAAN,CAAS,YAAT,EAAuBs8F,mBAAvB;AACAhrG,OAAK,CAAC0O,EAAN,CAAS,YAAT,EAAuBs8F,mBAAvB;;AAEA,WAASA,mBAAT,GAA+B;AAC7B7pC,mBAAe,CAAC5C,yBAAhB;AACA4C,mBAAe,CAAC3C,0BAAhB;AACD;;AAEDx+D,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ;AACA,WAAOnT,KAAK,CAACC,OAAN,IAAiBD,KAAK,CAACk6B,SAAN,EAAxB;AACD,GALD;AAOAl6B,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAOnT,KAAK,CAACi6B,SAAb;AACD,GAJD;AAMAj6B,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAOnT,KAAK,CAACk6B,SAAN,EAAP;AACD,GAJD;AAMA+oE,gBAAc;AACdjjG,OAAK,CAACujE,yBAAN;;AAEA,MAAI,CAAC29B,qBAAqB,CAACnnC,YAA3B,EAAyC;AACvC/5D,SAAK,CAACylE,KAAN;AACD;;AAEDzlE,OAAK,CAAC4gC,oBAAN,GAA6B,IAAI44D,qBAAJ,CAAyBx5F,KAAzB,CAA7B;AAEAA,OAAK,CAACylB,SAAN,GAAkBA,SAAlB;AAEA,SAAOzlB,KAAP;AACD;AAAA,C;;ACv2ED;;;AAGA,IAAIirG,QAAQ,GAAG,CAAf;AAEe,SAASj6E,yBAAT,GAA2B;AACxC,SAAOi6E,QAAQ,EAAf;AACD;AAAA,C;;ACND;AACA,IAAIC,KAAK,GAAG,EAAZ;AAEe;AACb;;;;AAIA,MAAIC,gBAAJ,GAAuB;AACrB,QAAID,KAAK,CAACC,gBAAN,KAA2B76G,SAA/B,EAA0C;AACxC46G,WAAK,CAACC,gBAAN,GAA0B,YAAW;AACnC,YAAIC,KAAJ,EAAWC,KAAX,EAAkBC,IAAlB,EAAwBn2G,MAAxB,CADmC,CAEnC;AACA;;AACAi2G,aAAK,GAAGp1G,CAAC,CAAC,yBAAD,CAAD,CAA6B4G,GAA7B,CAAiC;AACvC,sBAAY,OAD2B;AAEvC,kBAAQ,CAF+B;AAGvC,iBAAO,CAHgC;AAIvC,mBAAS,MAJ8B;AAKvC,oBAAU;AAL6B,SAAjC,EAMLK,QANK,CAMI,MANJ,CAAR;AAOAouG,aAAK,GAAGr1G,CAAC,CAAC,2BAAD,CAAD,CAA+B4G,GAA/B,CAAmC;AACzC,sBAAY,OAD6B;AAEzC,kBAAQ,CAFiC;AAGzC,iBAAO,CAHkC;AAIzC,mBAAS,MAJgC;AAKzC,oBAAU,MAL+B;AAMzC,4BAAkB,MANuB,CAMhB;;AANgB,SAAnC,EAOLK,QAPK,CAOI,MAPJ,CAAR;AAQAquG,YAAI,GAAGt1G,CAAC,CAAC,2BAAD,CAAD,CAA+B4G,GAA/B,CAAmC;AACxC,sBAAY,OAD4B;AAExC,kBAAQ,CAFgC;AAGxC,iBAAO,CAHiC;AAIxC,mBAAS,MAJ+B;AAKxC,oBAAU,MAL8B;AAMxC,4BAAkB,MANsB,CAMf;;AANe,SAAnC,EAOJK,QAPI,CAOK,MAPL,CAAP;AASA9H,cAAM,GAAGa,CAAC,CAACsjD,QAAQ,CAACiyD,gBAAT,CAA0B,CAA1B,EAA6B,CAA7B,CAAD,CAAD,CAAmC96F,IAAnC,CAAwC,OAAxC,CAAT;AAEA66F,YAAI,CAACz3G,MAAL;AACAw3G,aAAK,CAACx3G,MAAN;AACAu3G,aAAK,CAACv3G,MAAN;;AAEA,gBAAQsB,MAAR;AACE,eAAK,WAAL;AACE,mBAAO,IAAP;;AACF,eAAK,aAAL;AACE,mBAAO,KAAP;;AACF;AACEgB,mBAAO,CAACwrC,IAAR,CAAa,wCAAb;AACA,mBAAO,KAAP;AAPJ;AASD,OA3CyB,EAA1B;AA4CD;;AACD,WAAOupE,KAAK,CAACC,gBAAb;AACD;;AArDY,CAAf,E;;ACJA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEA;;AACA,IAAIK,WAAW,GAAG,CAAC,WAAD,EAAc,SAAd,EAAyB,aAAzB,CAAlB;AAAA,IAEE;AACA;AACAC,eAAe,GAAG,EAJpB;;AAMA,SAASC,sBAAT,CAAgCzzG,IAAhC,EAAsCqtB,QAAtC,EAAgDqmF,UAAhD,EAA4D;AAC1D97G,QAAM,CAAC+7G,gBAAP,CAAwB3zG,IAAxB,EAA8BqtB,QAA9B,EAAwCqmF,UAAxC;AAEAF,iBAAe,CAACz3G,IAAhB,CAAqB;AACnBiE,QAAI,EAAEA,IADa;AAEnB+tB,QAAI,EAAEV,QAFa;AAGnBumF,WAAO,EAAEF;AAHU,GAArB;AAKD;;AAED,SAASG,sBAAT,GAAkC;AAChC,MAAIrjB,CAAJ;;AACA,SAAOgjB,eAAe,CAACp6G,MAAhB,GAAyB,CAAhC,EAAmC;AACjCo3F,KAAC,GAAGgjB,eAAe,CAAC70F,GAAhB,EAAJ;AACA/mB,UAAM,CAACk8G,mBAAP,CAA2BtjB,CAAC,CAACxwF,IAA7B,EAAmCwwF,CAAC,CAACziE,IAArC,EAA2CyiE,CAAC,CAACojB,OAA7C;AACD;AACF;;AAED,SAASG,uBAAT,GAAgB,CAAE;AAElB;;;;;AAGe,SAASC,gBAAT,CAA0BC,cAA1B,EAA0C;AACvD,MAAIt8F,GAAJ,CADuD,CAGvD;AACA;AACA;AACA;;AACA,MAAIu8F,eAAJ,CAPuD,CASvD;AACA;AACA;;AACA,MAAI13G,QAAQ,GAAG23G,aAAY,CAACjB,gBAAb,GAAgC,eAAhC,GAAkD,YAAjE;AACA,MAAIkB,UAAU,GAAGD,aAAY,CAACjB,gBAAb,GAAgC,MAAhC,GAAyC,QAA1D;AACA,MAAImB,UAAJ;AAEA,MAAIC,eAAJ;AACA,MAAIC,qBAAJ;AACA,MAAIC,oBAAJ;AACA,MAAIC,eAAJ,CAnBuD,CAqBvD;AACA;;AACA,WAASC,kBAAT,CAA4B18G,CAA5B,EAA+Bg3B,MAA/B,EAAuC;AACrC,QAAI2lF,WAAW,GAAGtzD,QAAQ,CAACuzD,WAAT,CAAqB,YAArB,CAAlB;AACAD,eAAW,CAACE,cAAZ,CAA2B78G,CAAC,CAACgI,IAA7B,EAAmChI,CAAC,CAAC88G,OAArC,EAA8C98G,CAAC,CAAC+8G,UAAhD,EAA4D/8G,CAAC,CAAC65C,IAA9D,EAAoE75C,CAAC,CAACg9G,MAAtE,EAA8Eh9G,CAAC,CAACi9G,OAAhF,EAAyFj9G,CAAC,CAACk9G,OAA3F,EAAoGl9G,CAAC,CAACm9G,OAAtG,EAA+Gn9G,CAAC,CAACo9G,OAAjH,EAA0Hp9G,CAAC,CAACq9G,OAA5H,EAAqIr9G,CAAC,CAACs9G,MAAvI,EAA+It9G,CAAC,CAACywD,QAAjJ,EAA2JzwD,CAAC,CAAC0wD,OAA7J,EAAsK1wD,CAAC,CAAC8tB,MAAxK,EAAgL9tB,CAAC,CAACu9G,aAAlL,EAFqC,CAGrC;;AACAZ,eAAW,CAACa,mBAAZ,GAAkCx9G,CAAC,CAACw9G,mBAApC,CAJqC,CAKrC;AACA;AACA;AACA;;AACA,QAAIb,WAAW,CAACc,KAAZ,KAAsB,CAAtB,IAA2Bd,WAAW,CAACe,KAAZ,KAAsB,CAAjD,IAAsDh8G,MAAM,CAAC6qC,cAAjE,EAAiF;AAC/E,UAAIoxE,GAAG,GAAGt0D,QAAQ,CAACu0D,eAAnB;AACA,UAAIp5C,IAAI,GAAGnb,QAAQ,CAACmb,IAApB;AACA,UAAI24C,OAAO,GAAGn9G,CAAC,CAACm9G,OAAhB;AACA,UAAIC,OAAO,GAAGp9G,CAAC,CAACo9G,OAAhB;AAEA17G,YAAM,CAAC6qC,cAAP,CAAsBowE,WAAtB,EAAmC,OAAnC,EAA4C;AAC1Cz2F,WAAG,EAAE,eAAW;AACd,iBAAOi3F,OAAO,IACXQ,GAAG,IAAIA,GAAG,CAACE,UAAX,IAAyBr5C,IAAI,IAAIA,IAAI,CAACq5C,UAAtC,IAAoD,CADzC,CAAP,IAEJF,GAAG,IAAIA,GAAG,CAACG,UAAX,IAAyBt5C,IAAI,IAAIA,IAAI,CAACs5C,UAAtC,IAAoD,CAFhD,CAAP;AAGD;AALyC,OAA5C;AAOAp8G,YAAM,CAAC6qC,cAAP,CAAsBowE,WAAtB,EAAmC,OAAnC,EAA4C;AAC1Cz2F,WAAG,EAAE,eAAW;AACd,iBAAOk3F,OAAO,IACXO,GAAG,IAAIA,GAAG,CAACtuD,SAAX,IAAwBmV,IAAI,IAAIA,IAAI,CAACnV,SAArC,IAAkD,CADvC,CAAP,IAEJsuD,GAAG,IAAIA,GAAG,CAACI,SAAX,IAAwBv5C,IAAI,IAAIA,IAAI,CAACu5C,SAArC,IAAkD,CAF9C,CAAP;AAGD;AALyC,OAA5C;AAOD;;AACD,WAAOpB,WAAP;AACD,GAtDsD,CAwDvD;;;AACA,WAASqB,WAAT,CAAqBh+G,CAArB,EAAwB;AACtB;AACA,QAAI28G,WAAW,GAAGtzD,QAAQ,CAACuzD,WAAT,CAAqB,YAArB,CAAlB;AACAD,eAAW,CAACE,cAAZ,CAA2B,OAA3B,EAAoC,IAApC,EAA0C78G,CAAC,CAAC+8G,UAA5C,EAAwD/8G,CAAC,CAAC65C,IAA1D,EAAgE75C,CAAC,CAACg9G,MAAlE,EAA0Eh9G,CAAC,CAACi9G,OAA5E,EAAqFj9G,CAAC,CAACk9G,OAAvF,EAAgGl9G,CAAC,CAACm9G,OAAlG,EAA2Gn9G,CAAC,CAACo9G,OAA7G,EAAsHp9G,CAAC,CAACq9G,OAAxH,EAAiIr9G,CAAC,CAACs9G,MAAnI,EAA2It9G,CAAC,CAACywD,QAA7I,EAAuJzwD,CAAC,CAAC0wD,OAAzJ,EAAkK1wD,CAAC,CAAC8tB,MAApK,EAA4K9tB,CAAC,CAACu9G,aAA9K;AACA,WAAOZ,WAAP;AACD,GA9DsD,CAgEvD;;;AACA,WAASsB,SAAT,CAAmB98G,CAAnB,EAAsB;AACpB,QAAIqZ,KAAK,GAAG0hG,eAAe,CAAC/6G,CAAD,CAA3B;AACAk7G,cAAU,CAACl7G,CAAD,CAAV,GAAgBqZ,KAAK,CAACsU,KAAN,CAAYtqB,QAAZ,CAAhB;AACAgW,SAAK,CAACsU,KAAN,CAAYtqB,QAAZ,IAAwB43G,UAAxB;AACD,GArEsD,CAuEvD;;;AACA,WAAS8B,YAAT,CAAsB5uF,CAAtB,EAAyB;AACvB,SAAK,IAAInuB,CAAC,GAAGmuB,CAAb,EAAgBnuB,CAAC,IAAI,CAArB,EAAwBA,CAAC,EAAzB,EAA6B;AAC3B+6G,qBAAe,CAAC/6G,CAAD,CAAf,CAAmB2tB,KAAnB,CAAyBtqB,QAAzB,IAAqC63G,UAAU,CAACl7G,CAAD,CAA/C;AACD;AACF;;AAED,WAASg9G,OAAT,CAAiBn+G,CAAjB,EAAoB;AAClB;AACAq8G,cAAU,GAAG,EAAb;AAEA,QAAI7hG,KAAJ;AACA,QAAIwc,MAAJ;AACA,QAAIonF,UAAJ;AACA,QAAIC,gBAAJ;AACA,QAAIC,mBAAJ;AACA,QAAIC,YAAJ,CATkB,CAWlB;;AACAhC,yBAAqB,GAAG,IAAxB;;AAEA,SAAK,IAAIp7G,CAAC,GAAG,CAAR,EAAWc,GAAG,GAAGi6G,eAAe,CAAC96G,MAAtC,EAA8CD,CAAC,GAAGc,GAAlD,EAAuDd,CAAC,EAAxD,EAA4D;AAC1DqZ,WAAK,GAAG0hG,eAAe,CAAC/6G,CAAD,CAAvB;;AAEA,UAAIA,CAAC,GAAG,CAAR,EAAW;AACT88G,iBAAS,CAAC98G,CAAC,GAAG,CAAL,CAAT;AACD;;AAED,UAAIqZ,KAAK,CAACoJ,OAAN,CAAc0Q,WAAd,OAAgC,QAApC,EAA8C;AAC5C;AACA;AACA8pF,kBAAU,GAAG1B,kBAAkB,CAAC18G,CAAD,EAAIwa,KAAJ,CAA/B,CAH4C,CAK5C;AACA;;AACAmF,WAAG,CAAC6+F,eAAJ,GAAsB,UAASC,KAAT,EAAgB;AACpCJ,0BAAgB,GAAGI,KAAnB;;AACA,cAAI,CAACA,KAAL,EAAY;AACVL,sBAAU,CAAChmE,eAAX;AACAgmE,sBAAU,CAACppE,cAAX;AACD;AACF,SAND;;AAOAr1B,WAAG,CAAC++F,eAAJ,GAAsB,UAASC,OAAT,EAAkB;AACtCL,6BAAmB,GAAGK,OAAtB;AACD,SAFD;;AAIAnkG,aAAK,CAACmc,aAAN,CAAoBynF,UAApB,EAlB4C,CAoB5C;AACA;AACA;;AACAz+F,WAAG,CAAC6+F,eAAJ,GAAsBzC,uBAAtB;AACAp8F,WAAG,CAAC++F,eAAJ,GAAsB3C,uBAAtB;;AAEA,YAAIuC,mBAAJ,EAAyB;AACvB;AACA/B,+BAAqB,GAAG/hG,KAAxB;AACD;;AAED,YAAI6jG,gBAAJ,EAAsB;AACpBH,sBAAY,CAAC/8G,CAAC,GAAG,CAAL,CAAZ;AACAq7G,8BAAoB,GAAG4B,UAAU,CAACQ,gBAAlC;AACA,iBAAOpkG,KAAP;AACD;AACF,OApCD,MAoCO;AACL;AACA;AACA;AACA+jG,oBAAY,GAAG/jG,KAAK,CAACsU,KAAN,CAAY3Z,eAA3B;AACAqF,aAAK,CAACsU,KAAN,CAAY3Z,eAAZ,GAA8B,eAA9B,CALK,CAOL;AACA;AACA;AACA;AACA;AACA;;AACA6hB,cAAM,GAAGqyB,QAAQ,CAACiyD,gBAAT,CAA0Bt7G,CAAC,CAACm9G,OAA5B,EAAqCn9G,CAAC,CAACo9G,OAAvC,CAAT,CAbK,CAeL;;AACA5iG,aAAK,CAACsU,KAAN,CAAY3Z,eAAZ,GAA8BopG,YAA9B,CAhBK,CAkBL;AACA;AACA;AACA;;AACA,YAAIvnF,MAAM,KAAKxc,KAAf,EAAsB;AACpB0jG,sBAAY,CAAC/8G,CAAC,GAAG,CAAL,CAAZ;AACAi9G,oBAAU,GAAG1B,kBAAkB,CAAC18G,CAAD,EAAIg3B,MAAJ,CAA/B;AACAA,gBAAM,CAACL,aAAP,CAAqBynF,UAArB;AACA5B,8BAAoB,GAAG4B,UAAU,CAACQ,gBAAlC,CAJoB,CAKpB;AACA;;AACA,iBAAO5nF,MAAP;AACD;AACF;AACF,KAzFiB,CA0FlB;;;AACAknF,gBAAY,CAAChC,eAAe,CAAC96G,MAAhB,GAAyB,CAA1B,CAAZ,CA3FkB,CA2FwB;AAC3C,GA1KsD,CA4KvD;AACA;AACA;;;AACA,WAASy9G,0BAAT,CAAoC5C,cAApC,EAAoD;AAClD;AACA,QAAI6C,OAAO,GAAG,IAAd;AACA,QAAIC,WAAJ;AACA,QAAIC,WAAJ;;AAEA,aAASC,gBAAT,CAA0BC,KAA1B,EAAiCl3G,IAAjC,EAAuC;AACrC,UAAIo2G,UAAU,GAAG/0D,QAAQ,CAACuzD,WAAT,CAAqB,YAArB,CAAjB;AACAwB,gBAAU,CAACvB,cAAX,CAA0B70G,IAA1B,EAAgC,IAAhC,EAAsC,IAAtC,EAA4CpI,MAA5C,EAAoD,CAApD,EAAuDs/G,KAAK,CAACjC,OAA7D,EAAsEiC,KAAK,CAAChC,OAA5E,EAAqFgC,KAAK,CAAC/B,OAA3F,EAAoG+B,KAAK,CAAC9B,OAA1G,EAAmH,KAAnH,EAA0H,KAA1H,EAAiI,KAAjI,EAAwI,KAAxI,EAA+I,CAA/I,EAAkJ,IAAlJ,EAFqC,CAGrC;;AACAgB,gBAAU,CAACZ,mBAAX,GAAiC,IAAjC;AACA,aAAOY,UAAP;AACD,KAZiD,CAclD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,aAASe,YAAT,CAAsBD,KAAtB,EAA6B;AAC3B,aAAO38G,IAAI,CAAC2M,GAAL,CAASgwG,KAAK,CAACjC,OAAN,GAAgB8B,WAAzB,IAAwC,EAAxC,IAA8Cx8G,IAAI,CAAC2M,GAAL,CAASgwG,KAAK,CAAChC,OAAN,GAAgB8B,WAAzB,IAAwC,EAA7F;AACD,KA3BiD,CA6BlD;;;AACA,aAASI,YAAT,CAAsBp/G,CAAtB,EAAyB;AACvB,UAAIk/G,KAAK,GAAGl/G,CAAC,CAACq/G,cAAF,CAAiB,CAAjB,CAAZ;;AAEA,UAAIr/G,CAAC,CAACs/G,OAAF,CAAUl+G,MAAV,GAAmB,CAAnB,IAAwB89G,KAAK,CAACloF,MAAN,KAAiBilF,cAA7C,EAA6D;AAC3D;AACD;;AAEDQ,qBAAe,GAAG,KAAlB;AACAsC,iBAAW,GAAGG,KAAK,CAACjC,OAApB;AACA+B,iBAAW,GAAGE,KAAK,CAAChC,OAApB,CATuB,CAWvB;AACA;;AACA4B,aAAO,GAAGI,KAAK,CAACK,UAAhB;AACAtD,oBAAc,CAACtlF,aAAf,CAA6BsoF,gBAAgB,CAACC,KAAD,EAAQ,WAAR,CAA7C;;AAEA,UAAI1C,oBAAJ,EAA0B;AACxBx8G,SAAC,CAACg1C,cAAF;AACD;;AACDh1C,OAAC,CAACo4C,eAAF;AACD,KAlDiD,CAoDlD;;;AACA,aAASonE,YAAT,CAAsBx/G,CAAtB,EAAyB;AAEvB,UAAI8+G,OAAO,KAAK,IAAhB,EAAsB;AACpB;AACD,OAJsB,CAMvB;AACA;AACA;;;AACA,UAAI9+G,CAAC,CAACgI,IAAF,KAAW,WAAX,IAA0BhI,CAAC,CAACs/G,OAAF,CAAUl+G,MAAV,GAAmB,CAAjD,EAAoD;AAClD;AACA;AACAq7G,uBAAe,GAAG,IAAlB,CAHkD,CAIlD;AACA;AACA;AACA;;AACAz8G,SAAC,CAACo4C,eAAF;AACA;AACD;;AAED,UAAIj3C,CAAJ;AACA,UAAIc,GAAJ;AACA,UAAIi9G,KAAJ;AACA,UAAIloF,MAAJ;AACA,UAAIyoF,cAAJ;;AAEA,WAAKt+G,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGjC,CAAC,CAACq/G,cAAF,CAAiBj+G,MAAnC,EAA2CD,CAAC,GAAGc,GAA/C,EAAoDd,CAAC,EAArD,EAAyD;AACvD+9G,aAAK,GAAGl/G,CAAC,CAACq/G,cAAF,CAAiBl+G,CAAjB,CAAR;;AAEA,YAAI+9G,KAAK,CAACK,UAAN,KAAqBT,OAAzB,EAAkC;AAChC;AACD;;AAED,YAAI78G,GAAG,KAAK,CAAZ,EAAe;AACbjC,WAAC,CAACo4C,eAAF;AACD,SATsD,CAWvD;AACA;AACA;AACA;AACA;;;AACAphB,cAAM,GAAGqyB,QAAQ,CAACiyD,gBAAT,CAA0B4D,KAAK,CAAC/B,OAAhC,EAAyC+B,KAAK,CAAC9B,OAA/C,KAA2Dx9G,MAApE;;AAEA,YAAII,CAAC,CAACgI,IAAF,KAAW,WAAf,EAA4B;AAC1B,cAAI,CAACy0G,eAAL,EAAsB;AACpB;AACAA,2BAAe,GAAG0C,YAAY,CAACD,KAAD,CAA9B;AACD;;AACDO,wBAAc,GAAGR,gBAAgB,CAACC,KAAD,EAAQ,WAAR,CAAjC;AACAloF,gBAAM,CAACL,aAAP,CAAqB8oF,cAArB,EAN0B,CAO1B;AACA;AACA;AACA;;AACA,cAAI,CAACA,cAAc,CAACC,mBAApB,EAAyC;AACvClD,gCAAoB,GAAGiD,cAAc,CAACb,gBAAtC;AACD;AACF,SAdD,MAcO,IAAI5+G,CAAC,CAACgI,IAAF,KAAW,UAAf,EAA2B;AAChCgvB,gBAAM,CAACL,aAAP,CAAqBsoF,gBAAgB,CAACC,KAAD,EAAQ,SAAR,CAArC;AACAJ,iBAAO,GAAG,IAAV;AACD,SAHM,MAGA,IAAI9+G,CAAC,CAACgI,IAAF,KAAW,aAAf,EAA8B;AACnC;AACAy0G,yBAAe,GAAG,IAAlB;AACAzlF,gBAAM,CAACL,aAAP,CAAqBsoF,gBAAgB,CAACC,KAAD,EAAQ,SAAR,CAArC;AACAJ,iBAAO,GAAG,IAAV;AACD,SAxCsD,CA0CvD;AACA;AACA;AACA;;;AACA,YAAI9+G,CAAC,CAACgI,IAAF,KAAW,UAAX,IAAyBw0G,oBAA7B,EAAmD;AACjDx8G,WAAC,CAACg1C,cAAF;AACD;;AAED;AACD;AACF;;AAEDymE,0BAAsB,CAAC,YAAD,EAAe2D,YAAf,EAA6B,IAA7B,CAAtB;AACA,KAAC,WAAD,EAAc,UAAd,EAA0B,aAA1B,EAAyC9hG,OAAzC,CAAiD,UAASkoF,SAAT,EAAoB;AACnEiW,4BAAsB,CAACjW,SAAD,EAAYga,YAAZ,EAA0B,IAA1B,CAAtB;AACD,KAFD,EAvIkD,CA2IlD;AACA;AACA;AACD;;AAED,WAASn3F,IAAT,GAAgB;AACdwzF,0BAAsB;AAEtBK,mBAAe,GAAG,CAACD,cAAD,CAAlB;AAEAV,eAAW,CAACj+F,OAAZ,CAAoB,UAASkoF,SAAT,EAAoB;AACtC;AACAiW,4BAAsB,CAACjW,SAAD,EAAY,UAASxlG,CAAT,EAAY;AAC5C,YAAIg3B,MAAJ;;AAEA,YAAIh3B,CAAC,CAACg3B,MAAF,KAAailF,cAAjB,EAAiC;AAC/B;AACD;;AAEDj8G,SAAC,CAACo4C,eAAF,GAP4C,CAQ5C;AACA;AACA;AACA;;AACA,YAAIp4C,CAAC,CAACgI,IAAF,KAAW,WAAf,EAA4B;AAC1BhI,WAAC,CAACg1C,cAAF;AACD;;AAEDhe,cAAM,GAAGmnF,OAAO,CAACn+G,CAAD,CAAhB;;AAEA,YAAIA,CAAC,CAACgI,IAAF,KAAW,WAAf,EAA4B;AAC1Bs0G,yBAAe,GAAGtlF,MAAlB;AACD,SAFD,MAEO,IAAIh3B,CAAC,CAACgI,IAAF,KAAW,SAAf,EAA0B;AAC/B;AACA;AACA;AACA;AACA;AACA,cAAIgvB,MAAM,IAAIA,MAAM,KAAKslF,eAArB,IACFtlF,MAAM,CAACpT,OAAP,CAAe0Q,WAAf,OAAiC,QAD/B,IAC2C,CAACmoF,eADhD,EACiE;AAC/DzlF,kBAAM,CAACL,aAAP,CAAqBqnF,WAAW,CAACh+G,CAAD,CAAhC;AACD;;AACD,cAAIu8G,qBAAqB,IAAI,CAACE,eAA9B,EAA+C;AAC7CF,iCAAqB,CAAC5lF,aAAtB,CAAoCqnF,WAAW,CAACh+G,CAAD,CAA/C;AACD;AACF;AACF,OAlCqB,EAkCnB,IAlCmB,CAAtB;AAmCD,KArCD,EALc,CA4Cd;AACA;;AACAy7G,0BAAsB,CAAC,OAAD,EAAU,UAASz7G,CAAT,EAAY;AAC1C,UAAIA,CAAC,CAACg3B,MAAF,KAAailF,cAAjB,EAAiC;AAC/Bj8G,SAAC,CAACo4C,eAAF;AACAp4C,SAAC,CAACg1C,cAAF;AACD;AACF,KALqB,EAKnB,IALmB,CAAtB;AAOA6pE,8BAA0B,CAAC5C,cAAD,CAA1B;AACD;;AAEDt8F,KAAG,GAAG;AACJ;;;;;;;AAOAggG,iBAAa,EAAE,uBAASC,WAAT,EAAsBC,WAAtB,EAAmC;AAChD,UAAIC,UAAJ,CADgD,CAGhD;;AACA,eAASb,gBAAT,CAA0Bj/G,CAA1B,EAA6BgI,IAA7B,EAAmCu1G,aAAnC,EAAkD;AAChD,YAAIZ,WAAW,GAAGtzD,QAAQ,CAACuzD,WAAT,CAAqB,YAArB,CAAlB;AACAD,mBAAW,CAACE,cAAZ,CAA2B70G,IAA3B,EAAiChI,CAAC,CAAC88G,OAAnC,EAA4C98G,CAAC,CAAC+8G,UAA9C,EAA0D/8G,CAAC,CAAC65C,IAA5D,EAAkE75C,CAAC,CAACg9G,MAApE,EAA4Eh9G,CAAC,CAACi9G,OAA9E,EAAuFj9G,CAAC,CAACk9G,OAAzF,EAAkGl9G,CAAC,CAACm9G,OAApG,EAA6Gn9G,CAAC,CAACo9G,OAA/G,EAAwHp9G,CAAC,CAACq9G,OAA1H,EAAmIr9G,CAAC,CAACs9G,MAArI,EAA6It9G,CAAC,CAACywD,QAA/I,EAAyJzwD,CAAC,CAAC0wD,OAA3J,EAAoK1wD,CAAC,CAAC8tB,MAAtK,EAA8KyvF,aAAa,IAAIv9G,CAAC,CAACu9G,aAAjM;AACA,eAAOZ,WAAP;AACD;;AAEDlB,4BAAsB,CAAC,WAAD,EAAc,UAASz7G,CAAT,EAAY;AAC9C;AACA;AACA,YAAI,CAACA,CAAC,CAAC+/G,SAAP,EAAkB;AAChB,cAAI/oF,MAAJ,EAAYonF,UAAZ;;AACA,cAAIp+G,CAAC,CAACg3B,MAAF,KAAa4oF,WAAjB,EAA8B;AAC5B;AACA,gBAAIE,UAAU,KAAKD,WAAnB,EAAgC;AAC9BA,yBAAW,CAAClpF,aAAZ,CAA0BsoF,gBAAgB,CAACj/G,CAAD,EAAI,UAAJ,EAAgBA,CAAC,CAACg3B,MAAlB,CAA1C;AACD;;AACD8oF,sBAAU,GAAG9/G,CAAC,CAACg3B,MAAf;AACA;AACD;;AACDA,gBAAM,GAAG6oF,WAAT;;AACA,cAAI7oF,MAAM,KAAK8oF,UAAf,EAA2B;AACzBD,uBAAW,CAAClpF,aAAZ,CAA0BsoF,gBAAgB,CAACj/G,CAAD,EAAI,WAAJ,EAAiB8/G,UAAjB,CAA1C;AACD;;AACD9/G,WAAC,CAACo4C,eAAF;AACAp4C,WAAC,CAACg1C,cAAF;AACAh1C,WAAC,CAAC0/G,mBAAF,GAAwB,IAAxB;AACAtB,oBAAU,GAAG1B,kBAAkB,CAAC18G,CAAD,EAAIg3B,MAAJ,CAA/B;AACAonF,oBAAU,CAAC2B,SAAX,GAAuB,IAAvB,CAlBgB,CAkBa;AAC7B;AACA;;AACApgG,aAAG,CAAC6+F,eAAJ,GAAsBzC,uBAAtB;AACA/kF,gBAAM,CAACL,aAAP,CAAqBynF,UAArB,EAtBgB,CAuBhB;;AACA5B,8BAAoB,GAAG4B,UAAU,CAACQ,gBAAlC;AACAkB,oBAAU,GAAG9oF,MAAb;AACD;AACF,OA9BqB,EA8BnB,IA9BmB,CAAtB;AA+BD,KAjDG;;AAmDJ;;;;AAIAgpF,YAAQ,EAAE,kBAASvtG,OAAT,EAAkB;AAC1B;AACAypG,qBAAe,CAACztD,MAAhB,CAAuB,CAAvB,EAA0B,CAA1B,EAA6Bh8C,OAA7B;AACD,KA1DG;;AA4DJ;;;;;;;AAOA+rG,mBAAe,EAAEzC,uBAnEb;;AAqEJ;;;;AAIA2C,mBAAe,EAAE3C,uBAAIA;AAzEjB,GAAN;AA4EA1zF,MAAI;AAEJ,SAAO1I,GAAP;AACD,C;;;;;;ACtiBA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAEA;;AACA,IAAIsgG,mBAAmB,GAAG,CAA1B;AAAA,IAEEC,WAAW,GAAG,IAFhB,C,CAIA;AACA;;AACA,SAASC,eAAT,CAAyB3wF,CAAzB,EAA4B82B,CAA5B,EAA+B;AAC7B,MAAI65D,eAAe,CAACC,QAAhB,IAA4B,IAAhC,EAAsC;AACpC,QAAItsD,OAAO,GAAG4E,SAAS,CAAC5E,OAAxB;AACA,QAAIusD,WAAJ;;AACA,QAAIvsD,OAAO,CAACA,OAAR,KAAoB,SAApB,IAAiCA,OAAO,CAACC,KAAR,CAAc1kD,KAAd,CAAoB,eAApB,CAArC,EAA2E;AACzE;AACA;AACA;AACA;AACAgxG,iBAAW,GAAG,qBAAS7wF,CAAT,EAAY82B,CAAZ,EAAezM,IAAf,EAAqBymE,WAArB,EAAkC;AAC9C,eAAO,IAAIC,cAAI,CAACC,cAAT,CAAwBhxF,CAAxB,EAA2B82B,CAA3B,EAA8BzM,IAA9B,EAAoCymE,WAApC,CAAP;AACD,OAFD;AAGD,KARD,MAQO;AACLD,iBAAW,GAAGE,cAAI,CAACE,kBAAnB;AACD;;AACDN,mBAAe,CAACC,QAAhB,GAA2BC,WAAW,CAAC7wF,CAAC,GAAGywF,mBAAL,EAA0B35D,CAAC,GAAG25D,mBAA9B,EAAmD,IAAnD,EAAyD,IAAzD,CAAtC;AACD,GAfD,MAeO;AACLE,mBAAe,CAACC,QAAhB,CAAyB/vG,MAAzB,CAAgCmf,CAAhC,EAAmC82B,CAAnC;AACD;;AACD,SAAO65D,eAAe,CAACC,QAAvB;AACD;;AACDD,eAAe,CAACC,QAAhB,GAA2B,IAA3B;AAEe,SAASM,0BAAT,CAAsB3wG,KAAtB,EAA6B8lC,QAA7B,EAAuC8qE,QAAvC,EAAiDrY,GAAjD,EAAsD;AACnE;AACA,MAAI3oF,GAAJ;AAAA,MAEEuI,IAAI,GAAGogF,GAAG,IAAIA,GAAG,CAACpgF,IAAX,IAAmB,IAF5B;AAAA,MAIE;AACAi+C,QAAM,GAAGmiC,GAAG,IAAIA,GAAG,CAACniC,MAAX,IAAqB,aALhC;AAAA,MAOE9lD,GAPF;AAAA,MAQEoC,IARF;AAAA,MAUEm+F,aAVF;AAAA,MAUiBC,mBAVjB;AAAA,MAUsCC,mBAVtC;AAAA,MAYEC,cAZF;AAAA,MAYkBC,eAZlB;AAAA,MAYmCC,eAZnC;AAAA,MAYoDC,cAZpD;AAAA,MAcEC,aAdF;AAAA,MAciBC,UAdjB;AAAA,MAc6BC,cAd7B;AAAA,MAgBEC,gBAhBF;AAAA,MAiBEC,cAAc,GAAG,CAjBnB;AAAA,MAmBEjL,EAnBF;AAAA,MAmBMC,EAnBN;AAAA,MAoBEiL,QApBF;AAAA,MAoBYzsG,YApBZ;AAAA,MAsBE0sG,YAAY,GAAGh+F,EAAE,CAACvF,KAAH,CAASsG,MAAT,EAtBjB;AAAA,MAuBEk9F,eAAe,GAAGj+F,EAAE,CAACvF,KAAH,CAASsG,MAAT,EAvBpB;AAAA,MAyBE;AACA;AACA;AACA;AACA;AACA;AACAm9F,UAAQ,GAAGl+F,EAAE,CAACvF,KAAH,CAASsG,MAAT,EA/Bb;AAAA,MAiCE;AACA;AACA;AACA;AACA;AACA;AACA;AACAo9F,aAAW,GAAGn+F,EAAE,CAACvF,KAAH,CAASsG,MAAT,EAxChB;AAAA,MA0CEq9F,YA1CF;AAAA,MA2CEC,WA3CF;AAAA,MA4CE;AACA;AACAC,aA9CF;AAAA,MAgDErrF,QAAQ,GAAGjT,EAAE,CAACiT,QAAH,CAAY,cAAZ,CAhDb;AAAA,MAkDEsrF,QAlDF;;AAoDA,WAASC,kBAAT,GAA8B;AAC5B,WAAOV,cAAc,EAArB;AACD;;AAED,WAASW,mBAAT,GAA+B;AAC7B,WAAOl9F,UAAU,CAAC3E,GAAG,CAAC1T,GAAJ,CAAQ,WAAR,CAAD,CAAV,IAAoC,EAA3C;AACD;;AAED,WAASuR,KAAT,GAAiB;AACf,QAAIrJ,aAAa,GAAG9E,KAAK,CAACmW,GAAN,CAAU,eAAV,CAApB;AAAA,QACEpR,cAAc,GAAG/E,KAAK,CAACmW,GAAN,CAAU,gBAAV,CADnB;AAAA,QAEElR,SAAS,GAAGjF,KAAK,CAACmW,GAAN,CAAU,WAAV,CAFd;AAAA,QAGEjR,SAAS,GAAGlF,KAAK,CAACmW,GAAN,CAAU,WAAV,CAHd;AAAA,QAIE5b,WAJF;AAAA,QAIe63G,SAJf;AAMAptG,gBAAY,GAAGhF,KAAK,CAACmW,GAAN,CAAU,cAAV,KAA6B,CAA5C,CAPe,CASf;;AACAi8F,aAAS,GAAG;AACV,cAAQpyG,KAAK,CAACmW,GAAN,CAAU,MAAV,CADE;AAEV,cAAQnW,KAAK,CAACmW,GAAN,CAAU,MAAV,CAFE;AAGV,cAAQnW,KAAK,CAACmW,GAAN,CAAU,MAAV,CAHE;AAIV,cAAQnW,KAAK,CAACmW,GAAN,CAAU,MAAV;AAJE,KAAZ,CAVe,CAiBf;AACA;;AACAs7F,YAAQ,GAAG;AACTj1G,WAAK,EAAEsI,aAAa,IAAI,IAAjB,GAAwBA,aAAxB,GAAwCstG,SAAS,CAACtzG,IAAV,GAAiBszG,SAAS,CAACnzG,IADjE;AAETxC,YAAM,EAAEsI,cAAc,IAAI,IAAlB,GAAyBA,cAAzB,GAA0CqtG,SAAS,CAACpzG,IAAV,GAAiBozG,SAAS,CAAClzG,IAFpE;AAGT3M,OAAC,EAAE0S,SAAS,IAAI,IAAb,GAAoBA,SAApB,GAAgCmtG,SAAS,CAACnzG,IAHpC;AAIT6I,OAAC,EAAE5C,SAAS,IAAI,IAAb,GAAoBA,SAApB,GAAgCktG,SAAS,CAAClzG;AAJpC,KAAX;AAOAuyG,YAAQ,CAACY,WAAT,GAAuBZ,QAAQ,CAACj1G,KAAT,GAAiBwI,YAAxC;AACAysG,YAAQ,CAACa,YAAT,GAAwBb,QAAQ,CAACh1G,MAAT,GAAkBuI,YAA1C;;AACA,QAAIoxD,MAAM,KAAK,aAAf,EAA8B;AAC5Bq7C,cAAQ,CAAC3pG,CAAT,IAAc2pG,QAAQ,CAACa,YAAvB;AACD;;AAED/3G,eAAW,GAAGk3G,QAAQ,CAACj1G,KAAT,GAAiBi1G,QAAQ,CAACh1G,MAAxC;AAEA8pG,MAAE,GAAGj2F,GAAG,CAAC9T,KAAJ,EAAL;AACAgqG,MAAE,GAAGD,EAAE,GAAGhsG,WAAV;AACAmY,QAAI,CAACqM,KAAL,CAAWtiB,MAAX,GAAoB+pG,EAAE,GAAG,IAAzB,CApCe,CAsCf;;AACAoL,YAAQ,CACLt8F,MADH,CACU,CAAC,CAAD,EAAIm8F,QAAQ,CAACj1G,KAAb,CADV,EAEG+Y,KAFH,CAES,CAAC,CAAD,EAAIgxF,EAAJ,CAFT;AAIAmL,gBAAY,CACTp8F,MADH,CACU,CAAC,CAAD,EAAIm8F,QAAQ,CAACY,WAAb,CADV,EAEG98F,KAFH,CAES,CAAC,CAAD,EAAIgxF,EAAE,GAAG2J,mBAAT,CAFT,EA3Ce,CA+Cf;;AACA2B,eAAW,CACRv8F,MADH,CACU,CAACm8F,QAAQ,CAACh1G,MAAV,EAAkB,CAAlB,CADV,EAEG8Y,KAFH,CAES6gD,MAAM,KAAK,aAAX,GAA2B,CAAC,CAAD,EAAIowC,EAAJ,CAA3B,GAAqC,CAACA,EAAD,EAAK,CAAL,CAF9C;AAIAmL,mBAAe,CACZr8F,MADH,CACU,CAACm8F,QAAQ,CAACa,YAAV,EAAwB,CAAxB,CADV,EAEG/8F,KAFH,CAES6gD,MAAM,KAAK,aAAX,GAA2B,CAAC,CAAD,EAAIowC,EAAE,GAAG0J,mBAAT,CAA3B,GAA2D,CAAC1J,EAAE,GAAG0J,mBAAN,EAA2B,CAA3B,CAFpE;;AAIA,QAAI8B,WAAJ,EAAiB;AACf;AACAA,iBAAW,CACRz/G,CADH,CACKq/G,QADL,EAEG9pG,CAFH,CAEK+pG,WAFL;AAGD;AACF;;AAED,WAASU,wBAAT,GAAoC;AAClC,QAAIC,KAAK,GAAG,MAAML,mBAAmB,EAArC;AAAA,QACE;AACAP,YAAQ,GAAGl+F,EAAE,CAACvF,KAAH,CAASsG,MAAT,GAAkBa,MAAlB,CAAyB,CAACm8F,QAAQ,CAACl/G,CAAT,GAAa,OAAOk/G,QAAQ,CAACY,WAA9B,EAA2CZ,QAAQ,CAACl/G,CAAT,GAAak/G,QAAQ,CAACY,WAAjE,CAAzB,EAAwG98F,KAAxG,CAA8G,CAAC,OAAOgxF,EAAR,EAAYA,EAAZ,CAA9G,CAFb;AAAA,QAGEsL,WAAW,GAAGn+F,EAAE,CAACvF,KAAH,CAASsG,MAAT,GAAkBa,MAAlB,CAAyB,CAACm8F,QAAQ,CAAC3pG,CAAV,EAAa2pG,QAAQ,CAAC3pG,CAAT,GAAa,OAAO2pG,QAAQ,CAACa,YAA1C,CAAzB,EAAkF/8F,KAAlF,CAAwF,CAAC,CAAD,EAAI,OAAOixF,EAAX,CAAxF,CAHhB;AAAA,QAIE3oB,EAAE,GAAG,SAALA,EAAK,CAAS1mE,CAAT,EAAY;AACf,aAAO,eAAey6F,QAAQ,CAACz6F,CAAD,CAAvB,GAA6B,KAApC;AACD,KANH;AAAA,QAOE2mE,EAAE,GAAG,SAALA,EAAK,CAAS3mE,CAAT,EAAY;AACf,aAAO,iBAAiB06F,WAAW,CAAC16F,CAAD,CAA5B,GAAkC,GAAzC;AACD,KATH;AAAA,QAUEs7F,MAAM,GAAG,SAATA,MAAS,CAASt7F,CAAT,EAAY;AACnB,aAAOA,CAAC,GAAG,MAAH,GAAY,MAApB;AACD,KAZH;AAAA,QAaEsoE,EAAE,GAAGmyB,QAAQ,CAACv+F,UAAT,CAAoB,CAApB,CAbP;AAAA,QAcEqsE,EAAE,GAAGmyB,WAAW,CAACx+F,UAAZ,CAAuB,CAAvB,CAdP;AAAA,QAeEq/F,WAAW,GAAG1yG,KAAK,CAACgqG,iBAAN,GAA0BhqG,KAAK,CAACgqG,iBAAN,CAAwB,QAAxB,CAA1B,GAA8D,EAf9E;AAAA,QAgBE2I,UAAU,GAAG3yG,KAAK,CAACmW,GAAN,CAAU,QAAV,CAhBf;AAAA,QAiBEy8F,UAAU,GAAG5yG,KAAK,CAACmW,GAAN,CAAU,QAAV,CAjBf;AAAA,QAkBE08F,UAAU,GAAG7yG,KAAK,CAACmW,GAAN,CAAU,QAAV,CAlBf;AAAA,QAmBE28F,UAAU,GAAG9yG,KAAK,CAACmW,GAAN,CAAU,QAAV,CAnBf;AAAA,QAoBEtP,MApBF;AAAA,QAqBEC,MArBF;;AAuBA,QAAI4M,EAAE,CAACrC,KAAH,IAAYqC,EAAE,CAACrC,KAAH,CAAS0hG,SAAzB,EAAoC;AAClCr/F,QAAE,CAACrC,KAAH,CAAS0hG,SAAT,CAAmBnB,QAAnB,EAA6BC,WAA7B;AACD;;AAEDhB,iBAAa,CAACp7F,SAAd,CAAwB,UAAxB,EAAoC5hB,MAApC,GA5BkC,CA8BlC;;AACA,QAAIm/G,EAAE,GAAGnC,aAAa,CAACp7F,SAAd,CAAwB,KAAxB,EACNsB,IADM,CACD66F,QAAQ,CAAC3+F,KAAT,CAAe,CAAf,CADC,EACkB+D,MADlB,EAENvG,IAFM,CAED,WAFC,EAEYotE,EAFZ,EAGN9nE,OAHM,CAGE,MAHF,EAGU,IAHV,CAAT;AAKAi9F,MAAE,CAACh/F,MAAH,CAAU,MAAV,EAAkB9H,IAAlB,CAAuBuzE,EAAvB;AAEA,QAAIwzB,GAAG,GAAGD,EAAE,CAAC/7F,KAAH,GAAWhZ,MAAX,CAAkB,GAAlB,EACPwS,IADO,CACF,OADE,EACO,GADP,EAEPA,IAFO,CAEF,WAFE,EAEWotE,EAFX,CAAV;;AAIA,QAAI79E,KAAK,CAACmW,GAAN,CAAU,WAAV,CAAJ,EAA4B;AAC1B88F,SAAG,CAACh1G,MAAJ,CAAW,MAAX,EACGwS,IADH,CACQ,QADR,EACkBgiG,MADlB,EAEGhiG,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc+1F,EAAE,IAAIqM,UAAU,GAAGL,KAAH,GAAW,CAAzB,CAAF,IAAiCG,UAAU,GAAGH,KAAH,GAAW,CAAtD,CAHd;AAID,KALD,MAKO;AACLS,SAAG,CAACx9F,SAAJ,CAAc,MAAd,EAAsB5hB,MAAtB;AACD,KAjDiC,CAmDlC;;;AACAgT,UAAM,GAAGgqG,aAAa,CAACp7F,SAAd,CAAwB,aAAxB,EAAuCsB,IAAvC,CAA4C87F,UAAU,GAAG,CAACH,WAAW,CAAC1yC,UAAb,CAAH,GAA8B,EAApF,CAAT;AACAn5D,UAAM,CAACoQ,KAAP,GAAehZ,MAAf,CAAsB,MAAtB;AACA4I,UAAM,CACH4J,IADH,CACQ,OADR,EACiB,MADjB,EAEGA,IAFH,CAEQ,OAFR,EAEiB,QAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGa81F,EAAE,GAAG,CAHlB,EAIG91F,IAJH,CAIQ,GAJR,EAIa+1F,EAJb,EAKG/1F,IALH,CAKQ,IALR,EAKc,QALd,EAMGsO,KANH,CAMS,aANT,EAMwB,QANxB,EAOG7S,IAPH,CAOQ8K,MAPR;AAQAnQ,UAAM,CAACqQ,IAAP,GAAcrjB,MAAd,GA9DkC,CAgElC;;AACA,QAAI8+G,UAAJ,EAAgB;AACdM,SAAG,CAACh1G,MAAJ,CAAW,MAAX,EACGwS,IADH,CACQ,OADR,EACiB,QADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa+1F,EAFb,EAGG/1F,IAHH,CAGQ,IAHR,EAGczQ,KAAK,CAACmW,GAAN,CAAU,QAAV,IAAsB,MAAtB,GAA+B,QAH7C,EAIG1F,IAJH,CAIQ,aAJR,EAIuB,QAJvB,EAKGvE,IALH,CAKQuzE,EALR;AAMD,KAPD,MAOO;AACLwzB,SAAG,CAACj/F,MAAJ,CAAW,aAAX,EAA0BngB,MAA1B;AACD,KA1EiC,CA4ElC;;;AACA,QAAIq/G,EAAE,GAAGrC,aAAa,CAACp7F,SAAd,CAAwB,KAAxB,EACNsB,IADM,CACD86F,WAAW,CAAC5+F,KAAZ,CAAkB,CAAlB,CADC,EACqB+D,MADrB,EAENvG,IAFM,CAED,WAFC,EAEYqtE,EAFZ,EAGN/nE,OAHM,CAGE,MAHF,EAGU,IAHV,CAAT;AAKAm9F,MAAE,CAACl/F,MAAH,CAAU,MAAV,EACG9H,IADH,CACQwzE,EADR;AAGA,QAAIyzB,GAAG,GAAGD,EAAE,CAACj8F,KAAH,GAAWhZ,MAAX,CAAkB,GAAlB,EACPwS,IADO,CACF,OADE,EACO,GADP,EAEPA,IAFO,CAEF,WAFE,EAEWqtE,EAFX,EAGPrtE,IAHO,CAGF,iBAHE,EAGiB,SAHjB,CAAV;;AAKA,QAAIzQ,KAAK,CAACmW,GAAN,CAAU,WAAV,CAAJ,EAA4B;AAC1Bg9F,SAAG,CAACl1G,MAAJ,CAAW,MAAX,EACGwS,IADH,CACQ,QADR,EACkBgiG,MADlB,EAEGhiG,IAFH,CAEQ,IAFR,EAEc,CAACqiG,UAAU,GAAGN,KAAH,GAAW,CAAtB,KAA4BI,UAAU,GAAG,IAAIJ,KAAP,GAAe,CAArD,CAFd,EAGG/hG,IAHH,CAGQ,IAHR,EAGc81F,EAHd;AAID,KALD,MAKO;AACL4M,SAAG,CAAC19F,SAAJ,CAAc,MAAd,EAAsB5hB,MAAtB;AACD,KAjGiC,CAmGlC;;;AACAiT,UAAM,GAAG+pG,aAAa,CAACp7F,SAAd,CAAwB,aAAxB,EAAuCsB,IAAvC,CAA4C+7F,UAAU,GAAG,CAACJ,WAAW,CAAC1yC,UAAb,CAAH,GAA8B,EAApF,CAAT;AACAl5D,UAAM,CAACmQ,KAAP,GAAehZ,MAAf,CAAsB,MAAtB;AACA6I,UAAM,CACH2J,IADH,CACQ,OADR,EACiB,MADjB,EAEGA,IAFH,CAEQ,OAFR,EAEiB,QAFjB,EAGGA,IAHH,CAGQ,WAHR,EAGqB,iBAAkB+1F,EAAE,GAAG,GAAvB,GAA8B,eAHnD,EAIG/1F,IAJH,CAIQ,IAJR,EAIc,QAJd,EAKGsO,KALH,CAKS,aALT,EAKwB,QALxB,EAMG7S,IANH,CAMQ8K,MANR;AAOAlQ,UAAM,CAACoQ,IAAP,GAAcrjB,MAAd,GA7GkC,CA+GlC;;AACA,QAAI++G,UAAJ,EAAgB;AACdO,SAAG,CAACl1G,MAAJ,CAAW,MAAX,EACGwS,IADH,CACQ,OADR,EACiB,QADjB,EAEGA,IAFH,CAEQ,IAFR,EAEc,QAFd,EAGGA,IAHH,CAGQ,IAHR,EAGczQ,KAAK,CAACmW,GAAN,CAAU,QAAV,IAAsB,KAAtB,GAA8B,OAH5C,EAIGjK,IAJH,CAIQwzE,EAJR;AAKD,KAND,MAMO;AACLuzB,SAAG,CAACj/F,MAAJ,CAAW,aAAX,EAA0BngB,MAA1B;AACD;AACF,GAvPkE,CAyPnE;;;AACA,WAASu/G,eAAT,GAA2B;AACzB,QAAI3rG,KAAK,GAAGzH,KAAK,CAACmW,GAAN,CAAU,iBAAV,KAAgC,kBAA5C;AACA66F,kBAAc,CAACvgG,IAAf,CAAoB,MAApB,EAA4BhJ,KAA5B,EAFyB,CAGzB;AACA;AACA;AACA;AACA;;AACA4pG,cAAU,CAAC9jG,OAAX,CAAmB,UAAS8lG,SAAT,EAAoB;AACrCA,eAAS,CAACC,kBAAV,CAA6B12E,QAAQ,CAAClpB,EAAE,CAAC+C,GAAH,CAAOhP,KAAK,CAACvK,OAAN,CAAc,MAAd,EAAsB,KAAtB,CAAP,EAAqCrL,QAArC,GAAgDoxD,MAAhD,CAAuD,CAAvD,CAAD,EAA4D,EAA5D,CAArC;AACD,KAFD;AAGD;;AAED,WAASswD,SAAT,GAAqB;AACnBjrD,YAAQ;AACT;;AAED,WAASA,QAAT,GAAoB;AAClB,QAAItoD,KAAK,CAACmW,GAAN,CAAU,wBAAV,CAAJ,EAAyC;AACvCzD,UAAI,CAAC6tC,KAAL;AACD;AACF;;AAED,WAASizD,aAAT,GAAyB;AACvB,WAAO,KAAK/iG,IAAL,CAAU;AACf;AACA,eAAS,4BAFM;AAGf,2BAAqB,8BAHN;AAGsC;AACrD,kBAAY,QAJG,CAIM;;AAJN,KAAV,CAAP;AAMD;;AAED,WAASgjG,YAAT,GAAwB;AACtB,WAAO,KAAK10F,KAAL,CAAW;AAChBjjB,cAAQ,EAAE,UADM;AAEhBC,SAAG,EAAE,CAFW;AAGhBE,UAAI,EAAE;AAHU,KAAX,CAAP;AAKD;;AAED,WAASy3G,eAAT,GAA2B;AACzB,QAAIC,OAAJ,CADyB,CAGzB;;AACA,QAAI9C,aAAa,KAAKvgH,SAAtB,EAAiC;AAE/BugH,mBAAa,GAAGn9F,EAAE,CAACM,MAAH,CAAUtB,IAAV,EAAgBzU,MAAhB,CAAuB,KAAvB,EACbwS,IADa,CACR,OADQ,EACC,qCADD,EAEbsO,KAFa,CAEP,SAFO,EAEImzF,kBAAkB,EAFtB,EAGbpgH,IAHa,CAGR0hH,aAHQ,CAAhB;AAKAxC,oBAAc,GAAGH,aAAa,CAAC5yG,MAAd,CAAqB,MAArB,EACdwS,IADc,CACT,OADS,EACA,iCADA,CAAjB;AAGAqgG,yBAAmB,GAAGp9F,EAAE,CAACM,MAAH,CAAUtB,IAAV,EAAgBzU,MAAhB,CAAuB,KAAvB,EACnBwS,IADmB,CACd,OADc,EACL,wDADK,EAEnBsO,KAFmB,CAEb,SAFa,EAEFmzF,kBAAkB,EAFhB,EAGnBpgH,IAHmB,CAGd0hH,aAHc,CAAtB;AAKAvC,qBAAe,GAAGH,mBAAmB,CAAC7yG,MAApB,CAA2B,GAA3B,CAAlB;AAEA8yG,yBAAmB,GAAGr9F,EAAE,CAACM,MAAH,CAAUtB,IAAV,EAAgBzU,MAAhB,CAAuB,KAAvB,EACnBwS,IADmB,CACd,OADc,EACL,wDADK,EAEnBsO,KAFmB,CAEb,SAFa,EAEFoxF,WAFE,EAGpB;AACA;AACA;AALoB,OAMnBpxF,KANmB,CAMb,kBANa,EAMO,eANP,EAOnBrQ,EAPmB,CAOhB,aAPgB,EAOD,YAAW;AAC5B;AACA;AACAgF,UAAE,CAACrC,KAAH,CAAS4zB,cAAT;AACD,OAXmB,EAYnBnzC,IAZmB,CAYd0hH,aAZc,CAAtB;AAcAtC,qBAAe,GAAGH,mBAAmB,CAAC9yG,MAApB,CAA2B,GAA3B,CAAlB;AAEAkzG,oBAAc,GAAGJ,mBAAmB,CAAC9yG,MAApB,CAA2B,GAA3B,EACdwS,IADc,CACT,OADS,EACA,iBADA,CAAjB,CAjC+B,CAoC/B;;AACAiD,QAAE,CAACM,MAAH,CAAUtB,IAAV,EAAgB+C,SAAhB,CAA0B,aAA1B,EAAyC3jB,IAAzC,CAA8C2hH,YAA9C;;AAEA,UAAIzzG,KAAK,CAACmW,GAAN,CAAU,wBAAV,CAAJ,EAAyC;AACvCzC,UAAE,CAACM,MAAH,CAAUtB,IAAV,EACGjC,IADH,CACQ,UADR,EACoB,CADpB,EAEG/B,EAFH,CAEM,WAFN,EAEmB6kG,SAFnB;AAGD;;AAEDnC,mBAAa,GAAG,EAAhB;AACAC,gBAAU,GAAG,EAAb;AACAC,oBAAc,GAAG,EAAjB,CA/C+B,CAiD/B;AACA;;AACAC,sBAAgB,GAAG,IAAItF,gBAAJ,CAAqB8E,mBAAmB,CAACr+F,IAApB,EAArB,CAAnB;AACA6+F,sBAAgB,CAACtB,QAAjB,CAA0BY,aAAa,CAACn+F,IAAd,EAA1B;AACA6+F,sBAAgB,CAACtB,QAAjB,CAA0Ba,mBAAmB,CAACp+F,IAApB,EAA1B;AACD,KA1DwB,CA4DzB;;;AACAvE,SAAK,GA7DoB,CA+DzB;;AACAuF,MAAE,CAACM,MAAH,CAAUtB,IAAV,EAAgB+C,SAAhB,CAA0B,aAA1B,EACGhF,IADH,CACQ;AACJjU,WAAK,EAAE+pG,EADH;AAEJ9pG,YAAM,EAAE+pG;AAFJ,KADR,EAKE;AALF,KAMGznF,KANH,CAMS;AACLviB,WAAK,EAAE+pG,EAAE,GAAG,IADP;AAEL9pG,YAAM,EAAE+pG,EAAE,GAAG;AAFR,KANT;AAWA4K,iBAAa,CAAC7jG,OAAd,CAAsB,UAASqmG,YAAT,EAAuB;AAC3CA,kBAAY,CAACtzG,MAAb,CAAoBimG,EAAE,GAAG2J,mBAAzB,EAA8C1J,EAAE,GAAG0J,mBAAnD;AACAl6G,OAAC,CAAC49G,YAAY,CAAC9pE,IAAd,CAAD,CAAqBltC,GAArB,CAAyB;AACvBJ,aAAK,EAAE+pG,EADgB;AAEvB9pG,cAAM,EAAE+pG;AAFe,OAAzB;AAID,KAND;AAQAmN,WAAO,GAAG/B,QAAQ,CAACH,QAAQ,CAACl/G,CAAV,CAAR,GAAuB,GAAvB,GACRs/G,WAAW,CAACJ,QAAQ,CAAC3pG,CAAV,CADH,GACkB,GADlB,GAER8pG,QAAQ,CAACH,QAAQ,CAACY,WAAV,CAFA,GAEyB,GAFzB,GAGRT,QAAQ,CAACH,QAAQ,CAACa,YAAV,CAHV,CAnFyB,CAwFzB;;AACA5+F,MAAE,CAACM,MAAH,CAAUtB,IAAV,EAAgB+C,SAAhB,CAA0B,eAA1B,EAA2ChF,IAA3C,CAAgD;AAC9CkjG,aAAO,EAAEA,OADqC;AAE9CphH,OAAC,EAAE,CAF2C;AAG9CuV,OAAC,EAAE,CAH2C;AAI9CtL,WAAK,EAAEo1G,QAAQ,CAACH,QAAQ,CAACj1G,KAAV,CAJ+B;AAK9CC,YAAM,EAAEm1G,QAAQ,CAACH,QAAQ,CAACh1G,MAAV;AAL8B,KAAhD;AAQA60G,kBAAc,CAAC/jG,OAAf,CAAuB,UAASsmG,aAAT,EAAwB;AAC7C;AACA;AACAA,mBAAa,CAACC,KAAd,CAAoBvhH,CAApB,GAAwBm/G,YAAY,CAACD,QAAQ,CAACl/G,CAAV,CAApC;AACAshH,mBAAa,CAACC,KAAd,CAAoBhsG,CAApB,GAAwB6pG,eAAe,CAACF,QAAQ,CAAC3pG,CAAV,CAAvC,CAJ6C,CAK7C;AACA;AACA;AACA;AACA;AACD,KAVD,EAjGyB,CA6GzB;AACA;AACA;AAEA;;AACAkpG,kBAAc,CACXvgG,IADH,CACQ;AACJjU,WAAK,EAAEo1G,QAAQ,CAACH,QAAQ,CAACj1G,KAAV,CADX;AAEJC,YAAM,EAAEm1G,QAAQ,CAACH,QAAQ,CAACh1G,MAAV,CAFZ;AAGJlK,OAAC,EAAE,CAHC;AAIJuV,OAAC,EAAE;AAJC,KADR;AAQAyqG,4BAAwB;AACxB3iG,OAAG,CAACmkG,YAAJ;AACD,GA9ZkE,CAganE;;;AACA,WAASC,gBAAT,GAA4B;AAC1B,QAAIC,EAAE,GAAG,EAAT;AAAA,QACEC,EAAE,GAAG,EADP;AAAA,QAEEC,EAAE,GAAG,EAFP;AAAA,QAGEC,OAAO,GAAG,CAHZ;AAAA,QAIEC,OAAO,GAAG,KAJZ;AAAA,QAKEC,OAAO,GAAGt0G,KAAK,CAACwb,UAAN,CAAiBrW,YAAjB,IAAiC,KAL7C;AAAA,QAME4C,EANF;AAAA,QAMMC,EANN;AAAA,QAMU2P,CANV;AAAA,QAOE48F,YAPF;;AASA,QAAID,OAAO,KAAK,KAAhB,EAAuB;AACrB;AACA;AACA;AACA;AACAzD,mBAAa,CAACniG,EAAd,CAAiB,gBAAjB,EAAmC,IAAnC,EACGA,EADH,CACM,iBADN,EACyB,IADzB,EAEGqH,OAFH,CAEW,WAFX,EAEwB,KAFxB;AAGA;AACD;;AAEDw+F,gBAAY,GAAG7gG,EAAE,CAAC8gG,QAAH,CAAYrpE,IAAZ,EAAf;AACAopE,gBAAY,CAAC7lG,EAAb,CAAgB,WAAhB,EAA6B,YAAW;AACtC2lG,aAAO,GAAG,IAAV;AACAJ,QAAE,CAAC5iH,MAAH,GAAY,CAAZ;AACA6iH,QAAE,CAAC7iH,MAAH,GAAY,CAAZ;AACA8iH,QAAE,CAAC9iH,MAAH,GAAY,CAAZ;AACAojH,kBAAY,GAL0B,CAOtC;AACA;AACA;;AACA/gG,QAAE,CAACM,MAAH,CAAUnkB,MAAV,EAAkB6e,EAAlB,CAAqB,yBAArB,EAAgD,YAAW;AACzDgF,UAAE,CAACrC,KAAH,CAAS4zB,cAAT;AACD,OAFD;AAGD,KAbD,EAaGv2B,EAbH,CAaM,MAbN,EAac,YAAW;AACvB,UAAIi+B,EAAE,GAAG2nE,OAAO,KAAK,GAAZ,GAAkB,CAAlB,GAAsB1C,QAAQ,CAAC8C,MAAT,CAAgBhhG,EAAE,CAACrC,KAAH,CAASs7B,EAAzB,CAA/B;AAAA,UACEC,EAAE,GAAG0nE,OAAO,KAAK,GAAZ,GAAkB,CAAlB,GAAsB1C,QAAQ,CAAC8C,MAAT,CAAgBhhG,EAAE,CAACrC,KAAH,CAASu7B,EAAzB,CAD7B;AAEA5sC,WAAK,CAACwb,UAAN,CAAiBvW,SAAjB,IAA8B0nC,EAA9B;AACA3sC,WAAK,CAACwb,UAAN,CAAiBtW,SAAjB,IAA8B0nC,EAA9B;AACAjmB,cAAQ,CAACguF,YAAT;AACAF,kBAAY;AACb,KApBD,EAoBG/lG,EApBH,CAoBM,SApBN,EAoBiB,YAAW;AAC1BgF,QAAE,CAACM,MAAH,CAAUnkB,MAAV,EAAkB6e,EAAlB,CAAqB,yBAArB,EAAgD,IAAhD;AAEA+lG,kBAAY;AACZ,UAAIp2G,IAAI,GAAG41G,EAAE,CAAC5iH,MAAH,GAAY,CAAvB;AAAA,UACEwkD,EAAE,GAAGs+D,EAAE,CAAC91G,IAAD,CAAF,GAAW81G,EAAE,CAAC,CAAD,CADpB,CAJ0B,CAM1B;;AACA,UAAIt+D,EAAE,GAAG,IAAT,EAAe,OAPW,CAQ1B;AACA;AACA;;AACA,UAAIs+D,EAAE,CAAC91G,IAAD,CAAF,GAAW81G,EAAE,CAAC91G,IAAI,GAAG,CAAR,CAAb,GAA0B,GAA9B,EAAmC;AACnC0J,QAAE,GAAG,CAACksG,EAAE,CAAC51G,IAAD,CAAF,GAAW41G,EAAE,CAAC,CAAD,CAAd,IAAqBp+D,EAA1B;AACA7tC,QAAE,GAAG,CAACksG,EAAE,CAAC71G,IAAD,CAAF,GAAW61G,EAAE,CAAC,CAAD,CAAd,IAAqBr+D,EAA1B;AACAl+B,OAAC,GAAGw8F,EAAE,CAAC91G,IAAD,CAAN;AACAg2G,aAAO,GAAG,KAAV;AACA3gG,QAAE,CAACqwD,KAAH,CAASj1C,IAAT;AACD,KArCD;AAuCA+hF,iBAAa,CAAC/+G,IAAd,CAAmByiH,YAAnB,EAAiCx+F,OAAjC,CAAyC,WAAzC,EAAsD,IAAtD;;AAEA,aAAS0+F,YAAT,GAAwB;AACtBR,QAAE,CAACjgH,IAAH,CAAQgM,KAAK,CAACwb,UAAN,CAAiBvW,SAAzB;AACAivG,QAAE,CAAClgH,IAAH,CAAQgM,KAAK,CAACwb,UAAN,CAAiBtW,SAAzB;AACAivG,QAAE,CAACngH,IAAH,CAAQglE,kBAAW,CAACzhC,GAAZ,EAAR;;AACA,UAAI08E,EAAE,CAAC5iH,MAAH,GAAY+iH,OAAhB,EAAyB;AACvBH,UAAE,CAACp9F,KAAH;AACAq9F,UAAE,CAACr9F,KAAH;AACAs9F,UAAE,CAACt9F,KAAH;AACD;AACF;;AAED,aAASiY,IAAT,GAAgB;AACd,UAAIulF,OAAJ,EAAa,OAAO,IAAP;AAEb,UAAI98E,GAAG,GAAGyhC,kBAAW,CAACzhC,GAAZ,EAAV;AAAA,UACEse,EAAE,GAAGte,GAAG,GAAG5f,CADb;AAAA,UAEE1P,EAAE,GAAG,CAAC,KAAD,GAASF,EAFhB;AAAA,UAGEG,EAAE,GAAG,CAAC,KAAD,GAASF,EAHhB,CAHc,CAQd;;AACAhI,WAAK,CAACwb,UAAN,CAAiBvW,SAAjB,IAA8B8C,EAAE,GAAG8tC,EAAL,GAAU,MAAM5tC,EAAN,GAAW4tC,EAAX,GAAgBA,EAAxD;AACA71C,WAAK,CAACwb,UAAN,CAAiBtW,SAAjB,IAA8B8C,EAAE,GAAG6tC,EAAL,GAAU,MAAM3tC,EAAN,GAAW2tC,EAAX,GAAgBA,EAAxD;AACAlvB,cAAQ,CAACguF,YAAT,GAXc,CAYd;;AACA5sG,QAAE,IAAIE,EAAE,GAAG4tC,EAAX;AACA7tC,QAAE,IAAIE,EAAE,GAAG2tC,EAAX,CAdc,CAed;;AACAl+B,OAAC,GAAG4f,GAAJ;;AAEA,UAAI/kC,IAAI,CAAC2M,GAAL,CAAS4I,EAAT,IAAe,IAAf,IAAuBvV,IAAI,CAAC2M,GAAL,CAAS6I,EAAT,IAAe,IAA1C,EAAgD;AAC9C,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD;AACF;;AAED,WAAS4sG,mBAAT,GAA+B;AAC7B,QAAI9kG,QAAJ;;AACA,SAAKA,QAAL,IAAiBgiG,YAAjB,EAA+B;AAC7B,UAAIA,YAAY,CAACn9G,cAAb,CAA4Bmb,QAA5B,CAAJ,EAA2C;AACzC+gG,qBAAa,CAACp7F,SAAd,CAAwB3F,QAAxB,EAAkCpB,EAAlC,CAAqC,cAArC,EAAqD,IAArD;AACD;AACF;AACF;;AAED,WAAS4J,IAAT,GAAgB;AACd;AACAo7F,mBAAe;AACfM,oBAAgB;AAEhBlC,gBAAY,GAAG,EAAf;AACAC,eAAW,GAAG,EAAd,CANc,CAQd;AACA;;AACA/xG,SAAK,CAACusB,qBAAN,CAA4B,CAAC,iBAAD,CAA5B,EAAiD3c,GAAG,CAACggB,OAArD;AACA5vB,SAAK,CAACusB,qBAAN,CAA4B,CAAC,WAAD,EAAc,QAAd,EAAwB,QAAxB,EAAkC,QAAlC,EAA4C,QAA5C,EACxB,WADwB,EACX,WADW,EACE,cADF,CAA5B,EAGEmnF,eAHF;AAIA1zG,SAAK,CAACusB,qBAAN,CAA4B,CAAC,cAAD,CAA5B,EACEynF,gBADF;AAGD;;AAEDpkG,KAAG,GAAG;AACJ,QAAIU,GAAJ,GAAU;AACR,aAAOA,GAAP;AACD,KAHG;;AAIJ,QAAIoC,IAAJ,GAAW;AACT,aAAOA,IAAP;AACD,KANG;;AAOJ,QAAIq+F,mBAAJ,GAA0B;AACxB,aAAOA,mBAAP;AACD,KATG;;AAUJ,QAAIa,QAAJ,GAAe;AACb,aAAOA,QAAP;AACD,KAZG;;AAaJ,QAAIF,YAAJ,GAAmB;AACjB,aAAOA,YAAP;AACD,KAfG;;AAgBJ,QAAIG,WAAJ,GAAkB;AAChB,aAAOA,WAAP;AACD,KAlBG;;AAmBJ,QAAIF,eAAJ,GAAsB;AACpB,aAAOA,eAAP;AACD,KArBG;;AAsBJ,QAAIx5F,IAAJ,GAAW;AACT,aAAOA,IAAP;AACD,KAxBG;;AAyBJ,QAAImwC,QAAJ,GAAe;AACb,aAAOA,QAAP;AACD,KA3BG;;AA4BJ,QAAIkC,UAAJ,GAAiB;AACf;AACA;AACA;AACA,aAAO,KAAKl6C,GAAL,CAAS1T,GAAT,CAAa,aAAb,CAAP;AACD,KAjCG;;AAkCJ,QAAIu1G,mBAAJ,GAA0B;AACxB,aAAOA,mBAAP;AACD,KApCG;;AAqCJ,QAAIt3F,GAAJ,GAAU;AACR,aAAOirB,QAAP;AACD,KAvCG;;AAwCJ,QAAIgsE,YAAJ,GAAmB;AACjB,aAAOA,YAAP;AACD,KA1CG;;AA2CJ,QAAIC,WAAJ,GAAkB;AAChB,aAAOA,WAAP;AACD,KA7CG;;AA+CJ,QAAItD,eAAJ,GAAsB;AACpB,aAAO8C,gBAAgB,CAAC9C,eAAxB;AACD,KAjDG;;AAmDJ,QAAIE,eAAJ,GAAsB;AACpB,aAAO4C,gBAAgB,CAAC5C,eAAxB;AACD,KArDG;;AAuDJ/+E,WAAO,EAAE,mBAAW;AAClBwjF,qBAAe;AACf,UAAInB,QAAQ,CAACriF,OAAb,EAAsBqiF,QAAQ,CAACriF,OAAT;AAEtBhgB,SAAG,CAACilG,mBAAJ;AAEAjlG,SAAG,CAACmkG,YAAJ;AACD,KA9DG;;AAgEJ;;;;;;;;;;;;AAgBAe,kBAAc,EAAE,0BAAW;AACzB,UAAI/kG,MAAM,GAAGqhG,aAAa,CAAC//G,MAAd,GAAuB,CAAvB,GAA2B6/G,eAA3B,GAA6CD,eAA1D;AACA,aAAOlhG,MAAM,CAAC9R,MAAP,CAAc,GAAd,CAAP;AACD,KAnFG;;AAqFJ;;;;;;AAOA82G,sBAAkB,EAAE,8BAAW;AAC7B,UAAInB,YAAJ,EAAkBP,SAAlB;AACA,UAAItvD,OAAJ;AACA,UAAIusD,WAAJ;;AAEA,UAAIc,aAAa,CAAC//G,MAAd,KAAyB,CAA7B,EAAgC;AAC9BuiH,oBAAY,GAAGxD,eAAe,CAAC7J,EAAD,EAAKC,EAAL,CAA9B;AACA6M,iBAAS,GAAG,IAAI7C,cAAI,CAACwE,KAAT,CAAe,IAAf,CAAZ;AAEAtiG,YAAI,CAAC4yC,WAAL,CAAiBsuD,YAAY,CAAC9pE,IAA9B;AACAp2B,UAAE,CAACM,MAAH,CAAU4/F,YAAY,CAAC9pE,IAAvB,EACGr5B,IADH,CACQ,OADR,EACiB,eADjB,EAEGsO,KAFH,CAES,SAFT,EAEoBmzF,kBAAkB,EAFtC,EAGGpgH,IAHH,CAGQ2hH,YAHR;AAKArC,qBAAa,CAACp9G,IAAd,CAAmB4/G,YAAnB;AACAvC,kBAAU,CAACr9G,IAAX,CAAgBq/G,SAAhB,EAX8B,CAa9B;;AACA9B,wBAAgB,CAACtB,QAAjB,CAA0B2D,YAAY,CAAC9pE,IAAvC;AACAynE,wBAAgB,CAAC3B,aAAjB,CAA+BmB,mBAAmB,CAACr+F,IAApB,EAA/B,EAA2D0+F,aAAa,CAAC,CAAD,CAAb,CAAiBtnE,IAA5E;AACD;;AAED,UAAI+pE,aAAa,GAAG,IAAIrD,cAAI,CAACyE,sBAAT,EAApB;AACA5D,gBAAU,CAAC,CAAD,CAAV,CAAc6D,QAAd,CAAuBrB,aAAvB;AACAvC,oBAAc,CAACt9G,IAAf,CAAoB6/G,aAApB,EAzB6B,CA2B7B;AACA;;AACA,aAAO;AACLA,qBAAa,EAAEA,aADV;AAELx6D,cAAM,EAAE+3D,aAAa,CAAC,CAAD,CAAb,CAAiBtnE;AAFpB,OAAP;AAID,KA7HG;AA+HJxpC,UAAM,EAAE,kBAAW;AACjBozG,qBAAe;AACf9jG,SAAG,CAACggB,OAAJ;;AAEA,UAAIoiF,WAAJ,EAAiB;AACfb,sBAAc,CAACn9F,MAAf,CAAsB,eAAtB,EAAuCliB,IAAvC,CAA4CkgH,WAA5C;AACD;;AAED,UAAIC,QAAQ,CAAC3xG,MAAb,EAAqB2xG,QAAQ,CAAC3xG,MAAT;AAErBsP,SAAG,CAACmkG,YAAJ;AACD,KA1IG;AA4IJ9oE,SAAK,EAAE,iBAAW;AAChB,UAAIgnE,QAAQ,CAAChnE,KAAb,EAAoBgnE,QAAQ,CAAChnE,KAAT,CAAejrC,KAAf;AAEpB4P,SAAG,CAACmkG,YAAJ;AACD,KAhJG;AAkJJ79F,UAAM,EAAE,kBAAW;AACjB,UAAI+7F,QAAQ,CAAC/7F,MAAb,EAAqB+7F,QAAQ,CAAC/7F,MAAT;AAErBtG,SAAG,CAACmkG,YAAJ;AACD,KAtJG;AAwJJA,gBAAY,EAAE,wBAAW;AACvB,UAAI3iH,CAAJ,EAAOc,GAAP,CADuB,CAEvB;;AACA,WAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGk/G,aAAa,CAAC//G,MAAhC,EAAwCD,CAAC,GAAGc,GAA5C,EAAiDd,CAAC,EAAlD,EAAsD;AACpDggH,qBAAa,CAAChgH,CAAD,CAAb,CAAiB2jB,MAAjB,CAAwBs8F,UAAU,CAACjgH,CAAD,CAAlC;AACD;AACF,KA9JG;AAgKJqN,qBAAiB,EAAE,2BAASjC,KAAT,EAAgB;AACjC,UAAIjC,WAAW,GAAGk3G,QAAQ,CAACj1G,KAAT,GAAiBi1G,QAAQ,CAACh1G,MAA5C;AACA,aAAOD,KAAK,GAAGjC,WAAf;AACD,KAnKG;AAqKJunC,aAAS,EAAE,mBAASC,QAAT,EAAmBs4B,WAAnB,EAAgC;AACzCv0B,cAAQ,GAAGu0B,WAAW,IAAIv0B,QAA1B;AACA9lC,WAAK,GAAG+hC,QAAQ,IAAI/hC,KAApB;AACA40G,yBAAmB;AACnBhlG,SAAG,CAACuvB,gBAAJ,CAAqB,IAArB;AACA7mB,UAAI;AAEJ,UAAI25F,QAAQ,CAACnwE,SAAb,EAAwBmwE,QAAQ,CAACnwE,SAAT,CAAmBC,QAAnB,EAA6Bs4B,WAA7B;AACzB,KA7KG;AA+KJ3iD,OAAG,EAAE,eAAW;AACd;AACA;AACA;AACA,UAAI2rE,IAAI,GAAG;AACTllF,cAAM,EAAE,CADC;AAETpC,WAAG,EAAE,CAFI;AAGTU,cAAM,EAAE,CAHC;AAITR,YAAI,EAAE,CAJG;AAKTuC,aAAK,EAAE,CALE;AAMThC,aAAK,EAAE;AANE,OAAX;;AAQA,UAAI8T,GAAJ,EAAS;AACP+yE,YAAI,CAACtnF,GAAL,GAAWuU,GAAG,CAACxU,QAAJ,GAAeC,GAA1B;AACAsnF,YAAI,CAACpnF,IAAL,GAAYqU,GAAG,CAACxU,QAAJ,GAAeG,IAA3B;AACAonF,YAAI,CAAC7mF,KAAL,GAAa8T,GAAG,CAAC9T,KAAJ,EAAb;AACA6mF,YAAI,CAAC5mF,MAAL,GAAc6T,GAAG,CAAC7T,MAAJ,EAAd;AACA4mF,YAAI,CAACllF,MAAL,GAAcklF,IAAI,CAACtnF,GAAL,GAAWsnF,IAAI,CAAC5mF,MAA9B;AACA4mF,YAAI,CAAC7kF,KAAL,GAAa6kF,IAAI,CAACpnF,IAAL,GAAYonF,IAAI,CAAC7mF,KAA9B;AACD;;AACD,aAAO6mF,IAAP;AACD,KApMG;AAsMJ30E,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD,KAxMG;;AA0MJ;;;;;;;;;;;AAWAyZ,mBAAe,EAAE,yBAASjvB,QAAT,EAAmB2B,OAAnB,EAA4B;AAC3C,UAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;AACjC,cAAM,IAAIxgB,KAAJ,CAAU,qCAAV,CAAN;AACD;;AACD6gH,kBAAY,CAAChiG,QAAD,CAAZ,GAAyB2B,OAAzB;AACA7B,SAAG,CAACilG,mBAAJ;AACD,KA3NG;;AA6NJ;;;;;AAKAA,uBAAmB,EAAE,+BAAW;AAC9B,UAAI/kG,QAAJ;;AAEA,eAASqlG,eAAT,CAAyB1jG,OAAzB,EAAkC;AAChC,eAAO,UAAS0F,CAAT,EAAY/lB,CAAZ,EAAe;AACpB,cAAIsiB,EAAE,CAACrC,KAAH,CAASw9F,gBAAb,EAA+B,OADX,CAEpB;;AACA,cAAIuG,MAAM,GAAG1hG,EAAE,CAAC2hG,KAAH,CAASrE,cAAc,CAACt+F,IAAf,EAAT,CAAb;AAAA,cACEngB,CAAC,GAAGq/G,QAAQ,CAAC8C,MAAT,CAAgBU,MAAM,CAAC,CAAD,CAAtB,CADN;AAAA,cAEEttG,CAAC,GAAG+pG,WAAW,CAAC6C,MAAZ,CAAmBU,MAAM,CAAC,CAAD,CAAzB,CAFN;AAGAj/G,2CAAO,CAACiL,GAAR,CAAY,sBAAsB7O,CAAC,CAACqkD,OAAF,CAAU,CAAV,CAAtB,GAAqC,IAArC,GAA4C9uC,CAAC,CAAC8uC,OAAF,CAAU,CAAV,CAA5C,GAA2D,GAAvE;AACAnlC,iBAAO,CAAClf,CAAD,EAAIuV,CAAJ,EAAOqP,CAAP,EAAU/lB,CAAV,CAAP;AACD,SARD;AASD;;AAED,WAAK0e,QAAL,IAAiBgiG,YAAjB,EAA+B;AAC7B,YAAIA,YAAY,CAACn9G,cAAb,CAA4Bmb,QAA5B,CAAJ,EAA2C;AACzC;AACA;AACA4D,YAAE,CAAC+B,SAAH,CAAa3F,QAAb,EAAuBpB,EAAvB,CAA0B,cAA1B,EAA0CymG,eAAe,CAACrD,YAAY,CAAChiG,QAAD,CAAb,CAAzD;AACD;AACF;AACF,KAxPG;;AA0PJ;;;;;;;;;;;;;;AAcAqvB,oBAAgB,EAAE,0BAAS1tB,OAAT,EAAkB;AAClC,UAAI,OAAOA,OAAP,KAAmB,UAAnB,IAAiCA,OAAO,KAAK,IAAjD,EAAuD;AACrD,cAAM,IAAIxgB,KAAJ,CAAU,8CAAV,CAAN;AACD,OAHiC,CAIlC;;;AACAkgH,oBAAc,CAACn9F,MAAf,CAAsB,eAAtB,EAAuCngB,MAAvC;;AACA,UAAI4d,OAAO,KAAK,IAAhB,EAAsB;AACpB;AACAugG,mBAAW,GAAG,IAAd;AACA;AACD;;AACDA,iBAAW,GAAGt+F,EAAE,CAACiB,GAAH,CAAO2gG,KAAP,GACX/iH,CADW,CACTq/G,QADS,EAEX9pG,CAFW,CAET+pG,WAFS,EAGXnjG,EAHW,CAGR,mBAHQ,EAGa,YAAW;AAClC;AACA;AACA;AACAgF,UAAE,CAACM,MAAH,CAAUnkB,MAAV,EAAkB6e,EAAlB,CAAqB,kBAArB,EAAyC,YAAW;AAClDgF,YAAE,CAACrC,KAAH,CAAS4zB,cAAT;AACD,SAFD;AAGD,OAVW,EAWXv2B,EAXW,CAWR,iBAXQ,EAWW,YAAW;AAChCgF,UAAE,CAACM,MAAH,CAAUnkB,MAAV,EAAkB6e,EAAlB,CAAqB,kBAArB,EAAyC,IAAzC;AAEA,YAAI9N,CAAC,GAAGoxG,WAAW,CAACuD,MAAZ,EAAR;AAAA,YACEhjH,CAAC,GAAGqO,CAAC,CAAC,CAAD,CAAD,CAAK,CAAL,CADN;AAAA,YAEEkH,CAAC,GAAGlH,CAAC,CAAC,CAAD,CAAD,CAAK,CAAL,CAFN;AAAA,YAGEpE,KAAK,GAAGoE,CAAC,CAAC,CAAD,CAAD,CAAK,CAAL,IAAUrO,CAHpB;AAAA,YAIEkK,MAAM,GAAGmE,CAAC,CAAC,CAAD,CAAD,CAAK,CAAL,IAAUkH,CAJrB;AAMA3R,yCAAO,CAACiL,GAAR,CAAY,4BAA4B7O,CAAC,CAACqkD,OAAF,CAAU,CAAV,CAA5B,GAA2C,IAA3C,GACV9uC,CAAC,CAAC8uC,OAAF,CAAU,CAAV,CADU,GACK,YADL,GACoBp6C,KADpB,GAC4B,YAD5B,GAC2CC,MADvD,EATgC,CAYhC;AACA;AACA;AACA;;AACAgV,eAAO,CAAClf,CAAD,EAAIuV,CAAJ,EAAOtL,KAAP,EAAcC,MAAd,CAAP,CAhBgC,CAiBhC;;AACAu1G,mBAAW,CAACpxD,KAAZ,GAlBgC,CAmBhC;;AACAuwD,sBAAc,CAACn9F,MAAf,CAAsB,eAAtB,EAAuCliB,IAAvC,CAA4CkgH,WAA5C;AACD,OAhCW,CAAd,CAXkC,CA4ClC;AACA;;AACAb,oBAAc,CAAClzG,MAAf,CAAsB,GAAtB,EAA2B8X,OAA3B,CAAmC,aAAnC,EAAkD,IAAlD,EAAwDjkB,IAAxD,CAA6DkgH,WAA7D;AACD,KAvTG;;AAwTJ;;;;;;;;;;;;;;;;;;AAkBA/yE,kBAAc,EAAE,wBAAShnC,IAAT,EAAewZ,OAAf,EAAwB;AACtCsgG,iBAAW,CAAC95G,IAAD,CAAX,GAAoBwZ,OAApB;AACD;AA5UG,GAAN,CAjiBmE,CAg3BnE;AACA;;AACAnB,KAAG,GAAGta,CAAC,CAAC,OAAD,CAAD,CACHya,IADG,CACE;AACJ,UAAM,iBADF;AAEJ,aAAS,WAFL;AAGJ,gBAAYugB,yBAAeA;AAHvB,GADF,EAMJ;AANI,GAOHp0B,GAPG,CAOC;AACH,aAAS,MADN;AAEH,cAAU;AAFP,GAPD,CAAN,CAl3BmE,CA63BnE;;AACA8V,MAAI,GAAGpC,GAAG,CAAC,CAAD,CAAV,CA93BmE,CAg4BnE;;AACA,MAAItQ,KAAJ,EAAW;AACTsY,QAAI;AACL;;AACD25F,UAAQ,GAAG,IAAIrB,QAAJ,CAAahhG,GAAb,EAAkB5P,KAAlB,CAAX;AAEA,SAAO4P,GAAP;AACD;AAAA,C;;;;;;AC/6BD;;;AAGA,SAAS4lG,MAAT,CAAgB/tG,KAAhB,EAAuB;AACrB;AACA,MAAIguG,IAAI,GAAGhuG,KAAK,CAACnI,KAAN,CAAY,8DAAZ,CAAX;;AACA,MAAIm2G,IAAI,KAAK,IAAb,EAAmB;AACjB,WAAO;AACLh/F,SAAG,EAAE/C,EAAE,CAAC+C,GAAH,CAAOg/F,IAAI,CAAC,CAAD,CAAX,EAAgBA,IAAI,CAAC,CAAD,CAApB,EAAyBA,IAAI,CAAC,CAAD,CAA7B,CADA;AAELllH,OAAC,EAAEuC,MAAM,CAAC2iH,IAAI,CAAC,CAAD,CAAL;AAFJ,KAAP;AAID,GALD,MAKO;AACL,WAAO;AACLh/F,SAAG,EAAE/C,EAAE,CAAC+C,GAAH,CAAOhP,KAAP,CADA;AAELlX,OAAC,EAAE;AAFE,KAAP;AAID;AACF;;AAEc;AACb;;;;;AAKAilH,QAAM,EAAEA,MANK;;AAQb;;;;;;;AAOAE,kBAAgB,EAAE,0BAASC,EAAT,EAAa;AAC7BA,MAAE,GAAGH,MAAM,CAACG,EAAD,CAAN,CAAWl/F,GAAhB,CAD6B,CAE7B;AACA;AACA;AACA;;AACA,WAAO,CAACk/F,EAAE,CAAC/0G,CAAH,GAAO,GAAP,GAAa+0G,EAAE,CAACn+F,CAAH,GAAO,GAApB,GAA0Bm+F,EAAE,CAACrjH,CAAH,GAAO,GAAlC,IAAyC,IAAzC,IAAiD,GAAjD,GAAuD,MAAvD,GAAgE,MAAvE;AACD,GAtBY;;AAwBb;;;;;AAKAsjH,cAAY,EAAE,sBAASC,WAAT,EAAsB;AAClC,WAAOj5E,QAAQ,CAAC44E,MAAM,CAACK,WAAD,CAAN,CAAoBp/F,GAApB,CAAwB5kB,QAAxB,GAAmCoxD,MAAnC,CAA0C,CAA1C,CAAD,EAA+C,EAA/C,CAAf;AACD;AA/BY,CAAf,E;;ACpBA;;;;;;AAKA;;;;;;;CASA;;AACA,IAAM6yD,UAAU,GAAG,iBAAnB;AACA,IAAMC,iBAAiB,GAAG,aAA1B;AACA,IAAMC,qBAAqB,GAAG,sBAA9B;AACA,IAAMC,iBAAiB,GAAG,aAA1B;AACA,IAAMC,qBAAqB,GAAG,sBAA9B;AACA,IAAMC,gBAAgB,GAAG,YAAzB;AACA,IAAMC,gBAAgB,GAAG,YAAzB;AACA,IAAMC,YAAY,GAAG,QAArB,C,CAEA;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAASr+G,IAAT,EAAes+G,OAAf,EAAwB;AAC3C,MAAMvwF,IAAI,GAAG;AACX4mC,QAAI,EAAE2pD,OAAO,GAAG,WAAH,GAAiB,MADnB;AAEX1pD,QAAI,EAAE0pD,OAAO,GAAG,SAAH,GAAe;AAFjB,GAAb;;AAIA,MAAIt+G,IAAI,KAAK,aAAb,EAA4B;AAC1BjC,KAAC,YAAK+/G,iBAAL,EAAD,CAA2B/vF,IAAI,CAAC4mC,IAAhC;AACA52D,KAAC,YAAKigH,iBAAL,EAAD,CAA2BjwF,IAAI,CAAC6mC,IAAhC;AACA72D,KAAC,YAAKggH,qBAAL,EAAD,CAA+B13G,QAA/B,CAAwC,UAAxC;AACA,WAAOtI,CAAC,YAAKkgH,qBAAL,EAAD,CAA+Bt0G,WAA/B,CAA2C,UAA3C,CAAP;AACD,GALD,MAKO;AACL5L,KAAC,YAAK+/G,iBAAL,EAAD,CAA2B/vF,IAAI,CAAC6mC,IAAhC;AACA72D,KAAC,YAAKigH,iBAAL,EAAD,CAA2BjwF,IAAI,CAAC4mC,IAAhC;AACA52D,KAAC,YAAKggH,qBAAL,EAAD,CAA+Bp0G,WAA/B,CAA2C,UAA3C;AACA,WAAO5L,CAAC,YAAKkgH,qBAAL,EAAD,CAA+B53G,QAA/B,CAAwC,UAAxC,CAAP;AACD;AACF,CAhBD;;AAkBe;AACb;;;;;;AAMAk4G,UAPa,oBAOJx2G,KAPI,EAOG8pC,IAPH,EAOSh6B,QAPT,EAOmB2mG,cAPnB,EAOmC;AAAA,QAE5Ct+F,IAF4C,GAG1C2xB,IAH0C,CAE5C3xB,IAF4C,EAI9C;;AACAniB,KAAC,CAAC0uB,WAAF,CAAc,SAAd,EAAyB5U,QAAzB,EAL8C,CAM9C;;AACA9Z,KAAC,CAAC0uB,WAAF,CAAc;AACZ;AACA5U,cAAQ,EAARA,QAFY;AAGZ;AACA7S,cAAQ,EAAE,yBAJE;AAKV;AACA6E,eAAS,EAAEg0G,UAND;AAOV;AACA;AACAY,eAAS,EAAE;AACT9pD,YAAI,EAAE,MADG;AAETC,YAAI,EAAE;AAFG,OATD;AAaV;AACAloC,aAAO,EAAE,MAdC;AAeV;AACAQ,cAhBU,oBAgBD3X,GAhBC,EAgBI7N,OAhBJ,EAgBa;AACrB;AACA,YAAMyqB,KAAK,GAAGqsF,cAAc,EAA5B,CAFqB,CAGrB;AACA;AACA;;AACA,YAAMjuG,MAAM,GAAGo7F,iBAAU,CAAC37B,qBAAX,CAAiC79C,KAAK,CAAC1nB,OAAvC,EAAgDqlE,YAA/D;AACApoE,eAAO,CAACrC,KAAR,CAAckL,MAAd,EAAsBmuG,KAAtB,CAA4B/0G,WAA5B,CAAwCy0G,YAAxC,EAPqB,CAQrB;;AACA,YAAMO,MAAM,GAAGhT,iBAAU,CAAC97B,aAAX,CAAyBt6D,GAAzB,CAAf,CATqB,CAUrB;;AACAxN,aAAK,CAACwmF,iBAAN,CAAwBp8D,KAAK,CAACt2B,GAA9B,EAAmC;AACjC4O,iBAAO,EAAEk0G;AADwB,SAAnC,EAXqB,CAcrB;AACA;;AACA,eAAO9sE,IAAI,CAACla,OAAL,EAAP;AACD,OAjCS;AAmCV;AACA;AACA;AACA;AACA;AACA9zB,cAxCU,oBAwCDy8F,GAxCC,EAwCIhmG,CAxCJ,EAwCOuV,CAxCP,EAwCU;AAClB,YAAIqN,MAAJ;AACA,YAAM0hG,IAAI,GAAG7gH,CAAC,CAACnG,MAAD,CAAd,CAFkB,CAGlB;;AACA,YAAI,CAAC0C,CAAD,IAAM,CAACuV,CAAX,EAAc;AACZywF,aAAG,CAAC1zE,iBAAJ,CAAsB/yB,IAAtB,CAA2B,IAA3B,EAAiCymG,GAAG,CAACzzE,KAArC;AACA;AACD,SAHD,MAGO,IAAKvyB,CAAC,KAAK,UAAP,IAAuBuV,CAAC,KAAK,UAAjC,EAA8C;AACnD;AACAqN,gBAAM,GAAGojF,GAAG,CAACzzE,KAAJ,CAAUhpB,QAAV,EAAT;AACD,SAHM,MAGA;AACL;AACA,cAAMg7G,cAAc,GAAGve,GAAG,CAACwe,QAAJ,CAAaC,OAAb,GAAuBC,OAAvB,GACpBr9E,MADoB,CACb,YAAW;AACjB,mBAAO5jC,CAAC,CAAC,IAAD,CAAD,CAAQ4G,GAAR,CAAY,UAAZ,MAA4B,OAAnC;AACD,WAHoB,EAGlBvL,MAHL;;AAKA,cAAIylH,cAAJ,EAAoB;AAClBhvG,aAAC,IAAI+uG,IAAI,CAACv3D,SAAL,EAAL;AACA/sD,aAAC,IAAIskH,IAAI,CAAC/I,UAAL,EAAL;AACD;;AAED34F,gBAAM,GAAG;AACPpZ,eAAG,EAAE+L,CADE;AAEP7L,gBAAI,EAAE1J;AAFC,WAAT;AAID,SA1BiB,CA4BlB;;;AACA,YAAM4L,MAAM,GAAG04G,IAAI,CAACv3D,SAAL,KAAmBu3D,IAAI,CAACp6G,MAAL,EAAlC;AACA,YAAM+B,KAAK,GAAGq4G,IAAI,CAAC/I,UAAL,KAAoB+I,IAAI,CAACr6G,KAAL,EAAlC;AAEA;;;;;;AAKA,YAAMC,MAAM,GAAG87F,GAAG,CAACzzE,KAAJ,CAAU,CAAV,EAAaoyF,YAA5B;AACA,YAAM16G,KAAK,GAAG+7F,GAAG,CAACzzE,KAAJ,CAAU,CAAV,EAAaqyF,WAA3B;;AAEA,YAAKhiG,MAAM,CAACpZ,GAAP,GAAaU,MAAd,GAAwB0B,MAA5B,EAAoC;AAClCgX,gBAAM,CAACpZ,GAAP,IAAcU,MAAd;AACD;;AAED,YAAK0Y,MAAM,CAAClZ,IAAP,GAAcO,KAAf,GAAwBgC,KAA5B,EAAmC;AACjC2W,gBAAM,CAAClZ,IAAP,IAAeO,KAAf;AACD,SA9CiB,CAgDlB;;;AACA2Y,cAAM,CAAClZ,IAAP,IAAe,CAAf;AACA,eAAOs8F,GAAG,CAACzzE,KAAJ,CAAUloB,GAAV,CAAcuY,MAAd,CAAP;AACD,OA3FS;AA6FViiG,YAAM,EAAE;AACN;AACAxqD,YAFM,gBAEDjtD,OAFC,EAEQ;AACV,cAAMkI,IAAI,GAAG4uG,cAAc,EAA3B;AACA,cAAMY,cAAc,GAAGxvG,IAAI,IAAI+7F,iBAAU,CAAC37B,qBAAX,CAAiCpgE,IAAI,CAACnF,OAAtC,CAA/B;;AACA,cAAI,CAACmF,IAAD,IAAS,CAACwvG,cAAd,EAA8B;AAC5B,mBAAO,KAAP;AACD;;AAED,cAAM7pG,GAAG,GAAG6pG,cAAc,CAACtvC,YAA3B;AAPU,cASR4uC,KATQ,GAUNh3G,OAAO,CAACrC,KAAR,CAAckQ,GAAd,CAVM,CASRmpG,KATQ;AAWVA,eAAK,CAACr4G,QAAN,CAAe+3G,YAAf;;AACA,cAAIM,KAAK,CAACl1G,QAAN,CAAes0G,iBAAf,CAAJ,EAAuC;AACrCO,wBAAY,CAAC,aAAD,CAAZ;AACD,WAFD,MAEO;AACLA,wBAAY,CAAC,aAAD,CAAZ;AACD,WAhBS,CAiBV;;;AACA,iBAAO,IAAP;AACD,SArBG;AAuBJ;AACAzpD,YAxBI,gBAwBCltD,OAxBD,EAwBU;AACZ,cAAMyqB,KAAK,GAAGqsF,cAAc,EAA5B;AACA,cAAMjpG,GAAG,GAAGo2F,iBAAU,CAAC37B,qBAAX,CAAiC79C,KAAK,CAAC1nB,OAAvC,EAAgDqlE,YAA5D;AACApoE,iBAAO,CAACrC,KAAR,CAAckQ,GAAd,EAAmBmpG,KAAnB,CAAyB/0G,WAAzB,CAAqCy0G,YAArC,EAHY,CAIZ;;AACA,iBAAO,IAAP;AACD;AA9BG,OA7FE;AA8HV/4G,WAAK,EAAE;AACL;AACA,uBAAe;AACbtF,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,iCAAP,CADO;AAEb7V,mBAAS,YAAKk0G,qBAAL,CAFI;AAGb7wF,kBAHa,sBAGF;AACTmxF,wBAAY,CAAC,aAAD,EAAgB,IAAhB,CAAZ,CADS,CAET;;AACA,mBAAO,KAAP;AACD;AAPY,SAFV;AAWL;AACA,eAAO;AACLt+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,6BAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SAZF;AAgBL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,6BAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SAhBF;AAoBL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,4BAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SApBF;AAwBL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,6BAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SAxBF;AA4BL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,gCAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SA5BF;AAgCL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,mCAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SAhCF;AAoCL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,6BAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SApCF;AAwCL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,gCAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SAxCF;AA4CL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,gCAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SA5CF;AAgDL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,8BAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SAhDF;AAoDL,eAAO;AACL/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,8BAAP,CADD;AAEL7V,mBAAS,YAAKi0G,iBAAL;AAFJ,SApDF;AAwDL;AACA,uBAAe;AACb/9G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,iCAAP,CADO;AAEb7V,mBAAS,YAAKo0G,qBAAL,CAFI;AAGb/wF,kBAHa,sBAGF;AACTmxF,wBAAY,CAAC,aAAD,EAAgB,IAAhB,CAAZ,CADS,CAET;;AACA,mBAAO,KAAP;AACD;AAPY,SAzDV;AAkEL;AACA,eAAO;AACLt+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,gCAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL;AAFJ,SAnEF;AAuEL,eAAO;AACLj+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,+BAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL;AAFJ,SAvEF;AA2EL,eAAO;AACLj+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,4BAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL;AAFJ,SA3EF;AA+EL,eAAO;AACLj+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,+BAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL;AAFJ,SA/EF;AAmFL,eAAO;AACLj+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,kCAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL,cAA0BG,gBAA1B;AAFJ,SAnFF;AAuFL,eAAO;AACLp+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,kCAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL,cAA0BG,gBAA1B;AAFJ,SAvFF;AA2FL,eAAO;AACLp+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,4BAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL,cAA0BE,gBAA1B;AAFJ,SA3FF;AA+FL,eAAO;AACLn+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,8BAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL,cAA0BE,gBAA1B;AAFJ,SA/FF;AAmGL,eAAO;AACLn+G,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,+BAAP,CADD;AAEL7V,mBAAS,YAAKm0G,iBAAL,cAA0BE,gBAA1B;AAFJ;AAnGF;AA9HG,KAAd,EAP8C,CA+O9C;AACA;;AACA,WAAOG,YAAY,CAAC,aAAD,CAAnB;AACD;AAzPY,CAAf,E;;AC1CA;CAEA;;AACA,IAAIgB,WAAW,GAAG,EAAlB;AAAA,IAEEC,SAAS,GAAG,WAFd;AAAA,IAGEC,MAAM,GAAG,QAHX;;AAKA,SAASC,QAAT,CAAkBlR,EAAlB,EAAsBC,EAAtB,EAA0Bj0G,CAA1B,EAA6BuV,CAA7B,EAAgC;AAC9B,SAAOtV,IAAI,CAAC65C,KAAL,CAAW95C,CAAC,GAAGg0G,EAAf,EAAmBz+F,CAAC,GAAG0+F,EAAvB,CAAP;AACD;;AAED,SAAS/5F,MAAT,CAAgBla,CAAhB,EAAmBuV,CAAnB,EAAsB0D,KAAtB,EAA6B;AAC3B,SAAO;AACLjZ,KAAC,EAAEA,CAAC,GAAGC,IAAI,CAAC8O,GAAL,CAASkK,KAAT,CAAJ,GAAsB1D,CAAC,GAAGtV,IAAI,CAAC6O,GAAL,CAASmK,KAAT,CADxB;AAEL1D,KAAC,EAAEvV,CAAC,GAAGC,IAAI,CAAC6O,GAAL,CAASmK,KAAT,CAAJ,GAAsB1D,CAAC,GAAGtV,IAAI,CAAC8O,GAAL,CAASkK,KAAT;AAFxB,GAAP;AAID;;AAEc,SAASksG,iBAAT,CAA2BC,SAA3B,EAAsC33G,KAAtC,EAA6CinB,MAA7C,EAAqD;AAClE,MAAIrX,GAAJ,EAEEgoG,IAFF,EAGEC,OAHF,EAKE7nE,KALF,EAME90C,UANF,EAOE48G,WAPF,EASEC,OATF,EAUEC,YAVF,EAWEC,kBAXF,EAYEC,SAZF,EAaEC,SAbF,EAeEC,QAfF,EAgBEC,eAhBF,EAiBEC,QAjBF,EAiBYC,OAjBZ,CADkE,CAoBlE;AACA;;AACA,WAASC,gBAAT,CAA0BjmH,CAA1B,EAA6BuV,CAA7B,EAAgCD,IAAhC,EAAsC5X,CAAtC,EAAyC;AACvC;AACA;AACA,QAAIA,CAAC,CAAC8tB,MAAF,KAAa,CAAjB,EAAoB;AAClB,UAAI+tC,IAAI,GAAG,IAAX;;AACA,UAAI2sD,eAAe,CAAC5wG,IAAD,CAAnB,EAA2B;AACzB;AACA;AACA,YAAI6wG,KAAK,GAAG14G,KAAK,CAACmW,GAAN,CAAU,YAAV,MAA4BohG,SAA5B,GAAwC,CAACA,SAAD,EAAYC,MAAZ,CAAxC,GAA8D,CAACA,MAAD,EAASD,SAAT,CAA1E,CAHyB,CAIzB;;AACAzrD,YAAI,GAAG77D,CAAC,CAACs9G,MAAF,GAAWmL,KAAK,CAAC,CAAD,CAAhB,GAAsBA,KAAK,CAAC,CAAD,CAAlC;AACD,OAND,MAMO,IAAIC,eAAe,CAAC9wG,IAAD,CAAnB,EAA2B;AAChCikD,YAAI,GAAGyrD,SAAP;AACD;;AACD,UAAIzrD,IAAI,KAAK,IAAb,EAAmB;AACjByoD,oBAAY,CAAC6D,QAAD,EAAWtsD,IAAX,CAAZ;AACD;AACF;AACF;;AAED,WAAS8sD,gBAAT,CAA0BrmH,CAA1B,EAA6BuV,CAA7B,EAAgCD,IAAhC,EAAsC5X,CAAtC,EAAyC,CACvC;AACD;;AAED,WAAS4oH,eAAT,CAAyBtmH,CAAzB,EAA4BuV,CAA5B,EAA+B7X,CAA/B,EAAkC,CAChC;AACD;;AAED,WAAS6oH,cAAT,CAAwBvmH,CAAxB,EAA2BuV,CAA3B,EAA8BD,IAA9B,EAAoC5X,CAApC,EAAuC,CACrC;AACD;;AAED,WAAS6hH,YAAT,CAAsBv/G,CAAtB,EAAyBuV,CAAzB,EAA4BD,IAA5B,EAAkC5X,CAAlC,EAAqC;AACnC;AACA,QAAI,CAACsoH,OAAD,IAAYZ,SAAS,CAAC7F,YAAV,CAAuB,OAAvB,CAAhB,EAAiD;AAC/C6F,eAAS,CAAC7F,YAAV,CAAuB,OAAvB,EAAgCv/G,CAAhC,EAAmCuV,CAAnC,EAAsCD,IAAtC,EAA4CA,IAAI,CAAC/T,GAAjD;AACD;AACF;;AAED,WAASilH,kBAAT,CAA4BxmH,CAA5B,EAA+BuV,CAA/B,EAAkCD,IAAlC,EAAwC5X,CAAxC,EAA2C,CAE1C,CAFD,CACE;AAGF;AACA;;;AACA,WAAS+oH,eAAT,CAAyB/oH,CAAzB,EAA4B;AAC1B,QAAIwd,CAAC,GAAGwrG,cAAc,CAAChpH,CAAD,CAAtB;AAEAmoH,YAAQ,GAAGc,YAAY,CAACzrG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,CAAvB;AACAuwG,mBAAe,GAAG,IAAlB;AACAE,WAAO,GAAG,KAAV;AAEAZ,aAAS,CAAClJ,eAAV,CAA0B,CAAC,CAAC2J,QAA5B;;AACA,QAAIA,QAAJ,EAAc;AACZI,sBAAgB,CAAC/qG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,EAAWswG,QAAX,EAAqBnoH,CAArB,CAAhB;AACD;AACF;;AAED,WAASkpH,eAAT,CAAyBlpH,CAAzB,EAA4B;AAC1B,QAAIwd,CAAC,GAAGwrG,cAAc,CAAChpH,CAAD,CAAtB;AAAA,QACE4X,IAAI,GAAGqxG,YAAY,CAACzrG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,CADrB;AAGA6vG,aAAS,CAAClJ,eAAV,CAA0B,CAAC,CAAC5mG,IAA5B;;AACA,QAAIA,IAAJ,EAAU;AACR+wG,sBAAgB,CAACnrG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,EAAWD,IAAX,EAAiB5X,CAAjB,CAAhB;AACD,KAFD,MAEO;AACL4oH,qBAAe,CAACprG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,EAAW7X,CAAX,CAAf;AACD;;AACD,QAAI,CAACqoH,QAAL,EAAe;AACbc,sBAAgB,CAACvxG,IAAD,CAAhB;AACD;AACF;;AAED,WAASwxG,aAAT,CAAuBppH,CAAvB,EAA0B;AACxB,QAAIwd,CAAC,GAAGwrG,cAAc,CAAChpH,CAAD,CAAtB;AAAA,QACEqpH,MAAM,GAAGJ,YAAY,CAACzrG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,CADvB;AAAA,QAEEyxG,UAAU,GAAG,KAFf;AAIA5B,aAAS,CAAClJ,eAAV,CAA0B,CAAC,CAAC6K,MAA5B;;AAEA,QAAIA,MAAJ,EAAY;AACVR,oBAAc,CAACrrG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,EAAWwxG,MAAX,EAAmBrpH,CAAnB,CAAd;;AACA,UAAIqpH,MAAM,KAAKlB,QAAf,EAAyB;AACvB;AACA;AACAmB,kBAAU,GAAG,IAAb;AACAzH,oBAAY,CAACrkG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,EAAWswG,QAAX,CAAZ;AACD;AACF;;AAEDT,aAAS,CAAChJ,eAAV,CAA0B4K,UAA1B;AACAnB,YAAQ,GAAG,IAAX;AACD;;AAED,WAASoB,eAAT,CAAyBvpH,CAAzB,EAA4B,CAC1B;AACD;;AAED,WAASwpH,cAAT,CAAwBxpH,CAAxB,EAA2B;AACzB,QAAIwd,CAAC,GAAGwrG,cAAc,CAAChpH,CAAD,CAAtB;AACA4oH,mBAAe,CAACprG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,EAAW7X,CAAX,CAAf;AACAypH,aAAS,CAAC,MAAD,CAAT;AACD;;AAED,WAASC,iBAAT,CAA2B1pH,CAA3B,EAA8B;AAC5B,QAAIwd,CAAC,GAAGwrG,cAAc,CAAChpH,CAAD,CAAtB;AAEAooH,mBAAe,GAAG,CAACE,OAAD,IAAYW,YAAY,CAACzrG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,CAA1C;AAEA6vG,aAAS,CAAClJ,eAAV,CAA0B,CAAC,CAAC4J,eAA5B;;AACA,QAAIA,eAAJ,EAAqB;AACnBU,wBAAkB,CAACtrG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,EAAWuwG,eAAX,CAAlB;AACD;AACF,GAvIiE,CAwIlE;;;AAEA,WAASuB,kBAAT,CAA4B3pH,CAA5B,EAA+B;AAC7B;AACA,QAAIA,CAAC,CAACg3B,MAAF,KAAaA,MAAjB,EAAyB;AACvByyF,eAAS,CAAC,MAAD,CAAT;AACA;AACD;;AACD,QAAIjsG,CAAC,GAAGwrG,cAAc,CAAChpH,CAAD,CAAtB;AACAmpH,oBAAgB,CAACF,YAAY,CAACzrG,CAAC,CAAClb,CAAH,EAAMkb,CAAC,CAAC3F,CAAR,CAAb,CAAhB;AACD;;AAED,WAAS6wG,eAAT,CAAyB9wG,IAAzB,EAA+B;AAC7B,QAAI,CAACA,IAAL,EAAW;AACT,aAAO,KAAP;AACD;;AACD,QAAI7H,KAAK,CAACk6B,SAAN,EAAJ,EAAuB;AACrB,aAAOryB,IAAI,CAACa,oBAAL,IAA6B1I,KAAK,CAACwb,UAAN,CAAiB1Y,aAArD;AACD;;AACD,WAAO+E,IAAI,CAACY,SAAZ;AACD;;AAED,WAASgwG,eAAT,CAAyB5wG,IAAzB,EAA+B;AAC7B,QAAI,CAACA,IAAL,EAAW;AACT,aAAO,KAAP;AACD,KAH4B,CAI7B;AACA;;;AACA,WAAO8wG,eAAe,CAAC9wG,IAAD,CAAf,IAAyB7H,KAAK,CAACk6B,SAAN,EAAzB,IAA8Cl6B,KAAK,CAAC8iF,gBAAN,CAAuBj7E,IAAI,CAAC/T,GAA5B,EAAiCzC,MAAjC,GAA0C,CAA/F;AACD;;AAED,WAAS+nH,gBAAT,CAA0BvxG,IAA1B,EAAgC;AAC9B,QAAI8wG,eAAe,CAAC9wG,IAAD,CAAnB,EAA2B;AACzB6xG,eAAS,CAAC,MAAD,CAAT;AACD,KAFD,MAEO;AACLA,eAAS,CAAC,MAAD,CAAT;AACD;AACF;;AAED,MAAIG,SAAJ;;AAEA,WAASH,SAAT,CAAmB1hH,IAAnB,EAAyB;AACvB,QAAI6hH,SAAS,KAAK7hH,IAAlB,EAAwB;AACtB6hH,eAAS,GAAG7hH,IAAZ;AACAshD,cAAQ,CAACu0D,eAAT,CAAyB9uF,KAAzB,CAA+B+6F,MAA/B,GAAwC9hH,IAAxC;AACD;AACF;;AAED,WAASsgB,IAAT,GAAgB;AACds/F,QAAI,GAAGD,SAAS,CAACjG,YAAjB;AACAmG,WAAO,GAAGF,SAAS,CAAChG,eAApB;AAEAoG,WAAO,GAAG/hH,CAAC,CAACixB,MAAD,CAAX;AACA8wF,WAAO,CAACz5G,QAAR,CAAiB,yBAAjB;AAEAy5G,WAAO,CAACrpG,EAAR,CAAW,8BAAX,EAA2CsqG,eAA3C;AACAjB,WAAO,CAACrpG,EAAR,CAAW,4BAAX,EAAyC2qG,aAAzC;AACAtB,WAAO,CAACrpG,EAAR,CAAW,8BAAX,EAA2CyqG,eAA3C;AACApB,WAAO,CAACrpG,EAAR,CAAW,8BAAX,EAA2C8qG,eAA3C;AACAzB,WAAO,CAACrpG,EAAR,CAAW,6BAAX,EAA0C+qG,cAA1C;AACA1B,WAAO,CAACrpG,EAAR,CAAW,gCAAX,EAA6CirG,iBAA7C;AAEA/pG,OAAG,CAACkyB,SAAJ,CAAc9hC,KAAd;AACD;;AAED,WAASk5G,YAAT,CAAsB3mH,CAAtB,EAAyBuV,CAAzB,EAA4B;AAC1B,QAAID,IAAJ,EAAUI,EAAV,EAAcC,EAAd,EAAkB+1E,EAAlB,CAD0B,CAE1B;;AACA,SAAK,IAAI7sF,CAAC,GAAG4+C,KAAK,CAAC3+C,MAAN,GAAe,CAA5B,EAA+BD,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;AAC1CyW,UAAI,GAAGmoC,KAAK,CAAC5+C,CAAD,CAAZ;AACA6W,QAAE,GAAGJ,IAAI,CAACtV,CAAV;AACA2V,QAAE,GAAGL,IAAI,CAACC,CAAV;AACAm2E,QAAE,GAAGp2E,IAAI,CAACc,MAAV,CAJ0C,CAK1C;;AACA,UAAIpW,CAAC,GAAG0V,EAAE,GAAGg2E,EAAT,IAAe1rF,CAAC,GAAG0V,EAAE,GAAGg2E,EAAxB,IAA8Bn2E,CAAC,GAAGI,EAAE,GAAG+1E,EAAvC,IAA6Cn2E,CAAC,GAAGI,EAAE,GAAG+1E,EAA1D,EAA8D;AAC5D,eAAOp2E,IAAP;AACD;AACF;;AACD,WAAO,IAAP;AACD;;AAED,WAASoxG,cAAT,CAAwBhpH,CAAxB,EAA2B8pH,8BAA3B,EAA2D;AACzD,QAAI,CAACA,8BAAL,EAAqC;AACnC;AACA;AACA/B,kBAAY,GAAGD,OAAO,CAAC5iG,MAAR,EAAf;AACA8iG,wBAAkB,GAAGF,OAAO,CAACtnG,IAAR,CAAa,OAAb,IAAwBsnG,OAAO,CAACv7G,KAAR,EAA7C,CAJmC,CAKnC;AACA;;AACA07G,eAAS,GAAGl4G,KAAK,CAACmW,GAAN,CAAU,WAAV,KAA0B,CAAtC;AACAgiG,eAAS,GAAGn4G,KAAK,CAACmW,GAAN,CAAU,WAAV,KAA0B,CAAtC;AACD;;AAEDmhG,eAAW,CAAC/kH,CAAZ,GAAgBqlH,IAAI,CAAClD,MAAL,CAAY,CAACzkH,CAAC,CAACy9G,KAAF,GAAUsK,YAAY,CAAC/7G,IAAxB,IAAgCg8G,kBAA5C,IAAkEC,SAAlF;AACAZ,eAAW,CAACxvG,CAAZ,GAAgB+vG,OAAO,CAACnD,MAAR,CAAe,CAACzkH,CAAC,CAAC09G,KAAF,GAAUqK,YAAY,CAACj8G,GAAxB,IAA+Bk8G,kBAA9C,IAAoEE,SAApF;AACA,WAAOb,WAAP;AACD;;AAED,WAAS/C,YAAT,CAAsB1sG,IAAtB,EAA4BikD,IAA5B,EAAkC;AAChC,QAAIkuD,SAAS,GAAGluD,IAAI,KAAKyrD,SAAzB;AAAA,QACE0C,iBADF;AAAA,QACqBC,SADrB;AAAA,QACgC53B,QADhC;AAAA,QAC0CikB,EAD1C;AAAA,QAC8CC,EAD9C;AAGAxwG,KAAC,CAACnG,MAAD,CAAD,CAAU6e,EAAV,CAAa,oBAAb,EAAmC,UAASze,CAAT,EAAY;AAC7C;AACAA,OAAC,CAACg1C,cAAF,GAF6C,CAI7C;AACA;;AACA,UAAIx3B,CAAC,GAAGwrG,cAAc,CAAChpH,CAAD,EAAI,IAAJ,CAAtB;AACA,UAAIsC,CAAC,GAAGkb,CAAC,CAAClb,CAAV;AACA,UAAIuV,CAAC,GAAG2F,CAAC,CAAC3F,CAAV;;AAEA,UAAI,CAACywG,OAAL,EAAc;AACZ;AACA0B,yBAAiB,GAAGE,oBAAoB,CAACtyG,IAAD,CAAxC;;AACA,YAAImyG,SAAJ,EAAe;AACb,cAAI,CAACh6G,KAAK,CAACk6B,SAAN,EAAD,IAAsBryB,IAAI,CAACY,SAA/B,EAA0C;AACxCzI,iBAAK,CAAC+oG,aAAN,CAAoBlhG,IAAI,CAAC/T,GAAzB;AACD;AACF,SAJD,MAIO;AAAE;AACPwuF,kBAAQ,GAAGtiF,KAAK,CAAC8iF,gBAAN,CAAuBj7E,IAAI,CAAC/T,GAA5B,EAAiCszB,MAAjC,CAAwCvf,IAAI,CAAC/T,GAA7C,CAAX;AACA,cAAIsmH,IAAI,GAAGp6G,KAAK,CAACsmG,sBAAN,CAA6Bz+F,IAAI,CAAC/T,GAAlC,CAAX,CAFK,CAGL;;AACAyyG,YAAE,GAAG,CAAC1+F,IAAI,CAACtV,CAAL,GAAS6nH,IAAI,CAACn+G,IAAd,GAAqB4L,IAAI,CAACtV,CAA1B,GAA8B6nH,IAAI,CAAC57G,KAApC,IAA6C,GAAlD;AACAgoG,YAAE,GAAG,CAAC3+F,IAAI,CAACC,CAAL,GAASsyG,IAAI,CAACr+G,GAAd,GAAoB8L,IAAI,CAACC,CAAzB,GAA6BsyG,IAAI,CAACj8G,MAAnC,IAA6C,GAAlD;AACA+7G,mBAAS,GAAGzC,QAAQ,CAAClR,EAAD,EAAKC,EAAL,EAASj0G,CAAT,EAAYuV,CAAZ,CAApB;AACD;;AACDwwG,gBAAQ,GAAG,IAAX;AACAC,eAAO,GAAG,IAAV;AACD;;AAED,UAAIyB,SAAJ,EAAe;AACbK,yBAAiB,CAACxyG,IAAD,EAAOtV,CAAP,EAAUuV,CAAV,CAAjB;AACD,OAFD,MAEO;AAAE;AACP,YAAIwyG,QAAQ,GAAG7C,QAAQ,CAAClR,EAAD,EAAKC,EAAL,EAASj0G,CAAT,EAAYuV,CAAZ,CAAvB;AACAyyG,sBAAc,CAACj4B,QAAD,EAAWikB,EAAX,EAAeC,EAAf,EAAmB0T,SAAS,GAAGI,QAA/B,CAAd;AACAJ,iBAAS,GAAGI,QAAZ;AACD;;AACDZ,eAAS,CAAC,MAAD,CAAT,CApC6C,CAqC7C;;AACA,UAAI/B,SAAS,CAAC5F,WAAV,CAAsBlqG,IAA1B,EAAgC;AAC9B8vG,iBAAS,CAAC5F,WAAV,CAAsBlqG,IAAtB,CAA2BtV,CAA3B,EAA8BuV,CAA9B,EAAiCD,IAAjC,EAAuCA,IAAI,CAAC/T,GAA5C;AACD;;AACD6jH,eAAS,CAACzhG,MAAV;AACD,KA1CD,EA0CGxH,EA1CH,CA0CM,sBA1CN,EA0C8B,UAASze,CAAT,EAAY;AACxC;AACA;AACAA,OAAC,CAACg1C,cAAF;AACD,KA9CD,EA8CGu1E,GA9CH,CA8CO,kBA9CP,EA8C2B,UAASvqH,CAAT,EAAY;AACrC+F,OAAC,CAACnG,MAAD,CAAD,CAAU01B,GAAV,CAAc,WAAd,EADqC,CAErC;;AACA,UAAI,CAACgzF,OAAL,EAAc;AACdD,cAAQ,GAAG,KAAX,CAJqC,CAKrC;;AACAroH,OAAC,CAACg1C,cAAF,GANqC,CAOrC;;AACA20E,wBAAkB,CAAC3pH,CAAD,CAAlB;;AAEA,UAAI+pH,SAAS,IAAI,CAACh6G,KAAK,CAACk6B,SAAN,EAAlB,EAAqC;AACnCl6B,aAAK,CAACkpG,WAAN;AACD,OAZoC,CAcrC;;;AACA,UAAIlpG,KAAK,CAACk6B,SAAN,EAAJ,EAAuB;AACrB,YAAI,CAACugF,eAAe,CAAC5yG,IAAI,CAAC/T,GAAN,CAApB,EAAgC;AAC9BoC,iDAAK,CAACyhH,SAAS,CAACx/F,IAAV,CAAeR,CAAf,CAAiB,oCAAjB,CAAD,CAAL;AACA+iG,kCAAwB,CAACT,iBAAD,CAAxB;AACAtC,mBAAS,CAACzhG,MAAV;AACD;AACF;AACF,KApED;AAqED;;AAED,WAASikG,oBAAT,CAA8BtyG,IAA9B,EAAoC;AAClC,QAAIy6E,QAAQ,GAAGtiF,KAAK,CAAC8iF,gBAAN,CAAuBj7E,IAAI,CAAC/T,GAA5B,EAAiCszB,MAAjC,CAAwCvf,IAAI,CAAC/T,GAA7C,CAAf;AACA,WAAOwuF,QAAQ,CAACzwD,GAAT,CAAa,UAAS/9B,GAAT,EAAc;AAChC,UAAI+T,IAAI,GAAG7H,KAAK,CAAC23F,iBAAN,CAAwB7jG,GAAxB,CAAX;AACA,aAAO;AACLA,WAAG,EAAEA,GADA;AAELvB,SAAC,EAAEsV,IAAI,CAACtV,CAFH;AAGLuV,SAAC,EAAED,IAAI,CAACC;AAHH,OAAP;AAKD,KAPM,CAAP;AAQD;;AAED,WAAS4yG,wBAAT,CAAkCC,iBAAlC,EAAqD;AACnDA,qBAAiB,CAACptG,OAAlB,CAA0B,UAASwJ,IAAT,EAAe;AACvC6jG,qBAAe,CAAC7jG,IAAI,CAACjjB,GAAN,EAAWijB,IAAI,CAACxkB,CAAhB,EAAmBwkB,IAAI,CAACjP,CAAxB,CAAf;AACD,KAFD;AAGD;;AAED,WAASuyG,iBAAT,CAA2BxyG,IAA3B,EAAiCtV,CAAjC,EAAoCuV,CAApC,EAAuC;AACrC,QAAIsyG,IAAI,GAAGp6G,KAAK,CAACsmG,sBAAN,CAA6Bz+F,IAAI,CAAC/T,GAAlC,CAAX;AACA,QAAIsmH,IAAI,CAACn+G,IAAL,GAAY1J,CAAZ,GAAgB,CAApB,EAAuBA,CAAC,GAAG,IAAI6nH,IAAI,CAACn+G,IAAb;AACvB,QAAIm+G,IAAI,CAAC57G,KAAL,GAAajM,CAAb,GAAiB2I,UAArB,EAAiC3I,CAAC,GAAG2I,UAAU,GAAGk/G,IAAI,CAAC57G,KAAtB;AACjC,QAAI47G,IAAI,CAACj8G,MAAL,GAAc2J,CAAd,GAAkB,CAAtB,EAAyBA,CAAC,GAAG,IAAIsyG,IAAI,CAACj8G,MAAb;AACzB,QAAIi8G,IAAI,CAACr+G,GAAL,GAAW+L,CAAX,GAAegwG,WAAnB,EAAgChwG,CAAC,GAAGgwG,WAAW,GAAGsC,IAAI,CAACr+G,GAAvB;;AAEhC,QAAIiE,KAAK,CAACk6B,SAAN,EAAJ,EAAuB;AACrB2gF,yBAAmB,CAAChzG,IAAI,CAAC/T,GAAN,EAAWvB,CAAX,EAAcuV,CAAd,CAAnB;AACD,KAFD,MAEO;AACL9H,WAAK,CAACipG,QAAN,CAAe12G,CAAf,EAAkBuV,CAAlB;AACD;AACF;;AAED,WAAS8yG,eAAT,CAAyBxpH,CAAzB,EAA4B0pH,IAA5B,EAAkCC,IAAlC,EAAwC;AACtC,WAAO/6G,KAAK,CAACwmF,iBAAN,CAAwBp1F,CAAxB,EAA2B;AAChCmB,OAAC,EAAEuoH,IAD6B;AAEhChzG,OAAC,EAAEizG;AAF6B,KAA3B,CAAP;AAID;;AAED,WAASF,mBAAT,CAA6BzpH,CAA7B,EAAgC0pH,IAAhC,EAAsCC,IAAtC,EAA4C;AAC1C;AACA,WAAO/6G,KAAK,CAACwmF,iBAAN,CAAwBp1F,CAAxB,EAA2B;AAChCmB,OAAC,EAAEuoH,IAD6B;AAEhChzG,OAAC,EAAEizG;AAF6B,KAA3B,EAGJ,KAHI,EAGG,IAHH,CAAP;AAID;;AAED,WAASN,eAAT,CAAyB7sC,OAAzB,EAAkC;AAChC;AACA;AACA,WAAO5tE,KAAK,CAACwmF,iBAAN,CAAwB5Y,OAAxB,EAAiC,EAAjC,EAAqC,IAArC,EAA2C,IAA3C,CAAP;AACD;;AAED,WAAS2sC,cAAT,CAAwBj4B,QAAxB,EAAkCikB,EAAlC,EAAsCC,EAAtC,EAA0Ch7F,KAA1C,EAAiD;AAC/C,QAAIA,KAAK,KAAK,CAAd,EAAiB;AAEjB,QAAIwvG,eAAe,GAAG,IAAtB;;AACA,SAAK,IAAI5pH,CAAC,GAAG,CAAR,EAAWc,GAAG,GAAGowF,QAAQ,CAACjxF,MAA/B,EAAuCD,CAAC,GAAGc,GAA3C,EAAgDd,CAAC,EAAjD,EAAqD;AACnD,UAAI0C,GAAG,GAAGwuF,QAAQ,CAAClxF,CAAD,CAAlB;AACA,UAAIyW,IAAI,GAAG7H,KAAK,CAAC23F,iBAAN,CAAwB7jG,GAAxB,CAAX;AACA,UAAImnH,SAAS,GAAGxuG,MAAM,CAAC5E,IAAI,CAACtV,CAAL,GAASg0G,EAAV,EAAc1+F,IAAI,CAACC,CAAL,GAAS0+F,EAAvB,EAA2Bh7F,KAA3B,CAAtB;AACA,UAAI0vG,UAAU,GAAGN,eAAe,CAAC9mH,GAAD,EAAMmnH,SAAS,CAAC1oH,CAAV,GAAcg0G,EAApB,EAAwB0U,SAAS,CAACnzG,CAAV,GAAc0+F,EAAtC,CAAhC;AACAwU,qBAAe,GAAGA,eAAe,IAAIE,UAArC;AACD;;AACD,WAAOF,eAAP;AACD;;AAEDprG,KAAG,GAAG;AACJkyB,aAAS,EAAE,mBAASC,QAAT,EAAmB;AAC5B/hC,WAAK,GAAG+hC,QAAR;AAEAiO,WAAK,GAAGhwC,KAAK,CAACopG,QAAN,EAAR;AACAluG,gBAAU,GAAG8E,KAAK,CAACmW,GAAN,CAAU,OAAV,CAAb;AACA2hG,iBAAW,GAAG93G,KAAK,CAACmW,GAAN,CAAU,QAAV,CAAd,CAL4B,CAO5B;;AACAglG,4BAAmB,CAAC3E,QAApB,CAA6Bx2G,KAA7B,EAAoC23G,SAApC,EAA+C,0BAA/C,EAA2E,YAAW;AACpF,eAAOU,eAAP;AACD,OAFD;AAGD;AAZG,GAAN;AAeA//F,MAAI;AAEJ,SAAO1I,GAAP;AACD;AAAA,C;;AC9ZD;AACA;AACA;AACA;AACA;AACA;;AAEA,IACEwrG,WAAW,GAAG,MADhB;AAAA,IAEE;AACAC,YAAY,GACZ;;;;;;;0BAAA,GAO2BD,WAP3B,GAOyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAX3C;AAAA,IA2CEE,qBAAqB,GAAG,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,CA3C1B;AAAA,IA4CEC,qBAAqB,GAAG,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,CA5C1B;AAAA,IA8CE;AACAC,oBAAoB,GAAG,EA/CzB;AAAA,IAgDEC,cAAc,GAAG,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,CAhDnB;AAAA,IAiDEC,oBAAoB,GAAGhoG,EAAE,CAACvF,KAAH,CAASsG,MAAT,GACtBumF,WADsB,CACVtnF,EAAE,CAACioG,cADO,EAEtBpmG,KAFsB,CAEhB,CAAC,SAAD,EAAY,SAAZ,CAFgB,CAjDzB;AAAA,IAoDEqmG,kBAAkB,GAAGloG,EAAE,CAACvF,KAAH,CAASsG,MAAT,GACpBumF,WADoB,CACRtnF,EAAE,CAACioG,cADK,EAEpBpmG,KAFoB,CAEd,CAAC,SAAD,EAAY,SAAZ,CAFc,CApDvB;AAAA,IAuDEsmG,mBAAmB,GAAGnoG,EAAE,CAACvF,KAAH,CAASsG,MAAT,GACrBumF,WADqB,CACTtnF,EAAE,CAACioG,cADM,EAErBpmG,KAFqB,CAEf,CAAC,SAAD,EAAY,SAAZ,CAFe,CAvDxB;AAAA,IA0DEumG,mBAAmB,GAAGpoG,EAAE,CAACvF,KAAH,CAASsG,MAAT,GACrBumF,WADqB,CACTtnF,EAAE,CAACioG,cADM,EAErBpmG,KAFqB,CAEf,CAAC,SAAD,EAAY,SAAZ,CAFe,CA1DxB;AAAA,IA6DEwmG,iBAAiB,GAAGroG,EAAE,CAACvF,KAAH,CAASsG,MAAT,GACnBumF,WADmB,CACPtnF,EAAE,CAACioG,cADI,EAEnBpmG,KAFmB,CAEb,CAAC,SAAD,EAAY,SAAZ,CAFa,CA7DtB;AAAA,IAgEEymG,kBAAkB,GAAGtoG,EAAE,CAACvF,KAAH,CAASsG,MAAT,GACpBumF,WADoB,CACRtnF,EAAE,CAACioG,cADK,EAEpBpmG,KAFoB,CAEd,CAAC,SAAD,EAAY,SAAZ,CAFc,CAhEvB;AAAA,IAoEE0mG,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAS9zG,MAAT,EAAiB4W,KAAjB,EAAwB;AAC/C,MAAIm9F,WAAW,GAAG1pH,IAAI,CAAC4kB,KAAL,CAAW5kB,IAAI,CAACE,GAAL,CAASF,IAAI,CAAC2M,GAAL,CAASgJ,MAAT,IAAmB,CAA5B,EAA+B,CAA/B,IAAoCqzG,oBAA/C,CAAlB;AACAU,aAAW,IAAIV,oBAAf;;AACA,MAAIz8F,KAAK,KAAK,SAAV,IAAuB5W,MAAM,GAAG,CAAhC,IAAqC4W,KAAK,KAAK,WAAV,IAAyB5W,MAAM,GAAG,CAA3E,EAA8E;AAC5E,WAAO,CAACuzG,oBAAoB,CAACQ,WAAD,CAArB,EAAoCN,kBAAkB,CAACM,WAAD,CAAtD,EAAqEL,mBAAmB,CAACK,WAAD,CAAxF,CAAP;AACD,GAFD,MAEO,IAAIn9F,KAAK,KAAK,SAAV,IAAuB5W,MAAM,GAAG,CAAhC,IAAqC4W,KAAK,KAAK,WAAV,IAAyB5W,MAAM,GAAG,CAA3E,EAA8E;AACnF,WAAO,CAAC2zG,mBAAmB,CAACI,WAAD,CAApB,EAAmCH,iBAAiB,CAACG,WAAD,CAApD,EAAmEF,kBAAkB,CAACE,WAAD,CAArF,CAAP;AACD;;AACD,SAAOT,cAAP;AACD,CA7EH;AAAA,IA+EEU,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAS5lE,CAAT,EAAY;AACpC,SAAOA,CAAC,GAAG,CAAJ,GAAQ,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,CAAR,GAA4C,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,CAAnD;AACD,CAjFH;AAAA,IAmFE6lE,iBAAiB,GAAG,CAAC,WAAD,EAAc,eAAd,EAA+B,oBAA/B,EAAqD,aAArD,EAAoE,mBAApE,EAClB,iBADkB,EACC,sBADD,EACyB,iBADzB,EAC4C,oBAD5C,EACkE,cADlE,CAnFtB;;AAuFe,SAASC,aAAT,CAAuB1E,SAAvB,EAAkC33G,KAAlC,EAAyC6zG,aAAzC,EAAwDx6D,MAAxD,EAAgE;AAC7E;AACA,MAAIzpC,GAAJ;AAAA,MAEE9S,SAFF;AAAA,MAIE86G,IAJF;AAAA,MAKEC,OALF;AAAA,MAOEyE,UAPF;AAAA,MAQEpa,SARF;AAAA,MAUEqa,UAAU,GAAG,EAVf;AAAA,MAYErhH,UAZF;AAAA,MAaE48G,WAbF;AAAA,MAeE;AACA0E,YAAU,GAAG,EAhBf;AAAA,MAkBEC,YAAY,GAAG,IAAI/E,iBAAJ,CAAsBC,SAAtB,EAAiC33G,KAAjC,EAAwCq5C,MAAxC,CAlBjB;;AAoBA,WAAS/gC,IAAT,GAAgB;AACdpd,cAAU,GAAG8E,KAAK,CAACmW,GAAN,CAAU,OAAV,CAAb;AACA2hG,eAAW,GAAG93G,KAAK,CAACmW,GAAN,CAAU,QAAV,CAAd;AACAumG,wBAAoB,GAHN,CAId;;AACA18G,SAAK,CAACusB,qBAAN,CAA4B6vF,iBAA5B,EAA+C,YAAW;AACxDM,0BAAoB;AACpB9sG,SAAG,CAACq7B,KAAJ,GAFwD,CAGxD;AACA;;AACA0sE,eAAS,CAAC5D,YAAV;AACD,KAND;AAOD;;AAED,WAAS2I,oBAAT,GAAgC;AAC9BN,qBAAiB,CAAC7uG,OAAlB,CAA0B,UAASvV,IAAT,EAAe;AACvCwkH,gBAAU,CAACxkH,IAAD,CAAV,GAAmBgI,KAAK,CAACmW,GAAN,CAAUne,IAAV,CAAnB;AACD,KAFD;AAGD;;AAED,WAAS2kH,aAAT,CAAuBvrH,CAAvB,EAA0B;AACxB,QAAIyW,IAAI,GAAGy0G,UAAU,CAAClrH,CAAD,CAArB;AAAA,QACEkmG,IAAI,GAAGzvF,IAAI,CAACnF,OADd;AAAA,QAEE0nB,KAAK,GAAGpqB,KAAK,CAACk5F,oBAAN,CAA2B5B,IAA3B,CAFV;AAAA,QAGEslB,QAHF;AAAA,QAGYn1G,KAHZ;;AAKA,QAAII,IAAI,CAACW,MAAT,EAAiB;AACfo0G,cAAQ,GAAG58G,KAAK,CAACmW,GAAN,CAAU,WAAV,CAAX;AACA1O,WAAK,GAAGiM,EAAE,CAAC+C,GAAH,CAAOmmG,QAAP,CAAR;AACA,aAAO,CAACn1G,KAAK,CAACkP,QAAN,CAAe,CAAf,EAAkB9kB,QAAlB,EAAD,EAA+B4V,KAAK,CAAC5V,QAAN,EAA/B,EAAiD4V,KAAK,CAACo1G,MAAN,CAAa,CAAb,EAAgBhrH,QAAhB,EAAjD,CAAP;AACD;;AAED,QAAIgW,IAAI,CAACy7F,SAAT,EAAoB;AAClB,cAAQkZ,UAAU,CAAC32G,oBAAnB;AACE,aAAK,QAAL;AACE,iBAAOo2G,sBAAsB,CAACp0G,IAAI,CAACM,MAAN,EAAcq0G,UAAU,CAAC52G,kBAAzB,CAA7B;;AACF,aAAK,gBAAL;AACE,iBAAOu2G,uBAAuB,CAACt0G,IAAI,CAACypE,cAAN,CAA9B;;AACF,aAAK,gBAAL;AACE,cAAIzpE,IAAI,CAACM,MAAL,KAAgB,CAApB,EAAuB;AACrB,mBAAO8zG,sBAAsB,CAACp0G,IAAI,CAACM,MAAN,EAAcq0G,UAAU,CAAC52G,kBAAzB,CAA7B;AACD;;AACD,iBAAOu2G,uBAAuB,CAACt0G,IAAI,CAACypE,cAAN,CAA9B;AACA;AACA;AAXJ;AAaD;;AAED,QAAIkrC,UAAU,CAACh3G,SAAf,EAA0B;AACxB,aAAO81G,qBAAP;AACD,KAFD,MAEO,IAAIkB,UAAU,CAAC72G,aAAf,EAA8B;AACnC,aAAOs2G,sBAAsB,CAACp0G,IAAI,CAACM,MAAN,EAAcq0G,UAAU,CAAC52G,kBAAzB,CAA7B;AACD,KAFM,MAEA;AACL,UAAI,OAAOwkB,KAAK,CAAC3iB,KAAb,KAAuB,QAA3B,EAAqC;AACnC;AACA;AACAm1G,gBAAQ,GAAG,CAACxyF,KAAK,CAAC3iB,KAAN,GAAcjV,IAAI,CAACg6C,GAAL,CAAS,CAAT,EAAY,EAAZ,CAAf,EAAgC36C,QAAhC,CAAyC,EAAzC,CAAX;AACA+qH,gBAAQ,GAAG,SAAS35D,MAAT,CAAgB,CAAhB,EAAmB,IAAI25D,QAAQ,CAACvrH,MAAhC,IAA0CurH,QAArD;AACAn1G,aAAK,GAAGiM,EAAE,CAAC+C,GAAH,CAAO,MAAMmmG,QAAb,CAAR;AACD,OAND,MAMO;AACL;AACAn1G,aAAK,GAAGq1G,WAAQ,CAACtH,MAAT,CAAgBprF,KAAK,CAAC3iB,KAAtB,EAA6BgP,GAArC,CAFK,CAEqC;AAC3C;;AACD,aAAO,CAAChP,KAAK,CAACkP,QAAN,CAAe,CAAf,EAAkB9kB,QAAlB,EAAD,EAA+B4V,KAAK,CAAC5V,QAAN,EAA/B,EAAiD4V,KAAK,CAACo1G,MAAN,CAAa,CAAb,EAAgBhrH,QAAhB,EAAjD,CAAP;AACD;AACF;;AAED,WAASkrH,cAAT,CAAwB3rH,CAAxB,EAA2B;AACzB,QAAIyW,IAAI,GAAGy0G,UAAU,CAAClrH,CAAD,CAArB;AAAA,QACEkmG,IAAI,GAAGzvF,IAAI,CAACnF,OADd;AAAA,QAEE0nB,KAAK,GAAGpqB,KAAK,CAACk5F,oBAAN,CAA2B5B,IAA3B,CAFV;;AAGA,QAAIzvF,IAAI,CAACW,MAAL,IAAeX,IAAI,CAACy7F,SAApB,IAAiCkZ,UAAU,CAACh3G,SAA5C,IAAyDg3G,UAAU,CAAC72G,aAAxE,EAAuF;AACrF;AACA,aAAOkC,IAAI,CAACS,OAAZ;AACD;;AACD,QAAI,OAAO8hB,KAAK,CAAC3iB,KAAb,KAAuB,QAA3B,EAAqC;AACnC;AACA,aAAOI,IAAI,CAACS,OAAZ;AACD,KAXwB,CAYzB;;;AACA,WAAOw0G,WAAQ,CAACtH,MAAT,CAAgBprF,KAAK,CAAC3iB,KAAtB,EAA6BlX,CAA7B,GAAiCsX,IAAI,CAACS,OAA7C;AACD;;AAED,WAAS00G,cAAT,CAAwB5rH,CAAxB,EAA2B6rH,MAA3B,EAAmC;AACjC,QAAI3lB,IAAI,GAAGglB,UAAU,CAAClrH,CAAD,CAAV,CAAcsR,OAAzB;AAAA,QACEiG,MAAM,GAAGivG,IAAI,CAAC53G,KAAK,CAACk5F,oBAAN,CAA2B5B,IAA3B,EAAiC3uF,MAAlC,CAAJ,GAAgD6zG,UAAU,CAACj3G,eADtE;AAAA,QAEEyD,UAAU,GAAGszG,UAAU,CAAClrH,CAAD,CAAV,CAAc4X,UAF7B;AAAA,QAGEmK,KAAK,GAAG+pG,YAAY,CAAC9rH,CAAD,CAHtB;AAAA,QAIEgd,OAAO,GAAG2uG,cAAc,CAAC3rH,CAAD,CAJ1B;AAAA,QAKEoc,GALF;AAOAyvG,UAAM,GAAGA,MAAM,IAAIN,aAAa,CAACvrH,CAAD,CAAhC;AACAoc,OAAG,GAAGY,OAAO,GAAG,CAAV,GAAekpF,IAAI,GAAG,GAAP,GAAa3uF,MAAb,GAAsB,GAAtB,GAA4Bs0G,MAAM,CAACjsG,IAAP,CAAY,EAAZ,CAA5B,GAA8C,GAA9C,GAAoD5C,OAApD,GAA8D,GAA9D,GAAoE+E,KAAK,CAACjH,IAA1E,GAAiF,GAAjF,GAAuFlD,UAAvF,GAAoG,GAApG,GAA0GmK,KAAK,CAACzG,QAA/H,GACH/D,MAAM,GAAG,YADZ;;AAGA,QAAI4zG,UAAU,CAAC/uG,GAAD,CAAV,KAAoBld,SAAxB,EAAmC;AACjC,UAAI6sH,IAAI,GAAG7jE,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAX;AAAA,UACE6jE,OADF;AAGAC,eAAS,CAAC1F,SAAS,CAACntD,UAAX,CAAT;AAEA4yD,aAAO,GAAG;AACR5gH,aAAK,EAAEwM,UAAU,GAAG,IAAIL,MAAP,GAAgB,IAAIA,MAD7B;AAERlM,cAAM,EAAEuM,UAAU,GAAG,IAAIL,MAAP,GAAgB,IAAIA,MAF9B;AAGR20G,gBAAQ,EAAEL,MAAM,CAAC,CAAD,CAHR;AAIRM,cAAM,EAAEN,MAAM,CAAC,CAAD,CAJN;AAKRO,eAAO,EAAEP,MAAM,CAAC,CAAD,CALP;AAMR7uG,eAAO,EAAEA,OAND;AAOR+E,aAAK,EAAEA,KAAK,CAACjH,IAPL;AAQRQ,gBAAQ,EAAEyG,KAAK,CAACzG,QARR;AASR89C,kBAAU,EAAEmtD,SAAS,CAACntD,UATd;AAURizD,eAAO,EAAEz0G;AAVD,OAAV;AAaA00G,yBAAK,CAACP,IAAD,EAAOzzD,kBAAQ,CAAC30C,MAAT,CAAgBsmG,YAAhB,EAA8B+B,OAA9B,CAAP,CAAL,CAnBiC,CAqBjC;;AACA,UAAID,IAAI,CAAC3gH,KAAL,GAAa,CAAjB,EAAoB2gH,IAAI,CAAC3gH,KAAL,GAAa,CAAb;AACpB,UAAI2gH,IAAI,CAAC1gH,MAAL,GAAc,CAAlB,EAAqB0gH,IAAI,CAAC1gH,MAAL,GAAc,CAAd;AAErB8/G,gBAAU,CAAC/uG,GAAD,CAAV,GAAkB,IAAIgjG,cAAI,CAACmN,OAAL,CAAaC,UAAjB,CAA4BT,IAA5B,CAAlB,CAzBiC,CA0BjC;;AACAA,UAAI,CAACxoG,GAAL,CAASmpB,IAAT;AACD;;AACD,WAAOy+E,UAAU,CAAC/uG,GAAD,CAAjB;AACD,GAnJ4E,CAqJ7E;;;AACA,WAASqwG,0BAAT,GAAsC;AACpCtB,cAAU,GAAG,EAAb;AACAra,aAAS,CAAC30F,OAAV,CAAkB,UAAS1F,IAAT,EAAezW,CAAf,EAAkB;AAClCyW,UAAI,CAACi2G,UAAL,CAAgBd,cAAc,CAAC5rH,CAAD,CAA9B;AACD,KAFD;AAGAumH,aAAS,CAAC5D,YAAV;AACD;;AAED,WAASsJ,SAAT,CAAmB9gH,IAAnB,EAAyB;AACvB09C,oBAAgB,CAAC;AACf19C,UAAI,EAAEA,IADS;AAEfw8C,YAAM,EAAEqiE,WAFO;AAEM;AACrBniE,cAAQ,EAAE4kE;AAHK,KAAD,CAAhB;AAKD;;AAED,WAASX,YAAT,CAAsB9rH,CAAtB,EAAyB;AACvB,QAAI2sH,OAAO,GAAG,EAAd;AAAA,QACEC,SAAS,GAAG,CADd;;AAGA,QAAIxB,UAAU,CAACp1G,WAAf,EAA4B;AAC1B22G,aAAO,GAAG3sH,CAAV;AACA4sH,eAAS,GAAG,GAAZ;AACD,KAHD,MAGO,IAAIxB,UAAU,CAAC12G,eAAX,IAA8B02G,UAAU,CAACz2G,kBAAzC,IAA+Du2G,UAAU,CAAClrH,CAAD,CAAV,CAAc+hB,KAAjF,EAAwF;AAC7F4qG,aAAO,GAAGzB,UAAU,CAAClrH,CAAD,CAAV,CAAc+hB,KAAxB;AACA6qG,eAAS,GAAG,CAAZ;AACD,KAHM,MAGA,IAAIxB,UAAU,CAAC12G,eAAX,IAA8B,CAAC02G,UAAU,CAACz2G,kBAA1C,IAAgEu2G,UAAU,CAAClrH,CAAD,CAAV,CAAc6uE,MAAlF,EAA0F;AAC/F89C,aAAO,GAAGzB,UAAU,CAAClrH,CAAD,CAAV,CAAc6uE,MAAxB;AACA+9C,eAAS,GAAG,GAAZ;AACD,KAHM,MAGA,IAAIxB,UAAU,CAACx2G,iBAAf,EAAkC;AACvC,UAAIs2G,UAAU,CAAClrH,CAAD,CAAV,CAAc+W,MAAd,GAAuB,CAA3B,EAA8B;AAC5B41G,eAAO,GAAG,GAAV;AACD,OAFD,MAEO,IAAIzB,UAAU,CAAClrH,CAAD,CAAV,CAAc+W,MAAd,GAAuB,CAA3B,EAA8B;AACnC41G,eAAO,GAAG,GAAV;AACD;;AACDC,eAAS,GAAG,GAAZ;AACD;;AAED,WAAO;AACL9xG,UAAI,EAAE6xG,OADD;AAELrxG,cAAQ,EAAEsxG,SAAS,GAAG,EAFjB,CAEoB;AACvB;;AAHG,KAAP;AAKD;;AAEDpuG,KAAG,GAAG;AACJq7B,SAAK,EAAE,iBAAW;AAChB,UAAI75C,CAAJ,EAAOc,GAAP,EAAY2V,IAAZ,EAAkBo2G,QAAlB;;AAEA,UAAInhH,SAAJ,EAAe;AACb+2G,qBAAa,CAACqK,WAAd,CAA0BphH,SAA1B;AACD;;AACDA,eAAS,GAAG,IAAI0zG,cAAI,CAACyE,sBAAT,EAAZ;AACApB,mBAAa,CAACqB,QAAd,CAAuBp4G,SAAvB;AAEA86G,UAAI,GAAGD,SAAS,CAACjG,YAAjB;AACAmG,aAAO,GAAGF,SAAS,CAAChG,eAApB;AAEAzP,eAAS,GAAG,EAAZ;AACAoa,gBAAU,GAAGt8G,KAAK,CAACopG,QAAN,EAAb;;AAEA,WAAKh4G,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGoqH,UAAU,CAACjrH,MAA7B,EAAqCD,CAAC,GAAGc,GAAzC,EAA8C,EAAEd,CAAhD,EAAmD;AACjDyW,YAAI,GAAG,IAAI2oG,cAAI,CAAC2N,MAAT,CAAgBnB,cAAc,CAAC5rH,CAAD,CAA9B,CAAP;AACAyW,YAAI,CAACsE,MAAL,CAAY5Z,CAAZ,GAAgB,GAAhB;AACAsV,YAAI,CAACsE,MAAL,CAAYrE,CAAZ,GAAgB,GAAhB;AACAD,YAAI,CAACzW,CAAL,GAASA,CAAT;AACAyW,YAAI,CAACW,MAAL,GAAc8zG,UAAU,CAAClrH,CAAD,CAAV,CAAcoX,MAA5B;AACA05F,iBAAS,CAACluG,IAAV,CAAe6T,IAAf;AACA/K,iBAAS,CAACo4G,QAAV,CAAmBrtG,IAAnB;AACD;;AAED,UAAI20G,UAAU,CAACh3G,SAAf,EAA0B;AACxB,aAAKpU,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGoqH,UAAU,CAACjrH,MAA7B,EAAqCD,CAAC,GAAGc,GAAzC,EAA8C,EAAEd,CAAhD,EAAmD;AACjD6sH,kBAAQ,GAAG,IAAIzN,cAAI,CAAC2N,MAAT,CAAgBnB,cAAc,CAAC5rH,CAAD,EAAImqH,qBAAJ,CAA9B,CAAX;AACA0C,kBAAQ,CAAC9xG,MAAT,CAAgB5Z,CAAhB,GAAoB,GAApB;AACA0rH,kBAAQ,CAAC9xG,MAAT,CAAgBrE,CAAhB,GAAoB,GAApB;AACAo6F,mBAAS,CAAC9wG,CAAD,CAAT,CAAa6sH,QAAb,GAAwBA,QAAxB;AACAnhH,mBAAS,CAACo4G,QAAV,CAAmB+I,QAAnB;AACD;AACF;;AAEDruG,SAAG,CAACsG,MAAJ;AACD,KArCG;AAuCJ4rB,aAAS,EAAE,mBAASC,QAAT,EAAmB;AAC5B/hC,WAAK,GAAG+hC,QAAR;AACAzpB,UAAI;AAEJmkG,kBAAY,CAAC36E,SAAb,CAAuBC,QAAvB;AACD,KA5CG;AA8CJ7rB,UAAM,EAAE,kBAAW;AACjB,UAAI9kB,CAAJ,EAAOc,GAAP,EAAYmxG,QAAZ,EAAsB+a,SAAtB,EAAiC7rH,CAAjC,EAAoCuV,CAApC,EAAuCu2G,KAAvC,EAA8CC,KAA9C;;AAEA,WAAKltH,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGgwG,SAAS,CAAC7wG,MAA5B,EAAoCD,CAAC,GAAGc,GAAxC,EAA6C,EAAEd,CAA/C,EAAkD;AAChDiyG,gBAAQ,GAAGnB,SAAS,CAAC9wG,CAAD,CAApB;AACAgtH,iBAAS,GAAG9B,UAAU,CAAClrH,CAAD,CAAtB;AACAmB,SAAC,GAAGqlH,IAAI,CAACwG,SAAS,CAAC7rH,CAAX,CAAR;AACAuV,SAAC,GAAG+vG,OAAO,CAACuG,SAAS,CAACt2G,CAAX,CAAX;AAEAu7F,gBAAQ,CAACvnG,QAAT,CAAkBvJ,CAAlB,GAAsBA,CAAtB;AACA8wG,gBAAQ,CAACvnG,QAAT,CAAkBgM,CAAlB,GAAsBA,CAAtB;;AAEA,YAAIs2G,SAAS,CAAC51G,MAAV,KAAqB66F,QAAQ,CAAC76F,MAAlC,EAA0C;AACxC;AACA66F,kBAAQ,CAACya,UAAT,CAAoBd,cAAc,CAAC5rH,CAAD,CAAlC;AACAiyG,kBAAQ,CAAC76F,MAAT,GAAkB8zG,UAAU,CAAClrH,CAAD,CAAV,CAAcoX,MAAhC;AACD;;AAED,YAAIg0G,UAAU,CAACh3G,SAAf,EAA0B;AACxB64G,eAAK,GAAGr+G,KAAK,CAACmW,GAAN,CAAU,oBAAV,CAAR;AACAmoG,eAAK,GAAGt+G,KAAK,CAACmW,GAAN,CAAU,oBAAV,CAAR;AACAktF,kBAAQ,CAAC4a,QAAT,CAAkBM,KAAlB,GAA0B/rH,IAAI,CAACE,GAAL,CAAS,CAACsN,KAAK,CAAC2uF,oBAAN,CAA2Bv9F,CAA3B,IAAgCitH,KAAjC,KAA2CC,KAAK,GAAGD,KAAnD,CAAT,EAAoE,CAApE,CAA1B;AACAhb,kBAAQ,CAAC4a,QAAT,CAAkBniH,QAAlB,CAA2BvJ,CAA3B,GAA+BA,CAA/B;AACA8wG,kBAAQ,CAAC4a,QAAT,CAAkBniH,QAAlB,CAA2BgM,CAA3B,GAA+BA,CAA/B;AACD;;AAED,YAAI9H,KAAK,CAACwb,UAAN,CAAiBhX,kBAArB,EAAyC;AACvC6+F,kBAAQ,CAACya,UAAT,CAAoBd,cAAc,CAAC5rH,CAAD,CAAlC;AACD;AACF;AACF,KA5EG;AA8EJurH,iBAAa,EAAEA,aA9EX;AAgFJI,kBAAc,EAAEA;AAhFZ,GAAN;AAmFAzkG,MAAI;AAEJ,SAAO1I,GAAP;AACD;AAAA,C;;CCrXD;;AACA,IAAI4uG,iBAAiB,GAAG;AACpBC,gBAAc,EAAE,GADI;AAEpBC,aAAW,EAAE,GAFO;AAGpBC,iBAAe,EAAE,GAHG;AAIpBC,OAAK,EAAE,GAJa;AAKpBC,gBAAc,EAAE,GALI;AAMpBC,cAAY,EAAE,GANM;AAOpBC,aAAW,EAAE,GAPO;AAQpBC,aAAW,EAAE,GARO;AASpBC,iBAAe,EAAE;AATG,CAAxB;AAAA,IAYE7C,gCAAiB,GAAG,CAAC,WAAD,EAAc,eAAd,EAA+B,oBAA/B,EAAqD,sBAArD,CAZtB;AAce,SAAS8C,aAAT,CAAuBvH,SAAvB,EAAkC33G,KAAlC,EAAyC6zG,aAAzC,EAAwDsL,aAAxD,EAAuE;AACpF;AACA,MAAIvvG,GAAJ;AAAA,MAEEgoG,IAFF;AAAA,MAGEC,OAHF;AAAA,MAKEuH,UALF;AAAA,MAME9C,UANF;AAAA,MAQE+C,QAAQ,GAAG,IAAI7O,cAAI,CAAC8O,QAAT,EARb;;AAUA,WAAShnG,IAAT,GAAgB;AACdtY,SAAK,CAACusB,qBAAN,CAA4B6vF,gCAA5B,EAA+C,YAAW;AACxDxsG,SAAG,CAACq7B,KAAJ,GADwD,CAExD;AACA;;AACA0sE,eAAS,CAAC5D,YAAV;AACD,KALD;AAMD;;AAED,WAASwL,YAAT,CAAsBpoG,CAAtB,EAAyB;AACvB,QAAIvM,EAAE,GAAGgtG,IAAI,CAACzgG,CAAC,CAACvM,EAAH,CAAb;AAAA,QACEC,EAAE,GAAGgtG,OAAO,CAAC1gG,CAAC,CAACtM,EAAH,CADd;AAAA,QAEEC,EAAE,GAAG8sG,IAAI,CAACzgG,CAAC,CAACrM,EAAH,CAFX;AAAA,QAGEC,EAAE,GAAG8sG,OAAO,CAAC1gG,CAAC,CAACpM,EAAH,CAHd;AAAA,QAIE4hC,EAAE,GAAG7hC,EAAE,GAAGF,EAJZ;AAAA,QAKEgiC,EAAE,GAAG7hC,EAAE,GAAGF,EALZ;AAAA,QAOExZ,MAAM,GAAGmB,IAAI,CAAC2O,IAAL,CAAUwrC,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,IAA+BgrE,IAAI,CAAC,IAAD,CAP9C;AAAA,QASE4H,QAAQ,GAAGhtH,IAAI,CAACwqC,KAAL,CAAW7lB,CAAC,CAAC9lB,MAAF,GAAW,EAAtB,CATb;AAAA,QAUEouH,cAAc,GAAGpuH,MAAM,GAAGmuH,QAV5B;AAAA,QAYEE,QAAQ,GAAG/yE,EAAE,GAAGt7C,MAZlB;AAAA,QAaEsuH,QAAQ,GAAG/yE,EAAE,GAAGv7C,MAblB;AAAA,QAcEuuH,gBAAgB,GAAGF,QAAQ,GAAGD,cAdhC;AAAA,QAeEI,gBAAgB,GAAGF,QAAQ,GAAGF,cAfhC;AAAA,QAgBEK,cAAc,GAAGJ,QAAQ,GAAGF,QAhB9B;AAAA,QAiBEO,cAAc,GAAGJ,QAAQ,GAAGH,QAjB9B;AAAA,QAkBEQ,MAlBF;AAAA,QAkBUC,MAlBV;AAAA,QAkBkB7uH,CAlBlB;AAoBAiuH,YAAQ,CAACa,SAAT,CAAmBC,YAAY,CAAChpG,CAAD,CAA/B,EAAoCipG,YAAY,CAACjpG,CAAD,EAAI,CAAJ,CAAhD,EAAwDkpG,cAAc,CAAClpG,CAAD,EAAI,CAAJ,CAAtE;AACAkoG,YAAQ,CAACiB,MAAT,CAAgB11G,EAAhB,EAAoBC,EAApB;;AACA,SAAKzZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGouH,QAAhB,EAA0BpuH,CAAC,EAA3B,EAA+B;AAC7B,UAAIA,CAAC,GAAG,CAAJ,KAAU,CAAd,EAAiB;AACf4uH,cAAM,GAAGp1G,EAAE,GAAG,CAACxZ,CAAC,GAAG,GAAL,IAAYwuH,gBAAjB,GAAoC,MAAMG,cAAnD;AACAE,cAAM,GAAGp1G,EAAE,GAAG,CAACzZ,CAAC,GAAG,GAAL,IAAYyuH,gBAAjB,GAAoC,MAAMC,cAAnD;AACD,OAHD,MAGO;AACLE,cAAM,GAAGp1G,EAAE,GAAG,CAACxZ,CAAC,GAAG,GAAL,IAAYwuH,gBAAjB,GAAoC,MAAMG,cAAnD;AACAE,cAAM,GAAGp1G,EAAE,GAAG,CAACzZ,CAAC,GAAG,GAAL,IAAYyuH,gBAAjB,GAAoC,MAAMC,cAAnD;AACD;;AACDT,cAAQ,CAACkB,MAAT,CAAgBP,MAAhB,EAAwBC,MAAxB;AACD;;AACDZ,YAAQ,CAACkB,MAAT,CAAgBz1G,EAAhB,EAAoBC,EAApB;AACD;;AAED,WAASy1G,UAAT,CAAoBrpG,CAApB,EAAuB;AACrB,QAAIvM,EAAE,GAAGgtG,IAAI,CAACzgG,CAAC,CAACvM,EAAH,CAAb;AAAA,QACEC,EAAE,GAAGgtG,OAAO,CAAC1gG,CAAC,CAACtM,EAAH,CADd;AAAA,QAEEC,EAAE,GAAG8sG,IAAI,CAACzgG,CAAC,CAACrM,EAAH,CAFX;AAAA,QAGEC,EAAE,GAAG8sG,OAAO,CAAC1gG,CAAC,CAACpM,EAAH,CAHd;AAAA,QAIEirC,EAAE,GAAG4hE,IAAI,CAAC0E,UAAU,CAACnlG,CAAC,CAAChM,KAAH,CAAV,CAAoBxC,MAArB,CAJX;AAAA,QAKEstC,EAAE,GAAG2hE,IAAI,CAAC0E,UAAU,CAACnlG,CAAC,CAAC/L,KAAH,CAAV,CAAoBzC,MAArB,CALX;AAAA,QAMEgkC,EAAE,GAAG7hC,EAAE,GAAGF,EANZ;AAAA,QAOEgiC,EAAE,GAAG7hC,EAAE,GAAGF,EAPZ;AAAA,QAQE3Y,GAAG,GAAGM,IAAI,CAAC2O,IAAL,CAAUwrC,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CARR,CADqB,CAWrB;AACA;;AACA,QAAI,IAAI16C,GAAJ,GAAU8jD,EAAV,GAAeC,EAAf,IAAqB,CAAzB,EAA4B;AAE5B,QAAIwqE,QAAQ,GAAG,OAAOvuH,GAAG,GAAG8jD,EAAN,GAAWC,EAAlB,IAAwB/jD,GAAvC;AAAA,QACEwuH,IAAI,GAAG91G,EAAE,GAAG61G,QAAQ,GAAG9zE,EADzB;AAAA,QAEEg0E,IAAI,GAAG91G,EAAE,GAAG41G,QAAQ,GAAG7zE,EAFzB;AAAA,QAIEg0E,SAAS,GAAGT,YAAY,CAAChpG,CAAD,CAJ1B;AAAA,QAKE0pG,UAAU,GAAGT,YAAY,CAACjpG,CAAD,EAAI,CAAJ,CAL3B;AAAA,QAME2pG,UAAU,GAAGV,YAAY,CAACjpG,CAAD,EAAI,CAAJ,CAN3B;AAAA,QAOE4pG,YAAY,GAAGV,cAAc,CAAClpG,CAAD,EAAI,CAAJ,CAP/B;AAAA,QAQE6pG,YAAY,GAAGX,cAAc,CAAClpG,CAAD,EAAI,CAAJ,CAR/B;AAAA,QASE8pG,SATF;AAAA,QASazgB,SATb;AAAA,QASwByT,EATxB;AAAA,QAS4BC,EAT5B;;AAWA,QAAI/8F,CAAC,CAAClf,IAAF,KAAWumH,iBAAiB,CAACO,WAAjC,EAA8C;AAC5CkC,eAAS,GAAGrJ,IAAI,CAACplH,IAAI,CAACE,GAAL,CAAS4pH,UAAU,CAACnlG,CAAC,CAAChM,KAAH,CAAV,CAAoBxC,MAA7B,EAAqC2zG,UAAU,CAACnlG,CAAC,CAAC/L,KAAH,CAAV,CAAoBzC,MAAzD,CAAD,CAAJ,GAAyE,GAArF;AACA63F,eAAS,GAAGhuG,IAAI,CAAC65C,KAAL,CAAWO,EAAX,EAAeD,EAAf,CAAZ;AACAsnE,QAAE,GAAGzhH,IAAI,CAAC6O,GAAL,CAASm/F,SAAT,IAAsBygB,SAA3B;AACA/M,QAAE,GAAG,CAAC1hH,IAAI,CAAC8O,GAAL,CAASk/F,SAAT,CAAD,GAAuBygB,SAA5B;AAEA5B,cAAQ,CAACa,SAAT,CAAmBU,SAAnB,EAA8BC,UAA9B,EAA0CE,YAA1C;AACA1B,cAAQ,CAACiB,MAAT,CAAgB11G,EAAE,GAAGqpG,EAArB,EAAyBppG,EAAE,GAAGqpG,EAA9B;AACAmL,cAAQ,CAACkB,MAAT,CAAgBG,IAAI,GAAGzM,EAAvB,EAA2B0M,IAAI,GAAGzM,EAAlC;AACAmL,cAAQ,CAACiB,MAAT,CAAgB11G,EAAE,GAAGqpG,EAArB,EAAyBppG,EAAE,GAAGqpG,EAA9B;AACAmL,cAAQ,CAACkB,MAAT,CAAgBG,IAAI,GAAGzM,EAAvB,EAA2B0M,IAAI,GAAGzM,EAAlC;AAEAmL,cAAQ,CAACa,SAAT,CAAmBU,SAAnB,EAA8BE,UAA9B,EAA0CE,YAA1C;AACA3B,cAAQ,CAACiB,MAAT,CAAgBI,IAAI,GAAGzM,EAAvB,EAA2B0M,IAAI,GAAGzM,EAAlC;AACAmL,cAAQ,CAACkB,MAAT,CAAgBz1G,EAAE,GAAGmpG,EAArB,EAAyBlpG,EAAE,GAAGmpG,EAA9B;AACAmL,cAAQ,CAACiB,MAAT,CAAgBI,IAAI,GAAGzM,EAAvB,EAA2B0M,IAAI,GAAGzM,EAAlC;AACAmL,cAAQ,CAACkB,MAAT,CAAgBz1G,EAAE,GAAGmpG,EAArB,EAAyBlpG,EAAE,GAAGmpG,EAA9B;AACD,KAjBD,MAiBO,IAAI/8F,CAAC,CAAClf,IAAF,KAAWumH,iBAAiB,CAACQ,WAAjC,EAA8C;AACnDiC,eAAS,GAAGrJ,IAAI,CAACplH,IAAI,CAACE,GAAL,CAAS4pH,UAAU,CAACnlG,CAAC,CAAChM,KAAH,CAAV,CAAoBxC,MAA7B,EAAqC2zG,UAAU,CAACnlG,CAAC,CAAC/L,KAAH,CAAV,CAAoBzC,MAAzD,CAAD,CAAJ,GAAyE,IAArF;AACA63F,eAAS,GAAGhuG,IAAI,CAAC65C,KAAL,CAAWO,EAAX,EAAeD,EAAf,CAAZ;AACAsnE,QAAE,GAAGzhH,IAAI,CAAC6O,GAAL,CAASm/F,SAAT,IAAsBygB,SAA3B;AACA/M,QAAE,GAAG,CAAC1hH,IAAI,CAAC8O,GAAL,CAASk/F,SAAT,CAAD,GAAuBygB,SAA5B;AAEA5B,cAAQ,CAACa,SAAT,CAAmBU,SAAnB,EAA8BC,UAA9B,EAA0CE,YAA1C;AACA1B,cAAQ,CAACiB,MAAT,CAAgB11G,EAAhB,EAAoBC,EAApB;AACAw0G,cAAQ,CAACkB,MAAT,CAAgBG,IAAhB,EAAsBC,IAAtB;AACAtB,cAAQ,CAACiB,MAAT,CAAgB11G,EAAE,GAAGqpG,EAArB,EAAyBppG,EAAE,GAAGqpG,EAA9B;AACAmL,cAAQ,CAACkB,MAAT,CAAgBG,IAAI,GAAGzM,EAAvB,EAA2B0M,IAAI,GAAGzM,EAAlC;AACAmL,cAAQ,CAACiB,MAAT,CAAgB11G,EAAE,GAAGqpG,EAArB,EAAyBppG,EAAE,GAAGqpG,EAA9B;AACAmL,cAAQ,CAACkB,MAAT,CAAgBG,IAAI,GAAGzM,EAAvB,EAA2B0M,IAAI,GAAGzM,EAAlC;AAEAmL,cAAQ,CAACa,SAAT,CAAmBU,SAAnB,EAA8BE,UAA9B,EAA0CE,YAA1C;AACA3B,cAAQ,CAACiB,MAAT,CAAgBI,IAAhB,EAAsBC,IAAtB;AACAtB,cAAQ,CAACkB,MAAT,CAAgBz1G,EAAhB,EAAoBC,EAApB;AACAs0G,cAAQ,CAACiB,MAAT,CAAgBI,IAAI,GAAGzM,EAAvB,EAA2B0M,IAAI,GAAGzM,EAAlC;AACAmL,cAAQ,CAACkB,MAAT,CAAgBz1G,EAAE,GAAGmpG,EAArB,EAAyBlpG,EAAE,GAAGmpG,EAA9B;AACAmL,cAAQ,CAACiB,MAAT,CAAgBI,IAAI,GAAGzM,EAAvB,EAA2B0M,IAAI,GAAGzM,EAAlC;AACAmL,cAAQ,CAACkB,MAAT,CAAgBz1G,EAAE,GAAGmpG,EAArB,EAAyBlpG,EAAE,GAAGmpG,EAA9B;AACD,KArBM,MAqBA,IAAI/8F,CAAC,CAAClf,IAAF,KAAWumH,iBAAiB,CAACI,KAAjC,EAAwC;AAC7C;AACA;AACAS,cAAQ,CAACa,SAAT,CAAmBU,SAAnB,EAA8BC,UAA9B,EAA0CE,YAA1C;AACA1B,cAAQ,CAACiB,MAAT,CAAgB11G,EAAhB,EAAoBC,EAApB;AACAw0G,cAAQ,CAACkB,MAAT,CAAgBG,IAAhB,EAAsBC,IAAtB;AAEAtB,cAAQ,CAACa,SAAT,CAAmBU,SAAnB,EAA8BE,UAA9B,EAA0CE,YAA1C;AACA3B,cAAQ,CAACiB,MAAT,CAAgBI,IAAhB,EAAsBC,IAAtB;AACAtB,cAAQ,CAACkB,MAAT,CAAgBz1G,EAAhB,EAAoBC,EAApB;AACD;AACF;;AAED,WAASq1G,YAAT,CAAsBjpG,CAAtB,EAAyBllB,GAAzB,EAA8B;AAC5B,QAAIklB,CAAC,CAAClf,IAAF,KAAWumH,iBAAiB,CAACM,YAAjC,EAA+C;AAC7C,aAAO,QAAP;AACD,KAFD,MAEO,IAAI3nG,CAAC,CAAClf,IAAF,KAAWumH,iBAAiB,CAACS,eAAjC,EAAkD;AACvD,aAAO,QAAP;AACD,KAFM,MAEA,IAAIhtH,GAAG,KAAK,CAAZ,EAAe;AACpB,aAAO2qC,QAAQ,CAACuiF,aAAa,CAACxC,aAAd,CAA4BxlG,CAAC,CAAChM,KAA9B,EAAqC,CAArC,EAAwC83C,MAAxC,CAA+C,CAA/C,CAAD,EAAoD,EAApD,CAAf;AACD,KAFM,MAEA,IAAIhxD,GAAG,KAAK,CAAZ,EAAe;AACpB,aAAO2qC,QAAQ,CAACuiF,aAAa,CAACxC,aAAd,CAA4BxlG,CAAC,CAAC/L,KAA9B,EAAqC,CAArC,EAAwC63C,MAAxC,CAA+C,CAA/C,CAAD,EAAoD,EAApD,CAAf;AACD;AACF;;AAED,WAASo9D,cAAT,CAAwBlpG,CAAxB,EAA2BllB,GAA3B,EAAgC;AAC9B,QAAIA,GAAG,KAAK,CAAZ,EAAe;AACb,aAAOktH,aAAa,CAACpC,cAAd,CAA6B5lG,CAAC,CAAChM,KAA/B,CAAP;AACD,KAFD,MAEO,IAAIlZ,GAAG,KAAK,CAAZ,EAAe;AACpB,aAAOktH,aAAa,CAACpC,cAAd,CAA6B5lG,CAAC,CAAC/L,KAA/B,CAAP;AACD;AACF;;AAED,WAAS+0G,YAAT,CAAsBe,IAAtB,EAA4B;AAC1B,QAAIA,IAAI,CAACjpH,IAAL,KAAcumH,iBAAiB,CAACM,YAApC,EAAkD;AAChD,aAAOlH,IAAI,CAAC,KAAD,CAAX,CADgD,CAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;;AACD,QAAIziH,MAAM,GAAGyiH,IAAI,CAACplH,IAAI,CAACE,GAAL,CAAS4pH,UAAU,CAAC4E,IAAI,CAAC/1G,KAAN,CAAV,CAAuBxC,MAAhC,EAAwC2zG,UAAU,CAAC4E,IAAI,CAAC91G,KAAN,CAAV,CAAuBzC,MAA/D,CAAD,CAAjB;;AACA,QAAIu4G,IAAI,CAACjpH,IAAL,KAAcumH,iBAAiB,CAACO,WAApC,EAAiD;AAC/C,aAAO5pH,MAAM,GAAG,IAAhB;AACD,KAFD,MAEO,IAAI+rH,IAAI,CAACjpH,IAAL,KAAcumH,iBAAiB,CAACQ,WAApC,EAAiD;AACtD,aAAO7pH,MAAM,GAAG,IAAhB;AACD,KAFM,MAEA;AAAE;AACP,aAAOA,MAAM,GAAG,IAAhB;AACD;AACF;;AAEDya,KAAG,GAAG;AACJq7B,SAAK,EAAE,iBAAW;AAChBm0E,gBAAU,GAAGp/G,KAAK,CAACqpG,cAAN,EAAb;AACAiT,gBAAU,GAAGt8G,KAAK,CAACopG,QAAN,EAAb;AAEAwO,UAAI,GAAGD,SAAS,CAACjG,YAAjB;AACAmG,aAAO,GAAGF,SAAS,CAAChG,eAApB;AAEA/hG,SAAG,CAACsG,MAAJ;AACD,KATG;AAWJ4rB,aAAS,EAAE,mBAASC,QAAT,EAAmB;AAC5B/hC,WAAK,GAAG+hC,QAAR;AAEAzpB,UAAI;AACL,KAfG;AAiBJpC,UAAM,EAAE,kBAAW;AACjB,UAAI9kB,CAAJ,EAAOc,GAAP,EAAYgvH,IAAZ;AAEA7B,cAAQ,CAACz+D,KAAT;;AACA,WAAKxvD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGktH,UAAU,CAAC/tH,MAA7B,EAAqCD,CAAC,GAAGc,GAAzC,EAA8C,EAAEd,CAAhD,EAAmD;AACjD8vH,YAAI,GAAG9B,UAAU,CAAChuH,CAAD,CAAjB;;AACA,YAAI8vH,IAAI,CAACjpH,IAAL,KAAcumH,iBAAiB,CAACM,YAApC,EAAkD;AAChDS,sBAAY,CAAC2B,IAAD,CAAZ;AACD,SAFD,MAEO;AACLV,oBAAU,CAACU,IAAD,CAAV;AACD;AACF;AACF;AA7BG,GAAN;AAgCA5oG,MAAI;AACJu7F,eAAa,CAACqB,QAAd,CAAuBmK,QAAvB;AAEA,SAAOzvG,GAAP;AACD;AAAA,C;;CCpOD;;AAEe,SAASuxG,eAAT,CAAyBtN,aAAzB,EAAwCzwF,MAAxC,EAAgD;AAC7D;AACA,MAAIxT,GAAJ,EAEEgoG,IAFF,EAGEC,OAHF,EAKE/6G,SALF,EAMEskH,WANF,EAQE;AACAx0D,MATF,EAUE;AACAv2C,OAXF,EAYE;AACAgrG,OAbF,EAaSC,KAbT,EAagBC,MAbhB,EAawBC,MAbxB,EAcE;AACAC,WAfF,EAeapwH,MAfb,EAeqBmL,KAfrB,EAe4BiL,KAf5B,EAemCi6G,OAfnC;;AAiBA,WAASC,WAAT,GAAuB;AACrBtrG,SAAK,GAAG+M,MAAM,CAAC/M,KAAf;AAEAgrG,SAAK,GAAGj+F,MAAM,CAAC7wB,CAAf;AACA+uH,SAAK,GAAGl+F,MAAM,CAACtb,CAAf;AACAy5G,UAAM,GAAGn+F,MAAM,CAACrb,EAAhB;AACAy5G,UAAM,GAAGp+F,MAAM,CAACpb,EAAhB;AACAy5G,aAAS,GAAGr+F,MAAM,CAACm7F,KAAnB;AAEA3xD,QAAI,GAAGxpC,MAAM,CAACwpC,IAAd;AACAv7D,UAAM,GAAG+xB,MAAM,CAAC/xB,MAAhB;AACAmL,SAAK,GAAG4mB,MAAM,CAAC5mB,KAAf;AACAiL,SAAK,GAAG2b,MAAM,CAAC3b,KAAf;AACAi6G,WAAO,GAAGt+F,MAAM,CAACs+F,OAAjB;AAEA9J,QAAI,GAAGx0F,MAAM,CAACw0F,IAAd;AACAC,WAAO,GAAGz0F,MAAM,CAACy0F,OAAjB;AACD;;AAED,WAAS+J,gBAAT,GAA4B;AAC1B,QAAIzE,IAAI,GAAG7jE,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAX;AAAA,QACEC,GAAG,GAAG2jE,IAAI,CAAC1jE,UAAL,CAAgB,IAAhB,CADR;AAEA0jE,QAAI,CAAC3gH,KAAL,GAAa,CAAb;AACA2gH,QAAI,CAAC1gH,MAAL,GAAc,CAAd;AACA+8C,OAAG,CAAC8B,SAAJ,GAAgB7zC,KAAhB;AACA+xC,OAAG,CAACqoE,QAAJ,CAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB;AAEA,WAAO,IAAIrR,cAAI,CAACmN,OAAL,CAAaC,UAAjB,CAA4BT,IAA5B,CAAP;AACD;;AAED,WAAS2E,yBAAT,GAAqC;AACnC,QAAI3E,IAAI,GAAG7jE,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAX;AAAA,QACEC,GAAG,GAAG2jE,IAAI,CAAC1jE,UAAL,CAAgB,IAAhB,CADR;AAAA,QAEE59C,GAAG,GAAG+7G,IAAI,CAAC,MAAMp7G,KAAP,CAFZ;AAGA2gH,QAAI,CAAC3gH,KAAL,GAAaX,GAAb;AACAshH,QAAI,CAAC1gH,MAAL,GAAcZ,GAAd;AACA29C,OAAG,CAAC8B,SAAJ,GAAgB7zC,KAAhB;AAEA+xC,OAAG,CAACuoE,SAAJ;AACAvoE,OAAG,CAAC8mE,MAAJ,CAAW,CAAX,EAAc,CAAd;AACA9mE,OAAG,CAAC+mE,MAAJ,CAAW1kH,GAAX,EAAgB,CAAhB;AACA29C,OAAG,CAAC+mE,MAAJ,CAAW1kH,GAAG,GAAG,GAAjB,EAAsBA,GAAtB;AACA29C,OAAG,CAACwoE,SAAJ;AACAxoE,OAAG,CAACppD,IAAJ;AAEA,WAAO,IAAIogH,cAAI,CAACmN,OAAL,CAAaC,UAAjB,CAA4BT,IAA5B,CAAP;AACD;;AAED,WAAS8E,YAAT,CAAsB7wH,CAAtB,EAAyB;AACvB,QAAI8wH,GAAG,GAAGd,WAAW,CAAChwH,CAAD,CAArB;AAAA,QACEmB,CAAC,GAAG8uH,KAAK,CAACjwH,CAAD,CADX;AAAA,QAEE0W,CAAC,GAAGw5G,KAAK,CAAClwH,CAAD,CAFX;AAAA,QAGE2W,EAAE,GAAGw5G,MAAM,CAACnwH,CAAD,CAAN,GAAYC,MAHnB;AAAA,QAIE2W,EAAE,GAAGw5G,MAAM,CAACpwH,CAAD,CAAN,GAAYC,MAJnB;AAAA,QAKEa,GAAG,GAAGM,IAAI,CAAC2O,IAAL,CAAU4G,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CALR;AAAA,QAMEm6G,GAAG,GAAG3vH,IAAI,CAAC0O,EAAL,GAAU1O,IAAI,CAAC65C,KAAL,CAAWtkC,EAAX,EAAeC,EAAf,CANlB;AAAA,QAOEo6G,SAAS,GAAGF,GAAG,CAACE,SAPlB;;AAQA,QAAIV,OAAJ,EAAa;AACX;AACA35G,QAAE,GAAG,OAAO1W,MAAP,GAAgB0W,EAAhB,GAAqB7V,GAA1B;AACA8V,QAAE,GAAG,OAAO3W,MAAP,GAAgB2W,EAAhB,GAAqB9V,GAA1B;AACAA,SAAG,GAAG,OAAOb,MAAb;AACD;;AACD,QAAIgxH,OAAO,GAAGzK,IAAI,CAAC1lH,GAAD,CAAlB;;AACA,QAAImwH,OAAO,GAAG,CAAd,EAAiB;AACf;AACAH,SAAG,CAAC3D,KAAJ,GAAY,CAAZ;AACA6D,eAAS,CAAC7D,KAAV,GAAkB,CAAlB;AACA;AACD,KALD,MAKO,IAAIkD,SAAJ,EAAe;AACpBS,SAAG,CAAC3D,KAAJ,GAAYkD,SAAS,CAACrwH,CAAD,CAArB;AACAgxH,eAAS,CAAC7D,KAAV,GAAkBkD,SAAS,CAACrwH,CAAD,CAA3B;AACD,KAHM,MAGA;AACL8wH,SAAG,CAAC3D,KAAJ,GAAY,CAAZ;AACA6D,eAAS,CAAC7D,KAAV,GAAkB,CAAlB;AACD;;AACD,QAAI8D,OAAO,GAAG,GAAd,EAAmB;AACjB;AACA,UAAI7iG,CAAC,GAAG6iG,OAAO,GAAG,GAAlB;AACAt6G,QAAE,IAAIyX,CAAN;AACAxX,QAAE,IAAIwX,CAAN;AACAttB,SAAG,IAAIstB,CAAP;AACA6iG,aAAO,IAAI7iG,CAAX;AACD,KAnCsB,CAoCvB;;;AACA0iG,OAAG,CAACpmH,QAAJ,CAAavJ,CAAb,GAAiBqlH,IAAI,CAACrlH,CAAD,CAArB;AACA2vH,OAAG,CAACpmH,QAAJ,CAAagM,CAAb,GAAiB+vG,OAAO,CAAC/vG,CAAD,CAAxB;AACAo6G,OAAG,CAAC/zG,KAAJ,CAAUrG,CAAV,GAAcu6G,OAAd;AACAH,OAAG,CAACh0G,QAAJ,GAAei0G,GAAf,CAxCuB,CAyCvB;;AACAC,aAAS,CAACtmH,QAAV,CAAmBvJ,CAAnB,GAAuBqlH,IAAI,CAACrlH,CAAC,GAAGwV,EAAL,CAA3B;AACAq6G,aAAS,CAACtmH,QAAV,CAAmBgM,CAAnB,GAAuB+vG,OAAO,CAAC/vG,CAAC,GAAGE,EAAL,CAA9B;AACAo6G,aAAS,CAACl0G,QAAV,GAAqBi0G,GAArB;AACD;;AAGDvyG,KAAG,GAAG;AACJq7B,SAAK,EAAE,iBAAW;AAChB02E,iBAAW;;AAEX,UAAI7kH,SAAJ,EAAe;AACb+2G,qBAAa,CAACqK,WAAd,CAA0BphH,SAA1B;AACAA,iBAAS,GAAG,IAAZ;AACD;;AACD,UAAI,CAAC8vD,IAAD,IAASv2C,KAAK,KAAK,CAAvB,EAA0B;AAE1BvZ,eAAS,GAAG,IAAI0zG,cAAI,CAACyE,sBAAT,EAAZ;AACApB,mBAAa,CAACqB,QAAd,CAAuBp4G,SAAvB;AAEA,UAAI1L,CAAJ,EAAO8wH,GAAP,EAAYE,SAAZ,EAAuBE,GAAvB;AAEAlB,iBAAW,GAAG,EAAd;AAEAkB,SAAG,GAAGV,gBAAgB,EAAtB;;AACA,WAAKxwH,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGilB,KAAhB,EAAuB,EAAEjlB,CAAzB,EAA4B;AAC1B8wH,WAAG,GAAG,IAAI1R,cAAI,CAAC2N,MAAT,CAAgBmE,GAAhB,CAAN;AACAJ,WAAG,CAAC/1G,MAAJ,CAAW5Z,CAAX,GAAe,GAAf;AACA2vH,WAAG,CAAC/zG,KAAJ,CAAU5b,CAAV,GAAcqlH,IAAI,CAACp7G,KAAD,CAAlB;AACA0lH,WAAG,CAAC9wH,CAAJ,GAAQA,CAAR;AACAgwH,mBAAW,CAACptH,IAAZ,CAAiBkuH,GAAjB;AACAplH,iBAAS,CAACo4G,QAAV,CAAmBgN,GAAnB;AACD;;AACDI,SAAG,GAAGR,yBAAyB,EAA/B;;AACA,WAAK1wH,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGilB,KAAhB,EAAuB,EAAEjlB,CAAzB,EAA4B;AAC1BgxH,iBAAS,GAAG,IAAI5R,cAAI,CAAC2N,MAAT,CAAgBmE,GAAhB,CAAZ;AACAF,iBAAS,CAACj2G,MAAV,CAAiB5Z,CAAjB,GAAqB,GAArB;AACA6uH,mBAAW,CAAChwH,CAAD,CAAX,CAAegxH,SAAf,GAA2BA,SAA3B;AACAtlH,iBAAS,CAACo4G,QAAV,CAAmBkN,SAAnB;AACD;;AAEDxyG,SAAG,CAACsG,MAAJ;AACD,KAnCG;AAqCJA,UAAM,EAAE,kBAAW;AACjB,UAAI,CAAC02C,IAAD,IAASv2C,KAAK,KAAK,CAAvB,EAA0B;;AAC1B,WAAK,IAAIjlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGilB,KAApB,EAA2B,EAAEjlB,CAA7B,EAAgC;AAC9B6wH,oBAAY,CAAC7wH,CAAD,CAAZ;AACD;AACF;AA1CG,GAAN;AA6CA,SAAOwe,GAAP;AACD;AAAA,C;;CCnKD;;AAEA,SAAS2yG,QAAT,CAAkBhwH,CAAlB,EAAqB;AACnB,SAAO,KAAK,IAAIC,IAAI,CAAC83E,GAAL,CAAS,CAAC/3E,CAAV,CAAT,CAAP;AACD;;AAEc,SAASiwH,aAAT,CAAuB3O,aAAvB,EAAsCzwF,MAAtC,EAA8C;AAE3D,MAAIxT,GAAJ,EAEE9S,SAFF,EAGE2lH,OAHF,EAKE7K,IALF,EAMEC,OANF,EAQE;AACAjrD,MATF,EAWE;AACAv2C,OAZF,EAcE;AACAgrG,OAfF,EAeSC,KAfT,EAegBC,MAfhB,EAewBC,MAfxB,EAiBE;AACAC,WAlBF,EAoBE;AACApwH,QArBF,EAuBE;AACAoW,OAxBF;;AA0BA,WAASk6G,WAAT,GAAuB;AACrBtrG,SAAK,GAAG+M,MAAM,CAAC/M,KAAf;AAEAgrG,SAAK,GAAGj+F,MAAM,CAAC7wB,CAAf;AACA+uH,SAAK,GAAGl+F,MAAM,CAACtb,CAAf;AACAy5G,UAAM,GAAGn+F,MAAM,CAACrb,EAAhB;AACAy5G,UAAM,GAAGp+F,MAAM,CAACpb,EAAhB;AACAy5G,aAAS,GAAGr+F,MAAM,CAACm7F,KAAnB;AAEA3xD,QAAI,GAAGxpC,MAAM,CAACwpC,IAAd;AACAv7D,UAAM,GAAG+xB,MAAM,CAAC/xB,MAAhB;AACAoW,SAAK,GAAG2b,MAAM,CAAC3b,KAAf;AAEAmwG,QAAI,GAAGx0F,MAAM,CAACw0F,IAAd;AACAC,WAAO,GAAGz0F,MAAM,CAACy0F,OAAjB;AACD;;AAED,WAAS6K,UAAT,GAAsB;AACpB,QAAIvF,IAAI,GAAG7jE,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAX;AACA,QAAIC,GAAG,GAAG2jE,IAAI,CAAC1jE,UAAL,CAAgB,IAAhB,CAAV,CAFoB,CAIpB;AACA;;AACA,QAAIkpE,YAAY,GAAG,IAAI,CAAvB;AACA,QAAIC,YAAY,GAAG,IAAI,CAAvB;AACA,QAAIC,oBAAoB,GAAG,EAA3B;AACA,QAAIC,qBAAqB,GAAG,EAA5B;AAEA,QAAIr6B,CAAC,GAAGmvB,IAAI,CAACvmH,MAAD,CAAZ;AACA,QAAIkB,CAAC,GAAG,CAACk2F,CAAC,GAAGo6B,oBAAL,KAA8BC,qBAAqB,GAAGD,oBAAtD,CAAR;AACA,QAAIE,QAAQ,GAAGJ,YAAY,GAAGJ,QAAQ,CAAC,CAAC,CAAD,IAAMhwH,CAAC,GAAG,GAAV,CAAD,CAAR,IAA4BqwH,YAAY,GAAGD,YAA3C,CAA9B;AACA,QAAIljG,CAAC,GAAGgpE,CAAC,GAAGs6B,QAAZ;AAEA5F,QAAI,CAAC1gH,MAAL,GAAcgsF,CAAd;AACA00B,QAAI,CAAC3gH,KAAL,GAAaijB,CAAb;AAEA+5B,OAAG,CAACuoE,SAAJ;AACAvoE,OAAG,CAAC8mE,MAAJ,CAAW,CAAX,EAAc,CAAd;AACA9mE,OAAG,CAAC+mE,MAAJ,CAAW9gG,CAAC,GAAG,GAAf,EAAoBgpE,CAApB;AACAjvC,OAAG,CAAC+mE,MAAJ,CAAW9gG,CAAX,EAAc,CAAd;AACA+5B,OAAG,CAAC8B,SAAJ,GAAgB7zC,KAAhB;AACA+xC,OAAG,CAACppD,IAAJ;AAEA,WAAO,IAAIogH,cAAI,CAACmN,OAAL,CAAaC,UAAjB,CAA4BT,IAA5B,CAAP;AACD;;AAED,WAAS6F,YAAT,CAAsB5xH,CAAtB,EAAyB;AACvB,QAAI6xH,MAAM,GAAGR,OAAO,CAACrxH,CAAD,CAApB;AACA,QAAImB,CAAC,GAAG8uH,KAAK,CAACjwH,CAAD,CAAb;AACA,QAAI0W,CAAC,GAAGw5G,KAAK,CAAClwH,CAAD,CAAb;AAEA6xH,UAAM,CAACnnH,QAAP,CAAgBvJ,CAAhB,GAAoBqlH,IAAI,CAACrlH,CAAD,CAAxB;AACA0wH,UAAM,CAACnnH,QAAP,CAAgBgM,CAAhB,GAAoB+vG,OAAO,CAAC/vG,CAAD,CAA3B;AACAm7G,UAAM,CAAC/0G,QAAP,GAAkB1b,IAAI,CAAC0O,EAAL,GAAU1O,IAAI,CAAC65C,KAAL,CAAWk1E,MAAM,CAACnwH,CAAD,CAAjB,EAAsBowH,MAAM,CAACpwH,CAAD,CAA5B,CAA5B;AACA6xH,UAAM,CAAC1E,KAAP,GAAekD,SAAS,CAACrwH,CAAD,CAAxB;AACD;;AAGDwe,KAAG,GAAG;AACJq7B,SAAK,EAAE,iBAAW;AAChB,UAAI75C,CAAJ,EAAO6xH,MAAP,EAAeC,OAAf;AAEAvB,iBAAW;;AAEX,UAAI7kH,SAAJ,EAAe;AACb+2G,qBAAa,CAACqK,WAAd,CAA0BphH,SAA1B;AACAA,iBAAS,GAAG,IAAZ;AACD;;AACD,UAAI,CAAC8vD,IAAD,IAASv2C,KAAK,KAAK,CAAvB,EAA0B;AAE1BvZ,eAAS,GAAG,IAAI0zG,cAAI,CAACyE,sBAAT,EAAZ;AACApB,mBAAa,CAACqB,QAAd,CAAuBp4G,SAAvB;AAEA2lH,aAAO,GAAG,EAAV;AAEAS,aAAO,GAAGR,UAAU,EAApB;;AACA,WAAKtxH,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGilB,KAAhB,EAAuB,EAAEjlB,CAAzB,EAA4B;AAC1B6xH,cAAM,GAAG,IAAIzS,cAAI,CAAC2N,MAAT,CAAgB+E,OAAhB,CAAT,CAD0B,CAE1B;;AACAD,cAAM,CAAC92G,MAAP,CAAc5Z,CAAd,GAAkB,GAAlB;AACA0wH,cAAM,CAAC92G,MAAP,CAAcrE,CAAd,GAAkB,GAAlB;AACAm7G,cAAM,CAAC7xH,CAAP,GAAWA,CAAX;AACAqxH,eAAO,CAACzuH,IAAR,CAAaivH,MAAb;AACAnmH,iBAAS,CAACo4G,QAAV,CAAmB+N,MAAnB;AACD;;AAEDrzG,SAAG,CAACsG,MAAJ;AACD,KA7BG;AA+BJA,UAAM,EAAE,kBAAW;AACjB,UAAI,CAAC02C,IAAD,IAASv2C,KAAK,KAAK,CAAvB,EAA0B;;AAC1B,WAAK,IAAIjlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGilB,KAApB,EAA2B,EAAEjlB,CAA7B,EAAgC;AAC9B4xH,oBAAY,CAAC5xH,CAAD,CAAZ;AACD;AACF;AApCG,GAAN;AAuCA,SAAOwe,GAAP;AACD;AAAA,C;;ACtID;AAGA,IAAIuzG,kBAAkB,GAAG,CAAzB;AAEe,SAASC,gBAAT,CAA0BzL,SAA1B,EAAqC33G,KAArC,EAA4C6zG,aAA5C,EAA2D;AAExE;AACA,MAAI/2G,SAAJ,CAHwE,CAKxE;;AACA,MAAIomH,OAAJ,CANwE,CAQxE;;AACA,MAAIG,WAAJ,CATwE,CAWxE;;AACA,MAAIC,SAAJ,CAZwE,CAcxE;;AACA,MAAIb,OAAO,GAAG,EAAd;AAEA;;;;;;;;AAOA,WAASc,cAAT,CAAwBF,WAAxB,EAAqC;AACnC,QAAIhqE,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAb;AACA,QAAIC,GAAG,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAV;AAEA,QAAI+pE,SAAS,GAAG7L,SAAS,CAACjG,YAAV,CAAuB,IAAvB,CAAhB;AACA,QAAI+R,aAAa,GAAG9L,SAAS,CAACjG,YAAV,CAAuB,IAAvB,CAApB;AACA,QAAIgS,UAAU,GAAGL,WAAW,GAAG,CAA/B;AAEAC,aAAS,GAAGH,kBAAkB,IAAIM,aAAa,GAAGD,SAApB,CAAlB,GAAmDC,aAA/D;AAEApqE,UAAM,CAAC78C,KAAP,GAAe8mH,SAAf;AACAjqE,UAAM,CAAC58C,MAAP,GAAgB4mH,WAAhB;AACA7pE,OAAG,CAACmqE,WAAJ,GAAkB,MAAlB;AACAnqE,OAAG,CAAC53B,SAAJ,GAAgByhG,WAAhB;AAEA,QAAI9wH,CAAC,GAAG,CAAR;;AACA,SAAK,IAAInB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+xH,kBAApB,EAAwC/xH,CAAC,EAAzC,EAA6C;AAC3CooD,SAAG,CAAC8mE,MAAJ,CAAW/tH,CAAX,EAAcmxH,UAAd;AACAlqE,SAAG,CAAC+mE,MAAJ,CAAWhuH,CAAC,GAAGkxH,aAAf,EAA8BC,UAA9B;AACAlqE,SAAG,CAACi5D,MAAJ;AACAlgH,OAAC,IAAIkxH,aAAa,GAAGD,SAArB;AACD;;AAED,WAAOhT,cAAI,CAACmN,OAAL,CAAaC,UAAb,CAAwBvkE,MAAxB,CAAP;AACD;;AAED,WAASuqE,yBAAT,GAAqC;AACnC,QAAI9mH,SAAJ,EAAe;AACb+2G,mBAAa,CAACqK,WAAd,CAA0BphH,SAA1B;AACAA,eAAS,GAAG,IAAZ;AACD;;AACD2lH,WAAO,GAAG,EAAV;AACD;;AAED,WAASoB,yBAAT,GAAqC;AACnC/mH,aAAS,GAAG,IAAI0zG,cAAI,CAACyE,sBAAT,EAAZ;AACApB,iBAAa,CAACqB,QAAd,CAAuBp4G,SAAvB;AACA2lH,WAAO,GAAG,EAAV;AACD;AAED;;;;;;AAIA,WAASx3E,KAAT,GAAiB;AACf,QAAI64E,cAAJ;;AAEA,QAAI,CAAC9jH,KAAK,CAACwb,UAAN,CAAiBvV,YAAtB,EAAoC;AAClC29G,+BAAyB;AACzB;AACD,KANc,CAQf;AACA;AACA;;;AACAE,kBAAc,GAAGnM,SAAS,CAACjG,YAAV,CAAuB,IAAvB,CAAjB;;AACA,QAAIoS,cAAc,KAAKT,WAAvB,EAAoC;AAClCA,iBAAW,GAAGS,cAAd;AAEAZ,aAAO,GAAGK,cAAc,CAACF,WAAD,CAAxB;AACAO,+BAAyB;AACzBC,+BAAyB;AAC1B;;AAED,QAAI,CAAC/mH,SAAL,EAAgB;AACd+mH,+BAAyB;AAC1B;;AAED3tG,UAAM;AACP;AAED;;;;;;;;;AAQA,WAASA,MAAT,GAAkB;AAEhB,QAAI,CAAClW,KAAK,CAACwb,UAAN,CAAiBvV,YAAtB,EAAoC;AAClC;AACD;;AAED,QAAI8wE,QAAQ,GAAG/2E,KAAK,CAAC8pG,aAAN,EAAf;AACA,QAAI95D,KAAK,GAAGhwC,KAAK,CAACopG,QAAN,EAAZ;AACA,QAAIh4G,CAAJ;AACA,QAAI+Z,KAAJ,EAAWC,KAAX;AACA,QAAIuhC,EAAJ,EAAQC,EAAR;AACA,QAAIhiC,EAAJ,EAAQC,EAAR,EAAYC,EAAZ,EAAgBC,EAAhB;;AAEA,SAAK3Z,CAAC,GAAGqxH,OAAO,CAACpxH,MAAjB,EAAyBD,CAAC,GAAG2lF,QAAQ,CAAC1gE,KAAtC,EAA6CjlB,CAAC,EAA9C,EAAkD;AAChDqxH,aAAO,CAACrxH,CAAD,CAAP,GAAa,IAAIo/G,cAAI,CAAC2N,MAAT,CAAgB+E,OAAhB,CAAb;AACAT,aAAO,CAACrxH,CAAD,CAAP,CAAW+a,MAAX,CAAkBrE,CAAlB,GAAsB,GAAtB;AACAhL,eAAS,CAACo4G,QAAV,CAAmBuN,OAAO,CAACrxH,CAAD,CAA1B;AACD;;AAED,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2lF,QAAQ,CAAC1gE,KAAzB,EAAgCjlB,CAAC,EAAjC,EAAqC;AACnC+Z,WAAK,GAAG6kC,KAAK,CAAC+mC,QAAQ,CAAC5rE,KAAT,CAAe/Z,CAAf,CAAD,CAAb;AACAga,WAAK,GAAG4kC,KAAK,CAAC+mC,QAAQ,CAAC3rE,KAAT,CAAeha,CAAf,CAAD,CAAb;AAEAwZ,QAAE,GAAG+sG,SAAS,CAACjG,YAAV,CAAuBvmG,KAAK,CAAC5Y,CAA7B,CAAL;AACAsY,QAAE,GAAG8sG,SAAS,CAAChG,eAAV,CAA0BxmG,KAAK,CAACrD,CAAhC,CAAL;AACAgD,QAAE,GAAG6sG,SAAS,CAACjG,YAAV,CAAuBtmG,KAAK,CAAC7Y,CAA7B,CAAL;AACAwY,QAAE,GAAG4sG,SAAS,CAAChG,eAAV,CAA0BvmG,KAAK,CAACtD,CAAhC,CAAL;AAEA6kC,QAAE,GAAG7hC,EAAE,GAAGF,EAAV;AACAgiC,QAAE,GAAG7hC,EAAE,GAAGF,EAAV;AAEA43G,aAAO,CAACrxH,CAAD,CAAP,CAAWkX,OAAX,GAAqB,IAArB,CAZmC,CAanC;;AACAm6G,aAAO,CAACrxH,CAAD,CAAP,CAAW+c,KAAX,CAAiB5b,CAAjB,GAAqBC,IAAI,CAACg+C,IAAL,CAAUh+C,IAAI,CAAC2O,IAAL,CAAUwrC,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAAV,IAA0C02E,SAA/D,CAdmC,CAenC;AACA;AACA;;AACAb,aAAO,CAACrxH,CAAD,CAAP,CAAW0K,QAAX,CAAoBvJ,CAApB,GAAwBqY,EAAxB;AACA63G,aAAO,CAACrxH,CAAD,CAAP,CAAW0K,QAAX,CAAoBgM,CAApB,GAAwB+C,EAAxB;AACA43G,aAAO,CAACrxH,CAAD,CAAP,CAAW8c,QAAX,GAAsB1b,IAAI,CAAC65C,KAAL,CAAWO,EAAX,EAAeD,EAAf,CAAtB;AACD,KAxCe,CA0ChB;;;AACA,WAAOv7C,CAAC,GAAGqxH,OAAO,CAACpxH,MAAnB,EAA2BD,CAAC,EAA5B,EAAgC;AAC9BqxH,aAAO,CAACrxH,CAAD,CAAP,CAAWkX,OAAX,GAAqB,KAArB;AACD;AACF;;AAED,WAASw5B,SAAT,CAAmBla,MAAnB,EAA2B;AACzB5nB,SAAK,GAAG4nB,MAAR;AACD;;AAED,SAAO;AACLqjB,SAAK,EAAEA,KADF;AAEL/0B,UAAM,EAAEA,MAFH;AAGL4rB,aAAS,EAAEA;AAHN,GAAP;AAKD;AAAA,C;;ACrKD;AAEe;AACb,aAAW;AACT,SAAK;;;;;;0FADI;AAQT,SAAK;;;;;;;;6CARI;AAiBT,SAAK;;;;;iIAjBI;AAuBT,SAAK;;;;;;;;kDAvBI;AAgCT,SAAK;;;;;;;;;AAhCI,GADE;AA2Cb,cAAY;AACV,SAAK;;;0GADK;AAKV,SAAK;;;kDALK;AASV,SAAK;;;sDATK;AAaV,SAAK;;;;8HAbK;AAkBV,SAAK;;;;;AAlBK,GA3CC;AAmEb,YAAU;AACR,SAAK;AACH,WAAK;wDADF;AAGH,WAAK;;AAHF,KADG;AAOR,SAAK;AACH,WAAK;;;;uIADF;AAMH,WAAK;;;;;;AANF,KAPG;AAoBR,SAAK;AACH,WAAK;;;;wHADF;AAMH,WAAK;;;;;AANF,KApBG;AAgCR,SAAK;AACH,WAAK;mCADF;AAGH,WAAK;;AAHF,KAhCG;AAsCR,SAAK;AACH,WAAK;;4IADF;AAIH,WAAK;;;AAJF;AAtCG;AAnEG,CAAf,E;;ACDA;AACA;AACA,IAAIiiF,KAAK,GAAG,KAAZ;AAAA,IACEC,CAAC,GAAG;AACF,WAAS,EADP;AAEF,OAAK,MAFH;AAGF,OAAK,IAHH;AAIF,OAAK,IAJH;AAKF,OAAK,MALH;AAMF,OAAK,MANH;AAOF,YAAU,MAPR;AAQF,YAAU,IARR;AASF,YAAU,IATR;AAUF,YAAU;AAVR,CADN;AAAA,IAaEC,CAAC,GAAG;AACF,WAAS,EADP;AAEF,OAAK,KAFH;AAGF,OAAK,IAHH;AAIF,OAAK,IAJH;AAKF,OAAK,MALH;AAMF,OAAK,MANH;AAOF,YAAU,KAPR;AAQF,YAAU,MARR;AASF,YAAU,IATR;AAUF,YAAU;AAVR,CAbN;;AA0BC,aAAW;AACV,MAAIjsH,IAAJ;;AACA,OAAKA,IAAL,IAAagsH,CAAb,EAAgB;AACd,QAAIA,CAAC,CAACrvH,cAAF,CAAiBqD,IAAjB,CAAJ,EAA4B;AAC1BgsH,OAAC,CAAChsH,IAAD,CAAD,IAAW+rH,KAAX;AACD;AACF;;AACD,OAAK/rH,IAAL,IAAaisH,CAAb,EAAgB;AACd,QAAIA,CAAC,CAACtvH,cAAF,CAAiBqD,IAAjB,CAAJ,EAA4B;AAC1BisH,OAAC,CAACjsH,IAAD,CAAD,IAAW+rH,KAAX;AACD;AACF;AACF,CAZA,GAAD;;AAcA,SAASG,WAAT,GAAuB;AACrB,MAAItM,IAAI,GAAG,IAAX;AAAA,MACEnkB,QAAQ,GAAG,EADb;AAAA,MAEEvyD,SAAS,GAAG,CAFd;AAAA,MAGEijF,KAAK,GAAG,CAHV;AAAA,MAIEC,QAAQ,GAAG,KAJb;AAAA,MAIoB;AAClBlxB,gBAAc,GAAG,IALnB;AAAA,MAMEmxB,WAAW,GAAG,IANhB;AAAA,MAOEC,IAAI,GAAG,KAPT;AAAA,MAQEC,aAAa,GAAG,KARlB;AAAA,MAUE7sB,MAAM,GAAG,CAVX;AAAA,MAWE8sB,MAAM,GAAG,CAXX;;AAaA,WAAS3tG,KAAT,CAAesF,OAAf,EAAwB;AACtB,QAAIxE,CAAJ,EAAO/W,CAAP;;AACA,QAAIub,OAAJ,EAAa;AACX;AACA;AACA;AACA;AACA;AACAxE,OAAC,GAAGnlB,IAAI,CAACyO,MAAL,MAAiB,GAAjB,GAAuBzO,IAAI,CAAC0O,EAAL,GAAU,IAAjC,GAAwC1O,IAAI,CAAC0O,EAAL,GAAU,IAAtD;AACAyW,OAAC,IAAInlB,IAAI,CAACyO,MAAL,KAAgBzO,IAAI,CAAC0O,EAArB,GAA0B,GAA/B;AACAN,OAAC,GAAGsjH,WAAW,CAACO,MAAZ,GAAqB,CAAzB;AACA/sB,YAAM,GAAG92F,CAAC,GAAGpO,IAAI,CAAC8O,GAAL,CAASqW,CAAT,CAAb;AACA6sG,YAAM,GAAG5jH,CAAC,GAAGpO,IAAI,CAAC6O,GAAL,CAASsW,CAAT,CAAb;AACD,KAXD,MAWO;AACL+/E,YAAM,GAAG8sB,MAAM,GAAG,CAAlB;AACD;AACF;;AAED,WAASxK,SAAT,CAAmB7iG,CAAnB,EAAsB;AACpB,WAAO,eAAeygG,IAAI,CAAClgB,MAAM,GAAGwsB,WAAW,CAACQ,KAAZ,GAAqBvtG,CAAC,CAACrjB,GAAjC,CAAnB,GAA4D,GAA5D,GAAkE8jH,IAAI,CAAC4M,MAAD,CAAtE,GAAiF,GAAxF;AACD;;AAED,WAAS9wB,MAAT,CAAgBl8E,CAAhB,EAAmB;AACjBA,KAAC,CAACvG,IAAF,CAAO,UAASkG,CAAT,EAAY/lB,CAAZ,EAAe;AACpB,UAAIomB,CAAC,GAAG9D,EAAE,CAACM,MAAH,CAAU,IAAV,CAAR;AAAA,UAEEstF,OAAO,GAAG8iB,QAAQ,GAAG,MAAMH,CAAC,CAACU,KAAX,GAAmB,CAFvC;AAAA,UAGEC,MAAM,GAAGhN,IAAI,CAACtW,OAAO,GAAG,MAAM2iB,CAAC,CAACY,CAAnB,CAHf;AAAA,UAIExtB,IAAI,GAAGugB,IAAI,CAACtW,OAAO,GAAG2iB,CAAC,CAACY,CAAF,GAAM,IAAjB,CAJb;AAAA,UAMElyB,GAAG,GAAG,OAAOc,QAAP,KAAoB,UAApB,GAAiCA,QAAQ,CAACt8E,CAAD,EAAI/lB,CAAJ,CAAzC,GAAkDqiG,QAN1D;AAAA,UAQEC,MARF;AAAA,UAQUoxB,WARV;AAAA,UAQuBC,UARvB;AAAA,UAQmCC,YARnC;AAAA,UAQiDC,aARjD;AAAA,UASEC,WATF;AAAA,UASeC,SATf;AAAA,UAS0BC,eAT1B;AAAA,UAS2CC,WAT3C;AAAA,UASwDC,WATxD;;AAWA,UAAI,OAAO3yB,GAAP,KAAe,QAAnB,EAA6B;AAC3B;AACA;AACAA,WAAG,GAAGA,GAAG,CAAClzF,KAAJ,CAAU,EAAV,CAAN;AACAkzF,WAAG,CAACplF,OAAJ,CAAY,UAAS1T,GAAT,EAAczI,CAAd,EAAiB;AAC3BuhG,aAAG,CAACvhG,CAAD,CAAH,GAAS;AACP2L,cAAE,EAAE3L,CADG;AAEP0C,eAAG,EAAE1C,CAFE;AAGP6G,gBAAI,EAAE4B;AAHC,WAAT;AAKD,SAND;AAOD,OAvBmB,CAyBpB;;;AACA65F,YAAM,GAAGl8E,CAAC,CAAC/B,SAAF,CAAY,aAAZ,EAA2BsB,IAA3B,CAAgC47E,GAAhC,EAAqC,UAASx7E,CAAT,EAAY;AACxD,eAAOA,CAAC,CAACpa,EAAT;AACD,OAFQ,CAAT;AAGA+nH,iBAAW,GAAGpxB,MAAM,CAACz8E,KAAP,EAAd;AACA8tG,gBAAU,GAAGrxB,MAAM,CAACx8E,IAAP,EAAb,CA9BoB,CAgCpB;AACA;;AACAL,WAAK,CAACwtG,WAAD,CAAL;AACAS,iBAAW,GAAGA,WAAW,CAAC7mH,MAAZ,CAAmB,GAAnB,EAAwBwS,IAAxB,CAA6B;AACzC,qBAAaupG;AAD4B,OAA7B,EAEXj7F,KAFW,CAEL;AACP,mBAAWslG,WAAW,GAAG,CAAH,GAAO;AADtB,OAFK,CAAd,CAnCoB,CAwCpB;;AACAW,kBAAY,GAAGF,WAAW,CAAC7mH,MAAZ,CAAmB,GAAnB,EAAwBwS,IAAxB,CAA6B;AAC1C,iBAAS,OADiC;AAE1C,qBAAa,eAAeywB,SAAS,KAAK,CAAd,GAAkB,CAAlB,GAAsB,CAAC,CAAtC,IAA2C;AAFd,OAA7B,CAAf,CAzCoB,CA6CpB;;AACA8jF,kBAAY,CAAC/mH,MAAb,CAAoB,MAApB,EAA4BwS,IAA5B,CAAiC,OAAjC,EAA0C,OAA1C,EACGsO,KADH,CACS;AACL,wBAAgB64F,IAAI,CAAC,IAAD,CADf;AAEL,kBAAU;AAFL,OADT,EA9CoB,CAmDpB;;AACAsN,iBAAW,GAAGF,YAAY,CAAC/mH,MAAb,CAAoB,GAApB,EACX8X,OADW,CACH,cADG,EACa,IADb,EAEXA,OAFW,CAEH,kBAFG,EAEiB,UAASoB,CAAT,EAAY;AACvC,eAAOA,CAAC,CAAC68E,MAAF,KAAa,GAAb,IAAoBswB,IAA3B;AACD,OAJW,EAIT51G,EAJS,CAIN,OAJM,EAIG,YAAW,CACxB;AACA;AACA;AACA;AACA;AACD,OAVW,CAAd,CApDoB,CA+DpB;;AACA,UAAI41G,IAAJ,EAAU;AACRY,mBAAW,CAACjnH,MAAZ,CAAmB,OAAnB,EAA4BwS,IAA5B,CAAiC;AAC/B,mBAAS,MADsB;AAE/B,eAAKmnG,IAAI,CAACtW,OAAO,GAAG,OAAO0iB,CAAC,CAACuB,MAApB,CAFsB;AAEO;AACtC,iCAAuB;AAHQ,SAAjC;AAKD,OAtEmB,CAuEpB;;;AACAJ,eAAS,GAAGD,WAAW,CAACjnH,MAAZ,CAAmB,KAAnB,EAA0BwS,IAA1B,CAA+B;AACzC,aAAKmnG,IAAI,CAACtW,OAAD,CADgC;AAEzC,+BAAuB;AAFkB,OAA/B,CAAZ;AAIA6jB,eAAS,CAAClnH,MAAV,CAAiB,MAAjB,EAAyBwS,IAAzB,CAA8B;AAC5B,iBAAS,SADmB;AAE5B,qBAAa,SAFe;AAG5B,qBAAa;AAHe,OAA9B;AAKA00G,eAAS,CAAClnH,MAAV,CAAiB,MAAjB,EAAyBwS,IAAzB,CAA8B;AAC5B,iBAAS,UADmB;AAE5B,qBAAa,SAFe;AAG5B,qBAAa;AAHe,OAA9B;AAKA00G,eAAS,CAAClnH,MAAV,CAAiB,MAAjB,EAAyBwS,IAAzB,CAA8B;AAC5B,iBAAS,QADmB;AAE5B,qBAAa,SAFe;AAG5B,qBAAa,SAHe;AAI5B,aAAK,WAAS0G,EAAT,EAAY;AACf,iBAAOquG,gBAAe,CAACC,MAAhB,CAAuBtuG,EAAC,CAAClf,IAAzB,EAA+BipC,SAA/B,CAAP;AACD;AAN2B,OAA9B,EAtFoB,CA8FpB;;AACA,UAAIkjF,QAAJ,EAAc;AACZa,qBAAa,GAAGD,YAAY,CAAC/mH,MAAb,CAAoB,OAApB,EAA6BwS,IAA7B,CAAkC;AAChD,mBAAS,UADuC;AAEhD,eAAK,CAF2C;AAGhD,eAAK,CAH2C;AAIhD,mBAASmnG,IAAI,CAACoM,CAAC,CAACW,KAAH,CAJmC;AAKhD,oBAAU/M,IAAI,CAACqM,CAAC,CAACU,KAAH,CALkC;AAMhD,iCAAuB,MANyB;AAOhD,wBAAcrgG,aAAY,CAAC,kBAAkB8/F,QAAlB,GAA6B,MAA9B;AAPsB,SAAlC,CAAhB;AASD,OAzGmB,CA2GpB;;;AACA,UAAIG,aAAJ,EAAmB;AACjB;AACA;AACA;AACA;AACA7wB,cAAM,GAAGoxB,WAAT;AACD,OAlHmB,CAoHpB;;;AACApxB,YAAM,CAACjjF,IAAP,CAAY,OAAZ,EAAqB,UAAS0G,CAAT,EAAY;AAC/B,YAAIuuG,WAAW,GAAG,EAAlB;;AACA,gBAAQvuG,CAAC,CAAC68E,MAAV;AACE,eAAK,GAAL;AACE0xB,uBAAW,GAAG,eAAd;AACA;;AACF,eAAK,GAAL;AACEA,uBAAW,GAAG,aAAd;AACA;;AACF,eAAK,GAAL;AACEA,uBAAW,GAAG,iBAAd;AACA;;AACF,eAAK,GAAL;AACEA,uBAAW,GAAG,mBAAd;AACA;AAZJ;;AAcA,eAAO,gBAAgBA,WAAvB;AACD,OAjBD;AAkBAhyB,YAAM,CAAC1/E,MAAP,CAAc,QAAd,EAAwBvD,IAAxB,CAA6B,GAA7B,EAAkC,UAAS0G,CAAT,EAAY;AAC5C,YAAIA,CAAC,CAAClf,IAAF,KAAW,GAAX,IAAkBkf,CAAC,CAAClf,IAAF,KAAW,GAAjC,EAAsC;AACpC,iBAAO,MAAM2/G,IAAI,CAACmM,KAAK,GAAG,EAAT,CAAV,GAAyB,GAAzB,GAA+Ba,MAA/B,GAAwC,KAAxC,GAAgDhN,IAAI,CAACmM,KAAK,GAAG,EAAT,CAApD,GAAmE,GAAnE,GAAyE1sB,IAAzE,GACL,GADK,GACCugB,IAAI,CAACmM,KAAK,GAAG,EAAT,CADL,GACoB,GADpB,GAC0Ba,MAD1B,GACmC,KADnC,GAC2ChN,IAAI,CAACmM,KAAK,GAAG,EAAT,CAD/C,GAC8D,GAD9D,GACoE1sB,IADpE,GAEL,GAFK,GAECugB,IAAI,CAACmM,KAAK,GAAG,EAAT,CAFL,GAEoB,GAFpB,GAE0Ba,MAF1B,GAEmC,KAFnC,GAE2ChN,IAAI,CAACmM,KAAK,GAAG,EAAT,CAF/C,GAE8D,GAF9D,GAEoE1sB,IAF3E;AAGD,SAJD,MAIO;AACL,iBAAO,MAAMugB,IAAI,CAACmM,KAAK,GAAG,EAAT,CAAV,GAAyB,GAAzB,GAA+Ba,MAA/B,GAAwC,KAAxC,GAAgDhN,IAAI,CAACmM,KAAK,GAAG,EAAT,CAApD,GAAmE,GAAnE,GAAyE1sB,IAAzE,GACL,GADK,GACCugB,IAAI,CAACmM,KAAK,GAAG,EAAT,CADL,GACoB,GADpB,GAC0Ba,MAD1B,GACmC,KADnC,GAC2ChN,IAAI,CAACmM,KAAK,GAAG,EAAT,CAD/C,GAC8D,GAD9D,GACoE1sB,IAD3E;AAED;AACF,OATD;AAUA3D,YAAM,CAAC1/E,MAAP,CAAc,OAAd,EAAuBvD,IAAvB,CAA4B;AAC1B,aAAK,WAAS0G,CAAT,EAAY;AACf,iBAAOygG,IAAI,CAACoM,CAAC,CAACW,KAAH,CAAJ,GAAgB,CAAhB,GAAoB/M,IAAI,CAACoM,CAAC,CAAC7sG,CAAC,CAAClf,IAAF,GAAS,OAAV,CAAF,CAAJ,GAA4B,CAAvD;AACD,SAHyB;AAI1B,iBAAS,eAASkf,CAAT,EAAY;AACnB,iBAAOygG,IAAI,CAACoM,CAAC,CAAC7sG,CAAC,CAAClf,IAAF,GAAS,OAAV,CAAF,CAAX;AACD,SANyB;AAO1B,kBAAU,gBAASkf,CAAT,EAAY;AACpB,iBAAOygG,IAAI,CAACqM,CAAC,CAAC9sG,CAAC,CAAClf,IAAF,GAAS,OAAV,CAAF,CAAX;AACD,SATyB;AAU1B,sBAAc,mBAASkf,CAAT,EAAY;AACxB,iBAAOmN,aAAY,CAAC,wBAAwBnN,CAAC,CAAClf,IAA1B,GAAiC,MAAlC,CAAnB;AACD;AAZyB,OAA5B;AAcAmtH,qBAAe,GAAG1xB,MAAM,CAAC1/E,MAAP,CAAc,qBAAd,CAAlB;AACAoxG,qBAAe,CAAC30G,IAAhB,CAAqB;AACnB,iBAAS,gBAAS0G,CAAT,EAAY;AACnB,cAAIrV,SAAS,GAAG,UAAUqV,CAAC,CAAClf,IAA5B;;AACA,cAAIi7F,cAAc,IAAIA,cAAc,CAAC/7E,CAAC,CAACrjB,GAAH,CAApC,EAA6C;AAC3CgO,qBAAS,IAAI,aAAb;AACD;;AACD,iBAAOA,SAAP;AACD,SAPkB;AAQnB,mBAAW,iBAASqV,CAAT,EAAY;AACrB,iBAAO,SAAU6sG,CAAC,CAAC7sG,CAAC,CAAClf,IAAH,CAAD,GAAY8rH,KAAtB,GAA+B,GAA/B,GAAsCE,CAAC,CAAC9sG,CAAC,CAAClf,IAAH,CAAD,GAAY8rH,KAAzD;AACD,SAVkB;AAWnB,aAAK,WAAS5sG,CAAT,EAAY;AACf,iBAAOygG,IAAI,CAACoM,CAAC,CAACW,KAAH,CAAJ,GAAgB,CAAhB,GAAoB/M,IAAI,CAACoM,CAAC,CAAC7sG,CAAC,CAAClf,IAAH,CAAF,CAAJ,GAAkB,CAA7C;AACD,SAbkB;AAcnB,iBAAS,eAASkf,CAAT,EAAY;AACnB,iBAAOygG,IAAI,CAACoM,CAAC,CAAC7sG,CAAC,CAAClf,IAAH,CAAF,CAAX;AACD,SAhBkB;AAiBnB,kBAAU,gBAASkf,CAAT,EAAY;AACpB,iBAAOygG,IAAI,CAACqM,CAAC,CAAC9sG,CAAC,CAAClf,IAAH,CAAF,CAAX;AACD;AAnBkB,OAArB;AAqBAmtH,qBAAe,CAACpxG,MAAhB,CAAuB,eAAvB,EAAwCvD,IAAxC,CAA6C,GAA7C,EAAkD,UAAS0G,CAAT,EAAY;AAC5D,eAAOquG,gBAAe,CAACG,QAAhB,CAAyBxuG,CAAC,CAAClf,IAA3B,CAAP;AACD,OAFD;AAGAmtH,qBAAe,CAACpxG,MAAhB,CAAuB,cAAvB,EAAuCvD,IAAvC,CAA4C,GAA5C,EAAiD,UAAS0G,CAAT,EAAY;AAC3D,eAAOquG,gBAAe,CAACI,OAAhB,CAAwBzuG,CAAC,CAAClf,IAA1B,CAAP;AACD,OAFD,EAxLoB,CA4LpB;;AACA4e,WAAK,CAAC,KAAD,CAAL;AACAwuG,iBAAW,GAAG3xG,EAAE,CAACiiF,UAAH,CAAcjC,MAAd,EACXjjF,IADW,CACN,WADM,EACOupG,SADP,EAEXj7F,KAFW,CAEL,SAFK,EAEM,CAFN,CAAd,CA9LoB,CAkMpB;;AACAsmG,iBAAW,CAACrxG,MAAZ,CAAmB,QAAnB,EAA6B+K,KAA7B,CAAmC,SAAnC,EAA8ColG,KAA9C,EAnMoB,CAqMpB;AACA;AACA;AACA;;AACA,UAAIkB,WAAW,CAACQ,SAAhB,EAA2B;AACzB;AACA;AACA;AACAP,mBAAW,GAAG,eAAepkF,SAAS,KAAK,CAAd,GAAkB,CAAlB,GAAsB,CAAC,CAAtC,IAA2C,GAAzD;AACAmkF,mBAAW,CAACrxG,MAAZ,CAAmB,SAAnB,EAA8B6xG,SAA9B,CAAwC,WAAxC,EAAqD,UAAS1uG,CAAT,EAAY/lB,CAAZ,EAAeb,CAAf,EAAkB;AACrE,iBAAOmjB,EAAE,CAACoyG,iBAAH,CAAqBv1H,CAArB,EAAwB+0H,WAAxB,CAAP;AACD,SAFD,EALyB,CAQzB;AACA;AACA;;AACAD,mBAAW,CAACrxG,MAAZ,CAAmB,aAAnB,EAAkC6xG,SAAlC,CAA4C,GAA5C,EAAiD,UAAS1uG,CAAT,EAAY/lB,CAAZ,EAAeb,CAAf,EAAkB;AACjE,iBAAO,UAASonB,CAAT,EAAY;AACjB,mBAAOA,CAAC,GAAG,GAAJ,GAAUpnB,CAAV,GAAci1H,gBAAe,CAACC,MAAhB,CAAuBtuG,CAAC,CAAClf,IAAzB,EAA+BipC,SAA/B,CAArB;AACD,WAFD;AAGD,SAJD;AAKD,OAhBD,MAgBO;AACL;AACAwyD,cAAM,CAAC1/E,MAAP,CAAc,SAAd,EAAyBvD,IAAzB,CAA8B,WAA9B,EAA2C,eAAeywB,SAAS,KAAK,CAAd,GAAkB,CAAlB,GAAsB,CAAC,CAAtC,IAA2C,GAAtF;AACAwyD,cAAM,CAAC1/E,MAAP,CAAc,aAAd,EACGvD,IADH,CACQ,GADR,EACa,UAAS0G,CAAT,EAAY;AACrB,iBAAOquG,gBAAe,CAACC,MAAhB,CAAuBtuG,CAAC,CAAClf,IAAzB,EAA+BipC,SAA/B,CAAP;AACD,SAHH;AAID,OAhOmB,CAkOpB;;;AACArqB,WAAK,CAAC,IAAD,CAAL;AACAnD,QAAE,CAACiiF,UAAH,CAAcovB,UAAd,EACGt0G,IADH,CACQ,WADR,EACqBupG,SADrB,EAEGj7F,KAFH,CAES,SAFT,EAEoB,CAFpB,EAGGlrB,MAHH;AAID,KAxOD;AAyOD;;AAED6/F,QAAM,CAACD,QAAP,GAAkB,UAASj0E,CAAT,EAAY;AAC5B,QAAI,CAACnqB,SAAS,CAAChE,MAAf,EAAuB,OAAOoiG,QAAP;AACvBA,YAAQ,GAAGj0E,CAAX;AACA,WAAOk0E,MAAP;AACD,GAJD;;AAMAA,QAAM,CAACke,QAAP,GAAkB,UAASz7D,CAAT,EAAY;AAC5B,QAAI,CAAC9gD,SAAS,CAAChE,MAAf,EAAuB,OAAOumH,IAAP;AACvBA,QAAI,GAAGzhE,CAAP;AACA,WAAOu9C,MAAP;AACD,GAJD;;AAMAA,QAAM,CAACxyD,SAAP,GAAmB,UAAS/pB,CAAT,EAAY;AAC7B,QAAI,CAAC9hB,SAAS,CAAChE,MAAf,EAAuB,OAAO6vC,SAAP;AACvBA,aAAS,GAAG/pB,CAAZ;AACA,WAAOu8E,MAAP;AACD,GAJD;;AAMAA,QAAM,CAACywB,KAAP,GAAe,UAAS7xH,CAAT,EAAY;AACzB,QAAI,CAAC+C,SAAS,CAAChE,MAAf,EAAuB,OAAO8yH,KAAP;AACvBA,SAAK,GAAG7xH,CAAR;AACA,WAAOohG,MAAP;AACD,GAJD;;AAMAA,QAAM,CAAC2wB,WAAP,GAAqB,UAASzjH,CAAT,EAAY;AAC/B,QAAI,CAACvL,SAAS,CAAChE,MAAf,EAAuB,OAAOgzH,WAAP;AACvBA,eAAW,GAAGzjH,CAAd;AACA,WAAO8yF,MAAP;AACD,GAJD;AAMA;;;;;;AAIAA,QAAM,CAAC4wB,IAAP,GAAc,UAAS9sG,CAAT,EAAY;AACxB,QAAI,CAACniB,SAAS,CAAChE,MAAf,EAAuB,OAAOizH,IAAP;AACvBA,QAAI,GAAG9sG,CAAP;AACA,WAAOk8E,MAAP;AACD,GAJD;AAMA;;;;;AAGAA,QAAM,CAAC0wB,QAAP,GAAkB,UAAS9xH,CAAT,EAAY;AAC5B,QAAI,CAAC+C,SAAS,CAAChE,MAAf,EAAuB,OAAO+yH,QAAP;AACvBA,YAAQ,GAAG9xH,CAAX;AACA,WAAOohG,MAAP;AACD,GAJD;;AAMAA,QAAM,CAACR,cAAP,GAAwB,UAAS1zE,CAAT,EAAY;AAClC,QAAI,CAACnqB,SAAS,CAAChE,MAAf,EAAuB,OAAO6hG,cAAP;AACvBA,kBAAc,GAAG1zE,CAAjB;AACA,WAAOk0E,MAAP;AACD,GAJD;AAMA;;;;;;;;;;AAQAA,QAAM,CAAC6wB,aAAP,GAAuB,UAASwB,EAAT,EAAa;AAClC,QAAI,CAAC1wH,SAAS,CAAChE,MAAf,EAAuB,OAAOkzH,aAAP;AACvBA,iBAAa,GAAGwB,EAAhB;AACA,WAAOryB,MAAP;AACD,GAJD;;AAMA,SAAOA,MAAP;AACD,C,CAED;AACA;AACA;AACA;AACA;AACA;;;AACAwwB,WAAW,CAACQ,KAAZ,GAAoBV,CAAC,CAACW,KAAF,GAAU,IAA9B,C,CACA;AACA;AACA;;AACAT,WAAW,CAACO,MAAZ,GAAqB,CAACR,CAAC,CAACU,KAAF,GAAU,GAAV,GAAgBV,CAAC,CAACY,CAAnB,IAAwB,IAA7C;AAEeX,iEAAf,E;;AC9YA;AACA;AACA;AACA,IAAIH,+BAAK,GAAG,KAAZ;AAAA,IACEC,2BAAC,GAAG;AACF,WAAS,GADP;AAEF,UAAQ,GAFN;AAGF,UAAQ,GAHN;AAIF,UAAQ,KAJN;AAKF,gBAAc,MALZ;AAMF,eAAa,OANX;AAOF,aAAW,MAPT;AAQF,cAAY,KARV;AASF,iBAAe,OATb;AAUF,gBAAc,MAVZ;AAWF,eAAa,KAXX;AAYF,UAAQ,OAZN;AAaF,eAAa;AAbX,CADN;AAAA,IAgBEC,2BAAC,GAAG;AACF,WAAS,GADP;AAEF,UAAQ,GAFN;AAGF,UAAQ,OAHN;AAIF,UAAQ,MAJN;AAKF,gBAAc,KALZ;AAMF,eAAa,KANX;AAOF,aAAW,OAPT;AAQF,cAAY,GARV;AASF,iBAAe,MATb;AAUF,gBAAc,KAVZ;AAWF,eAAa,KAXX;AAYF,UAAQ,IAZN;AAaF,eAAa,KAbX;AAcF,OAAK;AAdH,CAhBN;AAAA,IAiCE+B,YAAY,GAAG,CACb,YADa,EAEb,OAFa,EAEJ,MAFI,EAEI,MAFJ,EAEY,MAFZ,EAGb,iBAHa,EAGM,gBAHN,EAIb,iBAJa,EAIM,gBAJN,EAKb,KALa,EAKN,SALM,EAKK,MALL,EAKa,SALb,EAMb,gBANa,EAMK,aANL,EAOb,eAPa,EAOI,cAPJ,EAQb,MARa,EAQL,UARK,CAjCjB;;AA4CC,aAAW;AACV,MAAIhuH,IAAJ;;AACA,OAAKA,IAAL,IAAagsH,2BAAb,EAAgB;AACd,QAAIA,2BAAC,CAACrvH,cAAF,CAAiBqD,IAAjB,CAAJ,EAA4B;AAC1BgsH,iCAAC,CAAChsH,IAAD,CAAD,IAAW+rH,+BAAX;AACD;AACF;;AACD,OAAK/rH,IAAL,IAAaisH,2BAAb,EAAgB;AACd,QAAIA,2BAAC,CAACtvH,cAAF,CAAiBqD,IAAjB,CAAJ,EAA4B;AAC1BisH,iCAAC,CAACjsH,IAAD,CAAD,IAAW+rH,+BAAX;AACD;AACF;AACF,CAZA,GAAD;;AAcA,SAASkC,OAAT,CAAiBl2G,MAAjB,EAAyB;AACvB,MAAIkE,IAAI,GAAGlE,MAAM,CAACiE,MAAP,CAAc,MAAd,CAAX;;AACA,MAAIC,IAAI,CAACyC,KAAL,EAAJ,EAAkB;AAChBzC,QAAI,GAAGlE,MAAM,CAAC9R,MAAP,CAAc,MAAd,CAAP;AACD;;AACD,SAAOgW,IAAP;AACD;;AAED,SAASiyG,qBAAT,CAA+Bn2G,MAA/B,EAAuC;AACrC,MAAIkE,IAAI,GAAGgyG,OAAO,CAACl2G,MAAD,CAAlB;AAAA,MACEyG,QADF;;AAGA,MAAIvC,IAAI,CAACD,MAAL,CAAY,mBAAZ,EAAiC0C,KAAjC,EAAJ,EAA8C;AAC5CF,YAAQ,GAAGvC,IAAI,CAAChW,MAAL,CAAY,gBAAZ,EACRwS,IADQ,CACH,IADG,EACG,kBADH,EAERA,IAFQ,CAEH,IAFG,EAEG,IAFH,EAGRA,IAHQ,CAGH,IAHG,EAGG,IAHH,EAIRA,IAJQ,CAIH,IAJG,EAIG,IAJH,EAKRA,IALQ,CAKH,IALG,EAKG,MALH,CAAX;AAMA+F,YAAQ,CAACvY,MAAT,CAAgB,MAAhB,EACGwS,IADH,CACQ,YADR,EACsB,SADtB,EAEGA,IAFH,CAEQ,QAFR,EAEkB,IAFlB;AAGA+F,YAAQ,CAACvY,MAAT,CAAgB,MAAhB,EACGwS,IADH,CACQ,YADR,EACsB,SADtB,EAEGA,IAFH,CAEQ,QAFR,EAEkB,MAFlB;AAGD;AACF;;AAED,SAAS01G,uBAAT,CAAiCzzG,IAAjC,EAAuCk/F,QAAvC,EAAiDC,WAAjD,EAA8D7xG,KAA9D,EAAqE;AAEnE,WAAS+oD,SAAT,CAAmB5xC,CAAnB,EAAsB;AACpB,WAAO,WAAWA,CAAC,CAAChJ,KAAb,GAAqB,GAA5B;AACD;;AAED,WAASi4G,WAAT,CAAqBjvG,CAArB,EAAwB;AACtB,WAAOA,CAAC,CAAC/I,OAAT;AACD;;AAED,WAASi4G,gBAAT,CAA0BlvG,CAA1B,EAA6B;AAC3B,QAAI5kB,CAAC,GAAG4kB,CAAC,CAACmvG,UAAF,IAAgB,CAAxB;AAAA,QACEx+G,CAAC,GAAGqP,CAAC,CAACovG,UAAF,IAAgB,CADtB;AAEA,WAAO,eAAe3U,QAAQ,CAACr/G,CAAD,CAAvB,GAA6B,GAA7B,GAAmCs/G,WAAW,CAAC/pG,CAAD,CAA9C,GAAoD,GAA3D;AACD;;AAED,WAAS0+G,qBAAT,CAA+BrvG,CAA/B,EAAkC;AAChC,WAAOkvG,gBAAgB,CAAClvG,CAAD,CAAhB,GAAsB,GAAtB,GAA4B4xC,SAAS,CAAC5xC,CAAD,CAA5C;AACD,GAlBkE,CAmBnE;AACA;AACA;;;AACA,WAASsvG,gBAAT,CAA0BC,GAA1B,EAA+B;AAC7B,QAAI7vG,KAAK,GAAG6vG,GAAG,GAAG1mH,KAAK,CAACgiG,aAAN,GAAsBnM,aAAzB,GAAyC,CAAxD;AAAA,QACE8wB,MAAM,GAAGn0H,IAAI,CAACwqC,KAAL,CAAWh9B,KAAK,CAACwb,UAAN,CAAiBvW,SAAjB,GAA6Bi/G,iBAAW,CAACQ,KAApD,IAA6D,CADxE;AAAA,QAEEkC,OAAO,GAAGp0H,IAAI,CAACg+C,IAAL,CAAU,CAACxwC,KAAK,CAACwb,UAAN,CAAiBvW,SAAjB,GAA6BjF,KAAK,CAACwb,UAAN,CAAiB1W,aAA/C,IAAgEo/G,iBAAW,CAACQ,KAAtF,IAA+F,CAF3G;AAGA,WAAO,CAAClyH,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYk0H,MAAM,GAAG9vG,KAArB,CAAD,EAA8B+vG,OAAO,GAAG/vG,KAAxC,CAAP;AACD;;AAED,WAAS9T,SAAT,GAAqB;AACnB,QAAIC,mBAAmB,GAAGhD,KAAK,CAACwb,UAAN,CAAiBxY,mBAA3C;AACA,QAAID,SAAS,GAAG,EAAhB;;AAEA,QAAIC,mBAAmB,IAAIA,mBAAmB,CAAC3R,MAApB,GAA6B,CAAxD,EAA2D;AACzD,UAAI20C,6BAAS,CAACC,aAAV,IAA2BD,6BAAS,CAACC,aAAV,CAAwB50C,MAAxB,GAAiC,CAAhE,EAAmE;AACjE0R,iBAAS,GAAGijC,6BAAS,CAACC,aAAV,GAA0BjjC,mBAAtC;AACD,OAFD,MAEO;AACLD,iBAAS,GAAGC,mBAAZ;AACD;AACF,KAND,MAMO;AACL;AACAD,eAAS,GAAG,KAAZ;AACD;;AACD,WAAOA,SAAP;AACD;;AAED,SAAO;AACL8jH,SAAK,EAAE,eAAS92G,MAAT,EAAiBgH,IAAjB,EAAuB;AAC5B,UAAI8vG,KAAK,GAAG92G,MAAM,CAACiE,MAAP,CAAc,mBAAd,EAAmCyB,SAAnC,CAA6C,QAA7C,EAAuDsB,IAAvD,CAA4DA,IAAI,CAAC8vG,KAAjE,CAAZ;AACAA,WAAK,CAAC5vG,KAAN,GAAchZ,MAAd,CAAqB,OAArB,EAA8BwS,IAA9B,CAAmC;AACjC,iBAAS,OADwB;AAEjC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAAC8C,KAAF,GAAU,CAAC,KAAZ,CAFoB;AAGjC,aAAKlV,QAAQ,CAACqS,2BAAC,CAAC6C,KAAF,GAAU,CAAC,KAAZ,CAHoB;AAIjC,iBAASlV,QAAQ,CAACoS,2BAAC,CAAC8C,KAAH,CAJgB;AAKjC,kBAAUlV,QAAQ,CAACqS,2BAAC,CAAC6C,KAAH,CALe;AAMjC,+BAAuB,MANU;AAOjC,sBAAcxiG,aAAY,CAACvhB,SAAS,KAAK,YAAf,CAPO;AAQjC,qBAAayjH;AARoB,OAAnC,EASGznG,KATH,CASS,SATT,EASoBqnG,WATpB;AAUA1yG,QAAE,CAACiiF,UAAH,CAAckxB,KAAd,EACGp2G,IADH,CACQ,WADR,EACqB+1G,qBADrB,EAEGznG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAckxB,KAAK,CAAC3vG,IAAN,EAAd,EAA4BrjB,MAA5B;AACD,KAjBI;AAmBLkzH,QAAI,EAAE,cAASh3G,MAAT,EAAiBgH,IAAjB,EAAuB;AAC3B,UAAIgwG,IAAI,GAAGh3G,MAAM,CAACiE,MAAP,CAAc,YAAd,EAA4ByB,SAA5B,CAAsC,OAAtC,EAA+CsB,IAA/C,CAAoDA,IAAI,CAACgwG,IAAzD,CAAX;AACAA,UAAI,CAAC9vG,KAAL,GAAahZ,MAAb,CAAoB,OAApB,EAA6BwS,IAA7B,CAAkC;AAChC,iBAAS,MADuB;AAEhC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAACgD,IAAF,GAAS,CAAC,GAAX,CAFmB;AAGhC,aAAKpV,QAAQ,CAACqS,2BAAC,CAAC+C,IAAF,GAAS,CAAC,GAAX,CAHmB;AAIhC,iBAASpV,QAAQ,CAACoS,2BAAC,CAACgD,IAAH,CAJe;AAKhC,kBAAUpV,QAAQ,CAACqS,2BAAC,CAAC+C,IAAH,CALc;AAMhC,+BAAuB,MANS;AAOhC,sBAAc1iG,aAAY,CAACvhB,SAAS,KAAK,0BAAf,CAPM;AAQhC,qBAAayjH;AARmB,OAAlC,EASGznG,KATH,CASS,SATT,EASoBqnG,WATpB;AAUA1yG,QAAE,CAACiiF,UAAH,CAAcoxB,IAAd,EACGt2G,IADH,CACQ,WADR,EACqB+1G,qBADrB,EAEGznG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAcoxB,IAAI,CAAC7vG,IAAL,EAAd,EAA2BrjB,MAA3B;AACD,KAnCI;AAqCLozH,QAAI,EAAE,cAASl3G,MAAT,EAAiBgH,IAAjB,EAAuB;AAC3B,UAAIkwG,IAAI,GAAGl3G,MAAM,CAACiE,MAAP,CAAc,YAAd,EAA4ByB,SAA5B,CAAsC,OAAtC,EAA+CsB,IAA/C,CAAoDA,IAAI,CAACkwG,IAAzD,CAAX;AACAA,UAAI,CAAChwG,KAAL,GAAahZ,MAAb,CAAoB,OAApB,EAA6BwS,IAA7B,CAAkC;AAChC,iBAAS,MADuB;AAEhC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAACkD,IAAF,GAAS,CAAC,GAAX,CAFmB;AAGhC,aAAKtV,QAAQ,CAACqS,2BAAC,CAACiD,IAAF,GAAS,CAAC,KAAX,CAHmB;AAIhC,iBAAStV,QAAQ,CAACoS,2BAAC,CAACkD,IAAH,CAJe;AAKhC,kBAAUtV,QAAQ,CAACqS,2BAAC,CAACiD,IAAH,CALc;AAMhC,+BAAuB,MANS;AAOhC,sBAAc5iG,aAAY,CAACvhB,SAAS,KAAK,0BAAf,CAPM;AAQhC,qBAAayjH;AARmB,OAAlC,EASGznG,KATH,CASS,SATT,EASoBqnG,WATpB;AAUA1yG,QAAE,CAACiiF,UAAH,CAAcsxB,IAAd,EACGx2G,IADH,CACQ,WADR,EACqB+1G,qBADrB,EAEGznG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAcsxB,IAAI,CAAC/vG,IAAL,EAAd,EAA2BrjB,MAA3B;AACD,KArDI;AAuDLszH,QAAI,EAAE,cAASp3G,MAAT,EAAiBgH,IAAjB,EAAuB;AAC3B,UAAIqwG,SAAS,GAAG,EAAhB;AAAA,UACED,IADF;AAAA,UACQE,SADR;AAEAF,UAAI,GAAGp3G,MAAM,CAACiE,MAAP,CAAc,YAAd,EAA4ByB,SAA5B,CAAsC,OAAtC,EAA+CsB,IAA/C,CAAoDA,IAAI,CAACowG,IAAzD,CAAP;AACAE,eAAS,GAAGF,IAAI,CAAClwG,KAAL,GAAahZ,MAAb,CAAoB,GAApB,EAAyBwS,IAAzB,CAA8B;AACxC,iBAAS,eAD+B;AAExC,qBAAa+1G;AAF2B,OAA9B,EAGTznG,KAHS,CAGH,SAHG,EAGQqnG,WAHR,CAAZ;AAIAiB,eAAS,CAAC5xG,SAAV,CAAoB,WAApB,EAAiCsB,IAAjC,CAAsC,IAAIvmB,KAAJ,CAAU42H,SAAV,CAAtC,EAA4DnwG,KAA5D,GAAoEhZ,MAApE,CAA2E,OAA3E,EAAoFwS,IAApF,CAAyF;AACvF,iBAAS,WAD8E;AAEvF,aAAK,WAAS0G,CAAT,EAAY/lB,CAAZ,EAAe;AAClB,iBAAO,CAACA,CAAC,GAAGg2H,SAAS,GAAG,GAAjB,IAAwBxV,QAAQ,CAACoS,2BAAC,CAACsD,IAAH,CAAhC,GAA2C,IAAlD;AACD,SAJsF;AAKvF,aAAK1V,QAAQ,CAACqS,2BAAC,CAACqD,IAAF,GAAS,CAAC,GAAX,CAL0E;AAMvF,iBAAS1V,QAAQ,CAACoS,2BAAC,CAACsD,IAAH,CANsE;AAOvF,kBAAU1V,QAAQ,CAACqS,2BAAC,CAACqD,IAAH,CAPqE;AAQvF,+BAAuB,MARgE;AASvF,sBAAchjG,aAAY,CAACvhB,SAAS,KAAK,uBAAf;AAT6D,OAAzF;AAWA2Q,QAAE,CAACiiF,UAAH,CAAcwxB,IAAd,EACG12G,IADH,CACQ,WADR,EACqB+1G,qBADrB,EAEGznG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAcwxB,IAAI,CAACjwG,IAAL,EAAd,EAA2BrjB,MAA3B;AACD,KA9EI;AAgFL6yH,OAAG,EAAE,aAAS32G,MAAT,EAAiBgH,IAAjB,EAAuBwtG,aAAvB,EAAsC;AACzC,UAAIrwB,SAAS,GAAGl0F,KAAK,CAACgiG,aAAN,GAAsB9N,SAAtC;AAAA,UACEqzB,UAAU,GAAGd,gBAAgB,CAAC,IAAD,CAD/B;AAAA,UAEEtC,KAAK,GAAGptG,IAAI,CAAC2vG,GAAL,CAAS,CAAT,IAAc3vG,IAAI,CAAC2vG,GAAL,CAAS,CAAT,EAAYvC,KAA1B,GAAkC,CAF5C;AAAA,UAGE5kG,CAAC,GAAG2kG,iBAAW,EAHjB;AAAA,UAIEwC,GAAG,GAAG32G,MAAM,CAACiE,MAAP,CAAc,YAAd,EAA4ByB,SAA5B,CAAsC,MAAtC,CAJR,CADyC,CAOzC;;AACA8J,OAAC,CAACqyF,QAAF,CAAWA,QAAX,EACGne,QADH,CACYS,SAAS,CAAC7vF,GAAV,CAAcjS,KAAd,CAAoBm1H,UAAU,CAAC,CAAD,CAA9B,EAAmCA,UAAU,CAAC,CAAD,CAA7C,CADZ,EAEGjD,IAFH,CAEQtkH,KAAK,CAACmW,GAAN,CAAU,cAAV,CAFR,EAGGguG,KAHH,CAGSA,KAHT;;AAKA,UAAII,aAAJ,EAAmB;AACjBmC,WAAG,CAAC50H,IAAJ,CAASytB,CAAC,CAACglG,aAAF,CAAgB,IAAhB,CAAT;AACA;AACD;;AAEDmC,SAAG,GAAGA,GAAG,CAAC3vG,IAAJ,CAASA,IAAI,CAAC2vG,GAAd,CAAN,CAlByC,CAoBzC;;AACAA,SAAG,CAACzvG,KAAJ,GAAYhZ,MAAZ,CAAmB,GAAnB,EAAwBwS,IAAxB,CAA6B;AAC3B,iBAAS,KADkB;AAE3B,qBAAa41G;AAFc,OAA7B,EArByC,CAyBzC;;AACAK,SAAG,CAAC50H,IAAJ,CAASytB,CAAT;AACA7L,QAAE,CAACiiF,UAAH,CAAc+wB,GAAd,EAAmBj2G,IAAnB,CAAwB,WAAxB,EAAqC41G,gBAArC,EA3ByC,CA4BzC;;AACA3yG,QAAE,CAACiiF,UAAH,CAAc+wB,GAAG,CAACxvG,IAAJ,EAAd,EAA0BrjB,MAA1B;AACD,KA9GI;AAgHL2zH,WAAO,EAAE,iBAASz3G,MAAT,EAAiBgH,IAAjB,EAAuBwtG,aAAvB,EAAsC;AAC7C,UAAIrwB,SAAS,GAAGl0F,KAAK,CAACgiG,aAAN,GAAsB9N,SAAtC;AAAA,UACEqzB,UAAU,GAAGd,gBAAgB,CAAC,IAAD,CAD/B;AAAA,UAEEtC,KAAK,GAAGptG,IAAI,CAACywG,OAAL,CAAa,CAAb,IAAkBzwG,IAAI,CAACywG,OAAL,CAAa,CAAb,EAAgBrD,KAAlC,GAA0C,CAFpD;AAAA,UAGE5kG,CAAC,GAAG2kG,iBAAW,EAHjB;AAAA,UAIEsD,OAAO,GAAGz3G,MAAM,CAACiE,MAAP,CAAc,YAAd,EAA4ByB,SAA5B,CAAsC,WAAtC,CAJZ,CAD6C,CAO7C;;AACA8J,OAAC,CAACqyF,QAAF,CAAWA,QAAX,EACGne,QADH,CACYS,SAAS,CAAClB,OAAV,CAAkB5gG,KAAlB,CAAwBm1H,UAAU,CAAC,CAAD,CAAlC,EAAuCA,UAAU,CAAC,CAAD,CAAjD,CADZ,EAEGrmF,SAFH,CAEa,CAFb,EAGGojF,IAHH,CAGQtkH,KAAK,CAACmW,GAAN,CAAU,cAAV,CAHR,EAIGguG,KAJH,CAISA,KAJT;;AAMA,UAAII,aAAJ,EAAmB;AACjBiD,eAAO,CAAC11H,IAAR,CAAaytB,CAAC,CAACglG,aAAF,CAAgB,IAAhB,CAAb;AACA;AACD;;AAEDiD,aAAO,GAAGA,OAAO,CAACzwG,IAAR,CAAaA,IAAI,CAACywG,OAAlB,CAAV,CAnB6C,CAqB7C;;AACAA,aAAO,CAACvwG,KAAR,GAAgBhZ,MAAhB,CAAuB,GAAvB,EAA4BwS,IAA5B,CAAiC;AAC/B,iBAAS,UADsB;AAE/B,qBAAa41G;AAFkB,OAAjC,EAtB6C,CA0B7C;;AACAmB,aAAO,CAAC11H,IAAR,CAAaytB,CAAb;AACA7L,QAAE,CAACiiF,UAAH,CAAc6xB,OAAd,EAAuB/2G,IAAvB,CAA4B,WAA5B,EAAyC41G,gBAAzC,EA5B6C,CA6B7C;;AACA3yG,QAAE,CAACiiF,UAAH,CAAc6xB,OAAO,CAACtwG,IAAR,EAAd,EAA8BrjB,MAA9B;AACD,KA/II;AAiJL4zH,QAAI,EAAE,cAAS13G,MAAT,EAAiBgH,IAAjB,EAAuBwtG,aAAvB,EAAsC;AAC1C,UAAIviB,aAAa,GAAGhiG,KAAK,CAACgiG,aAAN,EAApB;AAAA,UACE0lB,YAAY,GAAG1lB,aAAa,CAAC9N,SAAd,CAAwBjB,IADzC;AAAA,UAEEs0B,UAAU,GAAGd,gBAAgB,EAF/B;AAAA,UAGEkB,UAAU,GAAG3lB,aAAa,CAAC9O,cAAd,EAHf;AAAA,UAIEixB,KAAK,GAAGptG,IAAI,CAAC0wG,IAAL,CAAU,CAAV,IAAe1wG,IAAI,CAAC0wG,IAAL,CAAU,CAAV,EAAatD,KAA5B,GAAoC,CAJ9C;AAAA,UAKEviF,GAAG,GAAG7qB,IAAI,CAAC0wG,IAAL,CAAU,CAAV,IAAe1wG,IAAI,CAAC0wG,IAAL,CAAU,CAAV,EAAavmF,SAA5B,GAAwC,CALhD;AAAA,UAME3hB,CAAC,GAAG2kG,iBAAW,EANjB;AAAA,UAOEuD,IAAI,GAAG13G,MAAM,CAACiE,MAAP,CAAc,YAAd,EAA4ByB,SAA5B,CAAsC,OAAtC,CAPT,CAD0C,CAU1C;;AACA8J,OAAC,CAACqyF,QAAF,CAAWA,QAAX,EACGne,QADH,CACYi0B,YAAY,CAACt1H,KAAb,CAAmBm1H,UAAU,CAAC,CAAD,CAA7B,EAAkCA,UAAU,CAAC,CAAD,CAA5C,CADZ,EAEGnD,QAFH,CAEY,KAFZ,EAGGljF,SAHH,CAGaU,GAHb,EAIGuiF,KAJH,CAISA,KAJT,EAKGjxB,cALH,CAKkBy0B,UALlB;;AAOA,UAAIpD,aAAJ,EAAmB;AACjBkD,YAAI,CAAC31H,IAAL,CAAUytB,CAAC,CAACglG,aAAF,CAAgB,IAAhB,CAAV;AACA;AACD;;AAEDkD,UAAI,GAAGA,IAAI,CAAC1wG,IAAL,CAAUA,IAAI,CAAC0wG,IAAf,CAAP,CAvB0C,CAyB1C;;AACAA,UAAI,CAACxwG,KAAL,GAAahZ,MAAb,CAAoB,GAApB,EAAyBwS,IAAzB,CAA8B;AAC5B,iBAAS,MADmB;AAE5B,qBAAa41G;AAFe,OAA9B,EA1B0C,CA8B1C;;AACAoB,UAAI,CAAC31H,IAAL,CAAUytB,CAAV;AACA7L,QAAE,CAACiiF,UAAH,CAAc8xB,IAAd,EAAoBh3G,IAApB,CAAyB,WAAzB,EAAsC41G,gBAAtC,EAhC0C,CAiC1C;;AACA3yG,QAAE,CAACiiF,UAAH,CAAc8xB,IAAI,CAACvwG,IAAL,EAAd,EAA2BrjB,MAA3B;AACD,KApLI;AAsLL+zH,mBAAe,EAAE,yBAAS73G,MAAT,EAAiBgH,IAAjB,EAAuB;AACtC,UAAI8wG,SAAS,GAAG93G,MAAM,CAACiE,MAAP,CAAc,kBAAd,EAAkCyB,SAAlC,CAA4C,mBAA5C,EAAiEsB,IAAjE,CAAsEA,IAAI,CAAC6wG,eAA3E,CAAhB;AACAC,eAAS,CAAC5wG,KAAV,GAAkBhZ,MAAlB,CAAyB,OAAzB,EAAkCwS,IAAlC,CAAuC;AACrC,iBAAS,kBAD4B;AAErC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAAC8D,UAAF,GAAe,CAAC,GAAjB,CAFwB;AAGrC,aAAKlW,QAAQ,CAACqS,2BAAC,CAAC6D,UAAF,GAAe,CAAC,GAAjB,CAHwB;AAIrC,iBAASlW,QAAQ,CAACoS,2BAAC,CAAC8D,UAAH,CAJoB;AAKrC,kBAAUlW,QAAQ,CAACqS,2BAAC,CAAC6D,UAAH,CALmB;AAMrC,+BAAuB,MANc;AAOrC,sBAAcxjG,aAAY,CAACvhB,SAAS,KAAK,uBAAf,CAPW;AAQrC,qBAAayjH;AARwB,OAAvC,EASGznG,KATH,CASS,SATT,EASoBqnG,WATpB;AAUA1yG,QAAE,CAACiiF,UAAH,CAAckyB,SAAd,EACGp3G,IADH,CACQ,WADR,EACqB+1G,qBADrB,EAEGznG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAckyB,SAAS,CAAC3wG,IAAV,EAAd,EAAgCrjB,MAAhC;AACD,KAtMI;AAwMLk0H,kBAAc,EAAE,wBAASh4G,MAAT,EAAiBgH,IAAjB,EAAuB;AACrC,UAAIixG,QAAQ,GAAGj4G,MAAM,CAACiE,MAAP,CAAc,iBAAd,EAAiCyB,SAAjC,CAA2C,kBAA3C,EAA+DsB,IAA/D,CAAoEA,IAAI,CAACgxG,cAAzE,CAAf;AACAC,cAAQ,CAAC/wG,KAAT,GAAiBhZ,MAAjB,CAAwB,OAAxB,EAAiCwS,IAAjC,CAAsC;AACpC,iBAAS,iBAD2B;AAEpC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAACiE,SAAF,GAAc,CAAC,GAAhB,CAFuB;AAGpC,aAAKrW,QAAQ,CAACqS,2BAAC,CAACgE,SAAF,GAAc,CAAC,GAAhB,CAHuB;AAIpC,iBAASrW,QAAQ,CAACoS,2BAAC,CAACiE,SAAH,CAJmB;AAKpC,kBAAUrW,QAAQ,CAACqS,2BAAC,CAACgE,SAAH,CALkB;AAMpC,+BAAuB,MANa;AAOpC,sBAAc3jG,aAAY,CAACvhB,SAAS,KAAK,sBAAf,CAPU;AAQpC,qBAAayjH;AARuB,OAAtC,EASGznG,KATH,CASS,SATT,EASoBqnG,WATpB;AAUA1yG,QAAE,CAACiiF,UAAH,CAAcqyB,QAAd,EACGv3G,IADH,CACQ,WADR,EACqB+1G,qBADrB,EAEGznG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAcqyB,QAAQ,CAAC9wG,IAAT,EAAd,EAA+BrjB,MAA/B;AACD,KAxNI;AA0NLq0H,WAAO,EAAE,iBAASn4G,MAAT,EAAiBgH,IAAjB,EAAuB;AAC9B,UAAImxG,OAAO,GAAGn4G,MAAM,CAACiE,MAAP,CAAc,mBAAd,EAAmCyB,SAAnC,CAA6C,UAA7C,EAAyDsB,IAAzD,CAA8DA,IAAI,CAACmxG,OAAnE,CAAd;AACAA,aAAO,CAACjxG,KAAR,GAAgBhZ,MAAhB,CAAuB,OAAvB,EAAgCwS,IAAhC,CAAqC;AACnC,iBAAS,SAD0B;AAEnC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAACmE,OAAF,GAAY,CAAC,GAAd,CAFsB;AAGnC,aAAKvW,QAAQ,CAACqS,2BAAC,CAACkE,OAAF,GAAY,CAAC,GAAd,CAHsB;AAInC,iBAASvW,QAAQ,CAACoS,2BAAC,CAACmE,OAAH,CAJkB;AAKnC,kBAAUvW,QAAQ,CAACqS,2BAAC,CAACkE,OAAH,CALiB;AAMnC,+BAAuB,MANY;AAOnC,sBAAc7jG,aAAY,CAACvhB,SAAS,KAAK,iBAAf,CAPS;AAQnC,qBAAasjH;AARsB,OAArC,EASGtnG,KATH,CASS,SATT,EASoBqnG,WATpB;AAUA1yG,QAAE,CAACiiF,UAAH,CAAcuyB,OAAd,EACGz3G,IADH,CACQ,WADR,EACqB41G,gBADrB,EAEGtnG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAcuyB,OAAO,CAAChxG,IAAR,EAAd,EAA8BrjB,MAA9B;AACD,KA1OI;AA4OLu0H,kBAAc,EAAE,wBAASr4G,MAAT,EAAiBgH,IAAjB,EAAuB;AACrC,UAAI9G,SAAS,GAAGF,MAAM,CAACiE,MAAP,CAAc,iBAAd,EAAiCyB,SAAjC,CAA2C,kBAA3C,EAA+DsB,IAA/D,CAAoEA,IAAI,CAACqxG,cAAzE,CAAhB;AACAn4G,eAAS,CAACgH,KAAV,GAAkBhZ,MAAlB,CAAyB,OAAzB,EAAkCwS,IAAlC,CAAuC;AACrC,iBAAS,iBAD4B;AAErC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAACqE,WAAF,GAAgB,CAAC,GAAlB,CAFwB;AAGrC,aAAKzW,QAAQ,CAACqS,2BAAC,CAACoE,WAAF,GAAgB,CAAC,GAAlB,CAHwB;AAIrC,iBAASzW,QAAQ,CAACoS,2BAAC,CAACqE,WAAH,CAJoB;AAKrC,kBAAUzW,QAAQ,CAACqS,2BAAC,CAACoE,WAAH,CALmB;AAMrC,+BAAuB,MANc;AAOrC,sBAAc/jG,aAAY,CAACvhB,SAAS,KAAK,uBAAf,CAPW;AAQrC,qBAAasjH;AARwB,OAAvC,EASGtnG,KATH,CASS,SATT,EASoB,CATpB;AAUArL,QAAE,CAACiiF,UAAH,CAAc1lF,SAAd,EACGQ,IADH,CACQ,WADR,EACqB41G,gBADrB,EAEGtnG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAc1lF,SAAS,CAACiH,IAAV,EAAd,EACG6H,KADH,CACS,SADT,EACoB,CADpB,EAEGlrB,MAFH;AAGD,KA9PI;AAgQLy0H,eAAW,EAAE,qBAASv4G,MAAT,EAAiBgH,IAAjB,EAAuB;AAClC,UAAI9G,SAAS,GAAGF,MAAM,CAACiE,MAAP,CAAc,iBAAd,EAAiCyB,SAAjC,CAA2C,eAA3C,EAA4DsB,IAA5D,CAAiEA,IAAI,CAACuxG,WAAtE,CAAhB;AACAr4G,eAAS,CAACgH,KAAV,GAAkBhZ,MAAlB,CAAyB,OAAzB,EAAkCwS,IAAlC,CAAuC;AACrC,iBAAS,cAD4B;AAErC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAACuE,QAAF,GAAa,CAAC,GAAf,CAFwB;AAGrC,aAAK3W,QAAQ,CAACqS,2BAAC,CAACsE,QAAF,GAAa,CAAC,GAAf,CAHwB;AAIrC,iBAAS3W,QAAQ,CAACoS,2BAAC,CAACuE,QAAH,CAJoB;AAKrC,kBAAU3W,QAAQ,CAACqS,2BAAC,CAACsE,QAAH,CALmB;AAMrC,+BAAuB,MANc;AAOrC,sBAAcjkG,aAAY,CAACvhB,SAAS,KAAK,oBAAf,CAPW;AAQrC,qBAAasjH;AARwB,OAAvC,EASGtnG,KATH,CASS,SATT,EASoB,CATpB;AAUArL,QAAE,CAACiiF,UAAH,CAAc1lF,SAAd,EACGQ,IADH,CACQ,WADR,EACqB41G,gBADrB,EAEGtnG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAc1lF,SAAS,CAACiH,IAAV,EAAd,EACG6H,KADH,CACS,SADT,EACoB,CADpB,EAEGlrB,MAFH;AAGD,KAlRI;AAoRL20H,iBAAa,EAAE,uBAASz4G,MAAT,EAAiBgH,IAAjB,EAAuB;AACpC,UAAI9G,SAAS,GAAGF,MAAM,CAACiE,MAAP,CAAc,kBAAd,EAAkCyB,SAAlC,CAA4C,iBAA5C,EAA+DsB,IAA/D,CAAoEA,IAAI,CAACyxG,aAAzE,CAAhB;AACAv4G,eAAS,CAACgH,KAAV,GAAkBhZ,MAAlB,CAAyB,OAAzB,EAAkCwS,IAAlC,CAAuC;AACrC,iBAAS,gBAD4B;AAErC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAACyE,UAAF,GAAe,CAAC,GAAjB,CAFwB;AAGrC,aAAK7W,QAAQ,CAACqS,2BAAC,CAACwE,UAAF,GAAe,CAAC,GAAjB,CAHwB;AAIrC,iBAAS7W,QAAQ,CAACoS,2BAAC,CAACyE,UAAH,CAJoB;AAKrC,kBAAU7W,QAAQ,CAACqS,2BAAC,CAACwE,UAAH,CALmB;AAMrC,+BAAuB,MANc;AAOrC,sBAAcnkG,aAAY,CAACvhB,SAAS,KAAK,qBAAf,CAPW;AAQrC,qBAAasjH;AARwB,OAAvC,EASGtnG,KATH,CASS;AACP,mBAAWqnG;AADJ,OATT;AAYA1yG,QAAE,CAACiiF,UAAH,CAAc1lF,SAAd,EACGQ,IADH,CACQ,WADR,EACqB41G,gBADrB,EAEGtnG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAc1lF,SAAS,CAACiH,IAAV,EAAd,EAAgCrjB,MAAhC;AACD,KAtSI;AAwSL60H,gBAAY,EAAE,sBAAS34G,MAAT,EAAiBgH,IAAjB,EAAuB;AACnC,UAAI9G,SAAS,GAAGF,MAAM,CAACiE,MAAP,CAAc,iBAAd,EAAiCyB,SAAjC,CAA2C,gBAA3C,EAA6DsB,IAA7D,CAAkEA,IAAI,CAAC2xG,YAAvE,CAAhB;AACAz4G,eAAS,CAACgH,KAAV,GAAkBhZ,MAAlB,CAAyB,OAAzB,EAAkCwS,IAAlC,CAAuC;AACrC,iBAAS,eAD4B;AAErC,aAAKmhG,QAAQ,CAACoS,2BAAC,CAAC2E,SAAF,GAAc,CAAC,GAAhB,CAFwB;AAGrC,aAAK/W,QAAQ,CAACqS,2BAAC,CAAC0E,SAAF,GAAc,CAAC,GAAhB,CAHwB;AAIrC,iBAAS/W,QAAQ,CAACoS,2BAAC,CAAC2E,SAAH,CAJoB;AAKrC,kBAAU/W,QAAQ,CAACqS,2BAAC,CAAC0E,SAAH,CALmB;AAMrC,+BAAuB,MANc;AAOrC,sBAAcrkG,aAAY,CAACvhB,SAAS,KAAK,oBAAf,CAPW;AAQrC,qBAAasjH;AARwB,OAAvC,EASGtnG,KATH,CASS,SATT,EASoBqnG,WATpB;AAUA1yG,QAAE,CAACiiF,UAAH,CAAc1lF,SAAd,EACGQ,IADH,CACQ,WADR,EACqB41G,gBADrB,EAEGtnG,KAFH,CAES,SAFT,EAEoBqnG,WAFpB;AAGA1yG,QAAE,CAACiiF,UAAH,CAAc1lF,SAAS,CAACiH,IAAV,EAAd,EAAgCrjB,MAAhC;AACD,KAxTI;AA0TL+0H,QAAI,EAAE,cAAS74G,MAAT,EAAiBgH,IAAjB,EAAuB;AAC3B,UAAIirF,aAAa,GAAGhiG,KAAK,CAACgiG,aAAN,EAApB;AAAA,UAEE6mB,UAAU,GAAG,IAAI3E,iBAAW,CAACQ,KAF/B;AAAA,UAGEvvG,MAAM,GAAG,CAAC0zG,UAAU,GAAG7E,2BAAC,CAAC8E,IAAhB,IAAwB,IAHnC;AAAA,UAKE74G,SALF;AAAA,UAKagH,KALb;AAAA,UAKoBf,MALpB;AAAA,UAK4BgB,IAL5B;AAOAjH,eAAS,GAAGF,MAAM,CAACiE,MAAP,CAAc,YAAd,EAA4ByB,SAA5B,CAAsC,OAAtC,EACTsB,IADS,CACJA,IAAI,CAAC6xG,IADD,EACO,UAASzxG,CAAT,EAAY;AAC3B,eAAOA,CAAC,CAACuT,KAAT;AACD,OAHS,CAAZ,CAR2B,CAY3B;AACA;AACA;;AACAzT,WAAK,GAAGhH,SAAS,CAACgH,KAAV,GAAkBhZ,MAAlB,CAAyB,GAAzB,EAA8BwS,IAA9B,CAAmC;AACzC,iBAAS,MADgC;AAEzC,mBAAW,iBAAS0G,CAAT,EAAY;AACrB,iBAAOA,CAAC,CAACuT,KAAF,GAAU,CAAV,GAAc,MAAd,GAAuB,QAA9B;AACD,SAJwC;AAKzC,qBAAa,mBAASvT,CAAT,EAAY/lB,CAAZ,EAAe;AAC1B,iBAAO,eAAewgH,QAAQ,CAACsS,iBAAW,CAACO,MAAZ,GAAqB,CAAtB,CAAvB,GAAkD,IAAlD,GAAyD7S,QAAQ,CAAC,CAAC,IAAF,CAAjE,GAA2E,IAA3E,GACLyU,gBAAgB,CAAClvG,CAAD,EAAI/lB,CAAJ,CADX,GACoB,aAD3B;AAED;AARwC,OAAnC,EASL2tB,KATK,CASC,SATD,EASYqnG,WATZ,CAAR;AAWAnvG,WAAK,CAAChZ,MAAN,CAAa,GAAb,EACGwS,IADH,CACQ,WADR,EACqB,kBAAkBmhG,QAAQ,CAAC,CAACqS,2BAAC,CAACY,CAAJ,CAA1B,GAAmC,GADxD,EAEG/yH,IAFH,CAEQoyH,iBAAW,GACdtS,QADG,CACMA,QADN,EAEHne,QAFG,CAEM,UAASt8E,CAAT,EAAY;AACpB,eAAO6qF,aAAa,CAAC/K,eAAd,CAA8B9/E,CAAC,CAACuT,KAAhC,CAAP;AACD,OAJG,EAKH05F,QALG,CAKM,KALN,EAMHC,WANG,CAMS,KANT,CAFR;AAUAptG,WAAK,CAAChZ,MAAN,CAAa,OAAb,EAAsBwS,IAAtB,CAA2B;AACzB,iBAAS,WADgB;AAEzB,aAAKmhG,QAAQ,CAAC,QAAQiX,UAAU,GAAG7E,2BAAC,CAAC+E,SAAvB,CAAD,CAFY;AAGzB,aAAKnX,QAAQ,CAAC,CAACqS,2BAAC,CAAC8E,SAAH,GAAe9E,2BAAC,CAAC6E,IAAF,GAAS,IAAxB,GAA+B7E,2BAAC,CAACY,CAAF,GAAM,IAAtC,CAHY;AAIzB,iBAASjT,QAAQ,CAACoS,2BAAC,CAAC+E,SAAH,CAJQ;AAKzB,kBAAUnX,QAAQ,CAACqS,2BAAC,CAAC8E,SAAH,CALO;AAMzB,+BAAuB,MANE;AAOzB,sBAAczkG,aAAY,CAACvhB,SAAS,KAAK,gBAAf;AAPD,OAA3B;AASAkU,WAAK,CAAChZ,MAAN,CAAa,OAAb,EAAsBwS,IAAtB,CAA2B;AACzB,iBAAS,WADgB;AAEzB,aAAKmhG,QAAQ,CAACz8F,MAAD,CAFY;AAGzB,aAAKy8F,QAAQ,CAAC,CAACqS,2BAAC,CAAC6E,IAAH,GAAU7E,2BAAC,CAACY,CAAF,GAAM,IAAjB,CAHY;AAIzB,iBAASjT,QAAQ,CAACoS,2BAAC,CAAC8E,IAAH,CAJQ;AAKzB,kBAAUlX,QAAQ,CAACqS,2BAAC,CAAC6E,IAAH,CALO;AAMzB,+BAAuB,MANE;AAOzB,sBAAcxkG,aAAY,CAACvhB,SAAS,KAAK,gBAAf;AAPD,OAA3B;AAUAmT,YAAM,GAAGxC,EAAE,CAACiiF,UAAH,CAAc1lF,SAAd,EACNQ,IADM,CACD,WADC,EACY41G,gBADZ,EAENtnG,KAFM,CAEA,SAFA,EAEWqnG,WAFX,CAAT;AAGAlwG,YAAM,CAAClC,MAAP,CAAc,YAAd,EAA4B+K,KAA5B,CAAkC,SAAlC,EAA6C,UAAS5H,CAAT,EAAY;AACvD,eAAOA,CAAC,CAAC6xG,IAAT;AACD,OAFD;AAIA9xG,UAAI,GAAGxD,EAAE,CAACiiF,UAAH,CAAc1lF,SAAS,CAACiH,IAAV,EAAd,EACJzG,IADI,CACC,WADD,EACc,UAAS0G,CAAT,EAAY/lB,CAAZ,EAAe;AAChC,eAAO,eAAewgH,QAAQ,CAACsS,iBAAW,CAACO,MAAZ,GAAqB,CAAC,CAAvB,CAAvB,GAAmD,IAAnD,GAA0D7S,QAAQ,CAACsS,iBAAW,CAACO,MAAZ,GAAqB,CAAC,CAAvB,CAAlE,GAA8F,IAA9F,GACL4B,gBAAgB,CAAClvG,CAAD,EAAI/lB,CAAJ,CADX,GACoB,cAD3B;AAED,OAJI,EAKJ2tB,KALI,CAKE,SALF,EAKa,CALb,CAAP;AAMA7H,UAAI,CAACzB,SAAL,CAAe,QAAf,EAAyBsJ,KAAzB,CAA+B,SAA/B,EAA0C,CAA1C;AACA7H,UAAI,CAACrjB,MAAL;AACD,KAhYI;AAkYLo1H,YAAQ,EAAE,kBAASl5G,MAAT,EAAiBgH,IAAjB,EAAuB;AAC/B,UAAIjb,QAAQ,GAAGib,IAAI,CAACkyG,QAAL,CAAc,CAAd,EAAiBntH,QAAhC;AAAA,UACEs+F,IAAI,GAAGrjF,IAAI,CAACkyG,QAAL,CAAc,CAAd,EAAiB7uB,IAD1B;AAAA,UAEEjvD,IAAI,GAAGp0B,IAAI,CAACkyG,QAAL,CAAc,CAAd,EAAiB99E,IAF1B;AAAA,UAGEsmE,QAAQ,GAAG/9F,EAAE,CAACiiF,UAAH,CAAcjiF,EAAE,CAACM,MAAH,CAAUtB,IAAV,CAAd,CAHb,CAD+B,CAM/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA1S,WAAK,CAACrM,GAAN,CAAU,cAAV,EAA0Bw3C,IAAI,GAAG,GAAH,GAAS,KAAvC,EAhB+B,CAiB/B;AACA;AACA;AACA;;AACA,UAAIsmE,QAAQ,CAACrjD,QAAb,EAAuB;AACrB;AACAqjD,gBAAQ,CAACrX,IAAT,CAAcA,IAAd;AACAqX,gBAAQ,CAACyX,KAAT,CAAe,cAAf,EAA+B,YAAW;AACxC,cAAI93H,CAAC,GAAGsiB,EAAE,CAACsnF,WAAH,CAAeloG,MAAM,CAACkN,KAAK,CAACwb,UAAN,CAAiBvW,SAAlB,CAArB,EAAmDnJ,QAAQ,GAAGooH,iBAAW,CAACQ,KAA1E,CAAR;AACA,iBAAO,UAAS/sG,CAAT,EAAY;AACjB,gBAAIwxG,MAAM,GAAG/3H,CAAC,CAACumB,CAAD,CAAd;;AACA,gBAAInlB,IAAI,CAAC2M,GAAL,CAASa,KAAK,CAACwb,UAAN,CAAiBvW,SAAjB,GAA6BkkH,MAAtC,IAAgD,IAApD,EAA0D;AACxDnpH,mBAAK,CAACwb,UAAN,CAAiBvW,SAAjB,GAA6BkkH,MAA7B;AACD;AACF,WALD;AAMD,SARD;AASD,OAZD,MAYO;AACL;AACAnpH,aAAK,CAACrM,GAAN,CAAU,WAAV,EAAuBmI,QAAQ,GAAGooH,iBAAW,CAACQ,KAA9C;AACD;AACF,KAvaI;AAyaL0E,cAAU,EAAE,oBAASr5G,MAAT,EAAiBgH,IAAjB,EAAuB;AACjCmvG,2BAAqB,CAACn2G,MAAD,CAArB;AACA2D,QAAE,CAACiiF,UAAH,CAAcjiF,EAAE,CAACM,MAAH,CAAUtB,IAAV,EAAgBsB,MAAhB,CAAuB,uBAAvB,CAAd,EAA+DvD,IAA/D,CAAoE,MAApE,EAA4EsG,IAAI,CAACqyG,UAAL,CAAgB,CAAhB,EAAmB3hH,KAA/F;AACD;AA5aI,GAAP;AA8aD;;AAED0+G,uBAAuB,CAACnC,CAAxB,GAA4BA,2BAA5B;AACAmC,uBAAuB,CAAClC,CAAxB,GAA4BA,2BAA5B;AACAkC,uBAAuB,CAACH,YAAxB,GAAuCA,YAAvC;AAEeG,qFAAf,E;;AC3jBe,SAASkD,YAAT,CAAsBC,KAAtB,EAA6B;AAC1C,MAAI15G,GAAJ;AAAA,MACE25G,MAAM,GAAG,EADX;AAAA,MAEEC,WAAW,GAAG,EAFhB;AAIA55G,KAAG,GAAG;AACJw2D,YAAQ,EAAE,kBAASswB,SAAT,EAAoB+yB,QAApB,EAA8B;AACtC,UAAInxF,KAAK,GAAGtiC,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBk2H,QAAnB,CAAZ;AACAH,WAAK,CAAC/7G,OAAN,CAAc,UAASgS,CAAT,EAAY;AACxB,YAAI,OAAO+Y,KAAK,CAAC/Y,CAAD,CAAZ,KAAoB,WAAxB,EAAqC;AACnC+Y,eAAK,CAAC/Y,CAAD,CAAL,GAAW,EAAX;AACD;AACF,OAJD;AAKAgqG,YAAM,CAACv1H,IAAP,CAAYskC,KAAZ;AACAkxF,iBAAW,CAAC9yB,SAAD,CAAX,GAAyBp+D,KAAzB;AACD,KAVG;AAWJoxF,mBAAe,EAAE,yBAAShzB,SAAT,EAAoB+yB,QAApB,EAA8B;AAC7C,UAAI50B,SAAS,GAAG00B,MAAM,CAACA,MAAM,CAACl4H,MAAP,GAAgB,CAAjB,CAAtB;AAAA,UACEinC,KAAK,GAAG,EADV;AAGAgxF,WAAK,CAAC/7G,OAAN,CAAc,UAASgS,CAAT,EAAY;AACxB+Y,aAAK,CAAC/Y,CAAD,CAAL,GAAW,EAAX;;AACA,YAAI,OAAOkqG,QAAQ,CAAClqG,CAAD,CAAf,KAAuB,WAA3B,EAAwC;AACtC;AACAkqG,kBAAQ,CAAClqG,CAAD,CAAR,CAAYhS,OAAZ,CAAoB,UAASo8G,MAAT,EAAiB71H,GAAjB,EAAsB;AACxCwkC,iBAAK,CAAC/Y,CAAD,CAAL,CAASvrB,IAAT,CAAcgC,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBshG,SAAS,CAACt1E,CAAD,CAAT,CAAazrB,GAAb,CAAnB,EAAsC61H,MAAtC,CAAd;AACD,WAFD;AAGD;AACF,OARD;AASAJ,YAAM,CAACv1H,IAAP,CAAYskC,KAAZ;AACAkxF,iBAAW,CAAC9yB,SAAD,CAAX,GAAyBp+D,KAAzB;AACD,KA1BG;AA2BJ2f,YAAQ,EAAE,kBAASjgD,IAAT,EAAe;AACvB,UAAI4xH,QAAQ,GAAGJ,WAAW,CAACxxH,IAAD,CAA1B;AAAA,UACEsgC,KAAK,GAAGtiC,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBq2H,QAAnB,CADV;AAAA,UAEEC,OAFF;;AAGA,WAAKA,OAAL,IAAgBvxF,KAAhB,EAAuB;AACrB,YAAIA,KAAK,CAAC3jC,cAAN,CAAqBk1H,OAArB,CAAJ,EAAmC;AACjCvxF,eAAK,CAACuxF,OAAD,CAAL,CAAet8G,OAAf,CAAuB,UAAS4J,CAAT,EAAY/lB,CAAZ,EAAe;AACpC,gBAAID,KAAJ;;AACA,iBAAKA,KAAL,IAAcgmB,CAAd,EAAiB;AACf,kBAAI,OAAOA,CAAC,CAAChmB,KAAD,CAAR,KAAoB,UAAxB,EAAoC;AAClC;AACA;AACA;AACAgmB,iBAAC,CAAChmB,KAAD,CAAD,GAAWy4H,QAAQ,CAACC,OAAD,CAAR,CAAkBz4H,CAAlB,EAAqBD,KAArB,GAAX;AACD;AACF;AACF,WAVD;AAWD;AACF;;AACD,aAAOmnC,KAAP;AACD;AA/CG,GAAN;AAiDA,SAAO1oB,GAAP;AACD;AAAA,C;;ACvDD;AACA;AACA;AACA,IAAIq0G,qBAAC,GAAGkC,yBAAuB,CAAClC,CAAhC;AAAA,IACE+B,gCAAY,GAAGG,yBAAuB,CAACH,YADzC;AAGA;;;;AAGe,SAAS8D,iBAAT,CAA2B9pH,KAA3B,EAAkC;AAC/C,MAAI+pH,QAAQ,GAAG,IAAIV,YAAJ,CAAiBrD,gCAAjB,CAAf;AAAA,MACEhkB,aAAa,GAAGhiG,KAAK,CAACgiG,aAAN,EADlB;AAAA,MAEE;AACAl9F,eAAa,GAAG9E,KAAK,CAACmW,GAAN,CAAU,eAAV,CAHlB;AAAA,MAIEpR,cAAc,GAAG/E,KAAK,CAACmW,GAAN,CAAU,gBAAV,CAJnB;AAAA,MAKEpO,EAAE,GAAGjD,aAAa,GAAG,GALvB;AAAA,MAMEkD,EAAE,GAAGjD,cAAc,GAAG,GANxB;AAAA,MAQEilH,QARF;;AAUA,WAASC,OAAT,GAAmB;AACjB,QAAI3xF,KAAK,GAAG0pE,aAAa,CAAC1pE,KAAd,EAAZ;;AACA,QAAIA,KAAK,CAACtgC,IAAN,KAAe,iBAAnB,EAAsC;AACpC,aAAOgI,KAAK,CAACgiG,aAAN,GAAsB7O,mBAAtB,EAAP;AACD;;AACD62B,YAAQ,GAAG,CAAC5qH,KAAK,CAACk5B,KAAK,CAACxJ,IAAP,CAAN,GAAqBwJ,KAAK,CAACxJ,IAA3B,GAAkCk7F,QAA7C;AACA,WAAOA,QAAP;AACD;;AAED,WAASE,SAAT,GAAqB;AACnB,WAAO,CAAC,OAAO13H,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYw3H,OAAO,KAAK,CAAxB,IAA6B,CAArC,IAA0C/F,iBAAW,CAACQ,KAA7D;AACD;;AAED,WAASyF,KAAT,GAAiB;AACf,WAAO,KAAKz/F,KAAL,KAAe,CAAf,GAAmBw5F,iBAAW,CAACQ,KAAtC;AACD;;AAEDqF,UAAQ,CAAC3jD,QAAT,CAAkB,aAAlB,EAAiC;AAC/BygD,SAAK,EAAE,CAAC;AACNP,gBAAU,EAAEv+G,EAAE,GAAG,IADX;AAENw+G,gBAAU,EAAEv+G,EAFN;AAGNmG,WAAK,EAAE;AAHD,KAAD,CADwB;AAM/B44G,QAAI,EAAE,CAAC;AACLT,gBAAU,EAAEv+G,EAAE,GAAG,IADZ;AAELw+G,gBAAU,EAAEv+G,EAFP;AAGLmG,WAAK,EAAE,IAHF;AAILC,aAAO,EAAE;AAJJ,KAAD,CANyB;AAY/B66G,YAAQ,EAAE,CAAC;AACTntH,cAAQ,EAAE,CADD;AAETs+F,UAAI,EAAE,cAFG;AAGTjvD,UAAI,EAAE;AAHG,KAAD,CAZqB;AAiB/Bi+E,cAAU,EAAE,CAAC;AACX3hH,WAAK,EAAE;AADI,KAAD;AAjBmB,GAAjC;AAqBAsiH,UAAQ,CAACL,eAAT,CAAyB,aAAzB,EAAwC;AACtC7C,SAAK,EAAE,CAAC;AACNP,gBAAU,EAAEv+G,EADN;AAENoG,WAAK,EAAE;AAFD,KAAD,CAD+B;AAKtC44G,QAAI,EAAE,CAAC;AACLT,gBAAU,EAAEv+G,EADP;AAELoG,WAAK,EAAE,IAFF;AAGLC,aAAO,EAAE;AAHJ,KAAD,CALgC;AAUtC64G,QAAI,EAAE,CAAC;AACLX,gBAAU,EAAEv+G,EADP;AAELw+G,gBAAU,EAAEv+G,EAFP;AAGLmG,WAAK,EAAE,GAHF;AAILC,aAAO,EAAE;AAJJ,KAAD,CAVgC;AAgBtC66G,YAAQ,EAAE,CAAC,EAAD,CAhB4B;AAiBtCG,cAAU,EAAE,CAAC,EAAD;AAjB0B,GAAxC;AAmBAW,UAAQ,CAACL,eAAT,CAAyB,aAAzB,EAAwC;AACtC7C,SAAK,EAAE,CAAC;AACN14G,WAAK,EAAE;AADD,KAAD,CAD+B;AAItC44G,QAAI,EAAE,CAAC;AACL54G,WAAK,EAAE,IADF;AAELC,aAAO,EAAE;AAFJ,KAAD,CAJgC;AAQtC64G,QAAI,EAAE,CAAC;AACL94G,WAAK,EAAE,CADF;AAELC,aAAO,EAAE;AAFJ,KAAD,CARgC;AAYtC+4G,QAAI,EAAE,CAAC;AACLb,gBAAU,EAAEv+G,EADP;AAELw+G,gBAAU,EAAEv+G,EAFP;AAGLmG,WAAK,EAAE,GAHF;AAILC,aAAO,EAAE;AAJJ,KAAD,CAZgC;AAkBtC66G,YAAQ,EAAE,CAAC,EAAD,CAlB4B;AAmBtCG,cAAU,EAAE,CAAC,EAAD;AAnB0B,GAAxC;AAqBAW,UAAQ,CAACL,eAAT,CAAyB,gBAAzB,EAA2C;AACzC7C,SAAK,EAAE,CAAC,EAAD,CADkC;AAEzCI,QAAI,EAAE,CAAC;AACL94G,WAAK,EAAE,GADF;AAELC,aAAO,EAAE;AAFJ,KAAD,CAFmC;AAMzC+4G,QAAI,EAAE,CAAC;AACLh5G,WAAK,EAAE,GADF;AAELC,aAAO,EAAE;AAFJ,KAAD,CANmC;AAUzC66G,YAAQ,EAAE,CAAC,EAAD,CAV+B;AAWzCG,cAAU,EAAE,CAAC,EAAD;AAX6B,GAA3C;AAaAW,UAAQ,CAACL,eAAT,CAAyB,aAAzB,EAAwC;AACtC7C,SAAK,EAAE,CAAC,EAAD,CAD+B;AAEtCM,QAAI,EAAE,CAAC;AACLh5G,WAAK,EAAE;AADF,KAAD,CAFgC;AAKtCy5G,mBAAe,EAAE,CAAC;AAChBz5G,WAAK,EAAE,GADS;AAEhBm4G,gBAAU,EAAE,CAAC,CAFG;AAGhBC,gBAAU,EAAE,CAHI;AAIhBn4G,aAAO,EAAE;AAJO,KAAD,CALqB;AAWtC66G,YAAQ,EAAE,CAAC,EAAD,CAX4B;AAYtCG,cAAU,EAAE,CAAC,EAAD;AAZ0B,GAAxC;AAcAW,UAAQ,CAACL,eAAT,CAAyB,qBAAzB,EAAgD;AAC9C7C,SAAK,EAAE,CAAC,EAAD,CADuC;AAE9CM,QAAI,EAAE,CAAC,EAAD,CAFwC;AAG9CS,mBAAe,EAAE,CAAC;AAChBz5G,WAAK,EAAE,GADS;AAEhBm4G,gBAAU,EAAEv+G,EAFI;AAGhBw+G,gBAAU,EAAEv+G,EAHI;AAIhBoG,aAAO,EAAE;AAJO,KAAD,CAH6B;AAS9C25G,kBAAc,EAAE,CAAC;AACfzB,gBAAU,EAAEv+G,EADG;AAEfw+G,gBAAU,EAAEv+G,EAFG;AAGfmG,WAAK,EAAE,GAHQ;AAIfC,aAAO,EAAE;AAJM,KAAD,CAT8B;AAe9C66G,YAAQ,EAAE,CAAC,EAAD,CAfoC;AAgB9CG,cAAU,EAAE,CAAC,EAAD;AAhBkC,GAAhD;AAkBAW,UAAQ,CAACL,eAAT,CAAyB,kBAAzB,EAA6C;AAC3C7C,SAAK,EAAE,CAAC,EAAD,CADoC;AAE3CM,QAAI,EAAE,CAAC,EAAD,CAFqC;AAG3CS,mBAAe,EAAE,CAAC;AAChBz5G,WAAK,EAAE;AADS,KAAD,CAH0B;AAM3C45G,kBAAc,EAAE,CAAC;AACf55G,WAAK,EAAE,CADQ;AAEfC,aAAO,EAAE;AAFM,KAAD,CAN2B;AAU3C66G,YAAQ,EAAE,CAAC,EAAD,CAViC;AAW3CG,cAAU,EAAE,CAAC,EAAD;AAX+B,GAA7C;AAaAW,UAAQ,CAACL,eAAT,CAAyB,QAAzB,EAAmC;AACjC7C,SAAK,EAAE,CAAC;AACNz4G,aAAO,EAAE;AADH,KAAD,CAD0B;AAIjC+4G,QAAI,EAAE,CAAC;AACLh5G,WAAK,EAAE;AADF,KAAD,CAJ2B;AAOjCy5G,mBAAe,EAAE,CAAC;AAChBz5G,WAAK,EAAE;AADS,KAAD,CAPgB;AAUjC45G,kBAAc,EAAE,CAAC;AACf55G,WAAK,EAAE;AADQ,KAAD,CAViB;AAajC86G,YAAQ,EAAE,CAAC,EAAD,CAbuB;AAcjCG,cAAU,EAAE,CAAC,EAAD;AAdqB,GAAnC;AAgBAW,UAAQ,CAACL,eAAT,CAAyB,KAAzB,EAAgC;AAC9B9B,mBAAe,EAAE,CAAC;AAChBx5G,aAAO,EAAE;AADO,KAAD,CADa;AAI9B25G,kBAAc,EAAE,CAAC;AACf35G,aAAO,EAAE;AADM,KAAD,CAJc;AAO9B+4G,QAAI,EAAE,CAAC;AACL/4G,aAAO,EAAE;AADJ,KAAD,CAPwB;AAU9Bs4G,OAAG,EAAE,CAAC;AACJJ,gBAAU,EAAE,CAACtmH,KAAK,CAACgiG,aAAN,GAAsBnM,aAAvB,GAAuCquB,iBAAW,CAACQ,KAD3D;AAEJ6B,gBAAU,EAAExhH,cAAc,GAAG,CAAjB,GAAqBm/G,iBAAW,CAACO,MAFzC;AAGJN,WAAK,EAAE;AAHH,KAAD,CAVyB;AAe9BqD,WAAO,EAAE,CAAC;AACRlB,gBAAU,EAAE,CAACtmH,KAAK,CAACgiG,aAAN,GAAsBnM,aAAvB,GAAuCquB,iBAAW,CAACQ,KADvD;AAER6B,gBAAU,EAAExhH,cAAc,GAAG,CAAjB,GAAqBm/G,iBAAW,CAACO,MAFrC;AAGRN,WAAK,EAAE;AAHC,KAAD,CAfqB;AAoB9B8E,YAAQ,EAAE,CAAC;AACTntH,cAAQ,EAAE,CAAC,CADF;AAETqvC,UAAI,EAAE;AAFG,KAAD,CApBoB;AAwB9Bi+E,cAAU,EAAE,CAAC;AACX3hH,WAAK,EAAE;AADI,KAAD;AAxBkB,GAAhC;AA4BAsiH,UAAQ,CAACL,eAAT,CAAyB,eAAzB,EAA0C;AACxChD,OAAG,EAAE,CAAC;AACJH,gBAAU,EAAExhH,cAAc,GAAG,CAAjB,GAAqB,MAAMm/G,iBAAW,CAACO,MAD/C;AAEJN,WAAK,EAAE;AAFH,KAAD,CADmC;AAKxCqD,WAAO,EAAE,CAAC;AACRjB,gBAAU,EAAExhH,cAAc,GAAG,CAAjB,GAAqB,MAAMm/G,iBAAW,CAACO,MAD3C;AAERN,WAAK,EAAE,iBAAW;AAChB,YAAIiG,KAAK,GAAGH,OAAO,KAAKjqH,KAAK,CAACgiG,aAAN,GAAsBnM,aAA9C;AACA,eAAO,UAAS1+E,CAAT,EAAY;AACjB,iBAAOA,CAAC,CAAC68E,MAAF,KAAa,GAAb,IAAoB78E,CAAC,CAACrjB,GAAF,GAAQs2H,KAA5B,GAAoC,CAApC,GAAwC,CAA/C;AACD,SAFD;AAGD;AAPO,KAAD,CAL+B;AAcxC3C,QAAI,EAAE,CAAC;AACLlB,gBAAU,EAAExhH,cAAc,GAAG,CAAjB,GAAqB,MAAMm/G,iBAAW,CAACO,MAD9C;AAELN,WAAK,EAAE,CAFF;AAGLjjF,eAAS,EAAE;AAHN,KAAD,CAdkC;AAmBxC+nF,YAAQ,EAAE,CAAC;AACTntH,cAAQ,EAAE,oBAAW;AACnB,eAAOtJ,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAASsN,KAAK,CAACmW,GAAN,CAAU,KAAV,EAAiB9kB,MAAjB,GAA0B,EAAnC,EAAuC44H,OAAO,KAAK,CAAnD,CAAZ,IAAqE,CAA5E;AACD,OAHQ;AAIT7vB,UAAI,EAAE;AAJG,KAAD,CAnB8B;AAyBxCgvB,cAAU,EAAE,CAAC,EAAD;AAzB4B,GAA1C;AA2BAW,UAAQ,CAACL,eAAT,CAAyB,mBAAzB,EAA8C;AAC5ChD,OAAG,EAAE,CAAC,EAAD,CADuC;AAE5Cc,WAAO,EAAE,CAAC;AACRrD,WAAK,EAAE,iBAAW;AAChB,eAAO,UAAShtG,CAAT,EAAY;AACjB,iBAAOA,CAAC,CAAC68E,MAAF,KAAa,GAAb,GAAmB,CAAnB,GAAuB,CAA9B;AACD,SAFD;AAGD;AALO,KAAD,CAFmC;AAS5CyzB,QAAI,EAAE,CAAC,EAAD,CATsC;AAU5CG,mBAAe,EAAE,CAAC;AAChBtB,gBAAU,EAAE,sBAAW;AACrB,eAAOtmH,KAAK,CAACmW,GAAN,CAAU,KAAV,EAAiB9kB,MAAjB,GAA0B6yH,iBAAW,CAACQ,KAA7C;AACD,OAHe;AAIhB6B,gBAAU,EAAE,MAAMxhH,cAJF;AAKhBoJ,WAAK,EAAE,GALS;AAMhBC,aAAO,EAAE;AANO,KAAD,CAV2B;AAkB5C25G,kBAAc,EAAE,CAAC;AACfzB,gBAAU,EAAE,sBAAW;AACrB,eAAOtmH,KAAK,CAACmW,GAAN,CAAU,KAAV,EAAiB9kB,MAAjB,GAA0B6yH,iBAAW,CAACQ,KAA7C;AACD,OAHc;AAIf6B,gBAAU,EAAE,MAAMxhH,cAJH;AAKfoJ,WAAK,EAAE,GALQ;AAMfC,aAAO,EAAE;AANM,KAAD,CAlB4B;AA0B5C66G,YAAQ,EAAE,CAAC;AACTntH,cAAQ,EAAE,oBAAW;AACnB,eAAOtJ,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYuN,KAAK,CAACmW,GAAN,CAAU,KAAV,EAAiB9kB,MAAjB,GAA0B,EAAtC,IAA4C,CAAnD;AACD;AAHQ,KAAD,CA1BkC;AA+B5C+3H,cAAU,EAAE,CAAC,EAAD;AA/BgC,GAA9C;AAiCAW,UAAQ,CAACL,eAAT,CAAyB,qBAAzB,EAAgD;AAC9ChD,OAAG,EAAE,CAAC,EAAD,CADyC;AAE9Cc,WAAO,EAAE,CAAC,EAAD,CAFqC;AAG9CC,QAAI,EAAE,CAAC,EAAD,CAHwC;AAI9CG,mBAAe,EAAE,CAAC;AAChBx5G,aAAO,EAAE;AADO,KAAD,CAJ6B;AAO9C25G,kBAAc,EAAE,CAAC;AACf35G,aAAO,EAAE;AADM,KAAD,CAP8B;AAU9C66G,YAAQ,EAAE,CAAC,EAAD,CAVoC;AAW9CG,cAAU,EAAE,CAAC,EAAD;AAXkC,GAAhD;AAaAW,UAAQ,CAACL,eAAT,CAAyB,uBAAzB,EAAkD;AAChDhD,OAAG,EAAE,CAAC,EAAD,CAD2C;AAEhDc,WAAO,EAAE,CAAC,EAAD,CAFuC;AAGhDC,QAAI,EAAE,CAAC,EAAD,CAH0C;AAIhDG,mBAAe,EAAE,CAAC;AAChBz5G,WAAK,EAAE;AADS,KAAD,CAJ+B;AAOhD45G,kBAAc,EAAE,CAAC;AACf55G,WAAK,EAAE,GADQ;AAEfC,aAAO,EAAE;AAFM,KAAD,CAPgC;AAWhD66G,YAAQ,EAAE,CAAC,EAAD,CAXsC;AAYhDG,cAAU,EAAE,CAAC;AACX3hH,WAAK,EAAE;AADI,KAAD;AAZoC,GAAlD;AAgBAsiH,UAAQ,CAACL,eAAT,CAAyB,uBAAzB,EAAkD;AAChDhD,OAAG,EAAE,CAAC,EAAD,CAD2C;AAEhDc,WAAO,EAAE,CAAC,EAAD,CAFuC;AAGhDC,QAAI,EAAE,CAAC,EAAD,CAH0C;AAIhDG,mBAAe,EAAE,CAAC;AAChBtB,gBAAU,EAAE,sBAAW;AACrB,eAAOtmH,KAAK,CAACmW,GAAN,CAAU,WAAV,IAAyB,MAAMrR,aAA/B,GAA+C,CAAtD;AACD,OAHe;AAGb;AACHyhH,gBAAU,EAAE,MAAMxhH,cAAN,GAAuB,CAJnB;AAKhBoJ,WAAK,EAAE;AALS,KAAD,CAJ+B;AAWhD86G,YAAQ,EAAE,CAAC,EAAD,CAXsC;AAYhDG,cAAU,EAAE,CAAC,EAAD;AAZoC,GAAlD;AAcAW,UAAQ,CAACL,eAAT,CAAyB,uBAAzB,EAAkD;AAChDhD,OAAG,EAAE,CAAC,EAAD,CAD2C;AAEhDc,WAAO,EAAE,CAAC,EAAD,CAFuC;AAGhDC,QAAI,EAAE,CAAC,EAAD,CAH0C;AAIhDS,WAAO,EAAE,CAAC;AACR5B,gBAAU,EAAE,MAAMxhH,aAAN,GAAsB,IAAIo/G,iBAAW,CAACQ,KAD1C;AAER6B,gBAAU,EAAE,MAAMxhH;AAFV,KAAD,CAJuC;AAQhDkkH,YAAQ,EAAE,CAAC;AACTntH,cAAQ,EAAE,CAAC,CADF;AAETs+F,UAAI,EAAE;AAFG,KAAD,CARsC;AAYhDgvB,cAAU,EAAE,CAAC,EAAD;AAZoC,GAAlD;AAcAW,UAAQ,CAACL,eAAT,CAAyB,uBAAzB,EAAkD;AAChDhD,OAAG,EAAE,CAAC;AACJH,gBAAU,EAAE,IAAIrC,iBAAW,CAACO;AADxB,KAAD,CAD2C;AAIhD+C,WAAO,EAAE,CAAC;AACRjB,gBAAU,EAAE,IAAIrC,iBAAW,CAACO,MADpB;AAERN,WAAK,EAAE;AAFC,KAAD,CAJuC;AAQhDsD,QAAI,EAAE,CAAC;AACLtD,WAAK,EAAE;AADF,KAAD,CAR0C;AAWhD+D,WAAO,EAAE,CAAC;AACR3B,gBAAU,EAAE;AADJ,KAAD,CAXuC;AAchD0C,YAAQ,EAAE,CAAC,EAAD,CAdsC;AAehDG,cAAU,EAAE,CAAC;AACX3hH,WAAK,EAAE,iBAAW;AAChB,eAAOzH,KAAK,CAACmW,GAAN,CAAU,iBAAV,CAAP;AACD;AAHU,KAAD;AAfoC,GAAlD;AAqBA4zG,UAAQ,CAACL,eAAT,CAAyB,uBAAzB,EAAkD;AAChDhD,OAAG,EAAE,CAAC;AACJH,gBAAU,EAAE,CAAC,CAAD,GAAKrC,iBAAW,CAACO;AADzB,KAAD,CAD2C;AAIhD+C,WAAO,EAAE,CAAC;AACRjB,gBAAU,EAAE,CAAC,CAAD,GAAKrC,iBAAW,CAACO;AADrB,KAAD,CAJuC;AAOhDgD,QAAI,EAAE,CAAC;AACLlB,gBAAU,EAAE,MAAMrC,iBAAW,CAACO;AADzB,KAAD,CAP0C;AAUhDyD,WAAO,EAAE,CAAC;AACR3B,gBAAU,EAAEtC,qBAAC,CAACkE,OAAF,GAAY,CAAC;AADjB,KAAD,CAVuC;AAahDc,YAAQ,EAAE,CAAC,EAAD,CAbsC;AAchDG,cAAU,EAAE,CAAC,EAAD;AAdoC,GAAlD;AAgBAW,UAAQ,CAACL,eAAT,CAAyB,oBAAzB,EAA+C;AAC7CjC,QAAI,EAAE,CAAC;AACLlB,gBAAU,EAAE,MAAMrC,iBAAW,CAACO,MADzB;AAELvjF,eAAS,EAAE,CAFN;AAGLijF,WAAK,EAAE;AAHF,KAAD,CADuC;AAM7CiE,kBAAc,EAAE,CAAC;AACf9B,gBAAU,EAAE,CAAC,CADE;AAEfC,gBAAU,EAAEv+G,EAFG;AAGfoG,aAAO,EAAE;AAHM,KAAD,CAN6B;AAW7C66G,YAAQ,EAAE,CAAC,EAAD,CAXmC;AAY7CG,cAAU,EAAE,CAAC,EAAD;AAZiC,GAA/C;AAcAW,UAAQ,CAACL,eAAT,CAAyB,gBAAzB,EAA2C;AACzCjC,QAAI,EAAE,CAAC,EAAD,CADmC;AAEzCW,kBAAc,EAAE,CAAC;AACf9B,gBAAU,EAAE4D,SADG;AAEf3D,gBAAU,EAAE,OAAOrC,iBAAW,CAACO,MAFhB;AAGfr2G,aAAO,EAAE;AAHM,KAAD,CAFyB;AAOzCk6G,eAAW,EAAE,CAAC;AACZhC,gBAAU,EAAE,CAAC,CADD;AAEZC,gBAAU,EAAE,CAFA;AAGZn4G,aAAO,EAAE;AAHG,KAAD,CAP4B;AAYzC66G,YAAQ,EAAE,CAAC,EAAD,CAZ+B;AAazCG,cAAU,EAAE,CAAC,EAAD;AAb6B,GAA3C;AAeAW,UAAQ,CAACL,eAAT,CAAyB,gBAAzB,EAA2C;AACzCjC,QAAI,EAAE,CAAC,EAAD,CADmC;AAEzCW,kBAAc,EAAE,CAAC,EAAD,CAFyB;AAGzCE,eAAW,EAAE,CAAC;AACZhC,gBAAU,EAAE4D,SADA;AAEZ3D,gBAAU,EAAE,OAAOrC,iBAAW,CAACO,MAFnB;AAGZr2G,aAAO,EAAE;AAHG,KAAD,CAH4B;AAQzCo6G,iBAAa,EAAE,CAAC;AACdlC,gBAAU,EAAE4D,SADE;AAEd3D,gBAAU,EAAE,MAAMrC,iBAAW,CAACO,MAFhB;AAGdr2G,aAAO,EAAE;AAHK,KAAD,CAR0B;AAazCs6G,gBAAY,EAAE,CAAC;AACbpC,gBAAU,EAAE4D,SADC;AAEb3D,gBAAU,EAAE,MAAMrC,iBAAW,CAACO,MAFjB;AAGbr2G,aAAO,EAAE;AAHI,KAAD,CAb2B;AAkBzC66G,YAAQ,EAAE,CAAC,EAAD,CAlB+B;AAmBzCG,cAAU,EAAE,CAAC,EAAD;AAnB6B,GAA3C;AAqBAW,UAAQ,CAACL,eAAT,CAAyB,aAAzB,EAAwC;AACtCjC,QAAI,EAAE,CAAC;AACLtD,WAAK,EAAE,iBAAW;AAChB,YAAIr1F,IAAI,GAAGm7F,OAAO,EAAlB;AACA,eAAO,UAAS9yG,CAAT,EAAY;AACjB,iBAAOA,CAAC,CAACrjB,GAAF,GAAQ,KAAKg7B,IAAI,GAAG,CAAZ,CAAR,IAA0B3X,CAAC,CAACrjB,GAAF,IAAS,IAAIg7B,IAAvC,GAA8C,CAA9C,GAAkD,CAAzD;AACD,SAFD;AAGD;AANI,KAAD,CADgC;AAStC05F,iBAAa,EAAE,CAAC;AACdp6G,aAAO,EAAE;AADK,KAAD,CATuB;AAYtCs6G,gBAAY,EAAE,CAAC;AACbt6G,aAAO,EAAE;AADI,KAAD,CAZwB;AAetCw6G,QAAI,EAAE,CAAC;AACLl+F,WAAK,EAAE,iBAAW;AAChB,eAAOu/F,OAAO,KAAK,CAAnB;AACD,OAHI;AAIL3D,gBAAU,EAAE6D,KAJP;AAKL5D,gBAAU,EAAE,MAAMrC,iBAAW,CAACO,MALzB;AAMLuE,UAAI,EAAE;AAND,KAAD,EAOH;AACDt+F,WAAK,EAAE,iBAAW;AAChB,eAAOu/F,OAAO,KAAK,CAAnB;AACD,OAHA;AAID3D,gBAAU,EAAE6D,KAJX;AAKD5D,gBAAU,EAAE,MAAMrC,iBAAW,CAACO,MAL7B;AAMDuE,UAAI,EAAE;AANL,KAPG,CAfgC;AA8BtCC,YAAQ,EAAE,CAAC;AACTntH,cAAQ,EAAE,oBAAW;AACnB,eAAOtJ,IAAI,CAACC,GAAL,CAAS,CAAT,EAAY,KAAKw3H,OAAO,KAAK,CAAjB,CAAZ,IAAmC,CAA1C;AACD,OAHQ;AAIT7vB,UAAI,EAAE;AAJG,KAAD,CA9B4B;AAoCtCgvB,cAAU,EAAE,CAAC,EAAD;AApC0B,GAAxC;AAsCAW,UAAQ,CAACL,eAAT,CAAyB,mBAAzB,EAA8C;AAC5CjC,QAAI,EAAE,CAAC;AACLtD,WAAK,EAAE,iBAAW;AAChB,YAAIr1F,IAAI,GAAGm7F,OAAO,EAAlB;AACA,eAAO,UAAS9yG,CAAT,EAAY;AACjB,iBAAOA,CAAC,CAACrjB,GAAF,GAAQ,KAAKg7B,IAAI,GAAG,CAAZ,CAAR,IAA0B3X,CAAC,CAACrjB,GAAF,IAAS,IAAIg7B,IAAvC,GAA8C,CAA9C,GAAkD,CAAzD;AACD,SAFD;AAGD;AANI,KAAD,CADsC;AAS5C05F,iBAAa,EAAE,CAAC,EAAD,CAT6B;AAU5CE,gBAAY,EAAE,CAAC,EAAD,CAV8B;AAW5CE,QAAI,EAAE,CAAC;AACLl+F,WAAK,EAAE,iBAAW;AAChB,eAAOu/F,OAAO,KAAK,CAAnB;AACD;AAHI,KAAD,EAIH;AACDv/F,WAAK,EAAE,iBAAW;AAChB,eAAOu/F,OAAO,KAAK,CAAnB;AACD;AAHA,KAJG,EAQH;AACDv/F,WAAK,EAAE,iBAAW;AAChB,eAAOu/F,OAAO,KAAK,CAAnB;AACD,OAHA;AAID3D,gBAAU,EAAE6D,KAJX;AAKD5D,gBAAU,EAAE,MAAMrC,iBAAW,CAACO,MAL7B;AAMDuE,UAAI,EAAE;AANL,KARG,CAXsC;AA2B5CC,YAAQ,EAAE,CAAC,EAAD,CA3BkC;AA4B5CG,cAAU,EAAE,CAAC,EAAD;AA5BgC,GAA9C;AA8BAW,UAAQ,CAACL,eAAT,CAAyB,mBAAzB,EAA8C;AAC5CjC,QAAI,EAAE,CAAC,EAAD,CADsC;AAE5Ce,iBAAa,EAAE,CAAC,EAAD,CAF6B;AAG5CE,gBAAY,EAAE,CAAC,EAAD,CAH8B;AAI5CE,QAAI,EAAE,CAAC,EAAD,EAAK;AACTI,UAAI,EAAE;AADG,KAAL,EAEH,EAFG,CAJsC;AAO5CC,YAAQ,EAAE,CAAC,EAAD,CAPkC;AAQ5CG,cAAU,EAAE,CAAC,EAAD;AARgC,GAA9C;AAUAW,UAAQ,CAACL,eAAT,CAAyB,oBAAzB,EAA+C;AAC7CjC,QAAI,EAAE,CAAC,EAAD,CADuC;AAE7Ce,iBAAa,EAAE,CAAC,EAAD,CAF8B;AAG7CE,gBAAY,EAAE,CAAC,EAAD,CAH+B;AAI7CE,QAAI,EAAE,CAAC;AACLl+F,WAAK,EAAE,iBAAW;AAChB,eAAOu/F,OAAO,KAAK,CAAnB;AACD;AAHI,KAAD,EAIH;AACDv/F,WAAK,EAAE,iBAAW;AAChB,eAAOu/F,OAAO,KAAK,CAAnB;AACD,OAHA;AAIDjB,UAAI,EAAE;AAJL,KAJG,CAJuC;AAc7CC,YAAQ,EAAE,CAAC,EAAD,CAdmC;AAe7CG,cAAU,EAAE,CAAC,EAAD;AAfiC,GAA/C;AAiBAW,UAAQ,CAACL,eAAT,CAAyB,oBAAzB,EAA+C;AAC7CjC,QAAI,EAAE,CAAC;AACLtD,WAAK,EAAE,iBAAW;AAChB,YAAIr1F,IAAI,GAAGm7F,OAAO,EAAlB;AACA,eAAO,UAAS9yG,CAAT,EAAY;AACjB,iBAAOA,CAAC,CAACrjB,GAAF,GAAQ,KAAKg7B,IAAI,GAAG,CAAZ,CAAR,IAA0B3X,CAAC,CAACrjB,GAAF,IAAS,IAAIg7B,IAAvC,GAA8C,CAA9C,GAAkD,CAAzD;AACD,SAFD;AAGD;AANI,KAAD,CADuC;AAS7C05F,iBAAa,EAAE,CAAC,EAAD,CAT8B;AAU7CE,gBAAY,EAAE,CAAC,EAAD,CAV+B;AAW7CE,QAAI,EAAE,CAAC;AACLl+F,WAAK,EAAE,iBAAW;AAChB,eAAOu/F,OAAO,KAAK,CAAnB;AACD;AAHI,KAAD,CAXuC;AAgB7ChB,YAAQ,EAAE,CAAC,EAAD,CAhBmC;AAiB7CG,cAAU,EAAE,CAAC,EAAD;AAjBiC,GAA/C;AAmBAW,UAAQ,CAACL,eAAT,CAAyB,oBAAzB,EAA+C;AAC7CjC,QAAI,EAAE,CAAC;AACLtD,WAAK,EAAE;AADF,KAAD,CADuC;AAI7CqE,iBAAa,EAAE,CAAC,EAAD,CAJ8B;AAK7CE,gBAAY,EAAE,CAAC,EAAD,CAL+B;AAM7CO,YAAQ,EAAE,CAAC,EAAD,CANmC;AAO7CG,cAAU,EAAE,CAAC,EAAD;AAPiC,GAA/C;AASAW,UAAQ,CAACL,eAAT,CAAyB,oBAAzB,EAA+C;AAC7CjC,QAAI,EAAE,CAAC,EAAD,CADuC;AAE7CW,kBAAc,EAAE,CAAC;AACf9B,gBAAU,EAAE4D,SADG;AAEf3D,gBAAU,EAAE,OAAOrC,iBAAW,CAACO,MAFhB;AAGfr2G,aAAO,EAAE;AAHM,KAAD,CAF6B;AAO7Ck6G,eAAW,EAAE,CAAC;AACZhC,gBAAU,EAAE4D,SADA;AAEZ3D,gBAAU,EAAE,OAAOrC,iBAAW,CAACO,MAFnB;AAGZr2G,aAAO,EAAE;AAHG,KAAD,CAPgC;AAY7C66G,YAAQ,EAAE,CAAC,EAAD,CAZmC;AAa7CG,cAAU,EAAE,CAAC,EAAD;AAbiC,GAA/C;AAeAW,UAAQ,CAACL,eAAT,CAAyB,oBAAzB,EAA+C;AAC7CjC,QAAI,EAAE,CAAC,EAAD,CADuC;AAE7CW,kBAAc,EAAE,CAAC;AACf7B,gBAAU,EAAE,OAAOrC,iBAAW,CAACO,MAAnB,GAA4B;AADzB,KAAD,CAF6B;AAK7C6D,eAAW,EAAE,CAAC;AACZ/B,gBAAU,EAAE,OAAOrC,iBAAW,CAACO,MAAnB,GAA4B;AAD5B,KAAD,CALgC;AAQ7CwE,YAAQ,EAAE,CAAC,EAAD,CARmC;AAS7CG,cAAU,EAAE,CAAC,EAAD;AATiC,GAA/C;AAWAW,UAAQ,CAACL,eAAT,CAAyB,oBAAzB,EAA+C;AAC7CjC,QAAI,EAAE,CAAC,EAAD,CADuC;AAE7CW,kBAAc,EAAE,CAAC;AACf9B,gBAAU,EAAE,sBAAW;AACrB,eAAO4D,SAAS,KAAK,CAArB;AACD,OAHc;AAIf3D,gBAAU,EAAE,OAAOrC,iBAAW,CAACO,MAAnB,GAA4B;AAJzB,KAAD,CAF6B;AAQ7C6D,eAAW,EAAE,CAAC;AACZhC,gBAAU,EAAE,sBAAW;AACrB,eAAO4D,SAAS,KAAK,CAArB;AACD,OAHW;AAIZ3D,gBAAU,EAAE,OAAOrC,iBAAW,CAACO,MAAnB,GAA4B;AAJ5B,KAAD,CARgC;AAc7CwE,YAAQ,EAAE,CAAC,EAAD,CAdmC;AAe7CG,cAAU,EAAE,CAAC,EAAD;AAfiC,GAA/C;AAiBAW,UAAQ,CAACL,eAAT,CAAyB,iBAAzB,EAA4C;AAC1CjC,QAAI,EAAE,CAAC,EAAD,CADoC;AAE1CwB,YAAQ,EAAE,CAAC,EAAD,CAFgC;AAG1CG,cAAU,EAAE,CAAC,EAAD;AAH8B,GAA5C;AAMA,SAAOW,QAAP;AACD;AAAA,C;;;;;;AClkBC;;;;;;;AAMF;;;;;CAMA;AACA;AACA;;AACAM,0BAA0B;AAEX;AACb;;;;;;AAMA7T,UAPa,oBAOJ1mG,QAPI,EAOM9P,KAPN,EAOag2F,aAPb,EAO4B79E,IAP5B,EAOkC;AAC7C;AACA;AACA;AACA;AACA,QAAImyG,iBAAiB,GAAG,IAAxB;;AACA,QAAMC,UAAU,GAAG,SAAbA,UAAa,CAAS5qH,OAAT,EAAkB;AACnC;AACA;AACA2qH,uBAAiB,GAAG52G,EAAE,CAACM,MAAH,CAAUrU,OAAO,CAACo3G,QAAR,CAAiB,CAAjB,CAAV,EAA+Bz5D,KAA/B,GAAuCrlD,IAA3D;AACA,UAAMuyH,SAAS,GAAG7qH,OAAO,CAACrC,KAAR,CAAc,cAAd,EAA8BA,KAAhD;;AACA,sCAAgB3L,MAAM,CAAC2b,IAAP,CAAYk9G,SAAS,IAAI,EAAzB,CAAhB,kCAA8C;AAAzC,YAAIh9G,GAAG,mBAAP;AACH,YAAMioB,IAAI,GAAG+0F,SAAS,CAACh9G,GAAD,CAAtB;AACAA,WAAG,GAAGA,GAAG,CAAC/N,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAN;AACAg2B,YAAI,CAACkhF,KAAL,CAAWr4G,QAAX,WAAuBgsH,iBAAvB,iBAA+C98G,GAA/C;AACD,OATkC,CAUnC;AACA;;;AACAkG,QAAE,CAACM,MAAH,CAAUrU,OAAO,CAACo3G,QAAR,CAAiB,CAAjB,CAAV,EAA+BhhG,OAA/B,CAAuC,SAAvC,EAAkD,IAAlD,EAZmC,CAanC;;AACA,aAAO,IAAP;AACD,KAfD;;AAgBA,QAAM00G,UAAU,GAAG,SAAbA,UAAa,CAAS9qH,OAAT,EAAkB;AACnC;AACA;AACA;AACA,UAAM6qH,SAAS,GAAG7qH,OAAO,CAACrC,KAAR,CAAc,cAAd,EAA8BA,KAAhD;;AACA,wCAAgB3L,MAAM,CAAC2b,IAAP,CAAYk9G,SAAS,IAAI,EAAzB,CAAhB,qCAA8C;AAAzC,YAAIh9G,GAAG,qBAAP;AACH,YAAMioB,IAAI,GAAG+0F,SAAS,CAACh9G,GAAD,CAAtB;AACAA,WAAG,GAAGA,GAAG,CAAC/N,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAN;AACAg2B,YAAI,CAACkhF,KAAL,CAAW/0G,WAAX,WAA0B0oH,iBAA1B,iBAAkD98G,GAAlD;AACD,OATkC,CAUnC;AACA;;;AACAkG,QAAE,CAACM,MAAH,CAAUrU,OAAO,CAACo3G,QAAR,CAAiB,CAAjB,CAAV,EAA+BhhG,OAA/B,CAAuC,SAAvC,EAAkD,KAAlD,EAZmC,CAanC;;AACA,aAAO,IAAP;AACD,KAfD,CAtB6C,CAuC7C;;;AACA/f,KAAC,CAAC0uB,WAAF,CAAc,SAAd,EAAyB5U,QAAzB,EAxC6C,CAyC7C;;AACA9Z,KAAC,CAAC0uB,WAAF,CAAc;AACZ;AACA5U,cAAQ,EAARA,QAFY;AAGZ;AACA7S,cAAQ,EAAE,yBAJE;AAKV;AACA6E,eAAS,EAAE,gBAND;AAOV;AACA6iB,aAAO,EAAE,MARC;AAUVyyF,YAAM,EAAE;AACNxqD,YAAI,EAAE29D,UADA;AAEN19D,YAAI,EAAE49D;AAFA,OAVE;AAeVtlG,cAfU,oBAeD3X,GAfC,EAeI7N,OAfJ,EAea;AACrB6N,WAAG,GAAGA,GAAG,CAAC/N,KAAJ,CAAU,GAAV,CAAN,CADqB,CAErB;;AACA,YAAM0X,CAAC,GAAGzD,EAAE,CAACM,MAAH,CAAUrU,OAAO,CAACo3G,QAAR,CAAiB,CAAjB,CAAV,EAA+Bz5D,KAA/B,EAAV;;AACA,gBAAQ9vC,GAAG,CAAC,CAAD,CAAX;AACE,eAAK,YAAL;AACE,mBAAOxN,KAAK,CAACgiG,aAAN,GAAsBlM,MAAtB,CAA6B3+E,CAAC,CAACrjB,GAA/B,EAAoC0Z,GAAG,CAAC,CAAD,CAAvC,EAA4CwoF,aAA5C,CAAP;;AACF,eAAK,QAAL;AACE,mBAAOh2F,KAAK,CAACgiG,aAAN,GAAsB/L,MAAtB,CAA6B9+E,CAAC,CAACrjB,GAA/B,EAAoC0Z,GAAG,CAAC,CAAD,CAAvC,EAA4CwoF,aAA5C,CAAP;;AACF,eAAK,QAAL;AACE,mBAAOh2F,KAAK,CAACgiG,aAAN,aAA6B7qF,CAAC,CAACrjB,GAA/B,CAAP;AANJ;AAQD,OA3BS;AA6BVwJ,WAAK,EAAE;AACL,wBAAgB;AACdtF,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,2CAAP,CADQ;AAEd7V,mBAAS,EAAE,sBAFG;AAGdxE,eAAK,EAAE;AACL,4BAAgB;AACdtF,kBAAI,EAAE;AADQ,aADX;AAIL,4BAAgB;AACdA,kBAAI,EAAE;AADQ,aAJX;AAOL,4BAAgB;AACdA,kBAAI,EAAE;AADQ,aAPX;AAUL,4BAAgB;AACdA,kBAAI,EAAE;AADQ;AAVX;AAHO,SADX;AAmBL,qBAAa;AACXA,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,wCAAP,CADK;AAEX7V,mBAAS,EAAE,mBAFA;AAGXxE,eAAK,EAAE;AACL,wBAAY;AACVtF,kBAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,4BAAP,CADI;AAEV7V,uBAAS,EAAE;AAFD,aADP;AAKL,wBAAY;AACV9J,kBAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,4BAAP,CADI;AAEV7V,uBAAS,EAAE;AAFD,aALP;AASL,wBAAY;AACV9J,kBAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,4BAAP,CADI;AAEV7V,uBAAS,EAAE;AAFD,aATP;AAaL,wBAAY;AACV9J,kBAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,4BAAP,CADI;AAEV7V,uBAAS,EAAE;AAFD;AAbP;AAHI,SAnBR;AAyCL,kBAAU;AACR9J,cAAI,EAAEmgB,IAAI,CAACR,CAAL,CAAO,uCAAP;AADE;AAzCL;AA7BG,KAAd,EA1C6C,CAqH7C;AACD;AA7HY,CAAf,E;;AChBA;AACA;AACA;AACA;AACA,IAAIquG,6BAAY,GAAGG,yBAAuB,CAACH,YAA3C,C,CAEA;AACA;AACA;;AACAtyG,EAAE,CAACzD,SAAH,CAAare,SAAb,CAAuB84H,SAAvB,GAAmC,YAAW;AAC5C,SAAO,KAAKz5G,IAAL,CAAU,YAAW;AAC1B,QAAI05G,IAAI,GAAG,KAAKC,cAAhB;;AACA,QAAID,IAAJ,EAAU;AACR,UAAIE,MAAM,GAAG,CAAC,CAAd;;AACA,WAAK,IAAI9tH,EAAT,IAAe4tH,IAAf;AACE,YAAI,CAAC5tH,EAAE,GAAG,CAACA,EAAP,IAAa8tH,MAAjB,EAAyBA,MAAM,GAAG9tH,EAAT;AAD3B;;AAEA4tH,UAAI,CAACE,MAAL,GAAcA,MAAM,GAAG,CAAvB;AACD;AACF,GARM,CAAP;AASD,CAVD;;AAYA,SAASC,eAAT,CAAyBnT,SAAzB,EAAoC33G,KAApC,EAA2C;AACzC,MAAI4P,GAAJ;AAAA,MACE8C,IAAI,GAAGilG,SAAS,CAACjlG,IADnB;AAAA,MAEEk/F,QAAQ,GAAG+F,SAAS,CAAC/F,QAFvB;AAAA,MAGEC,WAAW,GAAG8F,SAAS,CAAC9F,WAH1B;AAAA,MAIEkZ,SAAS,GAAGr3G,EAAE,CAACM,MAAH,CAAUtB,IAAV,EAAgBsB,MAAhB,CAAuB,cAAvB,CAJd;AAAA,MAMEwD,CAAC,GAAG,IANN;AAAA,MAOEwzG,YAAY,GAAG,IAPjB;AAAA,MAQE1yF,KAAK,GAAG,IARV;AAAA,MASE2yF,aAAa,GAAG,IATlB;AAAA,MAUEC,YAAY,GAAG,IAVjB;AAAA,MAWEC,gBAAgB,GAAG,KAXrB;AAAA,MAYEC,oBAAoB,GAAG,KAZzB;AAAA,MAaEC,mBAAmB,GAAG,IAbxB;AAAA,MAeEtB,QAAQ,GAAG,IAAIuB,iBAAJ,CAAsBtrH,KAAtB,CAfb;AAAA,MAgBEurH,cAAc,GAAG,IAAIpF,yBAAJ,CAA4BzzG,IAA5B,EAAkCk/F,QAAlC,EAA4CC,WAA5C,EAAyD7xG,KAAzD,CAhBnB;AAAA,MAkBEwrH,kBAlBF;;AAoBA,WAASlzG,IAAT,GAAgB;AACd;AACAtY,SAAK,CAACgiG,aAAN,GAAsBtzF,EAAtB,CAAyB,QAAzB,EAAmCqG,MAAnC,EAFc,CAGd;;AACA/U,SAAK,CAACgiG,aAAN,GAAsBtzF,EAAtB,CAAyB,YAAzB,EAAuCinF,UAAvC,EAJc,CAMd;;AACA31F,SAAK,CAACusB,qBAAN,CAA4B,CAAC,cAAD,CAA5B,EAA8C0e,KAA9C,EAPc,CASd;AACA;;AACAjrC,SAAK,CAACusB,qBAAN,CAA4B,CAAC,WAAD,CAA5B,EAA2C,YAAW;AACpD;AACA;AACA;AACA;AACA;AACA,UAAI,CAAC/U,CAAD,IAAM,CAACxX,KAAK,CAACmW,GAAN,CAAU,KAAV,CAAP,IAA4BmiB,KAAK,CAACtgC,IAAN,KAAe,eAAf,IAAkCozH,oBAAlE,EAAyF,OANrC,CAQpD;AACA;AACA;;AACA,UAAIr0G,IAAI,GAAGgzG,QAAQ,CAAC9xE,QAAT,CAAkBozE,mBAAmB,IAAI/yF,KAAK,CAACtgC,IAA/C,CAAX;AAEAuzH,oBAAc,CAAC9D,IAAf,CAAoBjwG,CAApB,EAAuBT,IAAvB,EAA6B,IAA7B;AACAw0G,oBAAc,CAAC7E,GAAf,CAAmBlvG,CAAnB,EAAsBT,IAAtB,EAA4B,IAA5B;AACAw0G,oBAAc,CAAC/D,OAAf,CAAuBhwG,CAAvB,EAA0BT,IAA1B,EAAgC,IAAhC;;AAEA,UAAI,CAACq0G,oBAAD,IACF9yF,KAAK,CAACtgC,IAAN,KAAe,iBADb,IAEFgI,KAAK,CAACoxC,gBAAN,KAA2B,CAF7B,EAEgC;AAC9BpxC,aAAK,CAACgiG,aAAN,GAAsBrN,aAAtB;AACD;AACF,KAtBD,EAXc,CAmCd;AACA;AACA;;AACA82B,0BAAoB,CAACjV,QAArB,CAA8B,4CAA9B,EAA4Ex2G,KAA5E,EAAmF,KAAnF,EAA0F23G,SAAS,CAACx/F,IAApG;AACAszG,0BAAoB,CAACjV,QAArB,CAA8B,iDAA9B,EAAiFx2G,KAAjF,EAAwF,IAAxF,EAA8F23G,SAAS,CAACx/F,IAAxG;AACD;AAED;;;;;;;;AAMA,WAAS8yB,KAAT,GAAiB;AACf3S,SAAK,GAAGt4B,KAAK,CAACgiG,aAAN,GAAsB1pE,KAAtB,EAAR,CADe,CAGf;;AACAk9D,qBAAiB;AACjBu1B,aAAS,CAACt1G,SAAV,CAAoB,YAApB,EAAkC5hB,MAAlC;AACA2jB,KAAC,GAAG,IAAJ;;AAEA,QAAI,CAACxX,KAAK,CAACmW,GAAN,CAAU,KAAV,CAAL,EAAuB;AACrB;AACA;AACA;AACD,KAZc,CAcf;;;AACAqB,KAAC,GAAGuzG,SAAS,CAAC90B,MAAV,CAAiB,GAAjB,EAAsB,wBAAtB,EAAgDxlF,IAAhD,CAAqD,OAArD,EAA8D,UAA9D,CAAJ;AACA+G,KAAC,CAACvZ,MAAF,CAAS,GAAT,EAAcwS,IAAd,CAAmB,OAAnB,EAA4B,kBAA5B;AACA+G,KAAC,CAACvZ,MAAF,CAAS,GAAT,EAAcwS,IAAd,CAAmB,OAAnB,EAA4B,iBAA5B;AACA+G,KAAC,CAACvZ,MAAF,CAAS,GAAT,EAAcwS,IAAd,CAAmB,OAAnB,EAA4B,WAA5B;AACA+G,KAAC,CAACvZ,MAAF,CAAS,GAAT,EAAcwS,IAAd,CAAmB,OAAnB,EAA4B,gBAA5B;AACA+G,KAAC,CAACvZ,MAAF,CAAS,GAAT,EAAcwS,IAAd,CAAmB,OAAnB,EAA4B,WAA5B;AAEAsE,UAAM;AACP;AAED;;;;;;AAIA,WAASA,MAAT,CAAgBwgF,sBAAhB,EAAwC;AACtC41B,oBAAgB,GAAG51B,sBAAnB,CADsC,CAGtC;;AACAj9D,SAAK,GAAGt4B,KAAK,CAACgiG,aAAN,GAAsB1pE,KAAtB,EAAR;AAEAk9D,qBAAiB,GANqB,CAQtC;AACA;AACA;AACA;;AACAk2B,eAAW,CAACl0G,CAAD,EAAI8gB,KAAK,CAACtgC,IAAV,EAAgB,IAAhB,EAAsBozH,oBAAtB,CAAX;AAEAA,wBAAoB,GAAG,KAAvB;AACD;AAED;;;;;;;;;;;;;;;AAaA,WAASM,WAAT,CAAqB37G,MAArB,EAA6B47G,SAA7B,EAAwCC,eAAxC,EAAyDC,QAAzD,EAAmE;AACjE,QAAI90G,IAAI,GAAGgzG,QAAQ,CAAC9xE,QAAT,CAAkB0zE,SAAlB,CAAX;AAAA,QACEG,iBAAiB,GAAGb,aAAa,GAAGlB,QAAQ,CAAC9xE,QAAT,CAAkBgzE,aAAlB,CAAH,GAAsC,IADzE,CADiE,CAIjE;;AACA,aAASc,eAAT,CAAyB/zH,IAAzB,EAA+B;AAC7B,UAAIg0H,MAAM,GAAG,CAAC,CAACj1G,IAAI,CAAC/e,IAAD,CAAJ,CAAW3G,MAA1B;AAAA,UACE46H,UAAU,GAAG,CAAC,EAAEH,iBAAiB,IAAIA,iBAAiB,CAAC9zH,IAAD,CAAjB,CAAwB3G,MAA/C,CADhB;;AAGA,UAAI85H,gBAAgB,IAAInzH,IAAI,KAAK,UAAjC,EAA6C;AAC3C;AACA,eAAO,KAAP;AACD,OAHD,MAGO,IAAI6zH,QAAQ,IAAIG,MAAZ,IAAsBC,UAA1B,EAAsC;AAC3C;AACA,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD;;AAED,aAASl3G,MAAT,GAAkB;AAChBhF,YAAM,CAACkB,IAAP,CAAY,YAAW;AACrB,YAAIlB,MAAM,GAAG2D,EAAE,CAACM,MAAH,CAAU,IAAV,CAAb;AACAgyG,qCAAY,CAACz4G,OAAb,CAAqB,UAASvV,IAAT,EAAe;AAClC,cAAI+zH,eAAe,CAAC/zH,IAAD,CAAnB,EAA2B;AACzBuzH,0BAAc,CAACvzH,IAAD,CAAd,CAAqB+X,MAArB,EAA6BgH,IAA7B;AACD;AACF,SAJD;AAKD,OAPD;AAQA,UAAI60G,eAAJ,EAAqBA,eAAe,CAAC77G,MAAD,CAAf;AACtB;;AAED,QAAIA,MAAM,CAACq+C,QAAX,EAAqB;AACnB;AACAr+C,YAAM,CAACkB,IAAP,CAAY,uBAAZ,EAAqC,YAAW;AAC9Co6G,2BAAmB,GAAGM,SAAtB;AACA52G,cAAM;AACP,OAHD;AAIAhF,YAAM,CAACkB,IAAP,CAAY,qBAAZ,EAAmC,YAAW;AAC5Co6G,2BAAmB,GAAG,IAAtB;AACD,OAFD;AAGD,KATD,MASO;AACLt2G,YAAM;AACP;;AAEDk2G,iBAAa,GAAGU,SAAhB;AACAT,gBAAY,GAAG5yF,KAAK,CAACxJ,IAAN,IAAc,CAA7B,CA7CiE,CA6CjC;AACjC;AAED;;;;;;;;;AAOA,WAASo9F,SAAT,CAAmBC,QAAnB,EAA6B;AAC3B,QAAIC,QAAJ,CAD2B,CAE3B;AACA;AACA;AACA;;AACA,QAAI,CAACD,QAAD,IAAanB,YAAb,IAA6BA,YAAY,CAACt4G,IAAb,GAAoBk4G,cAArD,EAAqE;AACnE;AACAwB,cAAQ,GAAGpB,YAAY,CAACr1B,UAAb,EAAX;AACD,KAHD,MAGO;AACL;AACAy2B,cAAQ,GAAG50G,CAAC,CAACm+E,UAAF,EAAX;AACD;;AACDq1B,gBAAY,GAAGoB,QAAf;AACA,WAAOA,QAAP;AACD;;AAED,WAAS52B,iBAAT,GAA6B;AAC3B,QAAI62B,MAAM,GAAG34G,EAAE,CAACM,MAAH,CAAUtB,IAAV,CAAb;AACA,QAAI8E,CAAC,GAAG60G,MAAM,CAACr4G,MAAP,CAAc,YAAd,CAAR;;AACA,QAAI,CAACwD,CAAC,CAACd,KAAF,EAAD,IAAcc,CAAC,CAAC9E,IAAF,GAASk4G,cAA3B,EAA2C;AACzC;AACA;AACAyB,YAAM,CAAC52G,SAAP,CAAiB,0BAAjB,EAA6Ci1G,SAA7C;AACA2B,YAAM,CAACr4G,MAAP,CAAc,uBAAd,EAAuC02G,SAAvC,GAJyC,CAIW;;AACpDM,kBAAY,GAAG,IAAf;AACAK,yBAAmB,GAAG,IAAtB;AACD;AACF;AAED;;;;;AAGA,WAAS11B,UAAT,CAAoB22B,cAApB,EAAoC/2B,sBAApC,EAA4D;AAC1D61B,wBAAoB,GAAG,IAAvB;AACAD,oBAAgB,GAAG51B,sBAAnB,CAF0D,CAI1D;;AACAj9D,SAAK,GAAGt4B,KAAK,CAACgiG,aAAN,GAAsB1pE,KAAtB,EAAR;;AAEA,QAAIxlC,MAAM,CAACw5H,cAAc,CAAC7sH,KAAf,CAAqB,GAArB,EAA0B,CAA1B,CAAD,CAAN,GAAuC,CAA3C,EAA8C;AAC5C;AACA;AACA;AACA;AACA;AACA6sH,oBAAc,GAAGA,cAAc,CAAC7sH,KAAf,CAAqB,GAArB,EAA0B,CAA1B,CAAjB;AACD;;AAED+rH,sBAAkB,CAACc,cAAD,CAAlB;AAEAtB,gBAAY,CAAC/5G,IAAb,CAAkB,eAAlB,EAAmC,YAAW;AAC5Cm6G,0BAAoB,GAAG,KAAvB,CAD4C,CAE5C;;AACAprH,WAAK,CAACgiG,aAAN,GAAsB7J,eAAtB;AACD,KAJD;AAKD;AAED;;;;;;;AAKAqzB,oBAAkB,GAAG;AACnB,mBAAe,SAASe,UAAT,GAAsB;AACnC;AACA;AACA,UAAI50G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB9xB,IAAhB,CAAqB,cAArB,EAAqChsC,QAArC,CAA8C,GAA9C,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI2gB,KAAK,CAACtgC,IAAV,EAAgB,IAAhB,EAAsB,IAAtB,CAAX;AACD,KANkB;AAQnB,mBAAe,SAASw0H,UAAT,GAAsB;AACnC,UAAI70G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB9xB,IAAhB,CAAqB,OAArB,EAA8BhsC,QAA9B,CAAuC,IAAvC,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,aAAJ,CAAX;AACD,KAXkB;AAanB,mBAAe,SAAS80G,UAAT,GAAsB;AACnC,UAAI90G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB9xB,IAAhB,CAAqB,QAArB,EAA+BhsC,QAA/B,CAAwC,IAAxC,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,aAAJ,CAAX;AACD,KAhBkB;AAkBnB,mBAAe,SAAS+0G,UAAT,GAAsB;AACnC,UAAI/0G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB9xB,IAAhB,CAAqB,QAArB,EAA+BhsC,QAA/B,CAAwC,IAAxC,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,gBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,UAAjB,EAA6BhsC,QAA7B,CAAsC,IAAtC,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,aAAJ,CAAX;AACD,KAxBkB;AA0BnB,wBAAoB,SAASg1G,eAAT,GAA2B;AAC7C,UAAIh1G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB9xB,IAAhB,CAAqB,UAArB,EAAiChsC,QAAjC,CAA0C,IAA1C,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,qBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,cAAjB,EAAiChsC,QAAjC,CAA0C,IAA1C,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,kBAAJ,CAAX;AACD,KAhCkB;AAkCnB,WAAO,SAAS+uG,GAAT,GAAe;AACpB,UAAI/uG,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB99D,QAAhB,CAAyB,IAAzB,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,QAAJ,CAAX;AAGAA,OAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqB,IAArB,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,KAAJ,EAAW,UAASA,CAAT,EAAY;AAChC;AACAA,SAAC,CAAClC,SAAF,CAAY,aAAZ,EAA2B24C,QAA3B,CAAoC,CAApC;AACAz2C,SAAC,CAAClC,SAAF,CAAY,uBAAZ,EAAqC24C,QAArC,CAA8C,CAA9C;AACD,OAJU,CAAX;AAKD,KA7CkB;AA+CnB,uBAAmB,SAASw+D,cAAT,GAA0B;AAC3C,UAAIj1G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB99D,QAAhB,CAAyB,IAAzB,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,eAAJ,EAAqB,UAASA,CAAT,EAAY;AAC1C;AACAA,SAAC,CAAClC,SAAF,CAAY,QAAZ,EAAsB24C,QAAtB,CAA+B,GAA/B;AACD,OAHU,CAAX;AAID,KArDkB;AAuDnB,qBAAiB,SAASy+D,aAAT,GAAyB;AACxC,UAAIl1G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB99D,QAAhB,CAAyB,GAAzB,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,eAAJ,EAAqB,UAASA,CAAT,EAAY;AAC1C;AACAA,SAAC,CAAClC,SAAF,CAAY,QAAZ,EAAsB2kF,IAAtB,CAA2B,OAA3B;AACD,OAHU,CAAX;AAID,KA7DkB;AA+DnB,yBAAqB,SAAS0yB,gBAAT,GAA4B;AAC/C,UAAIn1G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB99D,QAAhB,CAAyB,GAAzB,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,mBAAJ,EAAyB,UAASA,CAAT,EAAY;AAC9C;AACAA,SAAC,CAAClC,SAAF,CAAY,QAAZ,EAAsB2kF,IAAtB,CAA2B,OAA3B;AACD,OAHU,CAAX;AAID,KArEkB;AAuEnB,2BAAuB,SAAS2yB,kBAAT,GAA8B;AACnD,UAAIp1G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB9xB,IAAhB,CAAqB,cAArB,EAAqChsC,QAArC,CAA8C,GAA9C,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,qBAAJ,CAAX;AACD,KA1EkB;AA4EnB,0BAAsB,SAASq1G,iBAAT,GAA6B;AACjD,UAAIr1G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB9xB,IAAhB,CAAqB,cAArB,EAAqChsC,QAArC,CAA8C,IAA9C,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,uBAAJ,EAA6B,UAASA,CAAT,EAAY;AAClDA,SAAC,CAAClC,SAAF,CAAY,uBAAZ,EAAqC24C,QAArC,CAA8C,CAA9C;AACD,OAFU,CAAX;AAIAz2C,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,cAAjB,EAAiChsC,QAAjC,CAA0C,IAA1C,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,uBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,cAAjB,EAAiChsC,QAAjC,CAA0C,IAA1C,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,uBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,OAAjB,EAA0BhsC,QAA1B,CAAmC,IAAnC,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,uBAAJ,EAA6B,UAASA,CAAT,EAAY;AAClDA,SAAC,CAAClC,SAAF,CAAY,QAAZ,EAAsB24C,QAAtB,CAA+B,GAA/B;AACAz2C,SAAC,CAAClC,SAAF,CAAY,uBAAZ,EAAqC24C,QAArC,CAA8C,CAA9C;AACD,OAHU,CAAX;AAKAz2C,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,WAAjB,EAA8BhsC,QAA9B,CAAuC,IAAvC,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,uBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,WAAjB,EAA8BhsC,QAA9B,CAAuC,GAAvC,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,oBAAJ,CAAX;AACD,KAnGkB;AAqGnB,qBAAiB,SAASs1G,YAAT,GAAwB;AACvC,UAAIt1G,CAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB9xB,IAAhB,CAAqB,cAArB,EAAqChsC,QAArC,CAA8C,IAA9C,CAAR;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,gBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,cAAjB,EAAiChsC,QAAjC,CAA0C,IAA1C,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,gBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG9xB,IAAZ,CAAiB,cAAjB,EAAiChsC,QAAjC,CAA0C,GAA1C,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,aAAJ,CAAX;AACD,KA9GkB;AAgHnB,mBAAe,SAASu1G,WAAT,GAAuB;AACpC,UAAIlrB,aAAa,GAAGhiG,KAAK,CAACgiG,aAAN,EAApB;AAAA,UACE7K,QAAQ,GAAG7+D,KAAK,CAACxJ,IAAN,GAAa,CAD1B;AAAA,UAEEq+F,aAAa,GAAG,IAFlB;AAAA,UAGEC,aAAa,GAAG,GAHlB;AAAA,UAIEz1G,CAJF;AAMAA,OAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB99D,QAAhB,CAAyB++D,aAAzB,CAAJ;AACAzB,iBAAW,CAAC/zG,CAAD,EAAI,mBAAJ,EAAyB,UAASA,CAAT,EAAY;AAC9CA,SAAC,CAAClC,SAAF,CAAY,QAAZ,EAAsB2kF,IAAtB,CAA2B,OAA3B;AACA4H,qBAAa,CAAC9K,sBAAd,CAAqCC,QAArC,EAA+C,OAAOA,QAAQ,GAAG,CAAX,GAAe+sB,iBAAW,CAACQ,KAAjF,EAAwF,IAAxF,EACE,OAAOvtB,QAAQ,GAAG,CAAX,GAAe+sB,iBAAW,CAACQ,KADpC,EAC2C,IAD3C,EACiDyI,aADjD;AAED,OAJU,CAAX;AAMAx1G,OAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqBg/D,aAArB,CAAJ;AACA1B,iBAAW,CAAC/zG,CAAD,EAAI,mBAAJ,EAAyB,UAASA,CAAT,EAAY;AAC9CA,SAAC,CAAClC,SAAF,CAAY,YAAZ,EAA0B24C,QAA1B,CAAmC,GAAnC;AACA4zC,qBAAa,CAACvK,eAAd,CAA8BN,QAA9B,EAAwC,IAAI+sB,iBAAW,CAACQ,KAAxD,EAA+D0I,aAA/D;AACD,OAHU,CAAX,CAfoC,CAoBpC;;AACA,UAAIj2B,QAAQ,GAAG,CAAf,EAAkB;AAChBx/E,SAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqB,GAArB,CAAJ;AACAs9D,mBAAW,CAAC/zG,CAAD,EAAI,aAAJ,EAAmB,UAASA,CAAT,EAAY;AACxCqqF,uBAAa,CAACjK,gBAAd,CAA+BZ,QAA/B;AACAx/E,WAAC,CAAClC,SAAF,CAAY,QAAZ,EAAsB24C,QAAtB,CAA+B,GAA/B;AACD,SAHU,CAAX;AAID;AACF,KA5IkB;AA8InB,uBAAmB,SAASi/D,cAAT,GAA0B;AAC3C,UAAIrrB,aAAa,GAAGhiG,KAAK,CAACgiG,aAAN,EAApB;AAAA,UACExN,OAAO,GAAGx0F,KAAK,CAACoxC,gBAAN,EADZ;AAAA,UAEEz5B,CAFF;;AAIA,UAAI68E,OAAO,IAAI,CAAf,EAAkB;AAChB78E,SAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB99D,QAAhB,CAAyB,GAAzB,CAAJ;AACAs9D,mBAAW,CAAC/zG,CAAD,EAAI,oBAAJ,CAAX;AAEAA,SAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqB,GAArB,CAAJ;AACAs9D,mBAAW,CAAC/zG,CAAD,EAAI,oBAAJ,EAA0B,UAASA,CAAT,EAAY;AAC/CqqF,uBAAa,CAAC/J,oBAAd;AACAtgF,WAAC,CAAClC,SAAF,CAAY,QAAZ,EAAsB24C,QAAtB,CAA+B,GAA/B;AACD,SAHU,CAAX;AAKAz2C,SAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqB,GAArB,CAAJ;AACAs9D,mBAAW,CAAC/zG,CAAD,EAAI,oBAAJ,EAA0B,UAASA,CAAT,EAAY;AAC/CA,WAAC,CAAClC,SAAF,CAAY,QAAZ,EAAsB24C,QAAtB,CAA+B,GAA/B;AACD,SAFU,CAAX;AAIAz2C,SAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqB,GAArB,CAAJ;AACAs9D,mBAAW,CAAC/zG,CAAD,EAAI,oBAAJ,CAAX;AACD,OAjBD,MAiBO;AACLA,SAAC,GAAGu0G,SAAS,CAAC,IAAD,CAAT,CAAgB99D,QAAhB,CAAyB,GAAzB,CAAJ;AACAs9D,mBAAW,CAAC/zG,CAAD,EAAI,oBAAJ,CAAX;AACD;;AAEDA,OAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqB,GAArB,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,oBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqB,IAArB,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,oBAAJ,CAAX;AAEAA,OAAC,GAAGu0G,SAAS,GAAG99D,QAAZ,CAAqB,GAArB,CAAJ;AACAs9D,iBAAW,CAAC/zG,CAAD,EAAI,iBAAJ,EAAuB,YAAW;AAC3CqqF,qBAAa,CAACrN,aAAd,CAA4B,GAA5B;AACD,OAFU,CAAX;AAGD;AAnLkB,GAArB;AAsLA/kF,KAAG,GAAG;AACJq7B,SAAK,EAAEA,KADH;AAEJl2B,UAAM,EAAEA;AAFJ,GAAN;AAKAuD,MAAI;AACJ,SAAO1I,GAAP;AACD;;AAEck7G,oEAAf,E;;AC3cA;;;;;;;AAMA;;;;;;;AAQA,IAAIwC,WAAJ;AACA,IAAMC,MAAM,GAAG,4BAAf;AAEeD,6DAAW,GAAIz9H,MAAM,CAACy9H,WAAP,GAAqB,UAASphH,IAAT,EAAeshH,WAAf,EAA4Bn9G,QAA5B,EAAsC9d,CAAtC,EAAyCq6C,EAAzC,EAA6C;AAC9F;AACA,MAAI6gF,SAAJ,EAAeC,WAAf,EAA4BlxH,KAA5B,EAAmCmxH,KAAnC;AACA,MAAMC,MAAM,GAAG,KAAf,CAH8F,CAK9F;;AACA,MAAI1hH,IAAI,CAAC67C,MAAL,CAAY,IAAZ,IAAoB,CAAxB,EAA2B;AACzB;AACA4lE,SAAK,GAAGzhH,IAAI,CAACzM,KAAL,CAAW,IAAX,CAAR;AACAiuH,eAAW,GAAG,IAAd;AACAD,aAAS,GAAG,EAAZ;AACD,GALD,MAKO;AACL;AACAE,SAAK,GAAGzhH,IAAI,CAACzM,KAAL,CAAW,OAAX,CAAR;AACAiuH,eAAW,GAAG,KAAd;;AACAD,aAAS,GAAI,YAAM;AACjB,UAAIt4H,MAAJ;AACA,UAAM04H,OAAO,GAAG,EAAhB;;AACA,aAAQ14H,MAAM,GAAGy4H,MAAM,CAACE,IAAP,CAAY5hH,IAAZ,CAAjB,EAAqC;AACnC2hH,eAAO,CAAC75H,IAAR,CAAamB,MAAM,CAACu1B,KAApB;AACD;;AACD,aAAOmjG,OAAP;AACD,KAPW,EAAZ;AAQD;;AAED,MAAIE,aAAa,GAAG,CAApB;AACA,MAAIC,kBAAkB,GAAG,CAAzB;AACA,MAAItoB,QAAQ,GAAG,CAAf;AACA,MAAIuoB,WAAW,GAAG,CAAlB,CA5B8F,CA8B9F;;AAEA,OAAK,IAAI78H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGu8H,KAAK,CAACt8H,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,QAAIuZ,IAAJ,EAAUujH,QAAV,EAAoBC,QAApB,EAA8BC,SAA9B;AACA,QAAMC,IAAI,GAAGV,KAAK,CAACv8H,CAAD,CAAlB;AACA28H,iBAAa,IAAIM,IAAI,CAACh9H,MAAL,GAAc,CAA/B;;AAEA,QAAKD,CAAC,KAAK,CAAP,IAAas8H,WAAb,IAA8Br9G,QAAQ,GAAG,CAAZ,IAAmB29G,kBAAkB,GAAG39G,QAAzE,EAAqF;AAAE;AACrF,UAAIi+G,QAAJ;;AACA,UAAIl9H,CAAC,GAAG,CAAR,EAAW;AACT,YAAIs8H,WAAJ,EAAiB;AACfO,qBAAW,GAAGz7H,IAAI,CAACC,GAAL,CAAS27H,SAAS,CAACG,qBAAV,EAAT,EAA4CN,WAA5C,CAAd;AACAvoB,kBAAQ;AACT,SAHD,MAGO;AACLwoB,kBAAQ,GAAGE,SAAS,CAACI,UAAV,CAAqBC,SAAhC;;AACA,cAAIP,QAAQ,CAAC78H,MAAT,GAAmBs8H,KAAK,CAACv8H,CAAC,GAAG,CAAL,CAAL,CAAaC,MAAb,GAAsB,CAA7C,EAAiD;AAC/C;AACAi9H,oBAAQ,GAAGJ,QAAQ,CAAC97H,KAAT,CAAe87H,QAAQ,CAAC78H,MAAT,GAAkBs8H,KAAK,CAACv8H,CAAC,GAAG,CAAL,CAAL,CAAaC,MAA/B,GAAwC,CAAvD,CAAX;AACA+8H,qBAAS,CAACI,UAAV,CAAqBC,SAArB,GAAiCP,QAAQ,CAAC97H,KAAT,CAAe,CAAf,EAAmB87H,QAAQ,CAAC78H,MAAT,GAAkBs8H,KAAK,CAACv8H,CAAC,GAAG,CAAL,CAAL,CAAaC,MAA/B,GAAwC,CAA3D,CAAjC;AACD,WAJD,MAIO,IAAI68H,QAAQ,CAAC78H,MAAT,KAAqBs8H,KAAK,CAACv8H,CAAC,GAAG,CAAL,CAAL,CAAaC,MAAb,GAAsB,CAA/C,EAAmD;AACxD+8H,qBAAS,CAACI,UAAV,CAAqBC,SAArB,GAAiCP,QAAQ,CAAC97H,KAAT,CAAe,CAAf,EAAmB87H,QAAQ,CAAC78H,MAAT,GAAkB,CAArC,CAAjC;AACD;;AACD48H,qBAAW,GAAGz7H,IAAI,CAACC,GAAL,CAAS27H,SAAS,CAACG,qBAAV,EAAT,EAA4CN,WAA5C,CAAd;AACAvoB,kBAAQ;AACT;AACF;;AAED0oB,eAAS,GAAG90E,QAAQ,CAACo1E,eAAT,CAAyBnB,MAAzB,EAAiC,OAAjC,CAAZ;AACAa,eAAS,CAACO,cAAV,CAAyB,IAAzB,EAA+B,GAA/B,EAAoCp8H,CAApC;AACA67H,eAAS,CAACO,cAAV,CAAyB,IAAzB,EAA+B,IAA/B,EAAqCv9H,CAAC,KAAK,CAAN,GAAU,CAAV,GAAcw7C,EAAnD;AAEAuhF,cAAQ,GAAG70E,QAAQ,CAACs1E,cAAT,CAAwBjkH,IAAxB,CAAX;AACAyjH,eAAS,CAAC9oE,WAAV,CAAsB6oE,QAAtB;AACAX,iBAAW,CAACloE,WAAZ,CAAwB8oE,SAAxB;;AAEA,UAAI,CAACX,SAAS,CAAC38G,OAAV,CAAkBi9G,aAAa,GAAG,CAAlC,CAAL,EAA2C;AACzCpjH,YAAI,GAAG0jH,IAAI,GAAG,GAAd;AACD,OAFD,MAEO;AACL1jH,YAAI,GAAG0jH,IAAI,GAAG,GAAd;AACD;;AAED,UAAIj9H,CAAC,IAAIk9H,QAAT,EAAmB;AACjB3jH,YAAI,GAAG2jH,QAAQ,GAAG3jH,IAAlB;AACD;AAEF,KAtCD,MAsCO;AACL,UAAI,CAAC8iH,SAAS,CAAC38G,OAAV,CAAkBi9G,aAAa,GAAG,CAAlC,CAAL,EAA2C;AACzCpjH,YAAI,IAAI0jH,IAAI,GAAG,GAAf;AACD,OAFD,MAEO;AACL1jH,YAAI,IAAI0jH,IAAI,GAAG,GAAf;AACD;AACF,KAjDoC,CAmDrC;;;AACAD,aAAS,CAACI,UAAV,CAAqBC,SAArB,GAAiC9jH,IAAjC;AACAqjH,sBAAkB,GAAGI,SAAS,CAACG,qBAAV,EAArB;;AACA,QAAIb,WAAJ,EAAiB;AACfO,iBAAW,GAAGz7H,IAAI,CAACC,GAAL,CAAS27H,SAAS,CAACG,qBAAV,EAAT,EAA4CN,WAA5C,CAAd;AACD;;AAED,QAAI,CAACP,WAAL,EAAkB;AAChB;AACA,UAAIt8H,CAAC,IAAKA,CAAC,KAAMu8H,KAAK,CAACt8H,MAAN,GAAe,CAA5B,IAAoCgf,QAAQ,GAAG,CAA/C,IAAsD29G,kBAAkB,GAAG39G,QAA/E,EAA0F;AACxF69G,gBAAQ,GAAGE,SAAS,CAACI,UAAV,CAAqBC,SAAhC;AACAL,iBAAS,CAACI,UAAV,CAAqBC,SAArB,GAAiCP,QAAQ,CAAC97H,KAAT,CAAe,CAAf,EAAmB87H,QAAQ,CAAC78H,MAAT,GAAkBs8H,KAAK,CAACv8H,CAAD,CAAL,CAASC,MAA3B,GAAoC,CAAvD,CAAjC;AAEA+8H,iBAAS,GAAG90E,QAAQ,CAACo1E,eAAT,CAAyBnB,MAAzB,EAAiC,OAAjC,CAAZ;AACAa,iBAAS,CAACO,cAAV,CAAyB,IAAzB,EAA+B,GAA/B,EAAoCp8H,CAApC;AACA67H,iBAAS,CAACO,cAAV,CAAyB,IAAzB,EAA+B,IAA/B,EAAqC/hF,EAArC;AAEAuhF,gBAAQ,GAAG70E,QAAQ,CAACs1E,cAAT,CAAwBjB,KAAK,CAACv8H,CAAD,CAA7B,CAAX;AACAg9H,iBAAS,CAAC9oE,WAAV,CAAsB6oE,QAAtB;AACAX,mBAAW,CAACloE,WAAZ,CAAwB8oE,SAAxB;AACA1oB,gBAAQ;AACT;AACF;AACF;;AAED,MAAIuoB,WAAW,KAAK,CAApB,EAAuB;AACrBA,eAAW,GAAGT,WAAW,CAACqB,UAAZ,CAAuB,CAAvB,EAA0BN,qBAA1B,EAAd;AACD;;AACD,MAAIl+G,QAAQ,GAAG49G,WAAf,EAA4B;AAC1BzxH,SAAK,GAAG6T,QAAR;AACD,GAFD,MAEO;AACL7T,SAAK,GAAGyxH,WAAR;AACD;;AAED,SAAO;AACL52G,SAAK,EAAEquF,QADF;AAELlpG,SAAK,EAALA,KAFK;AAGLs+C,aAAS,EAAEmzE;AAHN,GAAP;AAKD,CA1HD,E;;AChBe;AACb;;;;;;;;;;AAUAa,sBAAoB,EAAE,8BAAS/xH,EAAT,EAAagyH,UAAb,EAAyBC,QAAzB,EAAmCC,SAAnC,EAA8CnyH,SAA9C,EAAyD;AAC7E,QAAIoyH,WAAJ,EAAiBj7G,IAAjB,EAAuBuC,QAAvB;AACAvC,QAAI,GAAGnX,SAAS,CAACkX,MAAV,CAAiB,MAAjB,CAAP;;AACA,QAAIC,IAAI,CAACyC,KAAL,EAAJ,EAAkB;AAChB;AACAzC,UAAI,GAAGnX,SAAS,CAACmB,MAAV,CAAiB,MAAjB,CAAP;AACD;;AAEDuY,YAAQ,GAAGvC,IAAI,CAACD,MAAL,CAAY,MAAMjX,EAAlB,CAAX;;AAEA,QAAIyZ,QAAQ,CAACE,KAAT,EAAJ,EAAsB;AACpB;AACAF,cAAQ,GAAGvC,IAAI,CAAChW,MAAL,CAAY,gBAAZ,EAA8BwS,IAA9B,CAAmC,IAAnC,EAAyC1T,EAAzC,EAA6C0T,IAA7C,CAAkD,IAAlD,EAAwD,KAAxD,EAA+DA,IAA/D,CAAoE,IAApE,EAA0E,KAA1E,EAAiFA,IAAjF,CAAsF,GAAtF,EAA2F,KAA3F,EAAkGA,IAAlG,CAAuG,IAAvG,EAA6G,KAA7G,EAAoHA,IAApH,CAAyH,IAAzH,EAA+H,KAA/H,CAAX;AACD,KAHD,MAGO;AACL+F,cAAQ,CAACf,SAAT,CAAmB,MAAnB,EAA2B5hB,MAA3B;AACD;;AAED2iB,YAAQ,CAACvY,MAAT,CAAgB,MAAhB,EAAwBwS,IAAxB,CAA6B,YAA7B,EAA2Cs+G,UAA3C,EAAuDt+G,IAAvD,CAA4D,QAA5D,EAAsE,IAAtE;AACA+F,YAAQ,CAACvY,MAAT,CAAgB,MAAhB,EAAwBwS,IAAxB,CAA6B,YAA7B,EAA2Cu+G,QAA3C,EAAqDv+G,IAArD,CAA0D,QAA1D,EAAoE,KAApE;AACA+F,YAAQ,CAACvY,MAAT,CAAgB,MAAhB,EAAwBwS,IAAxB,CAA6B,YAA7B,EAA2Cw+G,SAA3C,EAAsDx+G,IAAtD,CAA2D,QAA3D,EAAqE,KAArE;AACA+F,YAAQ,CAACvY,MAAT,CAAgB,MAAhB,EAAwBwS,IAAxB,CAA6B,YAA7B,EAA2Cu+G,QAA3C,EAAqDv+G,IAArD,CAA0D,QAA1D,EAAoE,MAApE;AAEAy+G,eAAW,GAAG,UAAUnyH,EAAV,GAAe,GAA7B,CAtB6E,CAuB7E;AACA;;AACA,SAAKoyH,mBAAL,CAAyBD,WAAzB,IAAwCD,SAAxC;AACA,WAAOC,WAAP;AACD,GAtCY;;AAwCb;;;;;AAKAC,qBAAmB,EAAE,EA7CR;;AA8Cb;;;;;;;;;AASAC,cAAY,EAAE,sBAAS7nE,MAAT,EAAiB8nE,IAAjB,EAAuB;AACnC,QAAIpwE,GAAJ,EAASqwE,QAAT,EAAmBC,UAAnB;AACAD,YAAQ,GAAG,KAAX;AACA/nE,UAAM,GAAGA,MAAM,CAAC9nD,KAAP,CAAa,EAAb,CAAT;;AACA,SAAKw/C,GAAG,GAAG,CAAX,EAAcA,GAAG,GAAGsI,MAAM,CAACl2D,MAA3B,EAAmC4tD,GAAG,EAAtC,EAA0C;AACxC,UAAIqwE,QAAJ,EAAc;AACZ,YAAI/nE,MAAM,CAACtI,GAAD,CAAN,IAAe,GAAnB,EAAwB;AACtBqwE,kBAAQ,GAAG,KAAX;AACD,SAFD,MAEO,IAAI/nE,MAAM,CAACtI,GAAD,CAAN,IAAe,GAAnB,EAAwB;AAC7BsI,gBAAM,CAACgoE,UAAD,CAAN,GAAqB,GAArB;AACAA,oBAAU,GAAGtwE,GAAb;AACD;AACF,OAPD,MAOO;AACL,YAAIsI,MAAM,CAACtI,GAAD,CAAN,IAAe,GAAnB,EAAwB;AACtB,cAAIowE,IAAJ,EAAU;AACR9nE,kBAAM,CAACtI,GAAD,CAAN,GAAc,GAAd;AACAowE,gBAAI,GAAG,KAAP;AACD,WAHD,MAGO;AACLC,oBAAQ,GAAG,IAAX;AACAC,sBAAU,GAAGtwE,GAAb;AACD;AACF,SARD,MAQO,IAAIsI,MAAM,CAACtI,GAAD,CAAN,IAAe,GAAnB,EAAwB;AAC7BsI,gBAAM,CAACtI,GAAD,CAAN,GAAc,GAAd;AACD;AACF;AACF;;AACD,WAAOsI,MAAM,CAACv2C,IAAP,CAAY,EAAZ,EAAgB9T,OAAhB,CAAwB,KAAxB,EAA+B,GAA/B,EAAoCkU,IAApC,EAAP;AACD,GAlFY;;AAmFb;;;;;;;;;;AAUAo+G,YAAU,EAAE,oBAASjoE,MAAT,EAAiB8nE,IAAjB,EAAuB;AACjC,QAAItvF,KAAJ,EAAWkf,GAAX,EAAgB9pD,MAAhB,EAAwBm6H,QAAxB,EAAkCtvC,IAAlC;AACAz4B,UAAM,GAAG,KAAK6nE,YAAL,CAAkB7nE,MAAlB,EAA0B8nE,IAA1B,CAAT;AACAC,YAAQ,GAAG,KAAX;AACAn6H,UAAM,GAAG,EAAT;;AACA,SAAK8pD,GAAG,GAAG,CAAX,EAAcA,GAAG,GAAGsI,MAAM,CAACl2D,MAA3B,EAAmC4tD,GAAG,EAAtC,EAA0C;AACxC,UAAIqwE,QAAJ,EAAc;AACZ,YAAI/nE,MAAM,CAACtI,GAAD,CAAN,IAAe,GAAnB,EAAwB;AACtBqwE,kBAAQ,GAAG,KAAX;AACD;;AACD;AACD;;AACD,UAAI/nE,MAAM,CAACtI,GAAD,CAAN,IAAe,GAAf,IAAsBsI,MAAM,CAACtI,GAAD,CAAN,IAAe,GAAzC,EAA8C;AAC5C+gC,YAAI,GAAGz4B,MAAM,CAACn1D,KAAP,CAAa2tC,KAAb,EAAoBkf,GAApB,EAAyB7tC,IAAzB,EAAP;;AACA,YAAI4uE,IAAI,CAAC3uF,MAAL,GAAc,CAAlB,EAAqB;AACnB8D,gBAAM,CAACnB,IAAP,CAAY,KAAKy7H,SAAL,CAAezvC,IAAf,CAAZ;AACD;;AACDjgD,aAAK,GAAGkf,GAAG,GAAG,CAAd;AACD,OAND,MAMO,IAAIsI,MAAM,CAACtI,GAAD,CAAN,IAAe,GAAnB,EAAwB;AAC7BqwE,gBAAQ,GAAG,IAAX;AACD;AACF;;AACD,QAAIrwE,GAAG,IAAIsI,MAAM,CAACl2D,MAAlB,EAA0B;AACxB8D,YAAM,CAACnB,IAAP,CAAY,KAAKy7H,SAAL,CAAeloE,MAAM,CAACn1D,KAAP,CAAa2tC,KAAb,EAAoBkf,GAApB,EAAyB7tC,IAAzB,EAAf,CAAZ;AACD;;AACD,WAAOjc,MAAP;AACD,GAvHY;;AAwHb;;;;;;;;AAQAs6H,WAAS,EAAE,mBAASpB,IAAT,EAAe;AACxB,QAAIl5H,MAAJ,EAAY6qF,IAAZ;AACA7qF,UAAM,GAAG,IAAI6hB,MAAJ,CAAWq3G,IAAX,CAAT;;AACA,QAAIA,IAAI,CAACtmE,MAAL,CAAY,uCAAZ,KAAwD,CAAC,CAA7D,EAAgE;AAC9D5yD,YAAM,CAACu6H,QAAP,GAAkB,IAAlB;AACD;;AACD,QAAIrB,IAAI,CAACtmE,MAAL,CAAY,uCAAZ,KAAwD,CAAC,CAA7D,EAAgE;AAC9D5yD,YAAM,CAACw6H,QAAP,GAAkB,IAAlB;AACD;;AACD,QAAItB,IAAI,CAACtmE,MAAL,CAAY,2CAAZ,KAA4D,CAAC,CAAjE,EAAoE;AAClE5yD,YAAM,CAACy6H,UAAP,GAAoB,IAApB;AACD;;AACD,QAAIvB,IAAI,CAACtmE,MAAL,CAAY,SAAZ,KAA0B,CAAC,CAA/B,EAAkC;AAChC5yD,YAAM,CAAC06H,QAAP,GAAkB,IAAlB;AACA,aAAO16H,MAAP;AACD;;AACD6qF,QAAI,GAAG/qE,UAAU,CAACo5G,IAAD,CAAjB;;AACA,QAAI,CAACjvH,KAAK,CAAC4gF,IAAD,CAAV,EAAkB;AAChB7qF,YAAM,CAAC26H,QAAP,GAAkB9vC,IAAlB;AACD;;AACD,QAAIquC,IAAI,CAACtmE,MAAL,CAAY,yCAAZ,KAA0D,CAAC,CAA/D,EAAkE;AAChE5yD,YAAM,CAAC46H,SAAP,GAAmB,IAAnB;AACD;;AACD,QAAI1B,IAAI,CAACtmE,MAAL,CAAY,qCAAZ,KAAsD,CAAC,CAA3D,EAA8D;AAC5D5yD,YAAM,CAAC66H,OAAP,GAAiB,IAAjB;AACD;;AACD,QAAI3B,IAAI,CAACtmE,MAAL,CAAY,mCAAZ,KAAoD,CAAC,CAAzD,EAA4D;AAC1D5yD,YAAM,CAAC86H,MAAP,GAAgB,IAAhB;AACD;;AACD,QAAI5B,IAAI,CAACtmE,MAAL,CAAY,qCAAZ,KAAsD,CAAC,CAA3D,EAA8D;AAC5D5yD,YAAM,CAAC+6H,KAAP,GAAe,IAAf;AACD;;AACD,QAAI7B,IAAI,CAACtmE,MAAL,CAAY,uCAAZ,KAAwD,CAAC,CAA7D,EAAgE;AAC9D5yD,YAAM,CAACg7H,QAAP,GAAkB,IAAlB;AACD;;AACD,QAAI9B,IAAI,CAACtmE,MAAL,CAAY,sCAAZ,KAAuD,CAAC,CAA5D,EAA+D;AAC7D5yD,YAAM,CAACi7H,QAAP,GAAkB,IAAlB;AACD;;AACD,QAAI/B,IAAI,CAACtmE,MAAL,CAAY,wCAAZ,KAAyD,CAAC,CAA9D,EAAiE;AAC/D5yD,YAAM,CAACk7H,SAAP,GAAmB,IAAnB;AACD;;AACD,WAAOl7H,MAAP;AACD,GA1KY;;AA2Kb;;;;;;;;;;;;AAYAm7H,kBAAgB,EAAE,0BAASxoF,KAAT,EAAgB;AAChC,QAAI12C,CAAJ,EAAOyM,CAAP,EAAUE,CAAV,EAAagiC,KAAb,EAAoBkf,GAApB,EAAyBnwB,IAAzB;;AACA,QAAIgZ,KAAK,CAACz2C,MAAN,IAAgB,CAApB,EAAuB;AACrB,aAAOy2C,KAAP;AACD;;AACD,QAAI,EAAE,YAAYA,KAAK,CAAC,CAAD,CAAnB,CAAJ,EAA6B;AAC3BA,WAAK,CAAC,CAAD,CAAL,CAAS3yB,MAAT,GAAkB,CAAlB;AACD;;AACD,QAAI2yB,KAAK,CAACz2C,MAAN,IAAgB,CAApB,EAAuB;AACrB,aAAOy2C,KAAP;AACD;;AACD,QAAI,EAAE,YAAYA,KAAK,CAACA,KAAK,CAACz2C,MAAN,GAAe,CAAhB,CAAnB,CAAJ,EAA4C;AAC1Cy2C,WAAK,CAACA,KAAK,CAACz2C,MAAN,GAAe,CAAhB,CAAL,CAAwB8jB,MAAxB,GAAiC,GAAjC;AACD;;AACD,SAAK/jB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG02C,KAAK,CAACz2C,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjC,UAAI,YAAY02C,KAAK,CAAC12C,CAAD,CAAjB,IAAwB,EAAE,YAAY02C,KAAK,CAAC12C,CAAC,GAAG,CAAL,CAAnB,CAA5B,EAAyD;AACvD2uC,aAAK,GAAG,CAAR;AACAkf,WAAG,GAAGnX,KAAK,CAAC12C,CAAD,CAAL,CAAS+jB,MAAf;;AACA,aAAKtX,CAAC,GAAGzM,CAAC,GAAG,CAAb,EAAgByM,CAAC,IAAI,CAArB,EAAwBA,CAAC,EAAzB,EAA6B;AAC3B,cAAI,YAAYiqC,KAAK,CAACjqC,CAAD,CAArB,EAA0B;AACxBkiC,iBAAK,GAAG+H,KAAK,CAACjqC,CAAD,CAAL,CAASsX,MAAjB;AACA;AACD;AACF;;AACD2Z,YAAI,GAAG,CAACmwB,GAAG,GAAGlf,KAAP,KAAiB3uC,CAAC,GAAGyM,CAArB,CAAP;;AACA,aAAK,IAAIE,CAAC,GAAGF,CAAC,GAAG,CAAjB,EAAoBE,CAAC,GAAG3M,CAAxB,EAA2B2M,CAAC,EAA5B,EAAgC;AAC9B+pC,eAAK,CAAC/pC,CAAD,CAAL,CAASoX,MAAT,GAAkB4qB,KAAK,GAAGjR,IAAI,IAAI/wB,CAAC,GAAGF,CAAR,CAA9B;AACD;AACF;AACF;;AACD,WAAOiqC,KAAP;AACD,GAtNY;;AAuNb;;;;;;;;;;;AAWAyoF,WAAS,EAAE,mBAAShpE,MAAT,EAAiB;AAC1B;AACAA,UAAM,GAAGA,MAAM,CAACn2C,IAAP,GAAcmT,WAAd,EAAT;;AACA,QAAIgjC,MAAM,CAACQ,MAAP,CAAc,gBAAd,KAAmC,CAAC,CAAxC,EAA2C;AACzC,aAAO;AACL,iBAASR;AADJ,OAAP;AAGD;;AACD,QAAIzf,KAAJ,EAAW6lF,KAAX,EAAkBzsF,SAAlB,EAA6BzsB,MAA7B,EAAqC+7G,MAArC,EAA6Cp/H,CAA7C,EAAgDolB,QAAhD,EAA0D3iB,MAA1D,EAAkE48H,WAAlE,EAA+EC,WAA/E,EAA4FC,MAA5F,CAR0B,CAU1B;;AACAppE,UAAM,GAAGA,MAAM,CAACrqD,OAAP,CAAe,WAAf,EAA4B,GAA5B,EAAiCA,OAAjC,CAAyC,aAAzC,EAAwD,EAAxD,EAA4DA,OAA5D,CAAoE,MAApE,EAA4E,GAA5E,EAAiFA,OAAjF,CAAyF,MAAzF,EAAiG,GAAjG,EAAsGA,OAAtG,CAA8G,4BAA9G,EAA4I,EAA5I,EAAgJA,OAAhJ,CAAwJ,UAAxJ,EAAoK,GAApK,EAAyKA,OAAzK,CAAiL,QAAjL,EAA2L,GAA3L,EAAgMA,OAAhM,CAAwM,MAAxM,EAAgN,GAAhN,CAAT;AACAywH,SAAK,GAAG,KAAK6B,UAAL,CAAgBjoE,MAAhB,EAAwB,KAAxB,CAAR;AACA/wC,YAAQ,GAAG,EAAX,CAb0B,CAe1B;;AACA,SAAKplB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu8H,KAAK,CAACt8H,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjC,UAAIu8H,KAAK,CAACv8H,CAAD,CAAL,CAASy+H,QAAT,KAAsB,IAAtB,KAA+BlC,KAAK,CAACv8H,CAAD,CAAL,CAASw+H,UAAT,KAAwB,IAAxB,IAAgCjC,KAAK,CAACv8H,CAAD,CAAL,CAASs+H,QAAT,KAAsB,IAAtD,IAA8D/B,KAAK,CAACv8H,CAAD,CAAL,CAASu+H,QAAT,KAAsB,IAAnH,CAAJ,EAA8H;AAC5HhC,aAAK,CAACjvE,MAAN,CAAa/rD,KAAb,CAAmBg7H,KAAnB,EAA0B,CAACv8H,CAAD,EAAI,CAAJ,EAAOg2B,MAAP,CAAc,KAAKooG,UAAL,CAAgB7B,KAAK,CAACv8H,CAAD,CAArB,EAA0B,IAA1B,CAAd,CAA1B;AACD;AACF,KApByB,CAsB1B;;;AACA8vC,aAAS,GAAG,KAAZ;AACAsvF,UAAM,GAAG,KAAT;AACA/7G,UAAM,GAAG,KAAT;AACAk8G,UAAM,GAAG,KAAT;AACAF,eAAW,GAAG,CAAd;AACAC,eAAW,GAAG,CAAd;;AACA,SAAKt/H,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu8H,KAAK,CAACt8H,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjCyC,YAAM,GAAG,KAAT;;AACA,UAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAAS6+H,MAAT,KAAoB,IAAxB,EAA8B;AAC5BQ,mBAAW,IAAI,CAAf;AACA58H,cAAM,GAAG,IAAT;AACD,OAHD,MAGO,IAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAAS4+H,OAAT,KAAqB,IAAzB,EAA+B;AACpCS,mBAAW,IAAI,CAAf;AACA58H,cAAM,GAAG,IAAT;AACD;;AACD,UAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAAS8+H,KAAT,KAAmB,IAAvB,EAA6B;AAC3BQ,mBAAW,IAAI,CAAf;AACA78H,cAAM,GAAG,IAAT;AACD,OAHD,MAGO,IAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAAS++H,QAAT,KAAsB,IAA1B,EAAgC;AACrCO,mBAAW,IAAI,CAAf;AACA78H,cAAM,GAAG,IAAT;AACD;;AACD,UAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAASu+H,QAAT,KAAsB,IAAtB,IAA8B,EAAEhC,KAAK,CAACv8H,CAAD,CAAL,CAAS4+H,OAAT,KAAqB,IAAvB,CAAlC,EAAgE;AAC9DQ,cAAM,GAAG,IAAT;AACA38H,cAAM,GAAG,IAAT;AACD;;AACD,UAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAASs+H,QAAT,KAAsB,IAAtB,IAA8B,EAAE/B,KAAK,CAACv8H,CAAD,CAAL,CAAS6+H,MAAT,KAAoB,IAAtB,CAAlC,EAA+D;AAC7Dx7G,cAAM,GAAG,IAAT;AACA5gB,cAAM,GAAG,IAAT;AACD;;AACD,UAAI,cAAc85H,KAAK,CAACv8H,CAAD,CAAvB,EAA4B;AAC1B,YAAIu8H,KAAK,CAACv8H,CAAD,CAAL,CAAS2+H,SAAT,KAAuB,IAAvB,IAA+B3+H,CAAC,GAAG,CAAJ,GAAQu8H,KAAK,CAACt8H,MAAd,IAAwBs8H,KAAK,CAACv8H,CAAC,GAAG,CAAL,CAAL,CAAa2+H,SAAb,KAA2B,IAAtF,EAA4F;AAC1F,cAAI7uF,SAAS,KAAK,KAAlB,EAAyB;AACvBA,qBAAS,GAAGysF,KAAK,CAACv8H,CAAD,CAAL,CAAS0+H,QAArB;AACD;;AACDj8H,gBAAM,GAAG,IAAT;AACD;AACF;;AACD,UAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAASg/H,QAAT,KAAsB,IAA1B,EAAgC;AAC9BO,cAAM,GAAG,QAAT;AACA98H,cAAM,GAAG,IAAT;AACD,OAHD,MAGO,IAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAASi/H,SAAT,KAAuB,IAA3B,EAAiC;AACtCM,cAAM,GAAG,SAAT;AACA98H,cAAM,GAAG,IAAT;AACD;;AACD,UAAIA,MAAM,IAAI85H,KAAK,CAACv8H,CAAD,CAAL,CAAS2+H,SAAT,KAAuB,IAAjC,IAAyCpC,KAAK,CAACv8H,CAAD,CAAL,CAASw+H,UAAT,KAAwB,IAArE,EAA2E;AACzEjC,aAAK,CAACjvE,MAAN,CAAattD,CAAb,EAAgB,CAAhB;AACAA,SAAC;AACF;AACF;;AACD,QAAI8vC,SAAS,KAAK,KAAd,KAAwBuvF,WAAW,IAAI,CAAf,IAAoBC,WAAW,IAAI,CAA3D,CAAJ,EAAmE;AACjExvF,eAAS,GAAI,MAAM1uC,IAAI,CAAC65C,KAAL,CAAWqkF,WAAX,EAAwBD,WAAxB,CAAN,GAA6Cj+H,IAAI,CAAC0O,EAAlD,GAAuD,GAApE;AACD,KA3EyB,CA6E1B;;;AACA4mC,SAAK,GAAG,EAAR;;AACA,SAAK12C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu8H,KAAK,CAACt8H,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjC,UAAI,EAAE,cAAcu8H,KAAK,CAACv8H,CAAD,CAArB,CAAJ,EAA+B;AAC7B,YAAIA,CAAC,GAAG,CAAJ,GAAQu8H,KAAK,CAACt8H,MAAd,IAAyB,cAAcs8H,KAAK,CAACv8H,CAAC,GAAG,CAAL,CAAhD,EAA0D;AACxD02C,eAAK,CAAC9zC,IAAN,CAAW;AACTyT,iBAAK,EAAEkmH,KAAK,CAACv8H,CAAD,CADH;AAET+jB,kBAAM,EAAEw4G,KAAK,CAACv8H,CAAC,GAAG,CAAL,CAAL,CAAa0+H;AAFZ,WAAX;AAIAnC,eAAK,CAACjvE,MAAN,CAAattD,CAAb,EAAgB,CAAhB;AACD,SAND,MAMO;AACL02C,eAAK,CAAC9zC,IAAN,CAAW;AACTyT,iBAAK,EAAEkmH,KAAK,CAACv8H,CAAD;AADH,WAAX;AAGAu8H,eAAK,CAACjvE,MAAN,CAAattD,CAAb,EAAgB,CAAhB;AACD;;AACDA,SAAC;AACF;AACF;;AACD,QAAI02C,KAAK,CAACz2C,MAAN,IAAgB,CAApB,EAAuB;AACrB,aAAO;AACL,iBAASy2C,KAAK,CAAC,CAAD,CAAL,CAASrgC;AADb,OAAP;AAGD;;AACD,QAAIqgC,KAAK,CAACz2C,MAAN,IAAgB,CAApB,EAAuB;AACrB,aAAO;AACL,iBAAS;AADJ,OAAP;AAGD;;AACD,SAAKi/H,gBAAL,CAAsBxoF,KAAtB,EA1G0B,CA4G1B;;AACA,SAAK12C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu8H,KAAK,CAACt8H,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjC,UAAIu8H,KAAK,CAACv8H,CAAD,CAAL,CAASw/H,QAAT,KAAsB,IAA1B,EAAgC;AAC9B,YAAI1vF,SAAS,KAAK,KAAlB,EAAyB;AACvBA,mBAAS,GAAGysF,KAAK,CAACv8H,CAAD,CAAL,CAAS0+H,QAArB;AACD;AACF;AACF,KAnHyB,CAqH1B;;;AACA,QAAIU,MAAM,IAAI,CAAC/7G,MAAf,EAAuB;AACrBysB,eAAS,GAAG,KAAZ;AACA1qB,cAAQ,CAACA,QAAT,GAAoB,QAApB;AACD,KAHD,MAGO;AACL,UAAI0qB,SAAS,KAAK,KAAlB,EAAyB;AACvBA,iBAAS,GAAG,CAAZ;AACD;;AACDA,eAAS,IAAI,GAAb;;AACA,UAAIA,SAAS,GAAG,CAAhB,EAAmB;AACjBA,iBAAS,IAAI,GAAb;AACD;;AACD1qB,cAAQ,CAACA,QAAT,GAAoB,QAApB;AACAA,cAAQ,CAAC0qB,SAAT,GAAqBA,SAArB;AACD;;AACD,QAAIyvF,MAAM,KAAK,KAAf,EAAsB;AACpBn6G,cAAQ,CAACm6G,MAAT,GAAkBA,MAAlB;AACD;;AACDn6G,YAAQ,CAACsxB,KAAT,GAAiBA,KAAjB;AACAtxB,YAAQ,CAACq6G,QAAT,GAAoB,KAAKC,cAAL,CAAoBt6G,QAApB,CAApB;AACA,WAAOA,QAAP;AACD,GA5WY;;AA6Wb;;;;;;;;;;;;AAYAoN,OAAK,EAAE,eAAS2jC,MAAT,EAAiB;AACtBA,UAAM,GAAGA,MAAM,CAACn2C,IAAP,GAAcmT,WAAd,GAA4BrnB,OAA5B,CAAoC,MAApC,EAA4C,GAA5C,CAAT;;AACA,QAAIqqD,MAAM,CAACQ,MAAP,CAAc,GAAd,KAAsB,CAAC,CAA3B,EAA8B;AAC5B,aAAO;AACL,iBAASR,MADJ;AAEL,oBAAYA;AAFP,OAAP;AAID;;AACD,QAAIzf,KAAJ,EAAW5G,SAAX,EAAsB1qB,QAAtB,EAAgCve,IAAhC,EAAsCunB,CAAtC,EAAyCrK,MAAzC,EAAiD47G,aAAjD;AACAjpF,SAAK,GAAGyf,MAAM,CAAC9nD,KAAP,CAAa,GAAb,CAAR;AACA+W,YAAQ,GAAG,EAAX;AACAve,QAAI,GAAG6vC,KAAK,CAACjxB,KAAN,EAAP;;AACA,QAAI5e,IAAI,IAAI,QAAR,IAAoBA,IAAI,IAAI,QAAhC,EAA0C;AACxCue,cAAQ,CAACA,QAAT,GAAoBve,IAApB;AACD,KAFD,MAEO;AACL,aAAO,KAAKs4H,SAAL,CAAehpE,MAAf,CAAP;AACD;;AACD,QAAItvD,IAAI,IAAI,QAAZ,EAAsB;AACpBipC,eAAS,GAAGjsB,UAAU,CAAC6yB,KAAK,CAACjxB,KAAN,EAAD,CAAtB;;AACA,UAAIzX,KAAK,CAAC8hC,SAAD,CAAT,EAAsB;AACpB,eAAO,KAAKqvF,SAAL,CAAehpE,MAAf,CAAP;AACD;;AACDrmB,eAAS,IAAI,GAAb;;AACA,UAAIA,SAAS,GAAG,CAAhB,EAAmB;AACjBA,iBAAS,IAAI,GAAb;AACD;;AACD1qB,cAAQ,CAAC0qB,SAAT,GAAqBA,SAArB;AACA6vF,mBAAa,GAAG,IAAhB;AACD;;AACDv6G,YAAQ,CAACsxB,KAAT,GAAiB,EAAjB;;AACA,QAAIA,KAAK,CAACz2C,MAAN,GAAe,CAAf,IAAoB,CAAxB,EAA2B;AACzB,WAAKmuB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsoB,KAAK,CAACz2C,MAAtB,EAA8BmuB,CAAC,IAAI,CAAnC,EAAsC;AACpCrK,cAAM,GAAGF,UAAU,CAAC6yB,KAAK,CAACtoB,CAAC,GAAG,CAAL,CAAN,CAAnB;;AACA,YAAIpgB,KAAK,CAAC+V,MAAD,CAAT,EAAmB;AACjB,iBAAO,KAAKo7G,SAAL,CAAehpE,MAAf,CAAP;AACD;;AACD/wC,gBAAQ,CAACsxB,KAAT,CAAe9zC,IAAf,CAAoB;AAClB,mBAAS8zC,KAAK,CAACtoB,CAAD,CADI;AAElB,oBAAUrK;AAFQ,SAApB;AAID;AACF,KAXD,MAWO;AACL,aAAO,KAAKo7G,SAAL,CAAehpE,MAAf,CAAP;AACD;;AACD,QAAIwpE,aAAJ,EAAmB;AACjBv6G,cAAQ,CAACq6G,QAAT,GAAoB,KAAKC,cAAL,CAAoBt6G,QAApB,CAApB;AACD,KAFD,MAEO;AACLA,cAAQ,CAACq6G,QAAT,GAAoBtpE,MAApB;AACD;;AACD,WAAO/wC,QAAP;AACD,GA3aY;;AA4ab;;;;;;AAMAw6G,OAAK,EAAE,eAASvpH,KAAT,EAAgB/E,OAAhB,EAAyB;AAC9B,QAAIs9E,IAAJ,EAAU5uF,CAAV;;AACA,QAAI,WAAWqW,KAAf,EAAsB;AACpB/E,aAAO,CAACqc,KAAR,CAAc3Z,eAAd,GAAgCqC,KAAK,CAACA,KAAN,CAAYpW,MAAZ,GAAqBoW,KAAK,CAACA,KAA3B,GAAmC,SAAnE;AACA/E,aAAO,CAACqc,KAAR,CAAckyG,eAAd,GAAgC,MAAhC;AACD,KAHD,MAGO;AACLjxC,UAAI,GAAIv4E,KAAK,CAAC+O,QAAN,IAAkB,QAAlB,GAA6B,kCAA7B,GAAkE,6BAA6B/O,KAAK,CAACy5B,SAAnC,GAA+C,OAAzH;;AACA,WAAK9vC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGqW,KAAK,CAACqgC,KAAN,CAAYz2C,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvC4uF,YAAI,IAAIv4E,KAAK,CAACqgC,KAAN,CAAY12C,CAAZ,EAAeqW,KAAf,GAAuB,GAAvB,GAA6BA,KAAK,CAACqgC,KAAN,CAAY12C,CAAZ,EAAe+jB,MAA5C,GAAqD,GAA7D;;AACA,YAAI/jB,CAAC,GAAGqW,KAAK,CAACqgC,KAAN,CAAYz2C,MAAZ,GAAqB,CAA7B,EAAgC;AAC9B2uF,cAAI,IAAI,GAAR;AACD;AACF;;AACDA,UAAI,IAAI,GAAR;AACAt9E,aAAO,CAACqc,KAAR,CAAc3Z,eAAd,GAAgC,MAAhC;AACA1C,aAAO,CAACqc,KAAR,CAAckyG,eAAd,GAAgCjxC,IAAhC;AACD;AACF,GAncY;;AAocb;;;;;;AAMA8wC,gBAAc,EAAE,wBAASrpH,KAAT,EAAgB;AAC9B,QAAIu4E,IAAJ,EAAU5uF,CAAV;;AACA,QAAI,WAAWqW,KAAf,EAAsB;AACpBA,WAAK,CAACopH,QAAN,GAAiBppH,KAAK,CAACA,KAAvB;AACA,aAAOA,KAAK,CAACA,KAAb;AACD,KAHD,MAGO;AACLu4E,UAAI,GAAGv4E,KAAK,CAAC+O,QAAN,GAAiB,GAAjB,IAAwB/O,KAAK,CAAC+O,QAAN,IAAkB,QAAlB,GAA6B/O,KAAK,CAACy5B,SAAN,GAAkB,MAA/C,GAAwD,EAAhF,CAAP;;AACA,WAAK9vC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGqW,KAAK,CAACqgC,KAAN,CAAYz2C,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvC4uF,YAAI,IAAIv4E,KAAK,CAACqgC,KAAN,CAAY12C,CAAZ,EAAeqW,KAAf,GAAuB,GAAvB,GAA6BA,KAAK,CAACqgC,KAAN,CAAY12C,CAAZ,EAAe+jB,MAA5C,GAAqD,GAA7D;;AACA,YAAI/jB,CAAC,GAAGqW,KAAK,CAACqgC,KAAN,CAAYz2C,MAAZ,GAAqB,CAA7B,EAAgC;AAC9B2uF,cAAI,IAAI,GAAR;AACD;AACF;;AACDv4E,WAAK,CAACopH,QAAN,GAAiB7wC,IAAjB;AACA,aAAOA,IAAP;AACD;AACF,GA1dY;;AA2db;;;;;;;AAOAkxC,OAAK,EAAE,eAASzpH,KAAT,EAAgB3K,SAAhB,EAA2B;AAChC,QAAI2K,KAAK,CAACA,KAAV,EAAiB;AACf,aAAOA,KAAK,CAACA,KAAb;AACD;;AACD,QAAIynH,WAAJ,EAAiBj7G,IAAjB,EAAuBuC,QAAvB,EAAiCzZ,EAAjC,EAAqC25C,CAArC,EAAwC/qC,EAAxC,EAA4CC,EAA5C,EAAgDulH,EAAhD,EAAoDC,EAApD,EAAwD/qG,IAAxD,EAA8DyX,IAA9D;AACA7pB,QAAI,GAAGnX,SAAS,CAACkX,MAAV,CAAiB,MAAjB,CAAP;;AACA,QAAIC,IAAI,CAACyC,KAAL,EAAJ,EAAkB;AAChB;AACAzC,UAAI,GAAGnX,SAAS,CAACmB,MAAV,CAAiB,MAAjB,CAAP;AACD;;AAEDlB,MAAE,GAAG0K,KAAK,CAACopH,QAAN,CAAe3zH,OAAf,CAAuB,YAAvB,EAAqC,EAArC,CAAL;AACAsZ,YAAQ,GAAGvC,IAAI,CAACD,MAAL,CAAY,MAAMjX,EAAlB,CAAX;;AAEA,QAAIyZ,QAAQ,CAACE,KAAT,EAAJ,EAAsB;AACpB;AACA,UAAIjP,KAAK,CAAC+O,QAAN,IAAkB,QAAtB,EAAgC;AAC9B26G,UAAE,GAAG,CAAC3+H,IAAI,CAAC8O,GAAL,CAAS9O,IAAI,CAAC0O,EAAL,GAAUuG,KAAK,CAACy5B,SAAhB,GAA4B,GAArC,CAAN;AACAkwF,UAAE,GAAG,CAAC5+H,IAAI,CAAC6O,GAAL,CAAS7O,IAAI,CAAC0O,EAAL,GAAUuG,KAAK,CAACy5B,SAAhB,GAA4B,GAArC,CAAN;;AACA,YAAI1uC,IAAI,CAAC2M,GAAL,CAASiyH,EAAT,IAAe5+H,IAAI,CAAC2M,GAAL,CAASgyH,EAAT,CAAnB,EAAiC;AAC/BxlH,YAAE,GAAGwlH,EAAE,GAAG3+H,IAAI,CAAC2M,GAAL,CAAS,KAAKiyH,EAAd,CAAV;AACAxlH,YAAE,GAAG,CAACwlH,EAAE,GAAG,CAAL,GAAS,CAAC,CAAV,GAAc,CAAf,IAAoB,EAAzB;AACD,SAHD,MAGO;AACLzlH,YAAE,GAAG,CAACwlH,EAAE,GAAG,CAAL,GAAS,CAAC,CAAV,GAAc,CAAf,IAAoB,EAAzB;AACAvlH,YAAE,GAAGwlH,EAAE,GAAG5+H,IAAI,CAAC2M,GAAL,CAAS,KAAKgyH,EAAd,CAAV;AACD;;AACD36G,gBAAQ,GAAGvC,IAAI,CAAChW,MAAL,CAAY,gBAAZ,EAA8BwS,IAA9B,CAAmC,IAAnC,EAAyC1T,EAAzC,EAA6C0T,IAA7C,CAAkD,IAAlD,EAAyD,KAAK9E,EAAN,GAAY,GAApE,EAAyE8E,IAAzE,CAA8E,IAA9E,EAAqF,KAAK7E,EAAN,GAAY,GAAhG,EAAqG6E,IAArG,CAA0G,IAA1G,EAAiH,KAAK9E,EAAN,GAAY,GAA5H,EAAiI8E,IAAjI,CAAsI,IAAtI,EAA6I,KAAK7E,EAAN,GAAY,GAAxJ,CAAX;AACD,OAXD,MAWO;AACL4K,gBAAQ,GAAGvC,IAAI,CAAChW,MAAL,CAAY,gBAAZ,EAA8BwS,IAA9B,CAAmC,IAAnC,EAAyC1T,EAAzC,EAA6C0T,IAA7C,CAAkD,IAAlD,EAAwD,KAAxD,EAA+DA,IAA/D,CAAoE,IAApE,EAA0E,KAA1E,EAAiFA,IAAjF,CAAsF,GAAtF,EAA2F,KAA3F,EAAkGA,IAAlG,CAAuG,IAAvG,EAA6G,KAA7G,EAAoHA,IAApH,CAAyH,IAAzH,EAA+H,KAA/H,CAAX;AACD;AACF,KAhBD,MAgBO;AACL;AACA,aAAO,UAAU1T,EAAV,GAAe,GAAtB;AACD;;AAED,SAAK25C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGjvC,KAAK,CAACqgC,KAAN,CAAYz2C,MAA5B,EAAoCqlD,CAAC,EAArC,EAAyC;AACvC5Y,UAAI,GAAGtnB,QAAQ,CAACvY,MAAT,CAAgB,MAAhB,EAAwBwS,IAAxB,CAA6B,YAA7B,EAA2ChJ,KAAK,CAACqgC,KAAN,CAAY4O,CAAZ,EAAejvC,KAA1D,EAAiEgJ,IAAjE,CAAsE,QAAtE,EAAgFhJ,KAAK,CAACqgC,KAAN,CAAY4O,CAAZ,EAAevhC,MAAf,GAAwB,GAAxG,CAAP;AACAkR,UAAI,GAAG5e,KAAK,CAACqgC,KAAN,CAAY4O,CAAZ,EAAejvC,KAAf,CAAqBhI,KAArB,CAA2B,GAA3B,CAAP;;AACA,UAAI4mB,IAAI,CAACh1B,MAAL,IAAe,CAAf,IAAoB,CAAC+N,KAAK,CAACinB,IAAI,GAAGpR,UAAU,CAACoR,IAAI,CAAC,CAAD,CAAL,CAAlB,CAA9B,EAA4D;AAC1DyX,YAAI,CAACrtB,IAAL,CAAU,cAAV,EAA0B4V,IAA1B;AACD;AACF;;AAAA;AAED,WAAO,UAAUtpB,EAAV,GAAe,GAAtB;AACD;AA9gBY,CAAf,E;;ACDA;AAEA,IAAIs0H,UAAU,GAAG,CAAjB;AACA,IAAIC,MAAM,GAAG,CAAb;AAEe,SAASC,cAAT,CAAwB5Z,SAAxB,EAAmC33G,KAAnC,EAA0C;AACvD;AACA,MAAIwxH,WAAW,GAAG,EAAlB,CAFuD,CAIvD;;AACA,MAAIC,SAAJ,CALuD,CAOvD;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,WAASC,SAAT,CAAmBh0G,GAAnB,EAAwBvP,KAAxB,EAA+B;AAC7B,QAAIqjH,WAAW,CAAC9zG,GAAD,CAAf,EAAsB;AACpB;AACD,KAH4B,CAK7B;;;AACA8zG,eAAW,CAAC9zG,GAAD,CAAX,GAAmB;AACjBlhB,WAAK,EAAE,CADU;AAEjBC,YAAM,EAAE;AAFS,KAAnB;AAKA,QAAIiR,KAAK,GAAG,IAAIikH,KAAJ,EAAZ;AACAjkH,SAAK,CAACgQ,GAAN,GAAYA,GAAZ;;AACAhQ,SAAK,CAACkkH,MAAN,GAAe,YAAW;AACxB;AACA;AACA;AACA,UAAIC,MAAM,GAAG77H,CAAC,CAAC0X,KAAD,CAAD,CAASzQ,QAAT,CAAkB,MAAlB,CAAb;AACA,UAAI60H,QAAQ,GAAGN,WAAW,CAAC9zG,GAAD,CAA1B;AACAo0G,cAAQ,CAACt1H,KAAT,GAAiBq1H,MAAM,CAACr1H,KAAP,KAAiB2R,KAAlC;AACA2jH,cAAQ,CAACr1H,MAAT,GAAkBo1H,MAAM,CAACp1H,MAAP,KAAkB0R,KAApC;AACA0jH,YAAM,CAACh+H,MAAP,GARwB,CASxB;;AACA6f,QAAE,CAACM,MAAH,CAAU2jG,SAAS,CAACjlG,IAApB,EACG+C,SADH,CACa,OADb,EACsBxE,IADtB,CAC2B,YAAW;AAClC,YAAIyC,EAAE,CAACM,MAAH,CAAU,IAAV,EAAgBvD,IAAhB,CAAqB,YAArB,MAAuCiN,GAA3C,EAAgD;AAC9ChK,YAAE,CAACM,MAAH,CAAU,IAAV,EACGvD,IADH,CACQ,OADR,EACiBshH,gBAAgB,CAACD,QAAQ,CAACt1H,KAAV,CADjC,EAEGiU,IAFH,CAEQ,QAFR,EAEkBshH,gBAAgB,CAACD,QAAQ,CAACr1H,MAAV,CAFlC,EAGGgU,IAHH,CAGQ,WAHR,EAGqBsiG,SAHrB;AAID;AACF,OARH,EAVwB,CAoBxB;AACA;AACA;AACA;AACA;AACA;AACA;AACD,KA3BD;AA4BD,GAvDsD,CAyDvD;AACA;;;AACA,WAASgf,gBAAT,CAA0BtpC,CAA1B,EAA6B;AAC3B,WAAOkvB,SAAS,CAAC/F,QAAV,CAAmB,OAAOnpB,CAA1B,CAAP;AACD,GA7DsD,CA+DvD;AACA;;;AACA,WAASupC,cAAT,GAA0B;AACxB,QAAIC,WAAW,GAAG,CAAC,EAAD,EAAK,EAAL,CAAlB;AACAR,aAAS,GAAG,CACV,EADU,EAEV,EAFU,CAAZ;AAKA,KAACzxH,KAAK,CAACwb,UAAN,CAAiB9U,MAAjB,IAA2B,EAA5B,EAAgC6G,OAAhC,CAAwC,UAASusB,IAAT,EAAe;AACrD,UAAIo4F,UAAU,GAAGp4F,IAAI,CAAC9rB,UAAL,KAAoB,CAApB,GAAwB,CAAxB,GAA4B,CAA7C;AACA,UAAIvD,KAAK,GAAGgnH,SAAS,CAACS,UAAD,CAArB;AACA,UAAIC,UAAU,GAAGF,WAAW,CAACC,UAAD,CAA5B;AACA,UAAIx0G,GAAG,GAAG00G,YAAY,CAACt4F,IAAD,CAAtB;AACA,UAAIu4F,cAAJ;AACA,UAAIC,eAAJ;AACA,UAAI//H,CAAJ;AACA,UAAIuV,CAAJ;;AAEA,UAAIgyB,IAAI,CAAChsB,aAAT,EAAwB;AACtB;AACA;AACAukH,sBAAc,GAAGf,MAAjB,CAHsB,CAItB;;AACAgB,uBAAe,GAAG,KAAlB;AACD,OAND,MAMO;AACL;AACA;AACAD,sBAAc,GAAGhB,UAAjB,CAHK,CAIL;;AACAiB,uBAAe,GAAG,IAAlB,CALK,CAML;;AACA//H,SAAC,GAAGolH,SAAS,CAAC/F,QAAV,CAAmB93E,IAAI,CAAClsB,MAAxB,CAAJ;AACA9F,SAAC,GAAG6vG,SAAS,CAAC9F,WAAV,CAAsB/3E,IAAI,CAACjsB,MAA3B,CAAJ;AACD;;AAED6jH,eAAS,CAACh0G,GAAD,EAAMoc,IAAI,CAAC3rB,KAAX,CAAT;AAEA1D,WAAK,CAACzW,IAAN,CAAW;AACTu+H,wBAAgB,EAAEz4F,IADT;AAETpc,WAAG,EAAEA,GAFI;AAGT;AACA;AACA;AACA80G,gBAAQ,EAAEL,UAAU,CAACz0G,GAAD,CAAV,KAAoBptB,SAApB,GAAiC6hI,UAAU,CAACz0G,GAAD,CAAV,GAAkB,CAAnD,GAAwD,EAAEy0G,UAAU,CAACz0G,GAAD,CANrE;AAOTnrB,SAAC,EAAEA,CAPM;AAQTuV,SAAC,EAAEA,CARM;AASToG,gBAAQ,EAAE4rB,IAAI,CAAC5rB,QATN;AAUTC,aAAK,EAAE2rB,IAAI,CAAC3rB,KAVH;AAWTC,eAAO,EAAE0rB,IAAI,CAAC1rB,OAXL;AAYTikH,sBAAc,EAAEA,cAZP;AAaTC,uBAAe,EAAEA,eAbR;AAcTG,cAAM,EAAE34F,IAAI,CAAC7rB,kBAAL,IAA2B,CAd1B;AAeT3F,eAAO,EAAEwxB,IAAI,CAACxxB;AAfL,OAAX;AAiBD,KA9CD,EAPwB,CAuDxB;AACA;;AACAmpH,aAAS,CAAClkH,OAAV,CAAkB,UAAS9C,KAAT,EAAgB;AAChCA,WAAK,CAACq0C,IAAN,CAAW,UAASvuD,CAAT,EAAY+B,CAAZ,EAAe;AACxB,eAAOohB,EAAE,CAAC+pC,SAAH,CAAaltD,CAAC,CAACkiI,MAAf,EAAuBngI,CAAC,CAACmgI,MAAzB,CAAP;AACD,OAFD;AAGD,KAJD;AAMAC,0BAAsB;AACvB,GAjIsD,CAmIvD;;;AACA,WAASA,sBAAT,GAAkC;AAChCjB,aAAS,CAAClkH,OAAV,CAAkB,UAAS9C,KAAT,EAAgB;AAChCA,WAAK,CAAC8C,OAAN,CAAc,UAAS+vC,KAAT,EAAgB;AAE5B,YAAIi1E,gBAAgB,GAAGj1E,KAAK,CAACi1E,gBAA7B;AACA,YAAI5lH,QAAQ,GAAG4lH,gBAAgB,CAACzkH,aAAhC;AACA,YAAI4c,KAAK,GAAG6nG,gBAAgB,CAACxkH,cAA7B;AACA,YAAIG,QAAQ,GAAGqkH,gBAAgB,CAACrkH,QAAjB,IAA6B,CAA5C;AACA,YAAI8hC,KAAJ;AACA,YAAI2kC,SAAJ;AACA,YAAIzpE,UAAJ;AACA,YAAI3Y,CAAJ,EAAOuV,CAAP;;AAEA,YAAI6E,QAAQ,KAAK,MAAjB,EAAyB;AACvBqjC,eAAK,GAAGhwC,KAAK,CAACopG,QAAN,EAAR;AACA72G,WAAC,GAAGy9C,KAAK,CAACtlB,KAAD,CAAL,CAAan4B,CAAjB;AACAuV,WAAC,GAAGkoC,KAAK,CAACtlB,KAAD,CAAL,CAAa5iB,CAAjB;AACD,SAJD,MAIO,IAAI6E,QAAQ,KAAK,qBAAjB,EAAwC;AAC7CgoE,mBAAS,GAAG30E,KAAK,CAACwpG,aAAN,EAAZ;AACAj3G,WAAC,GAAGoiF,SAAS,CAACpiF,CAAV,CAAYm4B,KAAZ,IAAqBiqD,SAAS,CAACn4E,KAAV,CAAgBkuB,KAAhB,IAAyB,CAAlD;AACA5iB,WAAC,GAAG6sE,SAAS,CAAC7sE,CAAV,CAAY4iB,KAAZ,IAAqBiqD,SAAS,CAACl4E,MAAV,CAAiBiuB,KAAjB,IAA0B,CAAnD;AACD,SAJM,MAIA,IAAI/d,QAAQ,KAAK,YAAjB,EAA+B;AACpCzB,oBAAU,GAAGlL,KAAK,CAACqpG,cAAN,GAAuB3+E,KAAvB,CAAb;AACAn4B,WAAC,GAAG,CAAC2Y,UAAU,CAACN,EAAX,GAAgBM,UAAU,CAACJ,EAA5B,IAAkC,CAAtC;AACAhD,WAAC,GAAG,CAACoD,UAAU,CAACL,EAAX,GAAgBK,UAAU,CAACH,EAA5B,IAAkC,CAAtC;AACAmD,kBAAQ,IAAI,MAAM1b,IAAI,CAAC65C,KAAL,CAAWnhC,UAAU,CAACL,EAAX,GAAgBK,UAAU,CAACH,EAAtC,EAA0CG,UAAU,CAACN,EAAX,GAAgBM,UAAU,CAACJ,EAArE,CAAN,GAAiFtY,IAAI,CAAC0O,EAAlG;AACD;;AACD,YAAI3O,CAAC,KAAKjC,SAAV,EAAqB;AACnBgtD,eAAK,CAAC/qD,CAAN,GAAUolH,SAAS,CAAC/F,QAAV,CAAmBr/G,CAAnB,CAAV;AACA+qD,eAAK,CAACx1C,CAAN,GAAU6vG,SAAS,CAAC9F,WAAV,CAAsB/pG,CAAtB,CAAV;AACD;;AACDw1C,aAAK,CAACpvC,QAAN,GAAiBA,QAAjB;AACD,OA9BD;AA+BD,KAhCD;AAiCD;;AAED,WAASkkH,YAAT,CAAsBG,gBAAtB,EAAwC;AACtC,QAAI5rH,YAAY,GAAG3G,KAAK,CAACwb,UAAN,CAAiB7U,YAApC;AACA,QAAIgsH,QAAQ,GAAG,EAAf;;AAEA,QAAI3yH,KAAK,CAACwb,UAAN,CAAiBzY,SAArB,EAAgC;AAC9B4vH,cAAQ,GAAG3sF,6BAAS,CAACC,aAAV,GAA0BjmC,KAAK,CAACwb,UAAN,CAAiBzY,SAAtD;AACD,KAFD,MAEO,IAAI40G,SAAS,CAAC98F,GAAd,EAAmB;AACxB83G,cAAQ,GAAG3sF,6BAAS,CAACC,aAAV,GAA0B0xE,SAAS,CAAC98F,GAAV,CAAczoB,KAAd,CAAoB,CAApB,EAAuBulH,SAAS,CAAC98F,GAAV,CAAckrB,WAAd,CAA0B,GAA1B,IAAiC,CAAxD,CAArC;AACD;;AAED,WAAO4sF,QAAQ,IAAIhsH,YAAY,CAAC4rH,gBAAgB,CAAC5kH,QAAlB,CAAZ,IAA2C4kH,gBAAgB,CAAC5kH,QAAhE,CAAf;AACD,GAnLsD,CAqLvD;;;AACA,WAASolG,SAAT,CAAmB57F,CAAnB,EAAsB;AACpB,QAAItb,GAAG,GAAG21H,WAAW,CAACr6G,CAAC,CAACuG,GAAH,CAArB;AACA,QAAI4tB,SAAS,GAAGymF,gBAAgB,CAACl2H,GAAG,CAACW,KAAJ,GAAY,CAAb,CAAhC;AACA,QAAI+uC,UAAU,GAAGwmF,gBAAgB,CAACl2H,GAAG,CAACY,MAAJ,GAAa,CAAd,CAAjC;AACA,QAAIlK,CAAJ;AACA,QAAIuV,CAAJ;AACA,QAAI6P,CAAJ;;AAEA,QAAIR,CAAC,CAACk7G,cAAF,KAAqBhB,UAAzB,EAAqC;AACnC9+H,OAAC,GAAG4kB,CAAC,CAAC5kB,CAAN;AACAuV,OAAC,GAAGqP,CAAC,CAACrP,CAAN;AACD,KAHD,MAGO;AACL;AACA;AACAvV,OAAC,GAAG4kB,CAAC,CAAC5kB,CAAF,GAAM+4C,SAAV;AACAxjC,OAAC,GAAGqP,CAAC,CAACrP,CAAF,GAAMyjC,UAAV;AACD;;AAED,QAAIp0B,CAAC,CAACjJ,QAAF,KAAe,CAAnB,EAAsB;AACpByJ,OAAC,GAAG,CAAC,YAAD,EAAeplB,CAAf,EAAkB,IAAlB,EAAwBuV,CAAxB,EAA2B,GAA3B,CAAJ;AACD,KAFD,MAEO;AACL;AACA6P,OAAC,GAAG,CAAC,YAAD,EAAeplB,CAAf,EAAkB,IAAlB,EAAwBuV,CAAxB,EAA2B,WAA3B,EAAwC,CAACqP,CAAC,CAACjJ,QAA3C,EAAqD,GAArD,EAA0Do9B,SAA1D,EAAqE,GAArE,EAA0EC,UAA1E,EAAsF,GAAtF,CAAJ;AACD;;AACD,WAAO5zB,CAAC,CAAC3G,IAAF,CAAO,EAAP,CAAP;AACD,GA/MsD,CAiNvD;;;AACA,WAASi6B,KAAT,GAAiB;AACf+mF,kBAAc;AAEdt+G,MAAE,CAACM,MAAH,CAAU2jG,SAAS,CAACjlG,IAApB,EAA0B+C,SAA1B,CAAoC,kBAApC,EACGsB,IADH,CACQ06G,SADR,EAEGxgH,IAFH,CAEQ,UAAS8F,IAAT,EAAe;AACnB,UAAIrQ,MAAM,GAAGgN,EAAE,CAACM,MAAH,CAAU,IAAV,EACVyB,SADU,CACA,OADA,EAEVsB,IAFU,CAELA,IAFK,EAEC,UAASI,CAAT,EAAY;AACtB,eAAOA,CAAC,CAACuG,GAAF,GAAQ,GAAR,GAAcvG,CAAC,CAACq7G,QAAvB;AACD,OAJU,CAAb;AAMA9rH,YAAM,CAACuQ,KAAP,GACGhZ,MADH,CACU,OADV,EAEGwS,IAFH,CAEQ,YAFR,EAEsB,UAAS0G,CAAT,EAAY;AAC9B,eAAOA,CAAC,CAACuG,GAAT;AACD,OAJH;AAMAhX,YAAM,CAAC+J,IAAP,CAAY;AACVhU,cAAM,EAAE,gBAAS0a,CAAT,EAAY;AAClB,iBAAO46G,gBAAgB,CAACP,WAAW,CAACr6G,CAAC,CAACuG,GAAH,CAAX,CAAmBjhB,MAApB,CAAvB;AACD,SAHS;AAIVD,aAAK,EAAE,eAAS2a,CAAT,EAAY;AACjB,iBAAO46G,gBAAgB,CAACP,WAAW,CAACr6G,CAAC,CAACuG,GAAH,CAAX,CAAmBlhB,KAApB,CAAvB;AACD,SANS;AAOV4R,eAAO,EAAE,iBAAS+I,CAAT,EAAY;AACnB,iBAAOA,CAAC,CAAC/I,OAAT;AACD,SATS;AAUV,0BAAkB,uBAAS+I,CAAT,EAAY;AAC5B,iBAAOA,CAAC,CAACm7G,eAAF,GAAoB,MAApB,GAA6B,MAApC;AACD,SAZS;AAaVvf,iBAAS,EAAEA;AAbD,OAAZ,EAcGh0F,KAdH,CAcS,SAdT,EAcoB,UAAS5H,CAAT,EAAY;AAC9B,eAAOA,CAAC,CAAC7O,OAAF,GAAY,EAAZ,GAAiB,MAAxB;AACD,OAhBD;AAkBA5B,YAAM,CAACwQ,IAAP,GAAcrjB,MAAd;AACD,KAlCH;AAmCD,GAxPsD,CA0PvD;;;AACA,WAASqiB,MAAT,GAAkB;AAChBw8G,0BAAsB,GADN,CAGhB;AACA;;AACAh/G,MAAE,CAACM,MAAH,CAAU2jG,SAAS,CAACjlG,IAApB,EAA0B+C,SAA1B,CAAoC,wBAApC,EACGhF,IADH,CACQ,WADR,EACqBsiG,SADrB;AAED;;AAED,WAASjxE,SAAT,CAAmBla,MAAnB,EAA2B;AACzB5nB,SAAK,GAAG4nB,MAAR;AACD;;AAED,SAAO;AACLqjB,SAAK,EAAEA,KADF;AAEL/0B,UAAM,EAAEA,MAFH;AAGL4rB,aAAS,EAAEA;AAHN,GAAP;AAKD;AAAA,C;;AClRD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IACE;AACA;AACA;AACA8wF,gBAAgB,GAAG,CAJrB;AAAA,IAKEC,gBAAgB,GAAG,EALrB;AAAA,IAMEC,aAAa,GAAG,CACd,CAAC,GAAD,EAAM,CAAN,EAAS,CAAT,CADc,EAEd,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAFc,EAGd,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAHc,EAId,CAAC,CAAD,EAAI,GAAJ,EAAS,CAAT,CAJc,EAKd,CAAC,CAAD,EAAI,GAAJ,EAAS,GAAT,CALc,EAMd,CAAC,CAAD,EAAI,CAAJ,EAAO,GAAP,CANc,EAOd,CAAC,GAAD,EAAM,CAAN,EAAS,GAAT,CAPc,CANlB;AAgBe,SAASC,QAAT,CAAkBpb,SAAlB,EAA6B33G,KAA7B,EAAoC;AACjD;AACA,MAAI4P,GAAG,GAAG,EAAV;AAAA,MAEEuI,IAAI,GAAGw/F,SAAS,CAACx/F,IAFnB;AAAA,MAIE;AACA66G,SAAO,GAAG,KALZ;AAAA,MAOE;AACA;AACA;AACA;AACA1W,YAXF;AAAA,MAYE2W,kBAZF;AAAA,MAaEC,aAbF;AAAA,MAcEh4H,UAdF;AAAA,MAeE48G,WAfF;AAAA,MAgBEv9G,WAhBF;AAAA,MAkBE;AACA;AACAq3G,UApBF;AAAA,MAsBE;AACA;AACA;AACAC,aAzBF;AAAA,MA2BE;AACA;AACAshB,oBAAkB,GAAGxb,SAAS,CAAC7C,cAAV,GAA2B/+F,OAA3B,CAAmC,aAAnC,EAAkD,IAAlD,CA7BvB;AAAA,MA+BE;AACAq9G,qBAAmB,GAAGD,kBAAkB,CAACl1H,MAAnB,CAA0B,GAA1B,EAA+BwS,IAA/B,CAAoC,OAApC,EAA6C,uBAA7C,CAhCxB;AAAA,MAiCE4iH,mBAAmB,GAAGF,kBAAkB,CAACl1H,MAAnB,CAA0B,GAA1B,EAA+BwS,IAA/B,CAAoC,OAApC,EAA6C,uCAA7C,CAjCxB;AAAA,MAkCE6iH,kBAAkB,GAAGH,kBAAkB,CAACl1H,MAAnB,CAA0B,GAA1B,EAA+BwS,IAA/B,CAAoC,OAApC,EAA6C,sBAA7C,CAlCvB;AAAA,MAoCE;AACA8iH,eAAa,GAAG5b,SAAS,CAAC7C,cAAV,GAA2B/+F,OAA3B,CAAmC,OAAnC,EAA4C,IAA5C,CArClB;AAAA,MAsCEy9G,cAAc,GAAGD,aAAa,CAACt1H,MAAd,CAAqB,GAArB,EAA0BwS,IAA1B,CAA+B,OAA/B,EAAwC,iBAAxC,CAtCnB;AAAA,MAwCEgjH,gBAAgB,GAAG9b,SAAS,CAAC5C,kBAAV,EAxCrB;AAAA,MAyCE2e,YAAY,GAAG/b,SAAS,CAAC5C,kBAAV,EAzCjB;AAAA,MA0CE4e,SAAS,GAAGhc,SAAS,CAAC5C,kBAAV,EA1Cd;AAAA,MA2CE6e,SAAS,GAAGjc,SAAS,CAAC5C,kBAAV,EA3Cd;AAAA,MA4CE8e,gBAAgB,GAAGlc,SAAS,CAAC5C,kBAAV,EA5CrB;AAAA,MA8CE+e,kBAAkB,GAAGnc,SAAS,CAAC7C,cAAV,GAA2B/+F,OAA3B,CAAmC,aAAnC,EAAkD,IAAlD,CA9CvB;AAAA,MA+CEg+G,iBAAiB,GAAGD,kBAAkB,CAAC71H,MAAnB,CAA0B,GAA1B,EAA+BwS,IAA/B,CAAoC,OAApC,EAA6C,qBAA7C,CA/CtB;AAAA,MAgDEujH,gBAAgB,GAAGF,kBAAkB,CAAC71H,MAAnB,CAA0B,GAA1B,EAA+BwS,IAA/B,CAAoC,OAApC,EAA6C,oBAA7C,CAhDrB;AAAA,MAiDEwjH,iBAAiB,GAAGH,kBAAkB,CAAC71H,MAAnB,CAA0B,GAA1B,EAA+BwS,IAA/B,CAAoC,OAApC,EAA6C,qCAA7C,CAjDtB;AAAA,MAkDEyjH,gBAAgB,GAAGJ,kBAAkB,CAAC71H,MAAnB,CAA0B,GAA1B,EAA+BwS,IAA/B,CAAoC,OAApC,EAA6C,oBAA7C,CAlDrB;AAAA,MAoDE0jH,aAAa,GAAGxc,SAAS,CAAC5G,mBAAV,CAA8B9yG,MAA9B,CAAqC,GAArC,EAA0CwS,IAA1C,CAA+C,OAA/C,EAAwD,gBAAxD,CApDlB;AAAA,MAsDE;AACA;AACA0uG,eAAa,GAAG,IAAI9C,aAAJ,CAAkB1E,SAAlB,EAA6B33G,KAA7B,EAAoC4zH,SAAS,CAAC/f,aAA9C,EAA6D+f,SAAS,CAACv6E,MAAvE,CAxDlB;AAAA,MAyDE+6E,aAAa,GAAG,IAAIlV,aAAJ,CAAkBvH,SAAlB,EAA6B33G,KAA7B,EAAoC2zH,SAAS,CAAC9f,aAA9C,EAA6DsL,aAA7D,CAzDlB;AAAA,MA0DEkV,gBAAgB,GAAG,IAAIjR,gBAAJ,CAAqBzL,SAArB,EAAgC33G,KAAhC,EAAuC0zH,YAAY,CAAC7f,aAApD,CA1DrB;AAAA,MA2DEygB,uBAAuB,GAAG,IAAInT,eAAJ,CAAoB0S,gBAAgB,CAAChgB,aAArC,EAAoD;AAC5E,QAAIjnD,IAAJ,GAAW;AACT,aAAO5sD,KAAK,CAACmW,GAAN,CAAU,qBAAV,CAAP;AACD,KAH2E;;AAI5E,QAAI9kB,MAAJ,GAAa;AACX,aAAO2O,KAAK,CAACmW,GAAN,CAAU,iBAAV,EAA6B9kB,MAApC;AACD,KAN2E;;AAO5E,QAAImL,KAAJ,GAAY;AACV,aAAOwD,KAAK,CAACmW,GAAN,CAAU,iBAAV,EAA6B3Z,KAApC;AACD,KAT2E;;AAU5E,QAAIiL,KAAJ,GAAY;AACV,aAAOzH,KAAK,CAACmW,GAAN,CAAU,iBAAV,EAA6B1O,KAApC;AACD,KAZ2E;;AAa5E,QAAIi6G,OAAJ,GAAc;AACZ,aAAO,KAAP;AACD,KAf2E;;AAgB5E,QAAIrrG,KAAJ,GAAY;AACV,aAAOimG,UAAU,CAACjrH,MAAlB;AACD,KAlB2E;;AAmB5EkB,KAAC,EAAE,WAASnB,CAAT,EAAY;AACb,aAAOkrH,UAAU,CAAClrH,CAAD,CAAV,CAAcmB,CAArB;AACD,KArB2E;AAsB5EuV,KAAC,EAAE,WAAS1W,CAAT,EAAY;AACb,aAAOkrH,UAAU,CAAClrH,CAAD,CAAV,CAAc0W,CAArB;AACD,KAxB2E;AAyB5EC,MAAE,EAAE,YAAS3W,CAAT,EAAY;AACd,aAAOkrH,UAAU,CAAClrH,CAAD,CAAV,CAAc2W,EAAd,GAAmB,GAA1B;AACD,KA3B2E;AA4B5EC,MAAE,EAAE,YAAS5W,CAAT,EAAY;AACd,aAAOkrH,UAAU,CAAClrH,CAAD,CAAV,CAAc4W,EAAd,GAAmB,GAA1B;AACD,KA9B2E;AA+B5E4vG,QAAI,EAAED,SAAS,CAACjG,YA/B4D;AAgC5EmG,WAAO,EAAEF,SAAS,CAAChG;AAhCyD,GAApD,CA3D5B;AAAA,MA6FE4iB,oBAAoB,GAAG,IAAIpT,eAAJ,CAAoB0S,gBAAgB,CAAChgB,aAArC,EAAoD;AACzE,QAAIjnD,IAAJ,GAAW;AACT,aAAO5sD,KAAK,CAACmW,GAAN,CAAU,kBAAV,CAAP;AACD,KAHwE;;AAIzE,QAAI9kB,MAAJ,GAAa;AACX,aAAO2O,KAAK,CAACmW,GAAN,CAAU,cAAV,EAA0B9kB,MAAjC;AACD,KANwE;;AAOzE,QAAImL,KAAJ,GAAY;AACV,aAAOwD,KAAK,CAACmW,GAAN,CAAU,cAAV,EAA0B3Z,KAAjC;AACD,KATwE;;AAUzE,QAAIiL,KAAJ,GAAY;AACV,aAAOzH,KAAK,CAACmW,GAAN,CAAU,cAAV,EAA0B1O,KAAjC;AACD,KAZwE;;AAazE,QAAIi6G,OAAJ,GAAc;AACZ,aAAO1hH,KAAK,CAACmW,GAAN,CAAU,2BAAV,CAAP;AACD,KAfwE;;AAgBzE,QAAIE,KAAJ,GAAY;AACV,aAAOimG,UAAU,CAACjrH,MAAlB;AACD,KAlBwE;;AAmBzEkB,KAAC,EAAE,WAASnB,CAAT,EAAY;AACb,aAAOkrH,UAAU,CAAClrH,CAAD,CAAV,CAAcmB,CAArB;AACD,KArBwE;AAsBzEuV,KAAC,EAAE,WAAS1W,CAAT,EAAY;AACb,aAAOkrH,UAAU,CAAClrH,CAAD,CAAV,CAAc0W,CAArB;AACD,KAxBwE;AAyBzEC,MAAE,EAAE,YAAS3W,CAAT,EAAY;AACd,UAAIb,CAAC,GAAG+rH,UAAU,CAAClrH,CAAD,CAAlB;AACA,aAAOb,CAAC,CAAC0X,EAAF,GAAO1X,CAAC,CAACwY,IAAT,GAAgB,GAAvB;AACD,KA5BwE;AA6BzEf,MAAE,EAAE,YAAS5W,CAAT,EAAY;AACd,UAAIb,CAAC,GAAG+rH,UAAU,CAAClrH,CAAD,CAAlB;AACA,aAAOb,CAAC,CAAC2X,EAAF,GAAO3X,CAAC,CAACwY,IAAT,GAAgB,GAAvB;AACD,KAhCwE;AAiCzE6uG,QAAI,EAAED,SAAS,CAACjG,YAjCyD;AAkCzEmG,WAAO,EAAEF,SAAS,CAAChG;AAlCsD,GAApD,CA7FzB;AAAA,MAiIE6iB,qBAAqB,GAAG,IAAIhS,aAAJ,CAAkBiR,gBAAgB,CAAC5f,aAAnC,EAAkD;AACxE,QAAIjnD,IAAJ,GAAW;AACT,aAAO5sD,KAAK,CAACmW,GAAN,CAAU,mBAAV,CAAP;AACD,KAHuE;;AAIxE,QAAI9kB,MAAJ,GAAa;AACX,aAAO,MAAM2O,KAAK,CAACmW,GAAN,CAAU,OAAV,CAAN,GAA2BnW,KAAK,CAACmW,GAAN,CAAU,sBAAV,CAAlC;AACD,KANuE;;AAOxE,QAAI1O,KAAJ,GAAY;AACV,UAAIivC,CAAC,GAAG12C,KAAK,CAACmW,GAAN,CAAU,oBAAV,CAAR;AACA,aAAOugC,CAAC,KAAK,MAAN,GAAeA,CAAf,GAAmBomE,WAAQ,CAACpH,gBAAT,CAA0B11G,KAAK,CAACmW,GAAN,CAAU,iBAAV,CAA1B,CAA1B;AACD,KAVuE;;AAWxE,QAAIE,KAAJ,GAAY;AACV,aAAO48G,kBAAkB,CAAC5hI,MAA1B;AACD,KAbuE;;AAcxEkB,KAAC,EAAE,WAASnB,CAAT,EAAY;AACb,aAAO6hI,kBAAkB,CAAC7hI,CAAD,CAAlB,CAAsBmB,CAA7B;AACD,KAhBuE;AAiBxEuV,KAAC,EAAE,WAAS1W,CAAT,EAAY;AACb,aAAO6hI,kBAAkB,CAAC7hI,CAAD,CAAlB,CAAsB0W,CAA7B;AACD,KAnBuE;AAoBxEC,MAAE,EAAE,YAAS3W,CAAT,EAAY;AACd,aAAO6hI,kBAAkB,CAAC7hI,CAAD,CAAlB,CAAsBquF,EAA7B;AACD,KAtBuE;AAuBxEz3E,MAAE,EAAE,YAAS5W,CAAT,EAAY;AACd,aAAO6hI,kBAAkB,CAAC7hI,CAAD,CAAlB,CAAsBsuF,EAA7B;AACD,KAzBuE;AA0BxE6+B,SAAK,EAAE,eAASntH,CAAT,EAAY;AACjB,UAAI+lB,CAAC,GAAG87G,kBAAkB,CAAC7hI,CAAD,CAA1B;AACA,aAAOoB,IAAI,CAACE,GAAL,CAAS,CAAT,EAAYF,IAAI,CAACg6C,GAAL,CAASr1B,CAAC,CAACsoE,EAAF,GAAOtoE,CAAC,CAACsoE,EAAT,GAActoE,CAAC,CAACuoE,EAAF,GAAOvoE,CAAC,CAACuoE,EAAhC,EAAoC,GAApC,IAA2C,GAAvD,CAAP;AACD,KA7BuE;AA8BxEk4B,QAAI,EAAED,SAAS,CAACjG,YA9BwD;AA+BxEmG,WAAO,EAAEF,SAAS,CAAChG;AA/BqD,GAAlD,CAjI1B;AAAA,MAkKE8iB,cAAc,GAAG,IAAIlD,cAAJ,CAAmB5Z,SAAnB,EAA8B33G,KAA9B,CAlKnB;AAAA,MAmKE00H,eAnKF;AAAA,MAqKEC,eArKF;AAAA,MAsKEC,gBAtKF;AAAA,MAuKErrH,QAvKF;AAAA,MAwKEorE,SAxKF;AAAA,MAyKEkgD,kBAAkB,GAAG,EAzKvB;AAAA,MA0KEn/C,MA1KF;AAAA,MA2KEo/C,QA3KF;AAAA,MA4KEC,UA5KF;AAAA,MA6KEC,aAAa,GAAG,EA7KlB;AAAA,MA8KEC,eAAe,GAAG,EA9KpB;AAAA,MA+KE59G,KA/KF;AAAA,MAgLE69G,OAhLF;AAAA,MAiLEC,YAAY,GAAG,EAjLjB;AAAA,MAkLE3wH,kBAlLF;AAAA,MAmLE4wH,gBAnLF;AAAA,MAoLEC,gBApLF;AAAA,MAqLEzuH,SArLF;AAAA,MAsLE;AACA;AACA0uH,qBAAmB,GAAG,IAxLxB;AAAA,MAyLEC,aAzLF;AAAA,MA0LE9uH,WA1LF;AAAA,MA2LEc,cA3LF;AAAA,MA4LEiuH,SA5LF;AAAA,MA6LEC,aA7LF;AAAA,MA+LE1xE,OAAO,GAAG4E,SAAS,CAACvF,YAAV,EA/LZ;AAAA,MAiME;AACAsyE,QAAM,GAAGljI,IAAI,CAAC0O,EAAL,GAAU,CAlMrB;AAAA,MAoME;AACA;AACA;AACAy0H,iBAAe,GAAG5xE,OAAO,CAACA,OAAR,KAAoB,MAApB,IAA8BjxD,MAAM,CAACixD,OAAO,CAACp0D,OAAT,CAAN,IAA2B,EAvM7E;;AAyMA,WAASimI,qBAAT,CAA+BxkI,CAA/B,EAAkCy2D,IAAlC,EAAwC9nB,KAAxC,EAA+C;AAC7C,QAAI,CAAC8nB,IAAD,IAASA,IAAI,KAAK,MAAtB,EAA8B;AAC5B,aAAO,MAAP;AACD;;AAED,QAAI9qD,EAAE,GAAG,mBAAmB8qD,IAAI,CAACtjC,WAAL,GAAmBrnB,OAAnB,CAA2B,YAA3B,EAAyC,EAAzC,CAAnB,IACN6iC,KAAK,GAAG,OAAH,GAAa,EADZ,IACkB1oB,KAAK,CAAC/M,SAAN,CAAgBlZ,CAAhB,EAAmBmzB,WAAnB,GAAiCrnB,OAAjC,CAAyC,YAAzC,EAAuD,EAAvD,CAD3B;;AAGA,QAAI,CAACy3H,eAAe,CAAC53H,EAAD,CAApB,EAA0B;AACxB,UAAIkX,IAAJ,EAAUmuG,SAAV;AACAnuG,UAAI,GAAGu/G,cAAc,CAACx/G,MAAf,CAAsB,MAAtB,CAAP;;AACA,UAAIC,IAAI,CAACyC,KAAL,EAAJ,EAAkB;AAChBzC,YAAI,GAAGu/G,cAAc,CAACv1H,MAAf,CAAsB,MAAtB,CAAP;AACD;;AACDmkH,eAAS,GAAGnuG,IAAI,CAACD,MAAL,CAAY,MAAMjX,EAAlB,CAAZ;AACAqlH,eAAS,GAAGoR,cAAc,CAACv1H,MAAf,CAAsB,QAAtB,EACTwS,IADS,CACJ,IADI,EACE1T,EADF,EAET0T,IAFS,CAEJ,OAFI,EAEK,mBAFL,EAGTA,IAHS,CAGJ,SAHI,EAGO,WAHP,EAITA,IAJS,CAIJ,MAJI,EAII,GAJJ,EAKTA,IALS,CAKJ,MALI,EAKI,GALJ,EAMTA,IANS,CAMJ,aANI,EAMW,aANX,EAOTA,IAPS,CAOJ,aAPI,EAOW,GAPX,EAQTA,IARS,CAQJ,cARI,EAQY,GARZ,EASTA,IATS,CASJ,QATI,EASM,MATN,CAAZ;AAUA2xG,eAAS,CAACnkH,MAAV,CAAiB,MAAjB,EACGwS,IADH,CACQ,GADR,EACao3C,IADb,EAEGp3C,IAFH,CAEQ,MAFR,EAEgB4G,KAAK,CAAC/M,SAAN,CAAgBlZ,CAAhB,CAFhB,EAGGqf,IAHH,CAGQ,WAHR,EAGqBsvB,KAAK,GAAG,+BAAH,GAAqC,EAH/D;AAIA40F,qBAAe,CAAC53H,EAAD,CAAf,GAAsB,IAAtB;AACD;;AACD,WAAO,UAAUA,EAAV,GAAe,GAAtB;AACD;;AAED,WAAS84H,sBAAT,CAAgCpuH,KAAhC,EAAuCzP,IAAvC,EAA6C;AAC3C,QAAIic,IAAJ;AAAA,QACElX,EAAE,GAAG,cAAc/E,IADrB;AAAA,QAEEoqH,SAFF;AAGAnuG,QAAI,GAAGu/G,cAAc,CAACx/G,MAAf,CAAsB,MAAtB,CAAP;;AACA,QAAIC,IAAI,CAACyC,KAAL,EAAJ,EAAkB;AAChBzC,UAAI,GAAGu/G,cAAc,CAACv1H,MAAf,CAAsB,MAAtB,CAAP;AACD;;AACDmkH,aAAS,GAAGnuG,IAAI,CAACD,MAAL,CAAY,MAAMjX,EAAlB,EAAsBlJ,MAAtB,EAAZ;AACAuuH,aAAS,GAAGnuG,IAAI,CAAChW,MAAL,CAAY,QAAZ,EACTwS,IADS,CACJ,IADI,EACE,cAAczY,IADhB,EAETyY,IAFS,CAEJ,SAFI,EAEO,WAFP,EAGTA,IAHS,CAGJ,MAHI,EAGI,GAHJ,EAITA,IAJS,CAIJ,MAJI,EAII,GAJJ,EAKTA,IALS,CAKJ,aALI,EAKW,aALX,EAMTA,IANS,CAMJ,aANI,EAMW,GANX,EAOTA,IAPS,CAOJ,cAPI,EAOY,GAPZ,EAQTA,IARS,CAQJ,QARI,EAQM,MARN,EASTA,IATS,CASJ,QATI,EASMhJ,KATN,EAUTgJ,IAVS,CAUJ,MAVI,EAUIhJ,KAVJ,CAAZ;AAWA26G,aAAS,CAACnkH,MAAV,CAAiB,MAAjB,EACGwS,IADH,CACQ,GADR,EACa,uBADb;AAED;;AAED,WAASqlH,oBAAT,GAAgC;AAC9B,QAAI7hH,IAAJ,EACEqwG,IADF;AAGArwG,QAAI,GAAGu/G,cAAc,CAACx/G,MAAf,CAAsB,MAAtB,CAAP;;AACA,QAAIC,IAAI,CAACyC,KAAL,EAAJ,EAAkB;AAChBzC,UAAI,GAAGu/G,cAAc,CAACv1H,MAAf,CAAsB,MAAtB,CAAP;AACD;;AACDqmH,QAAI,GAAGrwG,IAAI,CAACD,MAAL,CAAY,OAAZ,CAAP;;AACA,QAAIswG,IAAI,CAAC5tG,KAAL,EAAJ,EAAkB;AAChB4tG,UAAI,GAAGrwG,IAAI,CAAChW,MAAL,CAAY,QAAZ,EACJwS,IADI,CACC,IADD,EACO,MADP,EAEJA,IAFI,CAEC,GAFD,EAEM,IAFN,EAGJA,IAHI,CAGC,GAHD,EAGM,IAHN,EAIJA,IAJI,CAIC,OAJD,EAIU,MAJV,EAKJA,IALI,CAKC,QALD,EAKW,MALX,CAAP;AAMA6zG,UAAI,CAACrmH,MAAL,CAAY,cAAZ,EACGwS,IADH,CACQ,QADR,EACkB,QADlB,EAEGA,IAFH,CAEQ,IAFR,EAEc,eAFd,EAGGA,IAHH,CAGQ,UAHR,EAGoB,QAHpB,EAIGA,IAJH,CAIQ,QAJR,EAIkB,GAJlB;AAKA6zG,UAAI,CAACrmH,MAAL,CAAY,gBAAZ,EACGwS,IADH,CACQ,QADR,EACkB,SADlB,EAEGA,IAFH,CAEQ,IAFR,EAEc,QAFd,EAGGA,IAHH,CAGQ,cAHR,EAGwB,IAHxB;AAIA6zG,UAAI,CAACrmH,MAAL,CAAY,SAAZ,EACGwS,IADH,CACQ,IADR,EACc,eADd,EAEGA,IAFH,CAEQ,KAFR,EAEe,SAFf,EAGGA,IAHH,CAGQ,MAHR,EAGgB,QAHhB;AAID;AACF,GAnSgD,CAqSjD;AACA;AACA;AACA;AACA;;;AACA,WAASslH,kBAAT,GAA8B;AAC5B,QAAIC,OAAO,GAAG,IAAd;AAAA,QACEC,KAAK,GAAGzjI,IAAI,CAACC,GAAL,CAASmiI,gBAAT,EAA2B,EAA3B,CADV,CAD4B,CAI5B;;AACA,QAAIT,aAAa,CAACngH,MAAd,CAAqB,YAArB,EAAmC0C,KAAnC,EAAJ,EAAgD;AAC9C;AACAy9G,mBAAa,CAACl2H,MAAd,CAAqB,OAArB,EACGwS,IADH,CACQ;AACJ,cAAM,WADF;AAEJ,aAAKulH,OAFD;AAGJ,iBAASC,KAAK,GAAG,CAHb;AAIJ,kBAAUA,KAAK,GAAG,CAJd;AAKJ,+BAAuB,UALnB;AAMJ;AACA,sBAAc,guEAPV;AAQJ,iBAAS;AARL,OADR,EAWGh4H,MAXH,CAWU,OAXV,EAYGiO,IAZH,CAYQiM,IAAI,CAACR,CAAL,CAAO,4BAAP,CAZR;AAaD;;AACD,QAAIw8G,aAAa,CAACngH,MAAd,CAAqB,cAArB,EAAqC0C,KAArC,EAAJ,EAAkD;AAChD;AACAy9G,mBAAa,CAACl2H,MAAd,CAAqB,OAArB,EACGwS,IADH,CACQ;AACJ,cAAM,aADF;AAEJ,aAAK,GAFD;AAGJ,iBAASwlH,KAAK,GAAG,GAHb;AAIJ,kBAAUA,KAAK,GAAG,CAJd;AAKJ,+BAAuB,UALnB;AAMJ;AACA,sBAAc,43FAPV;AAQJ,iBAAS;AARL,OADR,EAWGh4H,MAXH,CAWU,OAXV,EAYGiO,IAZH,CAYQiM,IAAI,CAACR,CAAL,CAAO,sBAAP,CAZR;AAaD;AACF,GA/UgD,CAiVjD;AACA;AACA;;;AAEA,WAASu+G,gBAAT,GAA4B;AAC1B,QAAIC,QAAQ,GAAGn2H,KAAK,CAACmW,GAAN,CAAU,oBAAV,CAAf;AAAA,QACEigH,aAAa,GAAGp2H,KAAK,CAACmW,GAAN,CAAU,WAAV,CADlB;AAAA,QAEEkgH,WAFF;AAAA,QAEeC,WAFf;AAAA,QAGE;AACA79B,QAAI,GAAG,CAJT;AAAA,QAKE89B,OAAO,GAAG,CALZ;AAAA,QAMEN,KAAK,GAAGzjI,IAAI,CAACC,GAAL,CAASmiI,gBAAT,EAA2B,EAA3B,CANV,CAD0B,CAS1B;;AACA,QAAIuB,QAAJ,EAAc;AACZ19B,UAAI,IAAI89B,OAAR;AACAF,iBAAW,GAAGlC,aAAa,CAACngH,MAAd,CAAqB,YAArB,EACXvD,IADW,CACN;AACJ,aAAKgoF,IADD;AAEJ,iBAASw9B,KAAK,GAAG,CAFb;AAGJ,kBAAUA,KAAK,GAAG;AAHd,OADM,EAMXl3G,KANW,CAML,SANK,EAMM,EANN,CAAd;AAQAu3G,iBAAW,GAAG15F,QAAQ,CAACy5F,WAAW,CAAC5lH,IAAZ,CAAiB,QAAjB,CAAD,EAA6B,EAA7B,CAAtB;AACAgoF,UAAI,IAAI69B,WAAR;AACD,KAZD,MAYO;AACLnC,mBAAa,CAACngH,MAAd,CAAqB,YAArB,EAAmC+K,KAAnC,CAAyC,SAAzC,EAAoD,MAApD;AACD,KAxByB,CA0B1B;AACA;;;AACA,QAAIq3G,aAAJ,EAAmB;AACjB39B,UAAI,IAAI89B,OAAR;AACApC,mBAAa,CAACngH,MAAd,CAAqB,cAArB,EACGvD,IADH,CACQ;AACJ,aAAKgoF,IADD;AAEJ,iBAASw9B,KAAK,GAAG,GAFb;AAGJ,kBAAUA,KAAK,GAAG;AAHd,OADR,EAMGl3G,KANH,CAMS,SANT,EAMoB,EANpB;AAOD,KATD,MASO;AACLo1G,mBAAa,CAACngH,MAAd,CAAqB,cAArB,EAAqC+K,KAArC,CAA2C,SAA3C,EAAsD,MAAtD;AACD;AACF;;AAED,WAASy3G,cAAT,GAA0B;AACxBhB,aAAS,CAACv+G,KAAV,GAAkBhZ,MAAlB,CAAyB,MAAzB,EACGwS,IADH,CACQ;AACJ,eAAS,WADL;AAEJ,WAAKgmH,gBAFD;AAGJ,sBAAgB7kB,QAAQ,CAAC,IAAD,CAHpB;AAIJ,gBAAUrqG,cAJN;AAKJ,cAAQ,MALJ;AAMJ,0BAAoB;AANhB,KADR;AASD;;AAED,WAASmvH,aAAT,GAAyB;AACvB,QAAIC,aAAa,GAAGptH,QAAQ,CAAC0N,KAAT,GAAiBhZ,MAAjB,CAAwB,GAAxB,CAApB;AAEA04H,iBAAa,CACVlmH,IADH,CACQ,OADR,EACiB,UADjB,EAEGA,IAFH,CAEQ,WAFR,EAGI,UAAS0G,CAAT,EAAY/lB,CAAZ,EAAe;AACb,aAAO,eAAewgH,QAAQ,CAACj9B,SAAS,CAACpiF,CAAV,CAAYnB,CAAZ,CAAD,CAAvB,GAA0C,GAA1C,GAAgDygH,WAAW,CAACl9B,SAAS,CAAC7sE,CAAV,CAAY1W,CAAZ,IAAiBujF,SAAS,CAACl4E,MAAV,CAAiBrL,CAAjB,CAAlB,CAA3D,GAAoG,GAA3G;AACD,KALL;AAOAulI,iBAAa,CAAC14H,MAAd,CAAqB,MAArB,EACGwS,IADH,CACQ;AACJ,eAAS,gBADL;AAEJ,WAAK,CAFD;AAGJ,WAAK,CAHD;AAIJ,eAAS,eAAS0G,CAAT,EAAY/lB,CAAZ,EAAe;AACtB,eAAOwgH,QAAQ,CAACj9B,SAAS,CAACn4E,KAAV,CAAgBpL,CAAhB,CAAD,CAAf;AACD,OANG;AAOJ,gBAAU,gBAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACvB,eAAOwgH,QAAQ,CAACj9B,SAAS,CAACl4E,MAAV,CAAiBrL,CAAjB,CAAD,CAAf;AACD,OATG;AAUJ,cAAQ,cAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACrB,eAAOujF,SAAS,CAACrsE,OAAV,CAAkBlX,CAAlB,IAAuBwlI,SAAS,CAAC1F,KAAV,CAAgB0F,SAAS,CAAChzG,KAAV,CAAgB+wD,SAAS,CAACltE,KAAV,CAAgBrW,CAAhB,CAAhB,CAAhB,EAAqDoiI,cAArD,CAAvB,GAA8F,aAArG;AACD,OAZG;AAaJ,sBAAgB,qBAASr8G,CAAT,EAAY/lB,CAAZ,EAAe;AAC7B,eAAOujF,SAAS,CAACrsE,OAAV,CAAkBlX,CAAlB,IAAuB,GAAvB,GAA6B,GAApC;AACD,OAfG;AAgBJ,gBAAU,gBAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACvB,eAAOujF,SAAS,CAACrsE,OAAV,CAAkBlX,CAAlB,IAAuBwlI,SAAS,CAAC1F,KAAV,CAAgB0F,SAAS,CAAChzG,KAAV,CAAgB+wD,SAAS,CAACltE,KAAV,CAAgBrW,CAAhB,CAAhB,CAAhB,EAAqDoiI,cAArD,CAAvB,GAA8F,aAArG;AACD;AAlBG,KADR,EAVuB,CAgCvB;;AACAmD,iBAAa,CAAC1lH,IAAd,CAAmB,UAASkG,CAAT,EAAY/lB,CAAZ,EAAe;AAChC;AACA,UAAI,CAACujF,SAAS,CAACjrE,2BAAV,CAAsCtY,CAAtC,CAAD,IACD,CAACujF,SAAS,CAACnrE,UAAV,CAAqBpY,CAArB,CAAD,IAA4B,CAACujF,SAAS,CAAClrE,UAAV,CAAqBrY,CAArB,CADhC,EAC0D;AACxD;AACD,OAL+B,CAOhC;AACA;AACA;;;AACA,UAAIylI,eAAe,GAAGnjH,EAAE,CAACM,MAAH,CAAU,IAAV,CAAtB;AAAA,UACE62E,SAAS,GAAGlW,SAAS,CAACl4E,MAAV,CAAiBrL,CAAjB,CADd;AAAA,UAEEw5F,QAAQ,GAAGjW,SAAS,CAACn4E,KAAV,CAAgBpL,CAAhB,CAFb;AAAA,UAGE0lI,KAAK,GAAGniD,SAAS,CAACnrE,UAAV,CAAqBpY,CAArB,CAHV;AAAA,UAIE2lI,KAAK,GAAGpiD,SAAS,CAAClrE,UAAV,CAAqBrY,CAArB,CAJV;AAAA,UAKE;AACA4lI,YAAM,GAAG,IANX;AAAA,UAOEC,KAAK,GAAG,IAPV;AAAA,UAQEnoG,IARF;AAAA,UAQQsmF,MARR,CAVgC,CAoBhC;;AACA,UAAI0hB,KAAJ,EAAW;AACT;AACAhoG,YAAI,GAAG,CAAC+7D,SAAS,GAAG,IAAIosC,KAAjB,IAA0BzkI,IAAI,CAAC4kB,KAAL,CAAW,CAACyzE,SAAS,GAAG,IAAIosC,KAAjB,IAA0B,GAArC,CAAjC;AACA7hB,cAAM,GAAG1hG,EAAE,CAAC6B,KAAH,CAAS0hH,KAAT,EAAgBpsC,SAAhB,EAA2B/7D,IAA3B,CAAT;AACA+nG,uBAAe,CAACphH,SAAhB,CAA0B,yBAA1B,EAAqDsB,IAArD,CAA0Dq+F,MAA1D,EAAkEn+F,KAAlE,GAA0EhZ,MAA1E,CAAiF,MAAjF,EACGwS,IADH,CACQ;AACJ,mBAAS,oBADL;AAEJ,eAAK,WAAS0G,EAAT,EAAY;AACf,gBAAI2/G,KAAK,GAAG,CAAZ,EACE,OAAO,OAAOllB,QAAQ,CAAChnB,QAAQ,GAAGosC,MAAX,GAAoBC,KAArB,CAAf,GACL,GADK,GACCrlB,QAAQ,CAACz6F,EAAD,CADT,GAEL,KAFK,GAEGy6F,QAAQ,CAAChnB,QAAQ,GAAGqsC,KAAZ,CAFX,GAGL,GAHK,GAGCrlB,QAAQ,CAACz6F,EAAD,CAHhB,CADF,KAME,OAAO,OAAOy6F,QAAQ,CAAC,CAAColB,MAAD,GAAUC,KAAX,CAAf,GACL,GADK,GACCrlB,QAAQ,CAACz6F,EAAD,CADT,GAEL,KAFK,GAEGy6F,QAAQ,CAAC,CAACqlB,KAAF,CAFX,GAGL,GAHK,GAGCrlB,QAAQ,CAACz6F,EAAD,CAHhB;AAIH;AAbG,SADR;AAgBD,OAzC+B,CA0ChC;;;AACA,UAAI4/G,KAAJ,EAAW;AACT;AACAjoG,YAAI,GAAG,CAAC87D,QAAQ,GAAG,IAAIqsC,KAAhB,IAAyBzkI,IAAI,CAAC4kB,KAAL,CAAW,CAACwzE,QAAQ,GAAG,IAAIqsC,KAAhB,IAAyB,GAApC,CAAhC;AACA7hB,cAAM,GAAG1hG,EAAE,CAAC6B,KAAH,CAAS0hH,KAAT,EAAgBrsC,QAAhB,EAA0B97D,IAA1B,CAAT;AACA+nG,uBAAe,CAACphH,SAAhB,CAA0B,0BAA1B,EAAsDsB,IAAtD,CAA2Dq+F,MAA3D,EAAmEn+F,KAAnE,GAA2EhZ,MAA3E,CAAkF,MAAlF,EACGwS,IADH,CACQ;AACJ,mBAAS,qBADL;AAEJ,eAAK,WAAS0G,GAAT,EAAY;AACf,gBAAI4/G,KAAK,GAAG,CAAZ,EACE,OAAO,OAAOnlB,QAAQ,CAACz6F,GAAD,CAAf,GACL,GADK,GACCy6F,QAAQ,CAAC,CAAColB,MAAD,GAAUC,KAAX,CADT,GAEL,KAFK,GAEGrlB,QAAQ,CAACz6F,GAAD,CAFX,GAGL,GAHK,GAGCy6F,QAAQ,CAAC,CAACqlB,KAAF,CAHhB,CADF,KAME,OAAO,OAAOrlB,QAAQ,CAACz6F,GAAD,CAAf,GACL,GADK,GACCy6F,QAAQ,CAAC/mB,SAAS,GAAGmsC,MAAZ,GAAqBC,KAAtB,CADT,GAEL,KAFK,GAEGrlB,QAAQ,CAACz6F,GAAD,CAFX,GAGL,GAHK,GAGCy6F,QAAQ,CAAC/mB,SAAS,GAAGosC,KAAb,CAHhB;AAIH;AAbG,SADR;AAgBD,OA/D+B,CAgEhC;;;AACAJ,qBAAe,CAACphH,SAAhB,CAA0B,mDAA1B,EACGhF,IADH,CACQ;AACJ,sBAAcklH,eAAe,GAAG,EAAH,GAAQ,sBADjC;AAEJ,wBAAgB/jB,QAAQ,CAACyjB,gBAAD,CAFpB;AAGJ,kBAAUD,gBAHN;AAIJ,gBAAQ;AAJJ,OADR;AAOD,KAxED;AAyED;;AAGD,WAAS8B,UAAT,GAAsB;AACpB,QAAIC,MAAM,GAAG,CAACrC,QAAD,EAAWC,UAAX,CAAb;AAAA,QACE3jI,CADF;;AAEA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+lI,MAAM,CAAC9lI,MAAvB,EAA+BD,CAAC,EAAhC,EAAoC;AAClC,UAAIgmI,UAAU,GAAGD,MAAM,CAAC/lI,CAAD,CAAN,CAAU6lB,KAAV,GAAkBhZ,MAAlB,CAAyB,GAAzB,CAAjB;AACAm5H,gBAAU,CAAC3mH,IAAX,CAAgB,OAAhB,EAAyB,OAAzB,EAAkCA,IAAlC,CAAuC,WAAvC,EAAoD,UAAS0G,CAAT,EAAY;AAC9D,eAAO,eAAey6F,QAAQ,CAACl8B,MAAM,CAACnjF,CAAP,CAAS4kB,CAAC,CAACuT,KAAX,CAAD,CAAvB,GAA6C,GAA7C,GAAmDmnF,WAAW,CAACn8B,MAAM,CAAC5tE,CAAP,CAASqP,CAAC,CAACuT,KAAX,IAAoBgrD,MAAM,CAACj5E,MAAP,CAAc0a,CAAC,CAACuT,KAAhB,CAArB,CAA9D,GAA6G,GAApH;AACD,OAFD;AAGA0sG,gBAAU,CAACn5H,MAAX,CAAkB,MAAlB,EAA0BwS,IAA1B,CAA+B;AAC7B,iBAAS,iBADoB;AAE7B,aAAK,CAFwB;AAG7B,aAAK,CAHwB;AAI7B,iBAAS,eAAS0G,CAAT,EAAY;AACnB,iBAAOy6F,QAAQ,CAACl8B,MAAM,CAACl5E,KAAP,CAAa2a,CAAC,CAACuT,KAAf,CAAD,CAAf;AACD,SAN4B;AAO7B,kBAAU,gBAASvT,CAAT,EAAY;AACpB,iBAAOy6F,QAAQ,CAACl8B,MAAM,CAACj5E,MAAP,CAAc0a,CAAC,CAACuT,KAAhB,CAAD,CAAf;AACD,SAT4B;AAU7B,gBAAQ,cAASvT,CAAT,EAAY;AAClB,iBAAOu+D,MAAM,CAACptE,OAAP,CAAe6O,CAAC,CAACuT,KAAjB,KAA2BgrD,MAAM,CAACz9E,IAAP,CAAYkf,CAAC,CAACuT,KAAd,MAAyB,WAApD,GAAkEksG,SAAS,CAAC1F,KAAV,CAAgB0F,SAAS,CAAChzG,KAAV,CAAgB8xD,MAAM,CAACjuE,KAAP,CAAa0P,CAAC,CAACuT,KAAf,CAAhB,CAAhB,EAAwD8oG,cAAxD,CAAlE,GAA4I,aAAnJ;AACD,SAZ4B;AAa7B,wBAAgB,qBAASr8G,CAAT,EAAY;AAC1B,iBAAOu+D,MAAM,CAAClrE,UAAP,CAAkB2M,CAAC,CAACuT,KAApB,CAAP;AACD,SAf4B;AAgB7B,4BAAoB,yBAASvT,CAAT,EAAY;AAC9B,iBAAOu+D,MAAM,CAACnrE,UAAP,CAAkB4M,CAAC,CAACuT,KAApB,CAAP;AACD,SAlB4B;AAmB7B,kBAAU,gBAASvT,CAAT,EAAY;AACpB,iBAAOu+D,MAAM,CAACptE,OAAP,CAAe6O,CAAC,CAACuT,KAAjB,KAA2BgrD,MAAM,CAACz9E,IAAP,CAAYkf,CAAC,CAACuT,KAAd,MAAyB,WAApD,GAAkEgrD,MAAM,CAACprE,SAAP,CAAiB6M,CAAC,CAACuT,KAAnB,CAAlE,GAA8F,aAArG;AACD;AArB4B,OAA/B;AAuBA0sG,gBAAU,CAACn5H,MAAX,CAAkB,SAAlB,EAA6BwS,IAA7B,CAAkC;AAChC,iBAAS,eADuB;AAEhC,cAAM,YAAS0G,CAAT,EAAY;AAChB,iBAAOy6F,QAAQ,CAACl8B,MAAM,CAACl5E,KAAP,CAAa2a,CAAC,CAACuT,KAAf,CAAD,CAAR,GAAkC,CAAzC;AACD,SAJ+B;AAKhC,cAAM,YAASvT,CAAT,EAAY;AAChB,iBAAOy6F,QAAQ,CAACl8B,MAAM,CAACj5E,MAAP,CAAc0a,CAAC,CAACuT,KAAhB,CAAD,CAAR,GAAmC,CAA1C;AACD,SAP+B;AAQhC,cAAM,YAASvT,CAAT,EAAY;AAChB,iBAAOy6F,QAAQ,CAACl8B,MAAM,CAACl5E,KAAP,CAAa2a,CAAC,CAACuT,KAAf,CAAD,CAAR,GAAkC,CAAzC;AACD,SAV+B;AAWhC,cAAM,YAASvT,CAAT,EAAY;AAChB,iBAAOy6F,QAAQ,CAACl8B,MAAM,CAACj5E,MAAP,CAAc0a,CAAC,CAACuT,KAAhB,CAAD,CAAR,GAAmC,CAA1C;AACD,SAb+B;AAchC,gBAAQ,cAASvT,CAAT,EAAY;AAClB,iBAAOu+D,MAAM,CAACptE,OAAP,CAAe6O,CAAC,CAACuT,KAAjB,KAA2BgrD,MAAM,CAACz9E,IAAP,CAAYkf,CAAC,CAACuT,KAAd,MAAyB,SAApD,GAAgEksG,SAAS,CAAC1F,KAAV,CAAgB0F,SAAS,CAAChzG,KAAV,CAAgB8xD,MAAM,CAACjuE,KAAP,CAAa0P,CAAC,CAACuT,KAAf,CAAhB,CAAhB,EAAwD8oG,cAAxD,CAAhE,GAA0I,aAAjJ;AACD,SAhB+B;AAiBhC,wBAAgB,qBAASr8G,CAAT,EAAY;AAC1B,iBAAOu+D,MAAM,CAAClrE,UAAP,CAAkB2M,CAAC,CAACuT,KAApB,CAAP;AACD,SAnB+B;AAoBhC,4BAAoB,yBAASvT,CAAT,EAAY;AAC9B,iBAAOu+D,MAAM,CAACnrE,UAAP,CAAkB4M,CAAC,CAACuT,KAApB,CAAP;AACD,SAtB+B;AAuBhC,kBAAU,gBAASvT,CAAT,EAAY;AACpB,iBAAOu+D,MAAM,CAACptE,OAAP,CAAe6O,CAAC,CAACuT,KAAjB,KAA2BgrD,MAAM,CAACz9E,IAAP,CAAYkf,CAAC,CAACuT,KAAd,MAAyB,SAApD,GAAgEgrD,MAAM,CAACprE,SAAP,CAAiB6M,CAAC,CAACuT,KAAnB,CAAhE,GAA4F,aAAnG;AACD;AAzB+B,OAAlC;AA2BD;AACF;;AAED,WAAS2sG,gBAAT,CAA0BlgH,CAA1B,EAA6B;AAC3B,QAAI5kB,CAAJ;AAAA,QAAOuV,CAAP;AAAA,QAAUwvH,KAAV;AAAA,QAAiBC,KAAjB;AAAA,QAAwBC,KAAxB;AAAA,QAA+Bz8E,KAA/B;AAAA,QAAsC08E,MAAtC;AAAA,QAA8CC,MAA9C;AAAA,QAAsDC,QAAtD;AAAA,QAAgEC,QAAhE;AAAA,QACEC,UAAU,GAAGjmB,QAAQ,CAACz6F,CAAC,CAACzK,QAAH,CADvB;AAGAna,KAAC,GAAG4kB,CAAC,CAAC5kB,CAAN;AACAuV,KAAC,GAAGqP,CAAC,CAACrP,CAAN;;AAEA,QAAIqP,CAAC,CAACxK,QAAN,EAAgB;AACd;AACA;AACA2oH,yBAAmB,GAAG,KAAtB;;AACA,UAAIn+G,CAAC,CAACxK,QAAF,KAAe,MAAnB,EAA2B;AACzB2qH,aAAK,GAAGhb,UAAU,CAACnlG,CAAC,CAACvK,SAAH,CAAV,CAAwBra,CAAhC;AACAglI,aAAK,GAAGjb,UAAU,CAACnlG,CAAC,CAACvK,SAAH,CAAV,CAAwB9E,CAAhC;AACD,OAHD,MAGO;AACLwvH,aAAK,GAAG3iD,SAAS,CAACpiF,CAAV,CAAY4kB,CAAC,CAACvK,SAAd,IAA4B+nE,SAAS,CAACn4E,KAAV,CAAgB2a,CAAC,CAACvK,SAAlB,IAA+B,CAAnE;AACA2qH,aAAK,GAAG5iD,SAAS,CAAC7sE,CAAV,CAAYqP,CAAC,CAACvK,SAAd,IAA4B+nE,SAAS,CAACl4E,MAAV,CAAiB0a,CAAC,CAACvK,SAAnB,IAAgC,CAApE;AACD;AACF;;AAED,QAAIuK,CAAC,CAACxK,QAAF,IAAc,CAACwK,CAAC,CAAC9K,YAArB,EAAmC;AACjC9Z,OAAC,GAAG+kI,KAAJ;AACAxvH,OAAC,GAAGyvH,KAAJ;AACD;;AAED,QAAIpgH,CAAC,CAAC9K,YAAN,EAAoB;AAClB,UAAI,CAAC8K,CAAC,CAACxK,QAAP,EAAiB;AACfgrH,gBAAQ,GAAGxgH,CAAC,CAAC9K,YAAF,CAAe,CAAf,CAAX;AACAurH,gBAAQ,GAAGzgH,CAAC,CAAC9K,YAAF,CAAe,CAAf,CAAX;AACD,OAHD,MAGO;AACLsrH,gBAAQ,GAAGL,KAAX;AACAM,gBAAQ,GAAGL,KAAX;AACD;AACF;;AAEDE,UAAM,GAAG7lB,QAAQ,CAACr/G,CAAD,CAAjB;AACAmlI,UAAM,GAAG7lB,WAAW,CAAC/pG,CAAD,CAApB;AAEA0vH,SAAK,GAAGC,MAAM,GAAGI,UAAU,GAAG,IAA9B;AACA98E,SAAK,GAAG28E,MAAM,GAAGG,UAAU,GAAG,GAA9B;AAEAF,YAAQ,GAAG/lB,QAAQ,CAAC+lB,QAAD,CAAnB;AACAC,YAAQ,GAAG/lB,WAAW,CAAC+lB,QAAD,CAAtB;AAEA,WAAO,CAACJ,KAAD,EAAQz8E,KAAR,EAAe08E,MAAf,EAAuBC,MAAvB,EAA+BC,QAA/B,EAAyCC,QAAzC,CAAP;AACD;;AAED,WAASE,cAAT,CAAwBlwE,QAAxB,EAAkCx7C,KAAlC,EAAyC2rH,SAAzC,EAAoDC,UAApD,EAAgEtrH,QAAhE,EAA0E;AACxE,QAAIurH,eAAe,GAAG,CAClBhjH,UAAU,CAAC2yC,QAAQ,CAAC,CAAD,CAAT,CADQ,EAElB3yC,UAAU,CAAC2yC,QAAQ,CAAC,CAAD,CAAT,CAFQ,CAAtB;AAAA,QAIE3b,MAAM,GAAG,CACPh3B,UAAU,CAAC7I,KAAK,CAACpK,YAAN,CAAmB,GAAnB,CAAD,CAAV,GAAuC+1H,SAAS,GAAG,CAD5C,EAEP9iH,UAAU,CAAC7I,KAAK,CAACpK,YAAN,CAAmB,GAAnB,CAAD,CAAV,GAAuCg2H,UAAU,GAAG,CAF7C,CAJX;AAAA,QAQExsH,KAAK,GAAGkqH,MAAM,GAAGljI,IAAI,CAAC0lI,IAAL,CAAU,CAACD,eAAe,CAAC,CAAD,CAAf,GAAqBhsF,MAAM,CAAC,CAAD,CAA5B,KAAoCgsF,eAAe,CAAC,CAAD,CAAf,GAAqBhsF,MAAM,CAAC,CAAD,CAA/D,CAAV,CARnB;AAAA,QASEmB,QAAQ,GAAG56C,IAAI,CAACE,GAAL,CAASga,QAAT,EAAmBsrH,UAAU,GAAG,CAAhC,CATb;AAAA,QAWEG,GAAG,GAAG3lI,IAAI,CAAC6O,GAAL,CAASmK,KAAT,IAAkB4hC,QAX1B;AAAA,QAYEgrF,GAAG,GAAG5lI,IAAI,CAAC8O,GAAL,CAASkK,KAAT,IAAkB4hC,QAZ1B;AAcA,WAAQnB,MAAM,CAAC,CAAD,CAAN,GAAYksF,GAAb,GAAoB,IAApB,IAA4BlsF,MAAM,CAAC,CAAD,CAAN,GAAYmsF,GAAxC,IAA+C,GAA/C,IAAsDnsF,MAAM,CAAC,CAAD,CAAN,GAAYksF,GAAlE,IAAyE,IAAzE,IAAiFlsF,MAAM,CAAC,CAAD,CAAN,GAAYmsF,GAA7F,IAAoG,GAApG,GAA0GH,eAAjH;AACD;;AAED,WAASI,eAAT,GAA2B;AACzB,QAAIlB,MAAM,GAAG,CAACjD,gBAAD,EAAmBZ,kBAAnB,CAAb;AAAA,QACEgF,UADF;;AAGAA,cAAU,GAAG,oBAASC,QAAT,EAAmB;AAC9B,UAAI9tH,KAAK,GAAG0sH,MAAM,CAACoB,QAAQ,GAAG,CAAZ,CAAlB;AAAA,UACEC,cAAc,GAAG5xH,SAAS,CAACgzB,MAAV,CAAiB,UAASjiB,CAAT,EAAY;AAC5C,eAAOA,CAAC,CAAClN,KAAF,KAAY8tH,QAAnB;AACD,OAFgB,CADnB;AAKA9tH,WAAK,CAACgL,SAAN,CAAgB,uBAAhB,EACGsB,IADH,CACQyhH,cAAc,CAAC5+F,MAAf,CAAsB,UAASziB,CAAT,EAAY;AACtC,eAAOA,CAAC,CAAC/K,KAAT;AACD,OAFK,CADR,EAIGqE,IAJH,CAIQ;AACJ,aAAK,WAAS0G,CAAT,EAAY;AACf,iBAAOkgH,gBAAgB,CAAClgH,CAAD,CAAhB,CAAoB,CAApB,CAAP;AACD,SAHG;AAIJ,aAAK,WAASA,CAAT,EAAY;AACf,iBAAOkgH,gBAAgB,CAAClgH,CAAD,CAAhB,CAAoB,CAApB,CAAP;AACD,SANG;AAOJ,qBAAa,mBAASA,CAAT,EAAY;AACvB,cAAI1K,MAAM,GAAG0K,CAAC,CAAC1K,MAAf;AAAA,cACEiL,GAAG,GAAG2/G,gBAAgB,CAAClgH,CAAD,CADxB;AAEA,iBAAO,YAAY1K,MAAZ,GAAqB,GAArB,GAA2BiL,GAAG,CAAC,CAAD,CAA9B,GAAoC,GAApC,GAA0CA,GAAG,CAAC,CAAD,CAA7C,GAAmD,GAA1D;AACD;AAXG,OAJR;AAkBAjN,WAAK,CAACgL,SAAN,CAAgB,uBAAhB,EACGsB,IADH,CACQyhH,cADR,EAEG/nH,IAFH,CAEQ;AACJ,aAAK,WAAS0G,CAAT,EAAY;AACfnhB,WAAC,CAAC,IAAD,CAAD,CAAQma,IAAR,CAAa,OAAb,EAAsBM,IAAtB,CAA2B,GAA3B,EAAgC4mH,gBAAgB,CAAClgH,CAAD,CAAhB,CAAoB,CAApB,CAAhC;AACA,iBAAOkgH,gBAAgB,CAAClgH,CAAD,CAAhB,CAAoB,CAApB,CAAP;AACD;AAJG,OAFR;AASA1M,WAAK,CAACgL,SAAN,CAAgB,0BAAhB,EACGsB,IADH,CACQyhH,cAAc,CAAC5+F,MAAf,CAAsB,UAASziB,CAAT,EAAY;AACtC,eAAOA,CAAC,CAAC9K,YAAT;AACD,OAFK,CADR,EAIGoE,IAJH,CAIQ;AACJ,iCAAyB,6BAAS0G,CAAT,EAAY;AACnC,cAAIO,GAAG,GAAG2/G,gBAAgB,CAAClgH,CAAD,CAA1B;AACA,iBAAOO,GAAG,CAAC,CAAD,CAAH,GAAS,IAAT,GAAgBA,GAAG,CAAC,CAAD,CAA1B;AACD;AAJG,OAJR;AAUD,KA3CD;;AA6CA4gH,cAAU,CAAC,CAAD,CAAV;AACAA,cAAU,CAAC,CAAD,CAAV,CAlDyB,CAoDzB;;AACAtiI,KAAC,CAAC,UAAD,CAAD,CAAcib,IAAd,CAAmB,YAAW;AAC5B,UAAIwnH,WAAW,GAAGziI,CAAC,CAAC,KAAK0iI,UAAN,CAAnB;AAAA,UACEC,OAAO,GAAGF,WAAW,CAACtoH,IAAZ,CAAiB,SAAjB,CADZ;AAAA,UAEE/D,KAAK,GAAGqsH,WAAW,CAACtoH,IAAZ,CAAiB,MAAjB,EAAyB,CAAzB,CAFV;AAAA,UAGEzD,QAHF;AAAA,UAGYlQ,KAHZ;AAAA,UAGmBC,MAHnB;AAAA,UAG2Bw7H,eAH3B;AAKA,UAAI,CAAC7rH,KAAD,IAAUusH,OAAO,CAACtnI,MAAR,KAAmB,CAAjC,EAAoC;AAEpCqb,cAAQ,GAAGuI,UAAU,CAAC,KAAK2jH,cAAL,CAAoB,IAApB,EAA0B,WAA1B,CAAD,CAArB;AACAp8H,WAAK,GAAG4P,KAAK,CAACpK,YAAN,CAAmB,OAAnB,CAAR;AACAvF,YAAM,GAAG2P,KAAK,CAACpK,YAAN,CAAmB,QAAnB,CAAT;AACAi2H,qBAAe,GAAGU,OAAO,CAACloH,IAAR,CAAa,uBAAb,EAAsChR,KAAtC,CAA4C,IAA5C,CAAlB;AAEAk5H,aAAO,CAACloH,IAAR,CAAa,QAAb,EAAuBqnH,cAAc,CAACG,eAAD,EAAkB7rH,KAAlB,EAAyB5P,KAAzB,EAAgCC,MAAhC,EAAwCiQ,QAAxC,CAArC;AACD,KAdD;AAeD;;AAED,WAASmsH,aAAT,GAAyB;AACvB,QAAI1oI,IAAJ,EAAUgnI,MAAV,EAAkB2B,eAAlB,CADuB,CAEvB;AACA;;AACA,QAAIC,6BAA6B,GAC/Bh1E,OAAO,CAACA,OAAR,KAAoB,QAApB,IAAgC,CAAC,CAACA,OAAO,CAACC,KAAR,CAAc1kD,KAAd,CAAoB,kBAApB,CADpC;AAGAsH,aAAS,GAAG5G,KAAK,CAACmW,GAAN,CAAU,WAAV,CAAZ;AAEAhmB,QAAI,GAAG,CAAC6P,KAAK,CAACmW,GAAN,CAAU,OAAV,CAAD,EAAqBnW,KAAK,CAACmW,GAAN,CAAU,QAAV,CAArB,CAAP;AAEAghH,UAAM,GAAG,CAACjD,gBAAD,EAAmBZ,kBAAnB,CAAT,CAXuB,CAavB;;AACAwF,mBAAe,GAAG,yBAASP,QAAT,EAAmB;AACnC,UAAI9tH,KAAK,GAAG0sH,MAAM,CAACoB,QAAQ,GAAG,CAAZ,CAAlB;AAAA,UACErsH,IADF;AAAA,UACQssH,cADR;AAAA,UACwBvoH,SADxB;AAGAxF,WAAK,CAACgL,SAAN,CAAgB,kBAAhB,EAAoC5hB,MAApC;AAEA2kI,oBAAc,GAAG5xH,SAAS,CAACgzB,MAAV,CAAiB,UAASjiB,CAAT,EAAY;AAC5C,eAAOA,CAAC,CAAClN,KAAF,KAAY8tH,QAAnB;AACD,OAFgB,CAAjB;AAIAtoH,eAAS,GAAGxF,KAAK,CAACgL,SAAN,CAAgB,kBAAhB,EACTsB,IADS,CACJyhH,cADI,CAAZ;AAEAtsH,UAAI,GAAG+D,SAAS,CAACgH,KAAV,GAAkBhZ,MAAlB,CAAyB,OAAzB,EACJwS,IADI,CACC,OADD,EACU,gBADV,CAAP;AAGAvE,UAAI,CAAC0tB,MAAL,CAAY,UAASziB,CAAT,EAAY;AACpB,eAAOA,CAAC,CAAC9K,YAAT;AACD,OAFH,EAGGpO,MAHH,CAGU,SAHV,EAIGwS,IAJH,CAIQ;AACJ,kBAAU,aADN;AAEJ,iBAAS,eAAS0G,CAAT,EAAY;AACnB,cAAI/R,eAAe,GAAG+R,CAAC,CAAC/R,eAAxB;AAAA,cACEi+G,WAAW,GAAGlsG,CAAC,CAAC7K,cAAF,GAAmBsoH,gBADnC;AAAA,cAEEroH,aAAa,GAAG4K,CAAC,CAAC5K,aAFpB;AAAA,cAGEC,WAAW,GAAG2K,CAAC,CAAC3K,WAHlB;AAIA,iBAAO,UAAUpH,eAAV,GAA4B,qCAA5B,GAAoEoH,WAApE,GAAkF,gBAAlF,GAAsG62G,WAAW,GAAG,CAApH,GAAyH,kBAAzH,GAA8I92G,aAArJ;AACD,SARG;AASJ,iCAAyB,6BAAS4K,CAAT,EAAY;AACnC,cAAIO,GAAG,GAAG2/G,gBAAgB,CAAClgH,CAAD,CAA1B;AACA,iBAAOO,GAAG,CAAC,CAAD,CAAH,GAAS,IAAT,GAAgBA,GAAG,CAAC,CAAD,CAA1B;AACD;AAZG,OAJR;AAmBAxL,UAAI,CAAC0tB,MAAL,CAAY,UAASziB,CAAT,EAAY;AACpB,eAAOA,CAAC,CAAC/K,KAAT;AACD,OAFH,EAGGnO,MAHH,CAGU,MAHV,EAIGwS,IAJH,CAIQ;AACJ,iBAAS,gBAAS0G,CAAT,EAAY/lB,CAAZ,EAAe;AACtB,iBAAO,uBAAuBA,CAA9B;AACD,SAHG;AAIJ,cAAM,YAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACnB,iBAAO,UAAUA,CAAjB;AACD,SANG;AAOJ,qBAAa,mBAAS+lB,CAAT,EAAY;AACvB,cAAI1K,MAAM,GAAG0K,CAAC,CAAC1K,MAAf;AAAA,cACEiL,GAAG,GAAG2/G,gBAAgB,CAAClgH,CAAD,CADxB;AAEA,iBAAO,YAAY1K,MAAZ,GAAqB,GAArB,GAA2BiL,GAAG,CAAC,CAAD,CAA9B,GAAoC,GAApC,GAA0CA,GAAG,CAAC,CAAD,CAA7C,GAAmD,GAA1D;AACD,SAXG;AAYJ,iBAAS,eAASP,CAAT,EAAY;AACnB,cAAI/R,eAAe,GAAG+R,CAAC,CAAC/R,eAAxB;AAAA,cACEi+G,WAAW,GAAGlsG,CAAC,CAAC7K,cAAF,GAAmBsoH,gBADnC;AAAA,cAEEroH,aAAa,GAAG4K,CAAC,CAAC5K,aAFpB;AAAA,cAGEC,WAAW,GAAG2K,CAAC,CAAC3K,WAHlB;;AAKA,cAAIusH,6BAA6B,IAAI1V,WAAW,GAAG,CAAnD,EAAsD;AACpD;AACA;AACA92G,yBAAa,IAAI82G,WAAjB;AACAA,uBAAW,GAAG,CAAd;AACD;;AAED,iBAAO,UAAUj+G,eAAV,GAA4B,qCAA5B,GAAoEoH,WAApE,GAAkF,gBAAlF,GAAqG62G,WAArG,GAAmH,kBAAnH,GAAwI92G,aAA/I;AACD,SA1BG;AA2BJ,iBAAS,CA3BL;AA4BJ,kBAAU,CA5BN;AA6BJ,cAAM,YAAS4K,CAAT,EAAY;AAChB,iBAAOA,CAAC,CAAC/K,KAAF,KAAY,mBAAZ,GAAkCwlG,QAAQ,CAACz6F,CAAC,CAACzK,QAAH,CAAR,GAAuB,GAAzD,GAA+D,CAAtE;AACD,SA/BG;AAgCJ,cAAM,YAASyK,CAAT,EAAY;AAChB,iBAAOA,CAAC,CAAC/K,KAAF,KAAY,mBAAZ,GAAkCwlG,QAAQ,CAACz6F,CAAC,CAACzK,QAAH,CAAR,GAAuB,CAAzD,GAA6D,CAApE;AACD,SAlCG;AAmCJ,aAAK,WAASyK,CAAT,EAAY;AACf,iBAAOkgH,gBAAgB,CAAClgH,CAAD,CAAhB,CAAoB,CAApB,CAAP;AACD,SArCG;AAsCJ,aAAK,WAASA,CAAT,EAAY;AACf,iBAAOkgH,gBAAgB,CAAClgH,CAAD,CAAhB,CAAoB,CAApB,CAAP;AACD;AAxCG,OAJR;AA+CAjL,UAAI,CAAC0tB,MAAL,CAAY,UAASziB,CAAT,EAAY;AACpB,eAAOA,CAAC,CAAC9K,YAAT;AACD,OAFH,EAGGpO,MAHH,CAGU,SAHV,EAIGwS,IAJH,CAIQ;AACJ,kBAAU,aADN;AAEJ,iBAAS,eAAS0G,CAAT,EAAY;AACnB,cAAI/R,eAAe,GAAG+R,CAAC,CAAC/R,eAAxB;AACA,iBAAO,UAAUA,eAAV,GAA4B,4DAAnC;AACD;AALG,OAJR;AAYA8G,UAAI,CAACjO,MAAL,CAAY,MAAZ,EACGwS,IADH,CACQ;AACJ,iBAAS,kBAAW;AAClB,iBAAO,aAAauoH,SAAS,GAAG,YAAH,GAAkB,EAAxC,CAAP;AACD,SAHG;AAIJ,qBAAa,mBAAS7hH,CAAT,EAAY;AACvB,cAAI1K,MAAM,GAAG0K,CAAC,CAAC1K,MAAf;AAAA,cACEiL,GAAG,GAAG2/G,gBAAgB,CAAClgH,CAAD,CADxB;AAEA,iBAAO,YAAY1K,MAAZ,GAAqB,GAArB,GAA2BiL,GAAG,CAAC,CAAD,CAA9B,GAAoC,GAApC,GAA0CA,GAAG,CAAC,CAAD,CAA7C,GAAmD,GAA1D;AACD,SARG;AASJ,kBAAU,eAASP,CAAT,EAAY;AACpB,iBAAOkgH,gBAAgB,CAAClgH,CAAD,CAAhB,CAAoB,CAApB,CAAP;AACD,SAXG;AAYJ,aAAK,WAASA,CAAT,EAAY;AACf,iBAAOkgH,gBAAgB,CAAClgH,CAAD,CAAhB,CAAoB,CAApB,CAAP;AACD,SAdG;AAeJ,sBAAc,mBAASA,CAAT,EAAY;AACxB,iBAAOA,CAAC,CAAC3a,KAAT;AACD,SAjBG;AAkBJ,uBAAe,oBAAS2a,CAAT,EAAY;AACzB,iBAAOA,CAAC,CAAC1a,MAAT;AACD,SApBG;AAqBJ,iBAASm1G,QAAQ,CAACzhH,IAAI,CAAC,CAAD,CAAL,CArBb;AAsBJ,kBAAUyhH,QAAQ,CAACzhH,IAAI,CAAC,CAAD,CAAL,CAtBd;AAuBJ,qBAAa,UAvBT;AAwBJ,uBAAe,MAAM61C,6BAAS,CAACizF,QAAhB,GAA2B,eAxBtC;AAyBJ,qBAAa,kBAAS9hH,CAAT,EAAY;AACvB,iBAAOy6F,QAAQ,CAACz6F,CAAC,CAACzK,QAAH,CAAR,GAAuB,IAA9B;AACD,SA3BG;AA4BJ,gBAAQ,cAASyK,CAAT,EAAY;AAClB,iBAAOA,CAAC,CAAC1P,KAAF,IAAW,OAAlB;AACD,SA9BG;AA+BJ,qBAAa,kBAAS0P,CAAT,EAAY;AACvB,iBAAOA,CAAC,CAACjL,IAAT;AACD,SAjCG;AAkCJ,uBAAe,oBAASiL,CAAT,EAAY;AACzB,cAAI+hH,KAAK,GAAG/hH,CAAC,CAACtK,SAAF,IAAe,MAA3B;AACA,cAAIqsH,KAAK,KAAK,QAAd,EAAwBA,KAAK,GAAG,QAAR;AACxB,iBAAOA,KAAP;AACD,SAtCG;AAuCJ,oBAAY,iBAAS/hH,CAAT,EAAY;AACtB,iBAAO,CAAC,CAACA,CAAC,CAACxK,QAAX;AACD,SAzCG;AA0CJ,0BAAkB,uBAASwK,CAAT,EAAY;AAC5B,iBAAO,CAACA,CAAC,CAACxK,QAAH,GAAc,MAAd,GAAuB,MAA9B;AACD;AA5CG,OADR,EA+CG7a,IA/CH,CA+CQ4hB,EAAE,CAAC8gG,QAAH,CAAYrpE,IAAZ,GACHz8B,EADG,CACA,MADA,EACQyqH,QADR,EAEHzqH,EAFG,CAEA,SAFA,EAEW,UAASyI,CAAT,EAAY;AACzB;AACA;AACAhhB,yCAAO,CAACiL,GAAR,CAAY,UAAU+V,CAAC,CAAC5kB,CAAZ,GAAgB,GAA5B;AACA4D,yCAAO,CAACiL,GAAR,CAAY,UAAU+V,CAAC,CAACrP,CAAZ,GAAgB,GAA5B;AACD,OAPG,CA/CR;AAwDAmI,eAAS,CAACiH,IAAV,GAAiBrjB,MAAjB;AACD,KAtJD;;AAwJAilI,mBAAe,CAAC,CAAD,CAAf;AACAA,mBAAe,CAAC,CAAD,CAAf,CAvKuB,CAyKvB;;AACA9iI,KAAC,CAAC,UAAD,CAAD,CAAcib,IAAd,CAAmB,YAAW;AAC5B,UAAI/E,IAAI,GAAG,KAAK0sH,cAAL,CAAoB,IAApB,EAA0B,WAA1B,CAAX;AAAA,UACErmI,CAAC,GAAG,KAAKqmI,cAAL,CAAoB,IAApB,EAA0B,QAA1B,CADN;AAAA,UAEEp8H,KAAK,GAAG,KAAKo8H,cAAL,CAAoB,IAApB,EAA0B,YAA1B,CAFV;AAAA,UAGEn8H,MAAM,GAAG,KAAKm8H,cAAL,CAAoB,IAApB,EAA0B,aAA1B,CAHX;AAAA,UAIElsH,QAAQ,GAAGuI,UAAU,CAAC,KAAK2jH,cAAL,CAAoB,IAApB,EAA0B,WAA1B,CAAD,CAJvB;AAAA,UAKE7lB,SAAS,GAAG,KAAK6lB,cAAL,CAAoB,IAApB,EAA0B,WAA1B,CALd;AAAA,UAMEQ,OAAO,GAAG,KAAKR,cAAL,CAAoB,IAApB,EAA0B,UAA1B,CANZ;AAAA,UAOE/rH,SAAS,GAAG,KAAK+rH,cAAL,CAAoB,IAApB,EAA0B,aAA1B,CAPd;AAAA,UAQEH,WAAW,GAAGziI,CAAC,CAAC,KAAK0iI,UAAN,CARjB;AAAA,UASEW,iBATF;AAAA,UASqBC,eATrB;AAAA,UAUEnkI,MAVF;AAAA,UAUU4iI,SAVV;AAAA,UAUqBC,UAVrB;AAAA,UAUiC5rH,KAVjC;AAAA,UAUwCwgC,EAVxC;AAAA,UAU4CixC,EAV5C;AAAA,UAUgDC,EAVhD;AAAA,UAWE66C,OAXF;AAAA,UAWWV,eAXX;AAaArrF,QAAE,GAAGlgC,QAAQ,GAAG,GAAhB;AACA2sH,uBAAiB,GAAG,CAAC3sH,QAAD,GAAY,GAAhC;AACA4sH,qBAAe,GAAG5sH,QAAQ,GAAG,GAA7B;;AAEA,UAAIlQ,KAAK,KAAK,EAAd,EAAkB;AAChBA,aAAK,GAAG,CAAC,CAAT;AACD,OAFD,MAEO;AACLA,aAAK,GAAGo1G,QAAQ,CAACp1G,KAAD,CAAhB;AACD;;AAED,UAAIC,MAAM,KAAK,EAAf,EAAmB;AACjBA,cAAM,GAAG,CAAC,CAAV;AACD,OAFD,MAEO;AACLA,cAAM,GAAGm1G,QAAQ,CAACn1G,MAAD,CAAjB;AACD;;AAED,aAAO,KAAK+xH,UAAZ,EAAwB;AAAE;AACxB,aAAKtQ,WAAL,CAAiB,KAAKsQ,UAAtB;AACD;;AAEDr5H,YAAM,GAAGm4H,aAAW,CAACphH,IAAD,EAAO,IAAP,EAAa1P,KAAb,EAAoBjK,CAApB,EAAuBq6C,EAAvB,CAApB;;AAEA,UAAI6rF,WAAW,CAACtoH,IAAZ,CAAiB,MAAjB,EAAyB9e,MAAzB,GAAkC,CAAtC,EAAyC;AACvC+a,aAAK,GAAGqsH,WAAW,CAACtoH,IAAZ,CAAiB,MAAjB,EAAyB,CAAzB,CAAR;AACA4nH,iBAAS,GAAG5iI,MAAM,CAACqH,KAAP,GAAe68H,iBAA3B;AACAjtH,aAAK,CAACuiH,cAAN,CAAqB,IAArB,EAA2B,OAA3B,EAAoCoJ,SAApC;;AACA,YAAIt7H,MAAM,GAAG,CAAb,EAAgB;AACdu7H,oBAAU,GAAGv7H,MAAb;AACD,SAFD,MAEO;AACLu7H,oBAAU,GAAI7iI,MAAM,CAACkiB,KAAP,GAAeu1B,EAAhB,GAAsB0sF,eAAnC;AACD;;AACDltH,aAAK,CAACuiH,cAAN,CAAqB,IAArB,EAA2B,QAA3B,EAAqCqJ,UAArC;AACD,OA9C2B,CAgD5B;;;AACAW,aAAO,GAAGF,WAAW,CAACtoH,IAAZ,CAAiB,SAAjB,CAAV;;AACA,UAAI/D,KAAK,IAAIusH,OAAO,CAACtnI,MAAR,GAAiB,CAA9B,EAAiC;AAC/B4mI,uBAAe,GAAGU,OAAO,CAACloH,IAAR,CAAa,uBAAb,EAAsChR,KAAtC,CAA4C,IAA5C,CAAlB;AACAk5H,eAAO,CAACloH,IAAR,CAAa,QAAb,EAAuBqnH,cAAc,CAACG,eAAD,EAAkB7rH,KAAlB,EAAyB2rH,SAAzB,EAAoCC,UAApC,EAAgDtrH,QAAhD,CAArC;AACD,OArD2B,CAuD5B;;;AACA,UAAIG,SAAS,KAAK,QAAlB,EAA4B;AAC1BgxE,UAAE,GAAG1oF,MAAM,CAACqH,KAAP,GAAe,CAApB;;AACA,YAAIC,MAAM,GAAG,CAAb,EAAgB;AACdqhF,YAAE,GAAGrhF,MAAM,GAAG,CAAT,GAAa68H,eAAe,GAAG,GAA/B,GAAqC,CAACnkI,MAAM,CAACkiB,KAAP,GAAe,CAAhB,IAAqBu1B,EAArB,GAA0B,CAApE;AACD,SAFD,MAEO;AACLkxC,YAAE,GAAG,CAAL;AACD;;AACDi1B,iBAAS,GAAGA,SAAS,GAAG,aAAZ,GAA4Bl1B,EAA5B,GAAiC,GAAjC,GAAuCC,EAAvC,GAA4C,GAAxD;AACA9nF,SAAC,CAAC,IAAD,CAAD,CAAQya,IAAR,CAAa,WAAb,EAA0BsiG,SAA1B;AACD;;AACD,UAAIqmB,OAAO,KAAK,MAAZ,IAAsBT,OAAO,CAACtnI,MAAR,KAAmB,CAA7C,EAAgD;AAC9CwsF,UAAE,GAAG1oF,MAAM,CAACqH,KAAP,GAAe,CAAC,CAAhB,GAAoB68H,iBAAiB,GAAG,CAA7C;AACAv7C,UAAE,GAAG3oF,MAAM,CAACkiB,KAAP,GAAeu1B,EAAf,GAAoB,CAAC,CAArB,GAAyB0sF,eAAe,GAAG,CAAhD;AACAb,mBAAW,CAAChoH,IAAZ,CAAiB,WAAjB,EAA8B,eAAeotE,EAAf,GAAoB,GAApB,GAA0BC,EAA1B,GAA+B,GAA7D;AACD;AACF,KAvED;AAwED;;AAED,WAASy7C,cAAT,GAA0B;AACxB5kD,aAAS,GAAG30E,KAAK,CAACwpG,aAAN,EAAZ;AACAgqB,kBAAc,CAAC/9G,SAAf,CAAyB,YAAzB,EAAuC5hB,MAAvC;;AACA,QAAI8gF,SAAJ,EAAe;AACbkgD,wBAAkB,CAACxjI,MAAnB,GAA4BsjF,SAAS,CAACpiF,CAAV,CAAYlB,MAAxC;AACAkY,cAAQ,GAAGiqH,cAAc,CAAC/9G,SAAf,CAAyB,YAAzB,EAAuCsB,IAAvC,CAA4C89G,kBAA5C,CAAX;AACA6B,mBAAa;AACd;AACF;;AAED,WAAS8C,WAAT,GAAuB;AACrB9jD,UAAM,GAAG11E,KAAK,CAACypG,UAAN,EAAT;AACAsqB,qBAAiB,CAACt+G,SAAlB,CAA4B,QAA5B,EAAsC5hB,MAAtC;AACAu/H,uBAAmB,CAAC39G,SAApB,CAA8B,QAA9B,EAAwC5hB,MAAxC;;AACA,QAAI6hF,MAAJ,EAAY;AACVs/C,mBAAa,GAAG,EAAhB;AACAC,qBAAe,GAAG,EAAlB;;AACA,WAAK,IAAI7jI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGskF,MAAM,CAACnjF,CAAP,CAASlB,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxC,YAAIskF,MAAM,CAACjrE,KAAP,CAAarZ,CAAb,MAAoB,CAAxB,EAA2B;AACzB4jI,uBAAa,CAAChhI,IAAd,CAAmB;AACjB02B,iBAAK,EAAEt5B,CADU;AAEjBsZ,yBAAa,EAAEgrE,MAAM,CAAChrE,aAAP,CAAqBtZ,CAArB;AAFE,WAAnB;AAID,SALD,MAKO;AACL6jI,yBAAe,CAACjhI,IAAhB,CAAqB;AACnB02B,iBAAK,EAAEt5B,CADY;AAEnBsZ,yBAAa,EAAEgrE,MAAM,CAAChrE,aAAP,CAAqBtZ,CAArB;AAFI,WAArB;AAID;AACF;;AACD4jI,mBAAa,CAACl2E,IAAd,CAAmB,UAASvuD,CAAT,EAAY+B,CAAZ,EAAe;AAChC,eAAO/B,CAAC,CAACma,aAAF,GAAkBpY,CAAC,CAACoY,aAA3B;AACD,OAFD;AAGAuqH,qBAAe,CAACn2E,IAAhB,CAAqB,UAASvuD,CAAT,EAAY+B,CAAZ,EAAe;AAClC,eAAO/B,CAAC,CAACma,aAAF,GAAkBpY,CAAC,CAACoY,aAA3B;AACD,OAFD;AAGAoqH,cAAQ,GAAGf,iBAAiB,CAACt+G,SAAlB,CAA4B,QAA5B,EAAsCsB,IAAtC,CAA2Ci+G,aAA3C,CAAX;AACAD,gBAAU,GAAG3B,mBAAmB,CAAC39G,SAApB,CAA8B,QAA9B,EAAwCsB,IAAxC,CAA6Ck+G,eAA7C,CAAb;AACAiC,gBAAU;AACX;AACF;;AAED,WAASuC,UAAT,GAAsB;AACpBpiH,SAAK,GAAGrX,KAAK,CAAC0pG,SAAN,EAAR;AACAyrB,gBAAY,CAAC9jI,MAAb,GAAsBgmB,KAAK,CAACzM,EAAN,CAASvZ,MAA/B;AACA6jI,WAAO,GAAGlB,gBAAgB,CAACv+G,SAAjB,CAA2B,OAA3B,EAAoCsB,IAApC,CAAyCo+G,YAAzC,CAAV;AACAD,WAAO,CAACh+G,IAAR,GAAerjB,MAAf;;AACA,QAAIwjB,KAAJ,EAAW;AACT69G,aAAO,CAACj+G,KAAR,GAAgBhZ,MAAhB,CAAuB,MAAvB;AACAi3H,aAAO,CAACzkH,IAAR,CAAa;AACX,iBAAS,MADE;AAEX,cAAM,YAAS0G,CAAT,EAAY/lB,CAAZ,EAAe;AACnB,iBAAOwgH,QAAQ,CAACv6F,KAAK,CAACzM,EAAN,CAASxZ,CAAT,CAAD,CAAf;AACD,SAJU;AAKX,cAAM,YAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACnB,iBAAOygH,WAAW,CAACx6F,KAAK,CAACxM,EAAN,CAASzZ,CAAT,CAAD,CAAlB;AACD,SAPU;AAQX,cAAM,YAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACnB,iBAAOwgH,QAAQ,CAACv6F,KAAK,CAACvM,EAAN,CAAS1Z,CAAT,CAAD,CAAf;AACD,SAVU;AAWX,cAAM,YAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACnB,iBAAOygH,WAAW,CAACx6F,KAAK,CAACtM,EAAN,CAAS3Z,CAAT,CAAD,CAAlB;AACD,SAbU;AAcX,wBAAgB,qBAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AAC7B,iBAAOimB,KAAK,CAAC7M,UAAN,CAAiBpZ,CAAjB,CAAP;AACD,SAhBU;AAiBX,4BAAoB,yBAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACjC,iBAAOimB,KAAK,CAAC9M,UAAN,CAAiBnZ,CAAjB,CAAP;AACD,SAnBU;AAoBX,kBAAU,gBAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AACvB,iBAAOimB,KAAK,CAAC/M,SAAN,CAAgBlZ,CAAhB,CAAP;AACD,SAtBU;AAuBX,wBAAgB,qBAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AAC7B,iBAAOwkI,qBAAqB,CAACxkI,CAAD,EAAIimB,KAAK,CAACrM,UAAN,CAAiB5Z,CAAjB,CAAJ,EAAyB,IAAzB,CAA5B;AACD,SAzBU;AA0BX,sBAAc,mBAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AAC3B,iBAAOwkI,qBAAqB,CAACxkI,CAAD,EAAIimB,KAAK,CAACpM,QAAN,CAAe7Z,CAAf,CAAJ,CAA5B;AACD,SA5BU;AA6BX,sBAAc,oBAAS+lB,CAAT,EAAY/lB,CAAZ,EAAe;AAC3B,iBAAOimB,KAAK,CAAC/O,OAAN,CAAclX,CAAd,IAAmB,SAAnB,GAA+B,QAAtC;AACD;AA/BU,OAAb;AAiCD;AACF;;AAED,WAASsoI,cAAT,GAA0B;AACxBlG,kBAAc,CAAC/9G,SAAf,CAAyB,gBAAzB,EAA2C5hB,MAA3C;AACA4hI,iBAAa,GAAG,EAAhB;AAEAF,iBAAa,GAAGv1H,KAAK,CAACmW,GAAN,CAAU,eAAV,CAAhB;AACA1P,eAAW,GAAGzG,KAAK,CAACmW,GAAN,CAAU,aAAV,CAAd;;AACA,QAAIo/G,aAAJ,EAAmB;AACjBC,eAAS,GAAGhC,cAAc,CAAC/9G,SAAf,CAAyB,gBAAzB,EAA2CsB,IAA3C,CAAgD,CAACulG,UAAU,CAAC71G,WAAD,CAAX,CAAhD,CAAZ;AACA+vH,oBAAc;AACf;AACF;;AAED,WAASC,gBAAT,CAA0Bt/G,CAA1B,EAA6B;AAC3B;AACA;AACA,QAAIw1B,EAAE,GAAGn6C,IAAI,CAACwqC,KAAL,CAAW40E,QAAQ,CAACz6F,CAAC,CAAC5kB,CAAH,CAAR,GAAgB,GAA3B,IAAkC,GAA3C;AAAA,QACEq6C,EAAE,GAAGp6C,IAAI,CAACwqC,KAAL,CAAW60E,WAAW,CAAC16F,CAAC,CAACrP,CAAH,CAAX,GAAmB,GAA9B,IAAqC,GAD5C;AAAA,QAEE6xH,MAFF;AAAA,QAEUC,MAFV;;AAGA,QAAI,CAACnE,aAAL,EAAoB;AAClBA,mBAAa,GAAG,MAAM9oF,EAAN,GAAW,GAAX,GAAiBC,EAAjB,GAAsB,GAAtC;AACA,aAAO,OAAOD,EAAP,GAAY,GAAZ,GAAkBC,EAAzB;AACD,KAHD,MAGO;AACL6oF,mBAAa,IAAI9oF,EAAE,GAAG,GAAL,GAAWC,EAAX,GAAgB,GAAjC;AACD,KAX0B,CAa3B;AACA;;;AACA,QAAI6oF,aAAa,CAACpkI,MAAd,GAAuB,IAA3B,EAAiC;AAC/BsoI,YAAM,GAAGlE,aAAa,CAAC3kH,OAAd,CAAsB,GAAtB,CAAT;AACA8oH,YAAM,GAAGnE,aAAa,CAAC3kH,OAAd,CAAsB,GAAtB,CAAT;AACA2kH,mBAAa,GAAG,MAAMA,aAAa,CAACrjI,KAAd,CAAoBunI,MAAM,GAAG,CAA7B,EAAgCC,MAAhC,CAAN,GAAgD,GAAhD,GAAsDnE,aAAa,CAACrjI,KAAd,CAAoBwnI,MAAM,GAAG,CAA7B,CAAtE;AACD;;AACD,WAAOnE,aAAP;AACD;;AAED,WAASoE,eAAT,GAA2B;AACzBrE,aAAS,CAAC/kH,IAAV,CAAe;AACb,WAAKgmH;AADQ,KAAf;AAGD;;AAED,WAAS0C,QAAT,CAAkBhiH,CAAlB,EAAqB;AACnB,QAAI2iH,MAAM,GAAGloB,QAAQ,CAAC8C,MAAT,CAAgBhhG,EAAE,CAACrC,KAAH,CAASs7B,EAAzB,CAAb;AAAA,QACEotF,MAAM,GAAGnoB,QAAQ,CAAC8C,MAAT,CAAgBhhG,EAAE,CAACrC,KAAH,CAASu7B,EAAzB,CADX;;AAGA,QAAI,EAAEosF,SAAS,IAAIh5H,KAAK,CAACk6B,SAAN,EAAf,CAAJ,EAAuC;AACrC;AACA;AACD,KAHD,MAGO;AACL/iB,OAAC,CAAC5kB,CAAF,GAAM4kB,CAAC,CAAC5kB,CAAF,GAAMunI,MAAZ;AACA3iH,OAAC,CAACrP,CAAF,GAAMqP,CAAC,CAACrP,CAAF,GAAMiyH,MAAZ;AACA1B,qBAAe;AAChB;AACF;;AAED,WAAS2B,mBAAT,GAA+B;AAC7B,QAAI1nI,CAAC,GAAGq2D,SAAS,CAACvF,YAAV,EAAR,CAD6B,CACK;;AAElC,aAAS62E,gBAAT,CAA0BC,QAA1B,EAAoCn9H,EAApC,EAAwCo9H,WAAxC,EAAqD;AACnD,UAAI,CAACD,QAAQ,EAAb,EAAiB;AACjB,UAAIE,QAAQ,GAAGziB,SAAS,CAACrnG,GAAV,CAAcP,MAAd,GAAuBI,IAAvB,CAA4B,MAAMpT,EAAlC,CAAf;;AACA,UAAIq9H,QAAQ,CAAC/oI,MAAT,KAAoB,CAAxB,EAA2B;AACzB+oI,gBAAQ,GAAGpkI,CAAC,CAAC,cAAc+G,EAAd,GAAmB,yBAAnB,GAA+Co9H,WAA/C,GAA6D,QAA9D,CAAZ;AACAC,gBAAQ,CAAC1rH,EAAT,CAAY,OAAZ,EAAqB,YAAW;AAC9B1Y,WAAC,CAAC,IAAD,CAAD,CAAQg9D,OAAR;AACD,SAFD;AAGAonE,gBAAQ,CAACn9H,QAAT,CAAkB06G,SAAS,CAACrnG,GAAV,CAAcP,MAAd,EAAlB;AACD;;AACD,UAAI2H,GAAG,GAAGigG,SAAS,CAACjgG,GAAV,EAAV;AACA0iH,cAAQ,CAACx9H,GAAT,CAAa;AACXJ,aAAK,EAAEkb,GAAG,CAAClb,KAAJ,GAAY,EADR;AAEXT,WAAG,EAAE2b,GAAG,CAACvZ,MAAJ,GAAai8H,QAAQ,CAAC39H,MAAT,EAAb,GAAiC,EAF3B;AAGXR,YAAI,EAAEyb,GAAG,CAACzb,IAAJ,GAAW;AAHN,OAAb;AAKD,KAnB4B,CAqB7B;;;AACAg+H,oBAAgB,CAAC,YAAW;AACxB,aAAO3nI,CAAC,CAACyxD,OAAF,KAAc,SAAd,IACLzxD,CAAC,CAAC3C,OAAF,IAAa,IADR,IACgB2C,CAAC,CAAC3C,OAAF,GAAY,IADnC;AAED,KAHa,EAGX,eAHW,EAGM,8FACpB,8CADoB,GAEpB,0CALc,CAAhB,CAtB6B,CA6B7B;;AACAsqI,oBAAgB,CAAC,YAAW;AACxB,aAAO3nI,CAAC,CAACyxD,OAAF,KAAc,SAAd,IACLzxD,CAAC,CAAC0xD,KAAF,CAAQlzC,OAAR,CAAgB,SAAhB,MAA+B,CAAC,CAD3B,IAELxe,CAAC,CAAC3C,OAAF,IAAa,IAFR,IAEgB2C,CAAC,CAAC3C,OAAF,GAAY,IAFnC;AAGD,KAJa,EAIX,aAJW,EAII,6BAClB,qEADkB,GAElB,uEAFkB,GAGlB,qCAPc,CAAhB,CA9B6B,CAuC7B;;AACAsqI,oBAAgB,CAAC,YAAW;AACxB,aAAOj6H,KAAK,CAACmW,GAAN,CAAU,KAAV,KACL7jB,CAAC,CAACyxD,OAAF,KAAc,QADT,IAELzxD,CAAC,CAAC3C,OAAF,CAAUmhB,OAAV,CAAkB,KAAlB,MAA6B,CAF/B;AAGD,KAJa,EAIX,iBAJW,EAIQ,mEACtB,6CALc,CAAhB;AAMD;;AAED,WAASupH,gBAAT,GAA4B;AAC1B;AACAjF,oBAAgB,GAAGp1H,KAAK,CAACmW,GAAN,CAAU,cAAV,EAA0B1O,KAA7C;AACA4tH,oBAAgB,GAAGr1H,KAAK,CAACmW,GAAN,CAAU,cAAV,EAA0B3Z,KAA7C;AACAq5H,0BAAsB,CAACT,gBAAD,EAAmB,OAAnB,CAAtB,CAJ0B,CAM1B;;AACAT,mBAAe,GAAG,EAAlB;AACAnB,kBAAc,CAAC/9G,SAAf,CAAyB,oBAAzB,EAA+C5hB,MAA/C;AAEA0T,kBAAc,GAAGvH,KAAK,CAACmW,GAAN,CAAU,gBAAV,CAAjB;AACD;;AAED,WAASmkH,oBAAT,GAAgC;AAC9B91H,sBAAkB,GAAGxE,KAAK,CAACwb,UAAN,CAAiBhX,kBAAtC;;AACA,QAAIA,kBAAJ,EAAwB;AACtBsxH,0BAAoB;AACrB;;AAEDC,sBAAkB,GANY,CAQ9B;;AACArB,mBAAe,GAAG,IAAI5J,gBAAJ,CAAoBnT,SAApB,EAA+B33G,KAA/B,CAAlB;AACD;;AAED,WAASu6H,UAAT,CAAoBpjH,CAApB,EAAuB;AACrB,QAAIqjH,QAAQ,GAAG,EAAf;AAAA,QACEC,OAAO,GAAG,EADZ;AAAA,QAEE9vH,IAAI,GAAG+I,EAAE,CAACiB,GAAH,CAAOhK,IAAP,GACNpY,CADM,CACJ,UAAS4kB,CAAT,EAAY;AACb,aAAOy6F,QAAQ,CAAC,MAAM6oB,OAAN,GAAgBtjH,CAAC,CAAC5kB,CAAnB,CAAf;AACD,KAHM,EAINuV,CAJM,CAIJ,UAASqP,CAAT,EAAY;AACb,aAAOy6F,QAAQ,CAAC,MAAMz6F,CAAC,CAACrP,CAAT,CAAf;AACD,KANM,CAFT;AAAA,QAUE6P,CAAC,GAAGR,CAAC,CAAClI,gBAAF,GAAqB,CAArB,GAAyBzc,IAAI,CAAC0O,EAA9B,GAAmCu5H,OAVzC;AAAA,QAWErpI,CAXF,CADqB,CAcrB;AACA;;AACA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGqpI,OAAhB,EAAyBrpI,CAAC,EAA1B,EAA8B;AAC5BopI,cAAQ,CAACxmI,IAAT,CAAc;AACZzB,SAAC,EAAEnB,CAAC,GAAGqpI,OAAO,GAAG,CADL;AAEZ3yH,SAAC,EAAEtV,IAAI,CAAC6O,GAAL,CAASjQ,CAAC,GAAGumB,CAAb,KAAmB,IAAI,QAAQvmB,CAAC,GAAG,MAAMqpI,OAAlB,KAA8BrpI,CAAC,GAAG,MAAMqpI,OAAxC,CAAvB;AAFS,OAAd;AAID;;AAED,WAAO9vH,IAAI,CAAC6vH,QAAD,CAAX;AACD;;AAED,WAASE,WAAT,CAAqB3jH,IAArB,EAA2B;AACzB;AACA;AACA,QAAIogC,IAAI,GAAGpgC,IAAI,CAAC9H,gBAAhB;;AACA,QAAIkoC,IAAI,IAAIy7E,gBAAR,IAA4Bz7E,IAAI,IAAI07E,gBAAxC,EAA0D;AACxD,aAAO,iBAAP;AACD,KAFD,MAEO;AACL,UAAI17G,CAAC,GAAG,CAAC07G,gBAAgB,GAAGD,gBAApB,IAAwC,GAAhD;AACA,UAAIxhI,CAAC,GAAGoB,IAAI,CAACwqC,KAAL,CAAW,CAACma,IAAI,GAAGy7E,gBAAR,IAA4Bz7G,CAAvC,CAAR;;AACA,UAAI/lB,CAAC,KAAK,CAAV,EAAa;AACX,eAAO,SAAS0hI,aAAa,CAAC1hI,CAAD,CAAb,CAAiB4f,IAAjB,CAAsB,GAAtB,CAAT,GAAsC,GAA7C;AACD,OAFD,MAEO;AACL,YAAI2pH,SAAS,GAAG,CAACxjF,IAAI,GAAGy7E,gBAAP,GAA0BxhI,CAAC,GAAG+lB,CAA/B,IAAoCA,CAApD;AACA,YAAI6+B,EAAE,GAAG88E,aAAa,CAAC1hI,CAAD,CAAb,CAAiB,CAAjB,CAAT,CAFK,CAEyB;;AAC9B,YAAI6kD,EAAE,GAAG68E,aAAa,CAAC1hI,CAAC,GAAG,CAAL,CAAb,CAAqB,CAArB,CAAT;AACA,YAAIwpI,EAAE,GAAG9H,aAAa,CAAC1hI,CAAD,CAAb,CAAiB,CAAjB,CAAT,CAJK,CAIyB;;AAC9B,YAAIypI,EAAE,GAAG/H,aAAa,CAAC1hI,CAAC,GAAG,CAAL,CAAb,CAAqB,CAArB,CAAT;AACA,YAAI8+E,EAAE,GAAG4iD,aAAa,CAAC1hI,CAAD,CAAb,CAAiB,CAAjB,CAAT,CANK,CAMyB;;AAC9B,YAAI0pI,EAAE,GAAGhI,aAAa,CAAC1hI,CAAC,GAAG,CAAL,CAAb,CAAqB,CAArB,CAAT;AACA,eAAO,SAASoB,IAAI,CAACwqC,KAAL,CAAWgZ,EAAE,GAAG2kF,SAAS,IAAI1kF,EAAE,GAAGD,EAAT,CAAzB,CAAT,GAAkD,GAAlD,GAAwDxjD,IAAI,CAACwqC,KAAL,CAAW49F,EAAE,GAAGD,SAAS,IAAIE,EAAE,GAAGD,EAAT,CAAzB,CAAxD,GAAiG,GAAjG,GAAuGpoI,IAAI,CAACwqC,KAAL,CAAWkzC,EAAE,GAAGyqD,SAAS,IAAIG,EAAE,GAAG5qD,EAAT,CAAzB,CAAvG,GAAgJ,GAAvJ;AACD;AACF;AACF;;AAED,WAAS6qD,eAAT,CAAyBhkH,IAAzB,EAA+B;AAC7B,QAAIogC,IAAI,GAAGpgC,IAAI,CAAC9H,gBAAhB;;AACA,QAAIkoC,IAAI,IAAIy7E,gBAAR,IAA4Bz7E,IAAI,IAAI07E,gBAAxC,EAA0D;AACxD;AACA,aAAO,KAAP;AACD,KAHD,MAGO;AACL,aAAO,IAAP;AACD;AACF;;AAED,WAASmI,qBAAT,GAAiC;AAC/B,QAAIzsH,OAAO,GAAGilH,cAAc,CACzB/9G,SADW,CACD,SADC,EAEXsB,IAFW,CAEN/W,KAAK,CAACu3C,UAAN,EAFM,EAEc,UAASpgC,CAAT,EAAY;AACpC,aAAOA,CAAC,CAACpa,EAAT;AACD,KAJW,CAAd;AAMAwR,WAAO,CAAC0I,KAAR,GAAgBhZ,MAAhB,CAAuB,MAAvB,EACGwS,IADH,CACQ;AACJ,eAAS,QADL;AAEJ,WAAK8pH,UAFD;AAGJ,gBAAUG,WAHN;AAIJ,0BAAoBK,eAJhB;AAKJ,sBAAgBnpB,QAAQ,CAAC,KAAD,CALpB;AAMJ,sBAAgB;AANZ,KADR;AAUArjG,WAAO,CAAC2I,IAAR,GAAerjB,MAAf;AAEA0a,WAAO,CAACkC,IAAR,CAAa,WAAb,EAA0B,UAAS0G,CAAT,EAAY;AACpC,aAAO,eAAey6F,QAAQ,CAACz6F,CAAC,CAAC5kB,CAAH,CAAvB,GAA+B,IAA/B,GAAsCs/G,WAAW,CAAC16F,CAAC,CAACrP,CAAH,CAAjD,GAAyD,IAAzD,GACL,SADK,GACOqP,CAAC,CAAC3L,KADT,GACiB,GADxB;AAED,KAHD;AAKD,GAztCgD,CA2tCjD;AACA;AACA;AAEA;AACA;AACA;;;AAEA,WAASy/B,MAAT,GAAiB;AACf2mE,YAAQ,GAAG+F,SAAS,CAAC/F,QAArB;AACAC,eAAW,GAAG8F,SAAS,CAAC9F,WAAxB;AAEA+iB,oBAAgB,GAAGjd,SAAS,CAACxF,mBAAV,EAAnB;AAEAmK,cAAU,GAAGt8G,KAAK,CAACopG,QAAN,EAAb;AACA6pB,sBAAkB,GAAGjzH,KAAK,CAACspG,gBAAN,EAArB;AACA4pB,iBAAa,GAAGlzH,KAAK,CAACmpG,YAAN,EAAhB;AACAjuG,cAAU,GAAG8E,KAAK,CAACmW,GAAN,CAAU,OAAV,CAAb;AACA2hG,eAAW,GAAG93G,KAAK,CAACmW,GAAN,CAAU,QAAV,CAAd;AACA5b,eAAW,GAAGW,UAAU,GAAG48G,WAA3B;AAEAwiB,wBAAoB,GAbL,CAef;;AACAt6H,SAAK,CAACusB,qBAAN,CAA4B,CAAC,oBAAD,EAAuB,WAAvB,CAA5B,EAAiE2pG,gBAAjE;;AAEA,aAAS+E,sBAAT,CAAgCC,eAAhC,EAAiD;AAC/C,aAAO,YAAW;AAChBA,uBAAe,GADC,CAEhB;AACA;;AACAvjB,iBAAS,CAAC9C,mBAAV;AACD,OALD;AAMD;;AAED,aAASsmB,kBAAT,GAA8B;AAC5B3G,2BAAqB,CAACvpF,KAAtB;AACA0sE,eAAS,CAAC5D,YAAV;AACD,KA9Bc,CAgCf;;;AACA/zG,SAAK,CAACusB,qBAAN,CAA4B,CACxB,eADwB,EACP,oBADO,EACe,mBADf,EACoC,oBADpC,EAExB,eAFwB,EAEP,aAFO,EAEQ,sBAFR,EAGxB,iBAHwB,EAGL,WAHK,EAGQ,2BAHR,CAA5B,EAKE0uG,sBAAsB,CAACrrG,QAAD,CALxB,EAjCe,CAwCf;;AACA5vB,SAAK,CAACusB,qBAAN,CAA4B,CAAC,sBAAD,EAAyB,mBAAzB,EAA8C,oBAA9C,CAA5B,EACE4uG,kBADF;AAEAn7H,SAAK,CAACusB,qBAAN,CAA4B,CAAC,qBAAD,EAAwB,iBAAxB,CAA5B,EAAwE,YAAW;AACjF+nG,6BAAuB,CAACrpF,KAAxB;AACA0sE,eAAS,CAAC5D,YAAV;AACD,KAHD;AAIA/zG,SAAK,CAACusB,qBAAN,CAA4B,CAAC,kBAAD,EAAqB,cAArB,EAAqC,2BAArC,CAA5B,EAA+F,YAAW;AACxGgoG,0BAAoB,CAACtpF,KAArB;AACA0sE,eAAS,CAAC5D,YAAV;AACD,KAHD;AAIA/zG,SAAK,CAACusB,qBAAN,CAA4B,CAAC,cAAD,EAAiB,gBAAjB,CAA5B,EAAgE,YAAW;AACzE8nG,sBAAgB,CAACppF,KAAjB;AACA0sE,eAAS,CAAC5D,YAAV;AACD,KAHD;AAKA/zG,SAAK,CAAC0O,EAAN,CAAS,SAAT,EAAoBusH,sBAAsB,CAAC,YAAW;AACpD9b,mBAAa,CAACl0E,KAAd;AACAqpF,6BAAuB,CAACrpF,KAAxB;AACAspF,0BAAoB,CAACtpF,KAArB;AACAupF,2BAAqB,CAACt+G,MAAtB;AACAyhG,eAAS,CAAC5D,YAAV;AACD,KANyC,CAA1C;AAOA/zG,SAAK,CAAC0O,EAAN,CAAS,YAAT,EAAuBusH,sBAAsB,CAAC,YAAW;AACvD9b,mBAAa,CAACl0E,KAAd;AACAqpF,6BAAuB,CAACrpF,KAAxB;AACAspF,0BAAoB,CAACtpF,KAArB;AACAupF,2BAAqB,CAACt+G,MAAtB;AACAyhG,eAAS,CAAC5D,YAAV;AACD,KAN4C,CAA7C;AAOA/zG,SAAK,CAAC0O,EAAN,CAAS,eAAT,EAA0BusH,sBAAsB,CAAC,YAAW;AAC1D7G,mBAAa,CAACnpF,KAAd;AACA0sE,eAAS,CAAC5D,YAAV;AACD,KAH+C,CAAhD;AAIA/zG,SAAK,CAAC0O,EAAN,CAAS,kBAAT,EAA6BusH,sBAAsB,CAAC,YAAW;AAC7D7G,mBAAa,CAACnpF,KAAd;AACA0sE,eAAS,CAAC5D,YAAV;AACD,KAHkD,CAAnD;AAIA/zG,SAAK,CAAC0O,EAAN,CAAS,kBAAT,EAA6BusH,sBAAsB,CAACpC,aAAD,CAAnD;AACA74H,SAAK,CAAC0O,EAAN,CAAS,eAAT,EAA0BusH,sBAAsB,CAACxG,cAAc,CAACxpF,KAAhB,CAAhD;AACAjrC,SAAK,CAAC0O,EAAN,CAAS,kBAAT,EAA6BysH,kBAA7B;AACAn7H,SAAK,CAAC0O,EAAN,CAAS,qBAAT,EAAgCysH,kBAAhC;AACAn7H,SAAK,CAAC0O,EAAN,CAAS,qBAAT,EAAgCysH,kBAAhC;AAEAnB,uBAAmB;AAEnBhH,WAAO,GAAG,IAAV;AACD,GA1zCgD,CA4zCjD;;;AAEA,WAASlxF,SAAT,CAAmBC,QAAnB,EAA6B;AAC3B/hC,SAAK,GAAG+hC,QAAR;AACAo9E,iBAAa,CAACr9E,SAAd,CAAwBC,QAAxB;AACAqyF,iBAAa,CAACtyF,SAAd,CAAwBC,QAAxB;AACAsyF,oBAAgB,CAACvyF,SAAjB,CAA2BC,QAA3B;AACA0yF,kBAAc,CAAC3yF,SAAf,CAAyBC,QAAzB;;AACAkJ,UAAK;AACN,GAr0CgD,CAu0CjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,WAASrb,QAAT,CAAiBgoF,IAAjB,EAAuBC,OAAvB,EAAgC;AAC9B,QAAIxiH,SAAS,CAAChE,MAAd,EAAsB;AACpBugH,cAAQ,GAAGgG,IAAX;AACA/F,iBAAW,GAAGgG,OAAd;AACD;;AACD+c,oBAAgB,GAAGjd,SAAS,CAACxF,mBAAV,EAAnB;AAEAkoB,oBAAgB;AAChBd,kBAAc;AACdpa,iBAAa,CAACl0E,KAAd;AACAmpF,iBAAa,CAACnpF,KAAd;AACAopF,oBAAgB,CAACppF,KAAjB;AACAuuF,eAAW;AACXC,cAAU;AACV/E,mBAAe,CAACzpF,KAAhB;AACAqpF,2BAAuB,CAACrpF,KAAxB;AACAspF,wBAAoB,CAACtpF,KAArB;AACAupF,yBAAqB,CAACvpF,KAAtB;AACAyuF,kBAAc;AACdjF,kBAAc,CAACxpF,KAAf;AACA4tF,iBAAa;AACb3C,oBAAgB;AAChB8D,uBAAmB;;AACnB,QAAIx1H,kBAAJ,EAAwB;AACtBw2H,2BAAqB;AACtB;AACF,GA32CgD,CA62CjD;AACA;AACA;AACA;AACA;AACA;;;AAEA,WAAS9kH,OAAT,GAAkB;AAChB/f,qCAAO,CAACkK,IAAR,CAAa,aAAb;;AACA,QAAIs0E,SAAJ,EAAe;AACbprE,cAAQ,CAACkH,IAAT,CAAc,WAAd,EAA2B,UAAS0G,CAAT,EAAY/lB,CAAZ,EAAe;AACxC,eAAO,eAAewgH,QAAQ,CAACj9B,SAAS,CAACpiF,CAAV,CAAYnB,CAAZ,CAAD,CAAvB,GAA0C,GAA1C,GAAgDygH,WAAW,CAACl9B,SAAS,CAAC7sE,CAAV,CAAY1W,CAAZ,IAAiBujF,SAAS,CAACl4E,MAAV,CAAiBrL,CAAjB,CAAlB,CAA3D,GAAoG,GAA3G;AACD,OAFD;AAGD;;AAED,QAAIskF,MAAJ,EAAY;AACVo/C,cAAQ,CAACrkH,IAAT,CAAc,WAAd,EAA2B,UAAS0G,CAAT,EAAY;AACrC,eAAO,eAAey6F,QAAQ,CAACl8B,MAAM,CAACnjF,CAAP,CAAS4kB,CAAC,CAACuT,KAAX,CAAD,CAAvB,GAA6C,GAA7C,GAAmDmnF,WAAW,CAACn8B,MAAM,CAAC5tE,CAAP,CAASqP,CAAC,CAACuT,KAAX,IAAoBgrD,MAAM,CAACj5E,MAAP,CAAc0a,CAAC,CAACuT,KAAhB,CAArB,CAA9D,GAA6G,GAApH;AACD,OAFD;AAGAqqG,gBAAU,CAACtkH,IAAX,CAAgB,WAAhB,EAA6B,UAAS0G,CAAT,EAAY;AACvC,eAAO,eAAey6F,QAAQ,CAACl8B,MAAM,CAACnjF,CAAP,CAAS4kB,CAAC,CAACuT,KAAX,CAAD,CAAvB,GAA6C,GAA7C,GAAmDmnF,WAAW,CAACn8B,MAAM,CAAC5tE,CAAP,CAASqP,CAAC,CAACuT,KAAX,IAAoBgrD,MAAM,CAACj5E,MAAP,CAAc0a,CAAC,CAACuT,KAAhB,CAArB,CAA9D,GAA6G,GAApH;AACD,OAFD;AAGD;;AAEDy0F,iBAAa,CAACjpG,MAAd;AACAk+G,iBAAa,CAACl+G,MAAd;AACAm+G,oBAAgB,CAACn+G,MAAjB;AACAo+G,2BAAuB,CAACp+G,MAAxB;AACAq+G,wBAAoB,CAACr+G,MAArB;AACAs+G,yBAAqB,CAACt+G,MAAtB;;AAEA,QAAIq/G,aAAJ,EAAmB;AACjBsE,qBAAe;AAChB;;AACD,QAAI75H,KAAK,CAACwb,UAAN,CAAiB9U,MAAjB,IAA2B1G,KAAK,CAACwb,UAAN,CAAiB9U,MAAjB,CAAwBrV,MAAxB,KAAmC,CAAlE,EAAqE;AACnEojI,oBAAc,CAACv+G,MAAf;AACD;;AACD,QAAItP,SAAS,IAAIA,SAAS,CAACvV,MAAV,GAAmB,CAAhC,IAAqC,CAACikI,mBAA1C,EAA+D;AAC7D;AACA;AACA+C,qBAAe;AAChB;;AACD,QAAI7zH,kBAAJ,EAAwB;AACtBw2H,2BAAqB;AACtB;;AACD7kI,qCAAO,CAACoK,OAAR,CAAgB,aAAhB;AACD,GA35CgD,CA65CjD;AACA;AACA;;;AACAqP,KAAG,GAAG;AACJ;AACAq7B,SAAK,EAAE,iBAAW;AAChB,UAAI,CAAC+nF,OAAL,EAAc;AACZ/nF,cAAK;AACN;AACF,KANG;AAQJ/0B,UAAM,EAAE,kBAAW;AACjB,UAAI88G,OAAJ,EAAa;AACX98G,eAAM;AACP;AACF,KAZG;AAcJ0Z,WAAO,EAAE,mBAAW;AAClB,UAAIojG,OAAJ,EAAa;AACXpjG,gBAAO;AACR;AACF,KAlBG;AAoBJkS,aAAS,EAAEA;AApBP,GAAN;AAuBA,SAAOlyB,GAAP;AACD;AAAA,C;;AC19CD;AACA;AAEe,yDAAS5P,KAAT,EAAgB8lC,QAAhB,EAA0B3tB,IAA1B,EAAgC;AAC7C,SAAO,IAAIw4F,0BAAJ,CAAiB3wG,KAAjB,EAAwB8lC,QAAxB,EAAkC8qE,QAAlC,EAA4C;AACjDz4F,QAAI,EAAEA;AAD2C,GAA5C,CAAP;AAGD;AAAA,C;;ACPc,SAASijH,aAAT,CAAuBp7H,KAAvB,EAA8B;AAC3C,MAAI4P,GAAJ;AAAA,MACEyrH,UADF;AAAA,MAEEC,aAFF;AAAA,MAGEC,iBAHF;AAAA,MAIEC,SAJF;AAAA,MAKEC,aALF;AAAA,MAMEC,WAAW,GAAG17H,KAAK,CAACmW,GAAN,CAAU,KAAV,CANhB;AAAA,MAQEmC,IAAI,GAAG,SAAPA,IAAO,GAAW;AAChB;AACA+iH,cAAU,GAAGrlI,CAAC,CAAC,aAAD,CAAd;AACAA,KAAC,CAAC,qCAAD,CAAD,CAAyCiH,QAAzC,CAAkDo+H,UAAlD;AACArlI,KAAC,CAAC,mBAAD,CAAD,CAAuBiH,QAAvB,CAAgCo+H,UAAhC;AACAE,qBAAiB,GAAGvlI,CAAC,CAAC,yCAAD,CAArB;AACAulI,qBAAiB,CAAC1hI,GAAlB,CAAsB6hI,WAAtB;AACA1lI,KAAC,CAAC,8BAAD,CAAD,CAAkCiI,MAAlC,CAAyCs9H,iBAAzC,EAA4Dt+H,QAA5D,CAAqEo+H,UAArE;AACAC,iBAAa,GAAGtlI,CAAC,CAAC,wDAAD,CAAjB;AACAA,KAAC,CAAC,4BAAD,CAAD,CAAgC+4D,OAAhC,CAAwCusE,aAAxC,EAAuDr+H,QAAvD,CAAgEo+H,UAAhE;AACAG,aAAS,GAAGxlI,CAAC,CAAC,uBAAD,CAAb;AACAwlI,aAAS,CAACv+H,QAAV,CAAmBo+H,UAAnB,EAXgB,CAahB;;AACAA,cAAU,CAACvkG,MAAX,CAAkB;AAChBL,iBAAW,EAAE,iBADG;AAEhB;AACAx5B,cAAQ,EAAE,yBAHM;AAIhB+U,WAAK,EAAE,cAJS;AAKhBwkB,cAAQ,EAAE,KALM;AAMhBh6B,WAAK,EAAE,MANS;AAOhBk7B,aAAO,EAAE;AACP,iBAAS,iBAAW;AAClB13B,eAAK,CAACrM,GAAN,CAAU;AACR0Q,eAAG,EAAEi3H,aAAa,CAACzhI,GAAd;AADG,WAAV;AAGA7D,WAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACD;AANM;AAPO,KAAlB,EAdgB,CA+BhB;;AACA2kG,iBAAa,GAAGzlI,CAAC,CAAC,2CAAD,CAAjB;AACAslI,iBAAa,CAAC5sH,EAAd,CAAiB,OAAjB,EAA0B,YAAW;AACnC,UAAI;AACF1O,aAAK,CAACq+D,uBAAN,CAA8B,KAA9B,EAAqCi9D,aAAa,CAACzhI,GAAd,EAArC;AACA4hI,qBAAa,CAAC19G,MAAd,CAAqB,QAArB;AACAy9G,iBAAS,CAACtvH,IAAV,CAAe,EAAf;AACD,OAJD,CAIE,OAAOjc,CAAP,EAAU;AACVwrI,qBAAa,CAAC19G,MAAd,CAAqB,SAArB;AACAy9G,iBAAS,CAACtvH,IAAV,CAAejc,CAAC,CAACoE,OAAjB;AACD;AACF,KATD;AAUD,GAnDH;;AAqDAub,KAAG,GAAG;AACJonB,QAAI,EAAE,gBAAW;AACf;AACAwkG,eAAS,CAACtvH,IAAV,CAAe,EAAf;AACAuvH,mBAAa,CAACl1F,UAAd,CAAyB,UAAzB,EAHe,CAIf;;AACA+0F,mBAAa,CAACzhI,GAAd,CAAkBmG,KAAK,CAACmW,GAAN,CAAU,KAAV,CAAlB;AACAklH,gBAAU,CAACvkG,MAAX,CAAkB,MAAlB;AACD,KARG;AASJgL,aAAS,EAAE,mBAASC,QAAT,EAAmB;AAC5B,UAAIA,QAAQ,KAAK/hC,KAAjB,EAAwB;AACtBA,aAAK,GAAG+hC,QAAR,CADsB,CAEtB;;AACA25F,mBAAW,GAAG17H,KAAK,CAACmW,GAAN,CAAU,KAAV,CAAd;AACAolH,yBAAiB,CAAC1hI,GAAlB,CAAsB6hI,WAAtB;AACD;AACF;AAhBG,GAAN;AAmBApjH,MAAI;AAEJ,SAAO1I,GAAP;AACD;AAAA,C;;AC5ED;AAGA;;;;;;;;;;;;AAWe,SAAS+rH,gBAAT,CAA0B5rH,MAA1B,EAAkC;AAE/C,MAAI6rH,aAAa,GAAG,IAApB;AAAA,MACE;AACAC,YAAU,GAAG,CAFf;;AAIA,MAAIC,WAAW,GAAG,SAAdA,WAAc,GAAW;AAC3B,QAAIx6D,MAAM,GAAGjsE,SAAS,CAAC,CAAD,CAAtB;AAAA,QACEjE,CAAC,GAAGiE,SAAS,CAAC,CAAD,CADf;AAAA,QAEEgxB,IAFF;;AAIA,QAAI71B,KAAK,CAACyD,OAAN,CAAc7C,CAAd,CAAJ,EAAsB;AACpBi1B,UAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,EAAyCA,SAAS,CAAChE,MAAnD,CAAP;AACA0e,YAAM,CAACH,GAAP,CAAWgoF,KAAX,CAAiB,YAAW;AAC1B,aAAK,IAAI/5F,CAAC,GAAG,CAAR,EAAWC,EAAE,GAAG1M,CAAC,CAAC,CAAD,CAAtB,EAA2ByM,CAAC,GAAGzM,CAAC,CAACC,MAAjC,EAAyCyM,EAAE,GAAG1M,CAAC,CAAC,EAAEyM,CAAH,CAA/C,EAAsD;AACpDyjE,gBAAM,CAAC3uE,KAAP,CAAa,IAAb,EAAmBnC,KAAK,CAACoB,SAAN,CAAgBw1B,MAAhB,CAAuBtpB,EAAvB,EAA2BuoB,IAA3B,CAAnB;AACD;AACF,OAJD;AAKD,KAPD,MAOO;AACLA,UAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,EAAyCA,SAAS,CAAChE,MAAnD,CAAP;AACAiwE,YAAM,CAAC3uE,KAAP,CAAa,IAAb,EAAmB0zB,IAAnB;AACD;;AACDtW,UAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,GAjBD;;AAmBA,WAASC,gBAAT,CAA0BC,UAA1B,EAAsC;AACpC,WAAO,SAASC,UAAT,CAAoB9xG,KAApB,EAA2BzqB,OAA3B,EAAoC;AACzC,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAai8H,UAAb,EAAyBnqI,IAAzB,CAA8Bie,MAAM,CAAC/P,KAArC,EAA4CoqB,KAA5C;AACD,OAFD,CAEE,OAAOn6B,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;;AACD8f,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KARD;AASD;;AAED,SAAO;AAELK,0BAAsB,EAAE,kCAAW;AACjC,aAAO9kG,IAAI,CAACC,GAAL,EAAP;AACD,KAJI;;AAML;AACA6Z,oBAAgB,EAAE,SAASA,gBAAT,CAA0B4yB,CAA1B,EAA6B;AAC7C,aAAOj0D,MAAM,CAAC/P,KAAP,CAAaoxC,gBAAb,CAA8B4yB,CAA9B,CAAP;AACD,KATI;;AAWL;AACA+oB,wBAAoB,EAAE,SAASA,oBAAT,GAAgC;AACpD,aAAOh9E,MAAM,CAAC/P,KAAP,CAAa+sF,oBAAb,EAAP;AACD,KAdI;;AAgBL;AACAD,uBAAmB,EAAE,SAASA,mBAAT,GAA+B;AAClD,aAAO/8E,MAAM,CAAC/P,KAAP,CAAa8sF,mBAAb,EAAP;AACD,KAnBI;;AAqBL;AACAI,0BAAsB,EAAE,SAASA,sBAAT,GAAkC;AACxD,aAAOn9E,MAAM,CAAC/P,KAAP,CAAaktF,sBAAb,EAAP;AACD,KAxBI;;AA0BL;AACAC,2BAAuB,EAAE,SAASA,uBAAT,GAAmC;AAC1D,aAAOp9E,MAAM,CAAC/P,KAAP,CAAamtF,uBAAb,EAAP;AACD,KA7BI;AA+BL5E,WAAO,EAAE,SAASA,OAAT,CAAiBn+D,KAAjB,EAAwB;AAC/B,aAAOra,MAAM,CAAC/P,KAAP,CAAauoF,OAAb,CAAqBn+D,KAArB,CAAP;AACD,KAjCI;;AAmCL;;;AAGAo+D,cAAU,EAAE,SAASA,UAAT,CAAoBp3F,CAApB,EAAuBuO,OAAvB,EAAgC;AAC1C,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAawoF,UAAb,CAAwBp3F,CAAxB,EAA2BuO,OAA3B;AACD,OAFD,CAEE,OAAO1P,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;AACF,KA7CI;;AA+CL;;;AAGA03F,oBAAgB,EAAE,SAASA,gBAAT,CAA0Bv2F,CAA1B,EAA6BuO,OAA7B,EAAsC;AACtD,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAa2nF,gBAAb,CAA8Bv2F,CAA9B;AACD,OAFD,CAEE,OAAOnB,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;;AAED8f,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KA3DI;;AA6DL;;;AAGAv2C,qBAAiB,EAAE,SAASA,iBAAT,CAA2Bp0F,CAA3B,EAA8BuO,OAA9B,EAAuC;AACxD,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAawlF,iBAAb,CAA+Bp0F,CAA/B;AACD,OAFD,CAEE,OAAOnB,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;;AAED8f,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAzEI;;AA2EL;;;AAGA72C,iBAAa,EAAE,SAASA,aAAT,CAAuB96D,KAAvB,EAA8B;AAC3Cra,YAAM,CAAC/P,KAAP,CAAaklF,aAAb,CAA2B96D,KAA3B;AAEAra,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAlFI;AAoFLnzC,gBAAY,EAAE,SAASA,YAAT,CAAsBx+D,KAAtB,EAA6B;AACzCra,YAAM,CAAC/P,KAAP,CAAa4oF,YAAb,CAA0Bx+D,KAA1B;AACAra,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAvFI;AAyFLh0C,0BAAsB,EAAE,SAASA,sBAAT,CAAgC32F,CAAhC,EAAmCg5B,KAAnC,EAA0C;AAChEra,YAAM,CAAC/P,KAAP,CAAa+nF,sBAAb,CAAoC32F,CAApC,EAAuCg5B,KAAvC;AACAra,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KA5FI;;AA8FL;;;AAGAlzC,kBAAc,EAAE,SAASA,cAAT,CAAwBz+D,KAAxB,EAA+B;AAC7Cra,YAAM,CAAC/P,KAAP,CAAa6oF,cAAb,CAA4Bz+D,KAA5B;AAEAra,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KArGI;AAuGLh2B,iBAAa,EAAE,SAASA,aAAT,GAAyB;AACtC,aAAOh2F,MAAM,CAAC/P,KAAP,CAAa+lG,aAAb,CAA2BpzG,KAA3B,CAAiCod,MAAM,CAAC/P,KAAxC,EAA+C3K,SAA/C,CAAP;AACD,KAzGI;AA2GLqvF,qBAAiB,EAAE,SAASA,iBAAT,CAA2Bq+B,QAA3B,EAAqC;AACtDhzG,YAAM,CAAC/P,KAAP,CAAarM,GAAb,CAAiB;AACf4P,yBAAiB,EAAEw/G,QAAQ,GAAGhzG,MAAM,CAAC/P,KAAP,CAAamW,GAAb,CAAiB,mBAAjB;AADf,OAAjB;AAGD,KA/GI;;AAiHL;;;;AAIAkmH,4BAAwB,EAAE,SAASA,wBAAT,CAAkC5rD,CAAlC,EAAqC;AAC7D,UAAI6J,WAAW,GAAG,EAAlB;;AACA,WAAK,IAAIlpF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2e,MAAM,CAAC/P,KAAP,CAAaoxC,gBAAb,EAApB,EAAqDhgD,CAAC,EAAtD,EAA0D;AACxDkpF,mBAAW,CAACtmF,IAAZ,CAAiB5C,CAAjB;AACD;;AACD2e,YAAM,CAAC/P,KAAP,CAAagmF,qBAAb,CAAmC1L,WAAnC,EAAgD7J,CAAhD;AACD,KA3HI;;AA6HL;;;;;AAKAuV,yBAAqB,EAAE,SAASA,qBAAT,CAA+B1L,WAA/B,EAA4C7J,CAA5C,EAA+C;AACpE1gE,YAAM,CAAC/P,KAAP,CAAagmF,qBAAb,CAAmC1L,WAAnC,EAAgD7J,CAAhD;AACD,KApII;;AAsIL;;;;;AAKAwY,gBAAY,EAAE,SAASA,YAAT,CAAsBzzC,MAAtB,EAA8B8kC,WAA9B,EAA2C;AACvDvqE,YAAM,CAAC/P,KAAP,CAAaipF,YAAb,CAA0BzzC,MAA1B,EAAkC8kC,WAAlC;AACD,KA7II;AA+ILgiD,4BAAwB,EAAE,SAASA,wBAAT,GAAoC;AAC5D,UAAIhiD,WAAW,GAAG,EAAlB;;AACA,WAAK,IAAIlpF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2e,MAAM,CAAC/P,KAAP,CAAaoxC,gBAAb,EAApB,EAAqDhgD,CAAC,EAAtD,EAA0D;AACxDkpF,mBAAW,CAACtmF,IAAZ,CAAiB5C,CAAjB;AACD;;AACD,aAAO2e,MAAM,CAAC/P,KAAP,CAAaymF,qBAAb,CAAmCnM,WAAnC,CAAP;AACD,KArJI;AAuJLmM,yBAAqB,EAAE,SAASA,qBAAT,CAA+BnM,WAA/B,EAA4C;AACjE,aAAOvqE,MAAM,CAAC/P,KAAP,CAAaymF,qBAAb,CAAmCnM,WAAnC,CAAP;AACD,KAzJI;AA2JLiiD,wBAAoB,EAAE,SAASA,oBAAT,CAA8B5kH,CAA9B,EAAiC;AACrD,UAAI5H,MAAM,CAAC/P,KAAP,CAAamW,GAAb,CAAiB,mBAAjB,IAAwCwB,CAA5C,EAA+C5H,MAAM,CAAC/P,KAAP,CAAarM,GAAb,CAAiB;AAC9D4P,yBAAiB,EAAEoU;AAD2C,OAAjB;AAGhD,KA/JI;;AAiKL;AACA6kH,eAAW,EAAE,SAASA,WAAT,CAAqBj9G,CAArB,EAAwB;AACnC,UAAI4xB,QAAQ,GAAGphC,MAAM,CAAC/P,KAAP,CAAaoxC,gBAAb,EAAf;AAEA,UAAI7xB,CAAC,KAAK,IAAV,EAAgBA,CAAC,GAAG,IAAIxP,MAAM,CAACH,GAAP,CAAWmtB,aAAX,CAAyBoU,QAAQ,GAAG,CAApC,CAAR;AAEhB,UAAI,CAACphC,MAAM,CAACH,GAAP,CAAW+sB,SAAX,CAAqBpd,CAArB,CAAL,EAA8B,MAAM,IAAItuB,KAAJ,CAAU,6CAA6CsuB,CAA7C,GAAiD,sBAA3D,CAAN;AAC9B,UAAIA,CAAC,GAAG,CAAR,EAAW,MAAM,IAAItuB,KAAJ,CAAU,6CAA6CsuB,CAA7C,GAAiD,kCAA3D,CAAN;AAEX,UAAIA,CAAC,GAAG4xB,QAAR,EAAkB5xB,CAAC,GAAG4xB,QAAJ;AAClB,aAAOphC,MAAM,CAACH,GAAP,CAAWutB,MAAX,CAAkB5d,CAAlB,EAAqB4xB,QAArB,CAAP;AACD,KA5KI;;AA8KL;;;;AAIA;AACA4F,qBAAiB,EAAE,SAASA,iBAAT,GAA6B;AAC9ChnC,YAAM,CAAC/P,KAAP,CAAa+2C,iBAAb;AACD,KArLI;AAuLLC,sBAAkB,EAAE,SAASA,kBAAT,GAA8B;AAChDjnC,YAAM,CAAC/P,KAAP,CAAag3C,kBAAb;AACD,KAzLI;AA2LLC,uBAAmB,EAAE,SAASA,mBAAT,CAA6BzrC,KAA7B,EAAoC;AACvDuE,YAAM,CAAC/P,KAAP,CAAai3C,mBAAb,CAAiCzrC,KAAjC;AACD,KA7LI;AA+LL0rC,2BAAuB,EAAE,SAASA,uBAAT,CAAiCC,IAAjC,EAAuC;AAC9DpnC,YAAM,CAAC/P,KAAP,CAAak3C,uBAAb,CAAqCC,IAArC;AACD,KAjMI;AAmMLC,wBAAoB,EAAE,SAASA,oBAAT,CAA8Br7B,MAA9B,EAAsC;AAC1DhM,YAAM,CAAC/P,KAAP,CAAao3C,oBAAb,CAAkCr7B,MAAlC;AACD,KArMI;AAuMLs7B,wBAAoB,EAAE,SAASA,oBAAT,CAA8BC,MAA9B,EAAsC;AAC1DvnC,YAAM,CAAC/P,KAAP,CAAaq3C,oBAAb,CAAkCC,MAAlC;AACD,KAzMI;;AA2ML;;;;AAIA;;;;;;AAMAwpD,iBAAa,EAAE,SAASA,aAAT,CAAuBC,eAAvB,EAAwC5vG,KAAxC,EAA+C;AAC5D4e,YAAM,CAAC/P,KAAP,CAAa8gG,aAAb,CAA2BC,eAA3B,EAA4C5vG,KAA5C;AACD,KAvNI;;AAyNL;;;;;AAKA6vG,uBAAmB,EAAE,SAASy7B,mBAAT,CAA6B/5H,OAA7B,EAAsCvR,KAAtC,EAA6C;AAChE4e,YAAM,CAAC/P,KAAP,CAAaghG,mBAAb,CAAiCt+F,OAAjC,EAA0CvR,KAA1C;AACA4e,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAjOI;;AAmOL;;;;;;;;;;AAUAW,qBAAiB,EAAE,2BAASnqI,CAAT,EAAYuV,CAAZ,EAAelH,CAAf,EAAkB8B,OAAlB,EAA2B;AAC5C,UAAIvN,MAAM,GAAG,EAAb;AAAA,UACEi1B,KADF;AAAA,UACS8hB,IADT;AAAA,UACe96C,CADf;AAAA,UACkBc,GADlB;;AAGA,WAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG6d,MAAM,CAAC/P,KAAP,CAAaoxC,gBAAb,EAAlB,EAAmDhgD,CAAC,GAAGc,GAAvD,EAA4Dd,CAAC,EAA7D,EAAiE;AAC/Dg5B,aAAK,GAAGra,MAAM,CAAC/P,KAAP,CAAa23F,iBAAb,CAA+BvmG,CAA/B,CAAR;AACA,YAAI,OAAOsR,OAAP,KAAmB,WAAnB,IAAkC0nB,KAAK,CAAC1nB,OAAN,KAAkBA,OAAxD,EAAiE;AACjEwpC,YAAI,GAAG15C,IAAI,CAAC2O,IAAL,CAAU3O,IAAI,CAACg6C,GAAL,CAASj6C,CAAC,GAAG63B,KAAK,CAAC73B,CAAnB,EAAsB,CAAtB,IAA2BC,IAAI,CAACg6C,GAAL,CAAS1kC,CAAC,GAAGsiB,KAAK,CAACtiB,CAAnB,EAAsB,CAAtB,CAArC,CAAP;;AACA,YAAIokC,IAAI,IAAItrC,CAAZ,EAAe;AACbzL,gBAAM,CAACnB,IAAP,CAAY5C,CAAZ;AACD;AACF;;AACD,aAAO+D,MAAP;AACD,KA1PI;;AA4PL;;;;;;;;;;;;AAYAwnI,mBAAe,EAAE,yBAASpqI,CAAT,EAAYuV,CAAZ,EAAe2X,CAAf,EAAkB82B,CAAlB,EAAqB7zC,OAArB,EAA8B;AAC7C,UAAIvN,MAAM,GAAG,EAAb;AAAA,UACEi1B,KADF;AAAA,UACS8hB,IADT;AAAA,UACe0wF,GADf;AAAA,UACoBC,GADpB;AAAA,UACyBzrI,CADzB;AAAA,UAC4Bc,GAD5B;;AAGA,WAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG6d,MAAM,CAAC/P,KAAP,CAAaoxC,gBAAb,EAAlB,EAAmDhgD,CAAC,GAAGc,GAAvD,EAA4Dd,CAAC,EAA7D,EAAiE;AAC/Dg5B,aAAK,GAAGra,MAAM,CAAC/P,KAAP,CAAa23F,iBAAb,CAA+BvmG,CAA/B,CAAR;AACA,YAAI,OAAOsR,OAAP,KAAmB,WAAnB,IAAkC0nB,KAAK,CAAC1nB,OAAN,KAAkBA,OAAxD,EAAiE;;AACjE,YAAI,OAAO6zC,CAAP,KAAa,WAAjB,EAA8B;AAC5BrK,cAAI,GAAG15C,IAAI,CAAC2O,IAAL,CAAU3O,IAAI,CAACg6C,GAAL,CAASj6C,CAAC,GAAG63B,KAAK,CAAC73B,CAAnB,EAAsB,CAAtB,IAA2BC,IAAI,CAACg6C,GAAL,CAAS1kC,CAAC,GAAGsiB,KAAK,CAACtiB,CAAnB,EAAsB,CAAtB,CAArC,CAAP;;AACA,cAAIokC,IAAI,IAAIzsB,CAAZ,EAAe;AACbtqB,kBAAM,CAACnB,IAAP,CAAY5C,CAAZ;AACD;AACF,SALD,MAKO;AACLwrI,aAAG,GAAKxyG,KAAK,CAAC73B,CAAN,IAAWA,CAAZ,IAAmB63B,KAAK,CAAC73B,CAAN,IAAYA,CAAC,GAAGktB,CAA1C;AACAo9G,aAAG,GAAKzyG,KAAK,CAACtiB,CAAN,IAAWA,CAAZ,IAAmBsiB,KAAK,CAACtiB,CAAN,IAAYA,CAAC,GAAGyuC,CAA1C;;AACA,cAAIqmF,GAAG,IAAIC,GAAX,EAAgB;AACd1nI,kBAAM,CAACnB,IAAP,CAAY5C,CAAZ;AACD;AACF;AACF;;AACD,aAAO+D,MAAP;AACD,KA7RI;;AA+RL;;;;;;;;;;;;;AAaA2nI,uBAAmB,EAAE,6BAAS70H,EAAT,EAAaC,EAAb,EAAiB60H,EAAjB,EAAqBC,EAArB,EAAyBz2B,EAAzB,EAA6BC,EAA7B,EAAiC9jG,OAAjC,EAA0C;AAC7D,UAAIvN,MAAM,GAAG,EAAb;AAAA,UACEi1B,KADF;AAAA,UACSh5B,CADT;AAAA,UACYc,GADZ;;AAGA,eAAS+qI,YAAT,CAAsBr0H,EAAtB,EAA0BC,EAA1B,EAA8B;AAC5B;AACA,YAAIq0H,EAAE,GAAG,CAAC32B,EAAE,GAAGt+F,EAAN,EAAUu+F,EAAE,GAAGt+F,EAAf,CAAT;AAAA,YACEysC,EAAE,GAAG,CAACooF,EAAE,GAAG90H,EAAN,EAAU+0H,EAAE,GAAG90H,EAAf,CADP;AAAA,YAEE0sC,EAAE,GAAG,CAAChsC,EAAE,GAAGX,EAAN,EAAUY,EAAE,GAAGX,EAAf,CAFP;AAAA,YAIEi1H,KAAK,GAAID,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAX,GAAmBA,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAJvC;AAAA,YAKEE,KAAK,GAAIF,EAAE,CAAC,CAAD,CAAF,GAAQvoF,EAAE,CAAC,CAAD,CAAX,GAAmBuoF,EAAE,CAAC,CAAD,CAAF,GAAQvoF,EAAE,CAAC,CAAD,CALvC;AAAA,YAME0oF,KAAK,GAAIH,EAAE,CAAC,CAAD,CAAF,GAAQtoF,EAAE,CAAC,CAAD,CAAX,GAAmBsoF,EAAE,CAAC,CAAD,CAAF,GAAQtoF,EAAE,CAAC,CAAD,CANvC;AAAA,YAOE0oF,KAAK,GAAI3oF,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAX,GAAmBA,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAPvC;AAAA,YAQE4oF,KAAK,GAAI5oF,EAAE,CAAC,CAAD,CAAF,GAAQC,EAAE,CAAC,CAAD,CAAX,GAAmBD,EAAE,CAAC,CAAD,CAAF,GAAQC,EAAE,CAAC,CAAD,CARvC;AAAA,YAUE4oF,QAAQ,GAAG,KAAKL,KAAK,GAAGG,KAAR,GAAgBF,KAAK,GAAGA,KAA7B,CAVb;AAAA,YAYE39D,CAAC,GAAG,CAAC69D,KAAK,GAAGD,KAAR,GAAgBD,KAAK,GAAGG,KAAzB,IAAkCC,QAZxC;AAAA,YAaEn+F,CAAC,GAAG,CAAC89F,KAAK,GAAGI,KAAR,GAAgBH,KAAK,GAAGC,KAAzB,IAAkCG,QAbxC;AAeA,eAAS/9D,CAAC,IAAI,CAAN,IAAapgC,CAAC,IAAI,CAAlB,IAAyBogC,CAAC,GAAGpgC,CAAJ,GAAQ,CAAzC;AACD;;AAED,WAAKjuC,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG6d,MAAM,CAAC/P,KAAP,CAAaoxC,gBAAb,EAAlB,EAAmDhgD,CAAC,GAAGc,GAAvD,EAA4Dd,CAAC,EAA7D,EAAiE;AAC/Dg5B,aAAK,GAAGra,MAAM,CAAC/P,KAAP,CAAa23F,iBAAb,CAA+BvmG,CAA/B,CAAR;AACA,YAAI,OAAOsR,OAAP,KAAmB,WAAnB,IAAkC0nB,KAAK,CAAC1nB,OAAN,KAAkBA,OAAxD,EAAiE;;AACjE,YAAIu6H,YAAY,CAAC7yG,KAAK,CAAC73B,CAAP,EAAU63B,KAAK,CAACtiB,CAAhB,CAAhB,EAAoC;AAClC3S,gBAAM,CAACnB,IAAP,CAAY5C,CAAZ;AACD;AACF;;AACD,aAAO+D,MAAP;AACD,KA5UI;;AA8UL;;;;;AAKAsoI,aAAS,EAAE,SAASA,SAAT,CAAmB5+E,OAAnB,EAA4B;AACrC,UAAIztD,CAAJ,EACEc,GADF;AAGA,UAAImD,SAAS,CAAChE,MAAV,KAAqB,CAAzB,EAA4B,OAJS,CAMrC;;AACA,UAAI,CAAC0e,MAAM,CAACH,GAAP,CAAW3b,OAAX,CAAmBoB,SAAS,CAAC,CAAD,CAA5B,CAAL,EAAuC;AACrCwpD,eAAO,GAAGxpD,SAAV;AACD;;AAED0a,YAAM,CAACH,GAAP,CAAW8tH,cAAX,GAXqC,CAarC;;AACA,WAAKtsI,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG2sD,OAAO,CAACxtD,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9C2e,cAAM,CAAC/P,KAAP,CAAawmF,iBAAb,CAA+B3nC,OAAO,CAACztD,CAAD,CAAtC,EAA2C;AACzCoX,gBAAM,EAAE;AADiC,SAA3C;AAGD;;AACDuH,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAvWI;AAyWL2B,kBAAc,EAAE,SAASA,cAAT,GAA0B;AACxC,WAAK,IAAItsI,CAAC,GAAG,CAAR,EAAWc,GAAG,GAAG6d,MAAM,CAAC/P,KAAP,CAAaoxC,gBAAb,EAAtB,EAAuDhgD,CAAC,GAAGc,GAA3D,EAAgEd,CAAC,EAAjE,EAAqE;AACnE2e,cAAM,CAAC/P,KAAP,CAAawmF,iBAAb,CAA+Bp1F,CAA/B,EAAkC;AAChCoX,gBAAM,EAAE;AADwB,SAAlC;AAGD;;AACDuH,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAhXI;AAkXL4B,aAAS,EAAE,SAASA,SAAT,CAAmBvsI,CAAnB,EAAsB;AAC/B,UAAIA,CAAC,KAAK,IAAV,EAAgB;AAEhB2e,YAAM,CAAC/P,KAAP,CAAarM,GAAb,CAAiB;AACf8S,mBAAW,EAAErV;AADE,OAAjB;AAGA2e,YAAM,CAAC/P,KAAP,CAAarM,GAAb,CAAiB;AACf6S,qBAAa,EAAE;AADA,OAAjB;AAGD,KA3XI;AA6XLo3H,eAAW,EAAE,SAASA,WAAT,GAAuB;AAClC7tH,YAAM,CAAC/P,KAAP,CAAarM,GAAb,CAAiB;AACf6S,qBAAa,EAAE;AADA,OAAjB;AAGD,KAjYI;;AAmYL;;;;AAIAggF,qBAAiB,EAAE,SAASA,iBAAT,CAA2Bp1F,CAA3B,EAA8Bg5B,KAA9B,EAAqCq8E,aAArC,EAAoDC,YAApD,EAAkE;AACnFo1B,iBAAW,CAAC/rH,MAAM,CAAC/P,KAAP,CAAawmF,iBAAd,EAAiCp1F,CAAjC,EAAoCg5B,KAApC,EAA2Cq8E,aAA3C,EAA0DC,YAA1D,CAAX;AACD,KAzYI;;AA2YL;;;;;;;;;;;;;;;;;;;;;AAqBAlP,kBAAc,EAAE,SAASA,cAAT,GAA0B;AACxC,aAAOznF,MAAM,CAAC/P,KAAP,CAAaw3F,cAAb,EAAP;AACD,KAlaI;;AAoaL;;;;AAIAG,qBAAiB,EAAE,SAASA,iBAAT,CAA2BvmG,CAA3B,EAA8B;AAC/C,aAAO2e,MAAM,CAAC/P,KAAP,CAAa23F,iBAAb,CAA+BvmG,CAA/B,CAAP;AACD,KA1aI;;AA4aL;;;;AAIAq7F,yBAAqB,EAAE,SAASA,qBAAT,CAA+Br7F,CAA/B,EAAkC;AACvD,aAAO2e,MAAM,CAAC/P,KAAP,CAAaysF,qBAAb,CAAmCr7F,CAAnC,CAAP;AACD,KAlbI;;AAobL;;;;AAIAu7F,0BAAsB,EAAE,SAASA,sBAAT,CAAgCv7F,CAAhC,EAAmC;AACzD,aAAO2e,MAAM,CAAC/P,KAAP,CAAa2sF,sBAAb,CAAoCv7F,CAApC,CAAP;AACD,KA1bI;;AA4bL;;;;AAIA0xF,oBAAgB,EAAE,SAASA,gBAAT,CAA0B1xF,CAA1B,EAA6B;AAC7C,aAAO2e,MAAM,CAAC/P,KAAP,CAAa8iF,gBAAb,CAA8B1xF,CAA9B,CAAP;AACD,KAlcI;AAocL42F,wBAAoB,EAAE,SAASA,oBAAT,CAA8B52F,CAA9B,EAAiCg5B,KAAjC,EAAwC;AAC5D0xG,iBAAW,CAAC/rH,MAAM,CAAC/P,KAAP,CAAagoF,oBAAd,EAAoC52F,CAApC,EAAuCg5B,KAAvC,CAAX;AACD,KAtcI;;AAwcL;;;;;;;AAOA0iD,2BAAuB,EAAE,SAASA,uBAAT,CAAiC17E,CAAjC,EAAoCyM,CAApC,EAAuCusB,KAAvC,EAA8C;AACrEra,YAAM,CAAC/P,KAAP,CAAa6pG,uBAAb,GAAuCl2G,GAAvC,CAA2CvC,CAA3C,EAA8CyM,CAA9C,EAAiDusB,KAAjD;AACD,KAjdI;;AAmdL;;;AAGAyzG,8BAA0B,EAAE,SAASA,0BAAT,CAAoCzsI,CAApC,EAAuCyM,CAAvC,EAA0C;AACpEkS,YAAM,CAAC/P,KAAP,CAAa6pG,uBAAb,GAAuCh2G,MAAvC,CAA8CzC,CAA9C,EAAiDyM,CAAjD;AACD,KAxdI;AA0dLq7F,wBAAoB,EAAE,SAASA,oBAAT,CAA8B9nG,CAA9B,EAAiC;AACrD,aAAO2e,MAAM,CAAC/P,KAAP,CAAak5F,oBAAb,CAAkC9nG,CAAlC,CAAP;AACD,KA5dI;AA8dL0sI,gBAAY,EAAE,SAAS71D,qBAAT,CAA+B72E,CAA/B,EAAkC;AAC9C,aAAO2e,MAAM,CAAC/P,KAAP,CAAaioE,qBAAb,CAAmC72E,CAAnC,CAAP;AACD,KAheI;;AAkeL;;;;AAIAi4F,eAAW,EAAE2yC,gBAAgB,CAAC,aAAD,CAtexB;AAueLzyC,YAAQ,EAAEyyC,gBAAgB,CAAC,UAAD,CAverB;AAweLtyC,WAAO,EAAEsyC,gBAAgB,CAAC,SAAD,CAxepB;;AA0eL;;;;AAIA9zC,yBAAqB,EAAE,SAASA,qBAAT,CAA+B92F,CAA/B,EAAkCg5B,KAAlC,EAAyC;AAC9D0xG,iBAAW,CAAC/rH,MAAM,CAAC/P,KAAP,CAAakoF,qBAAd,EAAqC92F,CAArC,EAAwCg5B,KAAxC,CAAX;AACD,KAhfI;;AAkfL;;;;AAIA28E,yBAAqB,EAAE,SAASA,qBAAT,CAA+B31G,CAA/B,EAAkC;AACvD,aAAO2e,MAAM,CAAC/P,KAAP,CAAa+mG,qBAAb,CAAmC31G,CAAnC,CAAP;AACD,KAxfI;;AA0fL;;;AAGAk4F,kBAAc,EAAE,SAASA,cAAT,CAAwBl4F,CAAxB,EAA2BuO,OAA3B,EAAoC;AAClD,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAaspF,cAAb,CAA4Bl4F,CAA5B;AACD,OAFD,CAEE,OAAOnB,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;;AAED8f,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAtgBI;AAwgBL3zC,sBAAkB,EAAE,SAASA,kBAAT,CAA4Bh3F,CAA5B,EAA+Bg5B,KAA/B,EAAsC;AACxD0xG,iBAAW,CAAC/rH,MAAM,CAAC/P,KAAP,CAAaooF,kBAAd,EAAkCh3F,CAAlC,EAAqCg5B,KAArC,CAAX;AACD,KA1gBI;AA4gBL68E,sBAAkB,EAAE,SAASA,kBAAT,CAA4B71G,CAA5B,EAA+B;AACjD,aAAO2e,MAAM,CAAC/P,KAAP,CAAainG,kBAAb,CAAgC71G,CAAhC,CAAP;AACD,KA9gBI;AAghBLi3F,qBAAiB,EAAE,SAASA,iBAAT,CAA2Bj3F,CAA3B,EAA8Bg5B,KAA9B,EAAqC;AACtD0xG,iBAAW,CAAC/rH,MAAM,CAAC/P,KAAP,CAAaqoF,iBAAd,EAAiCj3F,CAAjC,EAAoCg5B,KAApC,CAAX;AACD,KAlhBI;AAohBL+8E,qBAAiB,EAAE,SAASA,iBAAT,CAA2B/1G,CAA3B,EAA8B;AAC/C,aAAO2e,MAAM,CAAC/P,KAAP,CAAamnG,iBAAb,CAA+B/1G,CAA/B,CAAP;AACD,KAthBI;AAwhBLw4F,oBAAgB,EAAE,SAASA,gBAAT,CAA0Bx/D,KAA1B,EAAiCzqB,OAAjC,EAA0C;AAC1D,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAa4pF,gBAAb,CAA8Bx/D,KAA9B;AACD,OAFD,CAEE,OAAOn6B,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;AACF,KA/hBI;AAiiBLw5F,uBAAmB,EAAE,SAASA,mBAAT,CAA6Br4F,CAA7B,EAAgCuO,OAAhC,EAAyC;AAC5D,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAaypF,mBAAb,CAAiCr4F,CAAjC;AACD,OAFD,CAEE,OAAOnB,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;AACF,KAxiBI;AA0iBLq4F,8BAA0B,EAAE,SAASA,0BAAT,CAAoCl3F,CAApC,EAAuCg5B,KAAvC,EAA8C;AACxEra,YAAM,CAAC/P,KAAP,CAAasoF,0BAAb,CAAwCl3F,CAAxC,EAA2Cg5B,KAA3C;AACD,KA5iBI;AA8iBLk9E,8BAA0B,EAAE,SAASA,0BAAT,CAAoCl2G,CAApC,EAAuC;AACjE,aAAO2e,MAAM,CAAC/P,KAAP,CAAasnG,0BAAb,CAAwCl2G,CAAxC,CAAP;AACD,KAhjBI;AAkjBL2sI,uBAAmB,EAAE,SAASC,mBAAT,CAA6B5sI,CAA7B,EAAgC;AACnD,UAAIg5B,KAAK,GAAGra,MAAM,CAAC/P,KAAP,CAAainG,kBAAb,CAAgC71G,CAAhC,CAAZ;AACA,aAAO,KAAKurI,eAAL,CAAqBvyG,KAAK,CAAC73B,CAA3B,EAA8B63B,KAAK,CAACtiB,CAApC,EAAuCsiB,KAAK,CAAC5tB,KAA7C,EAAoD4tB,KAAK,CAAC3tB,MAA1D,CAAP;AACD,KArjBI;AAujBL+sF,eAAW,EAAE,SAASA,WAAT,CAAqBp4F,CAArB,EAAwBuO,OAAxB,EAAiC;AAC5C,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAawpF,WAAb,CAAyBp4F,CAAzB;AACD,OAFD,CAEE,OAAOnB,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;;AACD8f,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KA/jBI;AAikBLpyC,cAAU,EAAE,SAASA,UAAT,CAAoBv4F,CAApB,EAAuBuO,OAAvB,EAAgC;AAC1C,UAAI;AACFoQ,cAAM,CAAC/P,KAAP,CAAa2pF,UAAb,CAAwBv4F,CAAxB;AACD,OAFD,CAEE,OAAOnB,CAAP,EAAU;AACV,YAAI,CAAC0P,OAAD,IAAY,CAACA,OAAO,CAACw8H,MAAzB,EACE,MAAMlsI,CAAN;AACH;;AACD8f,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAzkBI;AA2kBLn0C,2BAAuB,EAAE,SAASA,uBAAT,CAAiCx2F,CAAjC,EAAoCg5B,KAApC,EAA2C;AAClEra,YAAM,CAAC/P,KAAP,CAAa4nF,uBAAb,CAAqCx2F,CAArC,EAAwCg5B,KAAxC;AACAra,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KA9kBI;AAglBLv0B,2BAAuB,EAAE,SAASA,uBAAT,CAAiCp2G,CAAjC,EAAoC;AAC3D,aAAO2e,MAAM,CAAC/P,KAAP,CAAawnG,uBAAb,CAAqCp2G,CAArC,CAAP;AACD,KAllBI;AAolBL02F,4BAAwB,EAAE,SAASA,wBAAT,CAAkC12F,CAAlC,EAAqCg5B,KAArC,EAA4C;AACpEra,YAAM,CAAC/P,KAAP,CAAa8nF,wBAAb,CAAsC12F,CAAtC,EAAyCg5B,KAAzC;AACAra,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KAvlBI;AAylBLn0B,4BAAwB,EAAE,SAASA,wBAAT,CAAkCx2G,CAAlC,EAAqC;AAC7D,aAAO2e,MAAM,CAAC/P,KAAP,CAAa4nG,wBAAb,CAAsCx2G,CAAtC,CAAP;AACD,KA3lBI;;AA6lBL;;;AAGA6sI,iBAAa,EAAE,SAASA,aAAT,GAAyB;AACtC,UAAIrC,aAAa,IAAI,IAArB,EAA2B;AACzBA,qBAAa,GAAG,IAAIR,aAAJ,CAAkBrrH,MAAM,CAAC/P,KAAzB,CAAhB;AACD;;AACD47H,mBAAa,CAAC95F,SAAd,CAAwB/xB,MAAM,CAAC/P,KAA/B;AACA47H,mBAAa,CAAC5kG,IAAd;AACD,KAtmBI;;AAwmBL;;;;;;;AAOAknG,sBAAkB,EAAE,SAASA,kBAAT,GAA8B;AAChDnuH,YAAM,CAAC/P,KAAP,CAAagiG,aAAb,GAA6BzL,eAA7B;AACD,KAjnBI;;AAmnBL;;;;;;;AAOA4nC,sBAAkB,EAAE,SAASA,kBAAT,GAA8B;AAChDpuH,YAAM,CAAC/P,KAAP,CAAagiG,aAAb,GAA6BxL,eAA7B;AACD,KA5nBI;;AA8nBL;;;;;;;AAOA4nC,kBAAc,EAAE,SAASA,cAAT,CAAwB9lG,KAAxB,EAA+B;AAC7C,aAAOvoB,MAAM,CAAC/P,KAAP,CAAagiG,aAAb,GAA6B7N,WAA7B,CAAyC77D,KAAzC,CAAP;AACD,KAvoBI;;AAyoBL;;;;;;;AAOA+lG,iBAAa,EAAE,SAASA,aAAT,CAAuB/lG,KAAvB,EAA8B;AAC3C,aAAOvoB,MAAM,CAAC/P,KAAP,CAAagiG,aAAb,GAA6B5N,UAA7B,CAAwC97D,KAAxC,CAAP;AACD,KAlpBI;;AAopBL;;;;;;;AAOAgmG,yBAAqB,EAAE,SAASA,qBAAT,GAAiC;AACtDvuH,YAAM,CAAC/P,KAAP,CAAagiG,aAAb,GAA6B3L,qBAA7B;AACD,KA7pBI;;AA+pBL;;;;;;;;;;;;;AAaAkoC,qBAAiB,EAAE,SAASA,iBAAT,CAA2B7nC,SAA3B,EAAsC;AACvD3mF,YAAM,CAAC/P,KAAP,CAAagiG,aAAb,GAA6BvL,YAA7B,CAA0CC,SAA1C;AACD,KA9qBI;;AAgrBL;;;AAGA8nC,oBAAgB,EAAE,SAASA,gBAAT,GAA4B;AAC5C;AACA;AACAzuH,YAAM,CAAC/P,KAAP,CAAagiG,aAAb,GAA6B1L,cAA7B;AACD,KAvrBI;;AAyrBL;;;;;;;;;;;;;;AAcAmoC,qBAAiB,EAAE,SAASA,iBAAT,CAA2B5nC,kBAA3B,EAA+C;AAChE,UAAI6nC,EAAE,GAAG3uH,MAAM,CAAC/P,KAAP,CAAagiG,aAAb,EAAT;;AACA,UAAI08B,EAAE,CAACvqC,WAAH,CAAe,KAAf,KAAyBuqC,EAAE,CAACtqC,UAAH,CAAc,mBAAd,CAA7B,EAAiE;AAC/D;AACA;AACA;AACArkF,cAAM,CAAC/P,KAAP,CAAarM,GAAb,CAAiB,UAAjB,EAA6B,KAA7B;AACA+qI,UAAE,CAACjoC,YAAH,CAAgB,iBAAhB;AACAioC,UAAE,CAAC9nC,cAAH,CAAkBC,kBAAlB;AACD,OAPD,MAOO,IAAI9mF,MAAM,CAAC/P,KAAP,CAAamW,GAAb,CAAiB,UAAjB,MAAiC,mBAArC,EAA0D;AAC/D;AACAuoH,UAAE,CAAC9nC,cAAH,CAAkBC,kBAAlB;AACD;AACF,KAptBI;;AAstBL;;;AAGA8nC,oBAAgB,EAAE,SAASA,gBAAT,GAA4B;AAC5C,UAAID,EAAE,GAAG3uH,MAAM,CAAC/P,KAAP,CAAagiG,aAAb,EAAT;;AACA,UAAI08B,EAAE,CAACvqC,WAAH,CAAe,eAAf,KAAmCuqC,EAAE,CAACtqC,UAAH,CAAc,iBAAd,CAAvC,EAAyE;AACvE;AACA;AACArkF,cAAM,CAAC/P,KAAP,CAAarM,GAAb,CAAiB,UAAjB,EAA6B,eAA7B;AACA+qI,UAAE,CAACjoC,YAAH,CAAgB,eAAhB;AACD,OALD,MAKO,IAAI1mF,MAAM,CAAC/P,KAAP,CAAamW,GAAb,CAAiB,UAAjB,MAAiC,iBAArC,EAAwD;AAC7D;AACAuoH,UAAE,CAACroC,qBAAH;AACD;AACF,KApuBI;;AAsuBL;;;;;;;;AAQAuoC,yBAAqB,EAAE,+BAASvmC,cAAT,EAAyB;AAC9C,UAAIwmC,UAAU,GAAG9uH,MAAM,CAAC/P,KAAP,CAAagiG,aAAb,GAA6BtN,eAA7B,CAA6CpkG,SAA7C,EAAwD+nG,cAAxD,CAAjB;;AAEA,UAAIwmC,UAAU,KAAKxmC,cAAnB,EAAmC;AACjC,cAAM,IAAIpnG,KAAJ,CAAU,kFACd4tI,UADc,GACD,8BADT,CAAN;AAED;AACF,KArvBI;;AAuvBL;;;;;AAKA/2B,cAAU,EAAE,SAASA,UAAT,CAAoB7vG,IAApB,EAA0B;AACpC8X,YAAM,CAAC/P,KAAP,CAAa8nG,UAAb,CAAwB7vG,IAAxB;AACD,KA9vBI;AAgwBL6mI,MAAE,EAAE,SAASA,EAAT,GAAc;AAChB,aAAO/uH,MAAM,CAAC/P,KAAP,CAAamW,GAAb,CAAiB,iBAAjB,CAAP;AACD,KAlwBI;AAowBL4oH,MAAE,EAAE,SAASA,EAAT,GAAc;AAChB,aAAOhvH,MAAM,CAAC/P,KAAP,CAAamW,GAAb,CAAiB,eAAjB,CAAP;AACD,KAtwBI;AAwwBL6oH,WAAO,EAAE,SAASA,OAAT,CAAiBC,SAAjB,EAA4B;AACnC,UAAI38D,GAAG,GAAG,CAAV;AAAA,UACElxE,CADF;;AAEA,WAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6tI,SAAS,CAAC5tI,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrCkxE,WAAG,IAAIvyD,MAAM,CAAC/P,KAAP,CAAa2uF,oBAAb,CAAkCswC,SAAS,CAAC7tI,CAAD,CAA3C,CAAP;AACD;;AACD,aAAOkxE,GAAP;AACD,KA/wBI;AAixBL6pB,kBAAc,EAAE,SAASA,cAAT,GAA0B;AACxCp8E,YAAM,CAAC/P,KAAP,CAAamsF,cAAb;AACAp8E,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD,KApxBI;AAsxBL1zB,cAAU,EAAE,oBAASj+E,KAAT,EAAgB;AAC1Bra,YAAM,CAAC/P,KAAP,CAAaqoG,UAAb,CAAwBj+E,KAAxB;AACD,KAxxBI;AA0xBLm+E,iBAAa,EAAE,uBAASn3G,CAAT,EAAY;AACzB2e,YAAM,CAAC/P,KAAP,CAAauoG,aAAb,CAA2Bn3G,CAA3B;AACD,KA5xBI;AA8xBLo3G,wBAAoB,EAAE,8BAASp3G,CAAT,EAAYg5B,KAAZ,EAAmB;AACvCra,YAAM,CAAC/P,KAAP,CAAawoG,oBAAb,CAAkCp3G,CAAlC,EAAqCg5B,KAArC;AACD,KAhyBI;AAkyBLy+E,wBAAoB,EAAE,8BAASz3G,CAAT,EAAY;AAChC,aAAO2e,MAAM,CAAC/P,KAAP,CAAa6oG,oBAAb,CAAkCz3G,CAAlC,CAAP;AACD,KApyBI;AAsyBLu4G,wBAAoB,EAAE,gCAAW;AAC/B,aAAO55F,MAAM,CAAC/P,KAAP,CAAa2pG,oBAAb,EAAP;AACD,KAxyBI;AA0yBL1c,oBAAgB,EAAE,4BAAW;AAC3B,aAAOl9E,MAAM,CAAC/P,KAAP,CAAaitF,gBAAb,EAAP;AACD,KA5yBI;AA8yBLD,qBAAiB,EAAE,6BAAW;AAC5B,aAAOj9E,MAAM,CAAC/P,KAAP,CAAagtF,iBAAb,EAAP;AACD,KAhzBI;AAkzBLyb,YAAQ,EAAE,kBAASr+E,KAAT,EAAgB;AACxBra,YAAM,CAAC/P,KAAP,CAAayoG,QAAb,CAAsBr+E,KAAtB;AACD,KApzBI;AAszBLu+E,eAAW,EAAE,qBAASv3G,CAAT,EAAY;AACvB2e,YAAM,CAAC/P,KAAP,CAAa2oG,WAAb,CAAyBv3G,CAAzB;AACD,KAxzBI;AA0zBL03G,sBAAkB,EAAE,4BAAS13G,CAAT,EAAY;AAC9B,aAAO2e,MAAM,CAAC/P,KAAP,CAAa8oG,kBAAb,CAAgC13G,CAAhC,CAAP;AACD,KA5zBI;AA8zBLw3G,sBAAkB,EAAE,4BAASx3G,CAAT,EAAYg5B,KAAZ,EAAmB;AACrC0xG,iBAAW,CAAC/rH,MAAM,CAAC/P,KAAP,CAAa4oG,kBAAd,EAAkCx3G,CAAlC,EAAqCg5B,KAArC,CAAX;AACD,KAh0BI;AAk0BL2xG,kBAAc,EAAE,0BAAW;AACzB,UAAIF,UAAU,KAAK,CAAnB,EAAsB;AACpB9rH,cAAM,CAACH,GAAP,CAAWggB,OAAX;AACD;AACF,KAt0BI;AAw0BLgoE,SAAK,EAAE,eAAS5xE,IAAT,EAAe;AACpB,QAAE61G,UAAF;AAEA9rH,YAAM,CAAC/P,KAAP,CAAaqnB,UAAb;AACArB,UAAI;AACJjW,YAAM,CAAC/P,KAAP,CAAasnB,QAAb;AAEA,QAAEu0G,UAAF,CAPoB,CASpB;;AACA9rH,YAAM,CAACH,GAAP,CAAWmsH,cAAX;AACD;AAn1BI,GAAP;AAu1BD;AAAA,C;;AC14BD;AAEA,IAAImD,SAAS,GAAG,IAAhB;AAAA,IACEC,WAAW,GAAG,IADhB;AAGe,SAASzlE,qBAAT,CAAoBxtC,UAApB,EAAgC;AAC7C,MAAIq6C,YAAJ;AAEA,SAAO,CAAC;AACNvuE,QAAI,EAAE,OADA;AAENouD,WAAO,EAAE,IAFH;AAGNjkB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACyI,UAAU,CAAClsB,KAAX,CAAiBoxC,gBAAjB,EAAD,CAAJ;AACD;AALK,GAAD,EAMJ;AACDp5C,QAAI,EAAE,aADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACyI,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,aAArB,CAAD,CAAJ;AACD;AANA,GANI,EAaJ;AACDne,QAAI,EAAE,aADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClB;AACAyI,gBAAU,CAAClsB,KAAX,CAAiB+/B,KAAjB;AACAuB,gBAAU,CAAC,YAAW;AACpBpV,kBAAU,CAAClsB,KAAX,CAAiB89B,IAAjB;AAEAk7B,0BAAW,CAACC,WAAZ,CAAwB,IAAxB;AACAsN,oBAAY,GAAGr6C,UAAU,CAAClsB,KAAX,CAAiBgpB,WAAjB,EAAf;AAEAsY,kBAAU,CAAC,YAAW;AACpB;AACApV,oBAAU,CAAClsB,KAAX,CAAiB+/B,KAAjB;AACAuB,oBAAU,CAAC,YAAW;AACpBpV,sBAAU,CAAClsB,KAAX,CAAiB89B,IAAjB;AAEAk7B,8BAAW,CAACC,WAAZ,CAAwB,KAAxB;AACAx1C,gBAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,QAAvB,CAAD,CAAJ;AAED,WANS,EAMP4lE,SANO,CAAV;AAOD,SAVS,EAUP,GAVO,CAAV;AAWD,OAjBS,EAiBPC,WAjBO,CAAV;AAkBD;AAzBA,GAbI,EAuCJ;AACDnnI,QAAI,EAAE,mBADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,cAAvB,CAAD,CAAJ;AACD;AANA,GAvCI,EA8CJ;AACDthE,QAAI,EAAE,WADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,MAAvB,CAAD,CAAJ;AACD;AANA,GA9CI,EAqDJ;AACDthE,QAAI,EAAE,qBADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,KAAvB,CAAD,CAAJ;AACD;AANA,GArDI,EA4DJ;AACDthE,QAAI,EAAE,KADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAAC,CAACyI,UAAU,CAAClsB,KAAX,CAAiBgpB,WAAjB,KAAiCu9C,YAAlC,IAAkD,IAAlD,GAAyD24D,SAA1D,CAAJ;AACD;AANA,GA5DI,CAAP;AAoED;AAAA,C;;AC7ED;AACA;AACA;AACA;AACA;AAEe,qEAASp5F,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,SAAO,IAAIi2C,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACL3R,aADK,EACE6nD,UADF,EACkBh9B,gBADlB,EACgCi9B,qBADhC,CAAP;AAED,C;;ACRc;AACb72D,gBAAc,EAAE;AACd5K,QAAI,EAAE;AACJnC,kBAAY,EAAE,kBADV;AAEJd,eAAS,EAAE;AAFP,KADQ;AAKd4Z,aAAS,EAAE;AACT9Y,kBAAY,EAAE,CADL;AAETmN,cAAQ,EAAE,WAFD;AAGTzN,+BAAyB,EAAE;AAHlB,KALG;AAUdgO,mBAAe,EAAE;AACf1N,kBAAY,EAAE,EADC;AAEfN,+BAAyB,EAAE;AAFZ,KAVH;AAcd4pI,aAAS,EAAE;AACTtpI,kBAAY,EAAE,CADL;AAETmN,cAAQ,EAAE,MAFD;AAGTzN,+BAAyB,EAAE;AAHlB,KAdG;AAmBd6pI,qBAAiB,EAAE;AACjBvpI,kBAAY,EAAE,CADG;AAEjBN,+BAAyB,EAAE;AAFV,KAnBL;AAuBdkP,eAAW,EAAE;AACX5O,kBAAY,EAAE,OADH;AAEXsN,wBAAkB,EAAE,KAFT;AAGXnO,cAAQ,EAAE,kBAAS9D,KAAT,EAAgB;AACxB,YAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,KAA5B,IAAqCA,KAAK,KAAK,OAAnD,EAA4D;AAC1D,iBAAOA,KAAP;AACD;;AACD,cAAM,IAAIF,KAAJ,CAAU,kCAAkCE,KAA5C,CAAN;AACD;AARU,KAvBC;AAiCdwT,qBAAiB,EAAE;AACjB7O,kBAAY,EAAE,IADG;AAEjBsN,wBAAkB,EAAE;AAFH;AAjCL,GADH;AAuCbyB,aAAW,EAAE;AACXQ,aAAS,EAAE;AACTvP,kBAAY,EAAE,IADL;AAETN,+BAAyB,EAAE;AAFlB,KADA;AAKXyR,kBAAc,EAAE;AACdnR,kBAAY,EAAE,YADA;AAEdN,+BAAyB,EAAE;AAFb,KALL;AASX0R,sBAAkB,EAAE;AAClBpR,kBAAY,EAAE,OADI;AAElBN,+BAAyB,EAAE,KAFT;AAGlBK,eAAS,EAAE;AAHO;AATT;AAvCA,CAAf,E;;ACAA;AACA;AAEA,IAAIurE,uBAAe,GAAG;AAClBjyD,OAAK,EAAE;AACL9O,QAAI,EAAE;AACJrI,UAAI,EAAE,QADF;AAEJgoE,gBAAU,EAAE,SAFR;AAGJC,YAAM,EAAE;AAHJ,KADD;AAMLrxD,aAAS,EAAE;AACT5W,UAAI,EAAE,OADG;AAETgoE,gBAAU,EAAE,OAFH;AAGTC,YAAM,EAAE;AAHC,KANN;AAWLz0D,SAAK,EAAE;AACLxT,UAAI,EAAE,QADD;AAELgoE,gBAAU,EAAE,SAFP;AAGLC,YAAM,EAAE;AAHH;AAXF;AADW,CAAtB;AAoBe,SAASruD,8BAAT,CAAekzD,iBAAf,EAAkC;AAC/C,MAAIq8B,aAAa,GAAG;AAChB;AACA;AACAvyF,aAAS,EAAE,mBAAS0wH,YAAT,EAAuB;AAChC,UAAIC,aAAa,KAAKjvI,SAAtB,EAAiC;AAC/BkvI,aAAK,GAAGC,SAAS,CAACD,KAAK,GAAG,IAAIhtI,IAAI,CAAC0O,EAAT,IAAeq+H,aAAa,GAAGD,YAA/B,IAA+Ct/H,KAAK,CAACwb,UAAN,CAAiBnb,IAAzE,CAAjB;AACD;;AACDk/H,mBAAa,GAAGD,YAAhB;AACD;AARe,GAApB;AAAA,MAWE79B,eAAe,GAAG,IAAIt8B,eAAJ,CAAoB;AACpCjwE,YAAQ,EAAEA,yBAD0B;AAEpC2vE,WAAO,EAAEs8B,aAF2B;AAGpC//B,mBAAe,EAAEA,uBAHmB;AAIpC0D,qBAAiB,EAAEA;AAJiB,GAApB,CAXpB;AAAA,MAiBEn+C,QAAQ,GAAG86E,eAAe,CAACl8B,eAjB7B;AAAA,MAmBEg6D,aAnBF;AAAA,MAoBEC,KAAK,GAAG,CApBV;AAAA,MAqBEE,KAAK,GAAG,EArBV;AAAA,MAsBE12G,YAAW,GAAG,CAtBhB;AAAA,MAuBE22G,UAAU,GAAG,CAAC,CAvBhB;AAAA,MAwBE3/H,KAxBF;;AA0BA,WAASy/H,SAAT,CAAmBj0H,KAAnB,EAA0B;AACxB,WAAOA,KAAK,GAAG,IAAIhZ,IAAI,CAAC0O,EAAT,GAAc1O,IAAI,CAACwqC,KAAL,CAAWxxB,KAAK,IAAI,IAAIhZ,IAAI,CAAC0O,EAAb,CAAhB,CAA7B;AACD;;AAED,WAASsK,KAAT,CAAenL,IAAf,EAAqB;AACnB,WAAOo/H,SAAS,CAACD,KAAK,GAAG,IAAIhtI,IAAI,CAAC0O,EAAT,GAAclB,KAAK,CAACwb,UAAN,CAAiB5M,SAA/B,GAA2CvO,IAApD,CAAhB;AACD;;AAED,WAASu/H,mBAAT,CAA6B1uI,KAA7B,EAAoCw5B,KAApC,EAA2C50B,YAA3C,EAAyD;AACvD,WAAO40B,KAAK,GAAG,CAAR,GAAY50B,YAAZ,GAA2B5E,KAAK,CAACw5B,KAAD,CAAvC;AACD;;AAED1qB,OAAK,GAAG;AAENugC,QAAI,EAAE,gBAAW;AACf,UAAIs/F,cAAc,GAAG,OAAO7/H,KAAK,CAACwb,UAAN,CAAiBhY,eAA7C;AACA,UAAI21D,QAAQ,GAAGymE,mBAAmB,CAACF,KAAD,EAAQA,KAAK,CAACruI,MAAN,GAAe,CAAvB,EAA0B,CAA1B,CAAlC;AAEAquI,WAAK,CAAC1rI,IAAN,CAAWmlE,QAAQ,GAAG,QAAQ0mE,cAAR,GAAyB7/H,KAAK,CAACwb,UAAN,CAAiB4jH,SAAhE;AAEAp2G,kBAAW;;AAEX,UAAIA,YAAW,GAAGhpB,KAAK,CAACwb,UAAN,CAAiB6jH,iBAA/B,KAAqD,CAAzD,EAA4D;AAC1D,eAAOM,UAAU,GAAGD,KAAK,CAACruI,MAAN,GAAe,CAAnC,EAAsC;AACpCsuI,oBAAU;AACV3/H,eAAK,CAACujE,yBAAN;AACA58C,kBAAQ,CAAC4Z,IAAT;AACD;AACF;AACF,KAjBK;AAmBNvX,eAAW,EAAE,uBAAW;AACtB,aAAOA,YAAP;AACD,KArBK;AAuBNxtB,SAAK,EAAE,iBAAW;AAChBmrB,cAAQ,CAACnrB,KAAT,GADgB,CAEhB;AACD;AA1BK,GAAR;AA8BAmrB,UAAQ,CAACQ,aAAT,CAAuB,MAAvB;AACAR,UAAQ,CAACQ,aAAT,CAAuB,OAAvB;AAEAs6E,iBAAe,CAACz6E,OAAhB,CAAwBhnB,KAAxB;AAEAA,OAAK,CAAC0O,EAAN,CAAS,YAAT,EAAuB1O,KAAK,CAACs+D,sBAA7B;AACAt+D,OAAK,CAAC0O,EAAN,CAAS,YAAT,EAAuB1O,KAAK,CAACs+D,sBAA7B;AAEAt+D,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOnT,KAAK,CAACC,OAAN,IAAiBD,KAAK,CAACk6B,SAAN,EAAxB;AACD,GAJD;AAMAl6B,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAOnT,KAAK,CAACi6B,SAAb;AACD,GAJD;AAMAj6B,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE,qBADyB;AAEhClQ,YAAQ,EAAE,MAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAO,IAAIzT,KAAK,CAACwb,UAAN,CAAiBhY,eAArB,GAAuCxD,KAAK,CAACwb,UAAN,CAAiB4jH,SAA/D;AACD,GAND;AAQAp/H,OAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B;AACzB1vD,SAAK,EAAE,MADkB;AAEzBlQ,YAAQ,EAAE,MAFe;AAGzBwQ,UAAM,EAAE;AAHiB,GAA3B,EAIG,YAAW;AACZ,WAAOmsH,mBAAmB,CAACF,KAAD,EAAQC,UAAR,EAAoB,CAApB,CAA1B;AACD,GAND;AAQA3/H,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE,MADyB;AAEhClQ,YAAQ,EAAE,MAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAOmsH,mBAAmB,CAACF,KAAD,EAAQC,UAAR,EAAoB,CAApB,CAA1B;AACD,GAND;AAQA3/H,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE,cADyB;AAEhCM,UAAM,EAAE;AAFwB,GAAlC,EAGG,YAAW;AACZ,QAAIpT,IAAI,GAAGu/H,mBAAmB,CAACF,KAAD,EAAQC,UAAR,EAAoB,CAApB,CAA9B;AACA,WAAOntI,IAAI,CAAC8O,GAAL,CAASkK,KAAK,CAACnL,IAAD,CAAd,CAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,OAAnB,EAA4B;AAC1B1vD,SAAK,EAAE,OADmB;AAE1BlQ,YAAQ,EAAE,OAFgB;AAG1BwQ,UAAM,EAAE;AAHkB,GAA5B,EAIG,YAAW;AACZ,QAAIpT,IAAI,GAAGu/H,mBAAmB,CAACF,KAAD,EAAQC,UAAR,EAAoB,CAApB,CAA9B;AACA,WAAOn0H,KAAK,CAACnL,IAAD,CAAZ;AACD,GAPD;AASA,SAAOL,KAAP;AACD;AAAA,C;;AC1JD;;;;;AAMe,gEAAW;AACxB,SAAO;AACLsQ,OAAG,EAAEta,CAAC,CAAC,+CAAD,CADD;AAELyI,qBAAiB,EAAE,6BAAW;AAC5B,aAAO,CAAP;AACD,KAJI;AAKL6B,UAAM,EAAE,kBAAW,CAAE,CALhB;AAMLsvB,WAAO,EAAE,mBAAW,CAAE,CANjB;AAOLkS,aAAS,EAAE,qBAAW,CAAE,CAPnB;AAQLmJ,SAAK,EAAE,iBAAW,CAAE,CARf;AASL/0B,UAAM,EAAE,kBAAW,CAAE;AAThB,GAAP;AAWD;AAAA,C;;AClBD;AACA;CAEA;;AACA,IAAIumB,uBAAY,GAAG,SAAfA,YAAe,GAAW,CAAE,CAAhC;;AAEe,0EAASqJ,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,SAAO,IAAIi2C,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACL3R,8BADK,EACE6nD,eADF,EACkBh9B,uBADlB,CAAP;AAED;AAAA,C;;ACTc;AACb55B,gBAAc,EAAE;AACd5K,QAAI,EAAE;AACJnC,kBAAY,EAAE,cADV;AAEJd,eAAS,EAAE;AAFP,KADQ;AAKd6lB,OAAG,EAAE;AACH7lB,eAAS,EAAE;AADR;AALS,GADH;AAUb6P,aAAW,EAAE;AACXtK,eAAW,EAAE;AACXzE,kBAAY,EAAE;AADH,KADF;AAIXuP,aAAS,EAAE;AACTvP,kBAAY,EAAE,KADL;AAETN,+BAAyB,EAAE;AAFlB,KAJA;AAQXyR,kBAAc,EAAE;AACdnR,kBAAY,EAAE,OADA;AAEdN,+BAAyB,EAAE;AAFb,KARL;AAYX0R,sBAAkB,EAAE;AAClBpR,kBAAY,EAAE,OADI;AAElBN,+BAAyB,EAAE,KAFT;AAGlBK,eAAS,EAAE;AAHO;AAZT;AAVA,CAAf,E;;ACAA;;;;;;;;;;;;;;;;;;;;;AAqBA;AACA;;AAGA,SAASiqI,WAAT,CAAqBh7D,iBAArB,EAAwC;AACtC,MAAI28B,eAAe,GAAG,IAAIt8B,eAAJ,CAAoB;AACxCjwE,YAAQ,EAAEA,eAD8B;AAExC4vE,qBAAiB,EAAEA,iBAFqB;AAGxCM,sBAAkB,EAAE;AAHoB,GAApB,CAAtB;AAMAq8B,iBAAe,CAACz6E,OAAhB,CAAwB,IAAxB,EAPsC,CAQtC;AACA;AACA;;AACA,OAAKrzB,GAAL,GAAWosI,SAAX;AAEA,OAAKhlG,MAAL,GAAc,IAAd;AACA,OAAKilG,QAAL,GAAgB,IAAhB;AACA,OAAKC,UAAL,GAAkB,KAAlB;AACA,OAAKC,kBAAL,GAA0Bp7D,iBAA1B;AACA,OAAKq7D,gBAAL,GAAwB1+B,eAAe,CAACtgC,eAAxC;AACA,OAAKj5C,SAAL,GAAiBu5E,eAAe,CAACl8B,eAAjC;AACA,OAAK66D,YAAL,GAAoB,CAApB,CAnBsC,CAoBtC;AACA;;AACA,OAAKC,+BAAL,GAAuC,KAAvC,CAtBsC,CAwBtC;AACA;;AACA,OAAKC,cAAL,GAAsB,EAAtB,CA1BsC,CA4BtC;AACA;AACA;AACA;;AACA,OAAKp4G,SAAL,CAAef,aAAf,CAA6B,MAA7B,EAAqC,WAArC,EAAkD,SAAlD,EAA6D,MAA7D,EAAqE,MAArE,EAA6E,OAA7E,EAAsF,aAAtF,EAAqG,UAArG,EAAiH,KAAjH;;AAEA,OAAK07C,YAAL,CAAkB,WAAlB,EAA+B;AAC7B1vD,SAAK,EAAE;AADsB,GAA/B,EAEG,YAAW;AACZ,WAAO,KAAK8sH,UAAZ;AACD,GAFE,CAEDjsG,IAFC,CAEI,IAFJ,CAFH;AAKD;;AAED,SAAS+rG,SAAT,CAAmBvyH,GAAnB,EAAwBrc,KAAxB,EAA+B;AAC7B,MAAI23B,OAAO,GAAG,IAAd,CAD6B,CAE7B;;AACA,MAAI,OAAOtb,GAAP,KAAe,QAAnB,EAA6B;AAC3B,QAAIyoD,IAAI,GAAGzoD,GAAX;AACA7b,UAAM,CAAC2b,IAAP,CAAY2oD,IAAZ,EAAkB1oD,OAAlB,CAA0B,UAASC,GAAT,EAAc;AACtCsb,aAAO,CAACn1B,GAAR,CAAY6Z,GAAZ,EAAiByoD,IAAI,CAACzoD,GAAD,CAArB;AACD,KAFD;AAGA;AACD,GAT4B,CAU7B;;;AACA,MAAI,CAAC,KAAKoc,WAAL,CAAiBpc,GAAjB,CAAL,EAA4B;AAC1B,SAAK2yH,gBAAL,CAAsB3jG,cAAtB,CAAqChvB,GAArC,EAA0C;AACxCvV,UAAI,EAAE,cADkC;AAExCqjE,cAAQ,EAAE,IAF8B;AAGxC3nE,SAAG,EAAE,aAASxC,KAAT,EAAgB;AACnB,YAAI,CAAC23B,OAAO,CAACu3G,+BAAb,EAA8C;AAC5C;AACA;AACAv3G,iBAAO,CAACiS,MAAR,CAAeS,IAAf,CAAoB,KAApB,EAA2B;AACzBxjC,gBAAI,EAAEwV,GADmB;AAEzBrc,iBAAK,EAAEA;AAFkB,WAA3B;AAID;AACF,OAZuC;AAaxCoqE,2BAAqB,EAAE,KAbiB;AAcxCL,uBAAiB,EAAE,KAAKilE,gBAAL,CAAsB5hE,yBAdD;AAexCpD,sBAAgB,EAAE,KAAKglE,gBAAL,CAAsB3hE;AAfA,KAA1C;AAiBD,GA7B4B,CA+B7B;;;AACA,OAAKhjD,UAAL,CAAgBhO,GAAhB,IAAuBrc,KAAvB;AACD,C,CAED;AACA;AACA;;;AACA2uI,WAAW,CAACluI,SAAZ,CAAsB2uI,8BAAtB,GAAuD,YAAW;AAChE,MAAIz7D,iBAAiB,GAAG,KAAKo7D,kBAA7B;AACA,MAAIp3G,OAAO,GAAG,IAAd;AACAn3B,QAAM,CAAC2b,IAAP,CAAYw3D,iBAAZ,EAA+Bv3D,OAA/B,CAAuC,UAASvV,IAAT,EAAe;AACpD,QAAI,CAAC9C,eAAQ,CAAC2N,cAAT,CAAwB7K,IAAxB,CAAD,IAAkC,CAAC9C,eAAQ,CAAC2P,WAAT,CAAqB7M,IAArB,CAAvC,EAAmE;AACjE8wB,aAAO,CAACn1B,GAAR,CAAYqE,IAAZ,EAAkB8sE,iBAAiB,CAAC9sE,IAAD,CAAnC;AACD;AACF,GAJD;AAKD,CARD;AAUA;;;AAEA8nI,WAAW,CAACluI,SAAZ,CAAsBmuC,KAAtB,GAA8B,YAAW;AACvC,OAAKhF,MAAL,CAAYS,IAAZ,CAAiB;AACfvjC,QAAI,EAAE;AADS,GAAjB;;AAGA,OAAKgoI,UAAL,GAAkB,IAAlB;AACA,SAAO,IAAP;AACD,CAND;;AAQAH,WAAW,CAACluI,SAAZ,CAAsBksC,IAAtB,GAA6B,YAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK/C,MAAL,CAAYS,IAAZ,CAAiB;AACfvjC,QAAI,EAAE;AADS,GAAjB;;AAGA,SAAO,IAAP;AACD,CAdD;;AAgBA6nI,WAAW,CAACluI,SAAZ,CAAsB8yE,OAAtB,GAAgC,YAAW;AACzC,OAAK5mC,IAAL;AACA,OAAKiC,KAAL;AACA,SAAO,IAAP;AACD,CAJD;;AAMA+/F,WAAW,CAACluI,SAAZ,CAAsBsoC,SAAtB,GAAkC,YAAW;AAC3C,SAAO,KAAK8lG,QAAZ;AACD,CAFD;;AAIAF,WAAW,CAACluI,SAAZ,CAAsBiE,SAAtB,GAAkC,YAAW;AAC3C;AACA,SAAO,KAAKqqI,kBAAZ;AACD,CAHD;;AAKAvuI,MAAM,CAAC6qC,cAAP,CAAsBsjG,WAAW,CAACluI,SAAlC,EAA6C,aAA7C,EAA4D;AAC1D+B,KAAG,EAAE,aAASkG,GAAT,EAAc;AACjB,SAAKkhC,MAAL,GAAclhC,GAAd;;AACA,SAAKqvB,aAAL;;AACA,SAAKq3G,8BAAL;AACD,GALyD;AAM1DpqH,KAAG,EAAE,eAAW;AACd,WAAO,KAAK4kB,MAAZ;AACD;AARyD,CAA5D;;AAWA+kG,WAAW,CAACluI,SAAZ,CAAsBo3B,WAAtB,GAAoC,YAAW;AAC7C,SAAO,KAAKo3G,YAAZ;AACD,CAFD;;AAIAN,WAAW,CAACluI,SAAZ,CAAsB4uI,YAAtB,GAAqC,UAASxoI,IAAT,EAAe;AAClD,SAAO,KAAKsoI,cAAL,CAAoBtoI,IAApB,CAAP;AACD,CAFD;AAIA;;;AAEA8nI,WAAW,CAACluI,SAAZ,CAAsB6uI,cAAtB,GAAuC,UAASlmH,OAAT,EAAkB;AACvD,MAAIuO,OAAO,GAAG,IAAd;AACA,OAAKw1C,sBAAL,CAA4B,YAAW;AACrC3sE,UAAM,CAAC2b,IAAP,CAAYiN,OAAZ,EAAqBhN,OAArB,CAA6B,UAASC,GAAT,EAAc;AACzCsb,aAAO,CAACw3G,cAAR,CAAuB9yH,GAAvB,IAA8B+M,OAAO,CAAC/M,GAAD,CAArC;AACD,KAFD;AAGD,GAJD;AAKD,CAPD;;AASAsyH,WAAW,CAACluI,SAAZ,CAAsB8uI,2BAAtB,GAAoD,UAAS1lE,cAAT,EAAyB;AAC3E,OAAKqlE,+BAAL,GAAuC,IAAvC;AACA,OAAK1sI,GAAL,CAASqnE,cAAT;AACA,OAAKqlE,+BAAL,GAAuC,KAAvC;AACD,CAJD;;AAMAP,WAAW,CAACluI,SAAZ,CAAsBs3B,aAAtB,GAAsC,YAAW;AAC/C,MAAIJ,OAAO,GAAG,IAAd;;AACA,OAAKiS,MAAL,CAAYstB,WAAZ,CAAwB,mBAAxB,EAA6C,YAAW;AACtDv/B,WAAO,CAACk3G,QAAR,GAAmB,KAAnB,CADsD,CAEtD;;AACAl3G,WAAO,CAACZ,SAAR,CAAkBu8C,IAAlB;AACD,GAJD;;AAKA,OAAK1pC,MAAL,CAAYstB,WAAZ,CAAwB,mBAAxB,EAA6C,YAAW;AACtDv/B,WAAO,CAACk3G,QAAR,GAAmB,IAAnB,CADsD,CAEtD;;AACAl3G,WAAO,CAACZ,SAAR,CAAkB4V,IAAlB;AACD,GAJD;;AAMA,OAAK/C,MAAL,CAAYstB,WAAZ,CAAwB,YAAxB,EAAsC,UAASxqC,OAAT,EAAkB;AACtDiL,WAAO,CAAC43G,2BAAR,CAAoC7iH,OAApC;AACD,GAFD;;AAIA,OAAKkd,MAAL,CAAYstB,WAAZ,CAAwB,SAAxB,EAAmC,UAASxqC,OAAT,EAAkB;AACnDiL,WAAO,CAAC23G,cAAR,CAAuB5iH,OAAvB;AACD,GAFD;;AAIA,OAAKkd,MAAL,CAAYstB,WAAZ,CAAwB,MAAxB,EAAgC,UAASxqC,OAAT,EAAkB;AAChDiL,WAAO,CAACs3G,YAAR,GADgD,CAEhD;;AACA,QAAIviH,OAAO,IAAIA,OAAO,CAACtD,OAAvB,EAAgC;AAC9BuO,aAAO,CAAC23G,cAAR,CAAuB5iH,OAAO,CAACtD,OAA/B;AACD;;AACD,QAAIsD,OAAO,IAAIA,OAAO,CAACrC,UAAvB,EAAmC;AACjCsN,aAAO,CAAC43G,2BAAR,CAAoC7iH,OAAO,CAACrC,UAA5C;AACD;;AACDsN,WAAO,CAACZ,SAAR,CAAkBqY,IAAlB;AACD,GAVD,EArB+C,CAiC/C;AACA;;;AACA,OAAKxF,MAAL,CAAYstB,WAAZ,CAAwB,KAAxB,EAA+B,UAASxqC,OAAT,EAAkB;AAC/CiL,WAAO,CAACZ,SAAR,CAAkB9mB,GAAlB,CAAsByc,OAAO,CAACG,MAA9B,EAAsCH,OAAO,CAAC9G,IAA9C;AACD,GAFD;AAGD,CAtCD;;AAwCe+oH,uDAAf,E;;ACxOC;AAEc,SAASa,eAAT,CAAyB3gI,KAAzB,EAAgC;AAC7C,MAAI4nB,MAAM,GAAG5nB,KAAb;AAAA,MACEsQ,GAAG,GAAGta,CAAC,CAAC,oDAAD,CADT;;AAGA,WAAS4qI,SAAT,CAAmB5gI,KAAnB,EAA0B;AACxBsQ,OAAG,CAACH,IAAJ,CAAS,eAAT,EAA0Btc,MAA1B;AACA,QAAIgtI,OAAO,GAAG7qI,CAAC,CAAC,+BACd,sCADc,GAC2BgK,KAAK,CAACmW,GAAN,CAAU,KAAV,CAD3B,GAC8C,IAD9C,GAEd,WAFa,CAAf;AAGA7F,OAAG,CAACrS,MAAJ,CAAW4iI,OAAX;AAEA,QAAIC,KAAK,GAAG,IAAIjtG,cAAW,CAACktG,cAAhB,CAA+BzwH,GAAG,CAACH,IAAJ,CAAS,eAAT,EAA0B,CAA1B,CAA/B,CAAZ,CAPwB,CAQxB;AACA;AACA;AACA;AACA;AACA;;AACA0wH,WAAO,CAACnyH,EAAR,CAAW,WAAX,EAAwB,YAAW;AACjCoyH,WAAK,CAACE,UAAN;AACD,KAFD;AAIAhhI,SAAK,CAAC6zB,WAAN,GAAoBitG,KAApB;AACD;;AAEDF,WAAS,CAAC5gI,KAAD,CAAT;AAEA,SAAO;AACLsQ,OAAG,EAAEA,GADA;AAEL7R,qBAAiB,EAAE,2BAASjC,KAAT,EAAgB;AACjC,aAAOA,KAAK,GAAGorB,MAAM,CAACzR,GAAP,CAAW,aAAX,CAAf;AACD,KAJI;AAKL7V,UAAM,EAAE,kBAAW,CAAE,CALhB;AAOL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAwhC,aAAS,EAAE,mBAASC,QAAT,EAAmB;AAC5B6+F,eAAS,CAAC7+F,QAAD,CAAT;AACAna,YAAM,GAAGma,QAAT;AACD,KArBI;AAuBL;AACA;AACAkJ,SAAK,EAAE,iBAAW,CAAE,CAzBf;AA0BL/0B,UAAM,EAAE,kBAAW,CAAE,CA1BhB;AA2BL0Z,WAAO,EAAE,mBAAW,CAAE;AA3BjB,GAAP;AA6BD;AAAA,C;;AC1DA;;;;;;;;;AAWc,SAASqxG,kBAAT,CAA4BlxH,MAA5B,EAAoC;AAEjD;AACA;AACA;AACA,MAAImxH,YAAY,GAAGnxH,MAAM,CAAC+xB,SAA1B;;AACA/xB,QAAM,CAAC+xB,SAAP,GAAmB,YAAW;AAC5Bo/F,gBAAY,CAACvuI,KAAb,CAAmBod,MAAnB,EAA2B1a,SAA3B;AAEA0a,UAAM,CAAC/P,KAAP,CAAa6zB,WAAb,CAAyBw0B,WAAzB,CAAqC,0BAArC,EAAiE,UAASrwD,IAAT,EAAe;AAC9E,UAAI+X,MAAM,CAACH,GAAP,CAAW5X,IAAX,KAAoB,IAAxB,EAA8B;;AAC9B+X,YAAM,CAACH,GAAP,CAAW5X,IAAX,IAAmB,UAAS6lB,OAAT,EAAkB;AACnC9N,cAAM,CAAC/P,KAAP,CAAa6zB,WAAb,CAAyB2H,IAAzB,CAA8BxjC,IAA9B,EAAoC6lB,OAApC;AACD,OAFD;AAGD,KALD;AAMD,GATD;;AAWA,SAAO;AACL;;;;;AAKA2d,QAAI,EAAE,SAAS2lG,UAAT,CAAoBlpI,IAApB,EAA0B4lB,OAA1B,EAAmC;AACvC9N,YAAM,CAAC/P,KAAP,CAAa6zB,WAAb,CAAyB2H,IAAzB,CAA8BvjC,IAA9B,EAAoC4lB,OAApC;AACD,KARI;;AAUL;;;;;;;AAOA2iH,gBAAY,EAAE,SAASA,YAAT,CAAsBxoI,IAAtB,EAA4B;AACxC,aAAO+X,MAAM,CAAC/P,KAAP,CAAawgI,YAAb,CAA0BxoI,IAA1B,CAAP;AACD;AAnBI,GAAP;AAqBD;AAAA,C;;AChDD;AACA;AACA;CAEA;;AAEe,gEAAS8tC,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,SAAO,IAAIi2C,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACL3R,OADK,EACE6nD,eADF,EACkBh9B,kBADlB,CAAP;AAED;AAAA,C;;ACTc;AACb55B,gBAAc,EAAE;AACd5K,QAAI,EAAE;AACJnC,kBAAY,EAAE,QADV;AAEJd,eAAS,EAAE;AAFP,KADQ;AAKdosI,cAAU,EAAE;AACVtrI,kBAAY,EAAE;AADJ,KALE;AAQdurI,oBAAgB,EAAE;AAChBtsI,cAAQ,EAAE;AADM,KARJ;AAWdusI,kBAAc,EAAE;AACdxrI,kBAAY,EAAE;AADA,KAXF;AAcdyrI,aAAS,EAAE;AACTzrI,kBAAY,EAAE;AADL;AAdG,GADH;AAmBb+O,aAAW,EAAE;AACXQ,aAAS,EAAE;AACTvP,kBAAY,EAAE,IADL;AAETN,+BAAyB,EAAE;AAFlB,KADA;AAKXyR,kBAAc,EAAE;AACdnR,kBAAY,EAAE,YADA;AAEdN,+BAAyB,EAAE;AAFb,KALL;AASX0R,sBAAkB,EAAE;AAClBpR,kBAAY,EAAE,OADI;AAElBN,+BAAyB,EAAE,KAFT;AAGlBK,eAAS,EAAE;AAHO;AATT;AAnBA,CAAf,E;;;;;;ACDA;AACA,IAAM2rI,yCAAiB,GAAGC,iCAAY,CAACD,iBAAvC;AAEe,SAASE,8BAAT,CAAwCvpH,IAAxC,EAA8C;AAC3DqpH,2CAAiB,CAACG,QAAlB,CAA2BC,eAA3B,GAA6CzpH,IAAI,CAACR,CAAL,CAAO,8BAAP,CAA7C;AACA6pH,2CAAiB,CAACG,QAAlB,CAA2BE,UAA3B,GAAwC1pH,IAAI,CAACR,CAAL,CAAO,uBAAP,CAAxC;AAEA6pH,2CAAiB,CAACM,MAAlB,CAAyBF,eAAzB,GAA2CzpH,IAAI,CAACR,CAAL,CAAO,iCAAP,CAA3C;AACA6pH,2CAAiB,CAACM,MAAlB,CAAyBD,UAAzB,GAAsC1pH,IAAI,CAACR,CAAL,CAAO,qBAAP,CAAtC;AAEA6pH,2CAAiB,CAACO,iBAAlB,CAAoCH,eAApC,GAAsDzpH,IAAI,CAACR,CAAL,CAAO,iCAAP,CAAtD;AACA6pH,2CAAiB,CAACO,iBAAlB,CAAoCF,UAApC,GAAiD1pH,IAAI,CAACR,CAAL,CAAO,gCAAP,CAAjD;AAEA6pH,2CAAiB,CAACQ,WAAlB,CAA8BJ,eAA9B,GAAgDzpH,IAAI,CAACR,CAAL,CAAO,qCAAP,CAAhD;AACA6pH,2CAAiB,CAACQ,WAAlB,CAA8BH,UAA9B,GAA2C1pH,IAAI,CAACR,CAAL,CAAO,0BAAP,CAA3C;AAEA6pH,2CAAiB,CAACS,WAAlB,CAA8BL,eAA9B,GAAgDzpH,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAhD;AACA6pH,2CAAiB,CAACS,WAAlB,CAA8BJ,UAA9B,GAA2C1pH,IAAI,CAACR,CAAL,CAAO,0BAAP,CAA3C;AAEA6pH,2CAAiB,CAACU,QAAlB,CAA2BN,eAA3B,GAA6CzpH,IAAI,CAACR,CAAL,CAAO,6BAAP,CAA7C;AACA6pH,2CAAiB,CAACU,QAAlB,CAA2BL,UAA3B,GAAwC1pH,IAAI,CAACR,CAAL,CAAO,uBAAP,CAAxC;AAEA6pH,2CAAiB,CAACW,SAAlB,CAA4BP,eAA5B,GAA8CzpH,IAAI,CAACR,CAAL,CAAO,uCAAP,CAA9C;AACA6pH,2CAAiB,CAACW,SAAlB,CAA4BN,UAA5B,GAAyC1pH,IAAI,CAACR,CAAL,CAAO,wBAAP,CAAzC;AAEA6pH,2CAAiB,CAACY,QAAlB,CAA2BR,eAA3B,GAA6CzpH,IAAI,CAACR,CAAL,CAAO,sCAAP,CAA7C;AACA6pH,2CAAiB,CAACY,QAAlB,CAA2BP,UAA3B,GAAwC1pH,IAAI,CAACR,CAAL,CAAO,uBAAP,CAAxC;AAEA6pH,2CAAiB,CAACa,cAAlB,CAAiCT,eAAjC,GAAmDzpH,IAAI,CAACR,CAAL,CAAO,8BAAP,CAAnD;AACA6pH,2CAAiB,CAACa,cAAlB,CAAiCR,UAAjC,GAA8C1pH,IAAI,CAACR,CAAL,CAAO,6BAAP,CAA9C;AAEA6pH,2CAAiB,CAACc,mBAAlB,CAAsCV,eAAtC,GAAwDzpH,IAAI,CAACR,CAAL,CAAO,iCAAP,CAAxD;AACA6pH,2CAAiB,CAACc,mBAAlB,CAAsCT,UAAtC,GAAmD1pH,IAAI,CAACR,CAAL,CAAO,kCAAP,CAAnD;AAEA6pH,2CAAiB,CAACe,aAAlB,CAAgCX,eAAhC,GAAkDzpH,IAAI,CAACR,CAAL,CAAO,qCAAP,CAAlD;AACA6pH,2CAAiB,CAACe,aAAlB,CAAgCV,UAAhC,GAA6C1pH,IAAI,CAACR,CAAL,CAAO,4BAAP,CAA7C;AAEA6pH,2CAAiB,CAACgB,aAAlB,CAAgCZ,eAAhC,GAAkDzpH,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAlD;AACA6pH,2CAAiB,CAACgB,aAAlB,CAAgCX,UAAhC,GAA6C1pH,IAAI,CAACR,CAAL,CAAO,4BAAP,CAA7C;AAEA6pH,2CAAiB,CAACiB,UAAlB,CAA6Bb,eAA7B,GAA+CzpH,IAAI,CAACR,CAAL,CAAO,6BAAP,CAA/C;AACA6pH,2CAAiB,CAACiB,UAAlB,CAA6BZ,UAA7B,GAA0C1pH,IAAI,CAACR,CAAL,CAAO,yBAAP,CAA1C;AAEA6pH,2CAAiB,CAACkB,WAAlB,CAA8Bd,eAA9B,GAAgDzpH,IAAI,CAACR,CAAL,CAAO,uCAAP,CAAhD;AACA6pH,2CAAiB,CAACkB,WAAlB,CAA8Bb,UAA9B,GAA2C1pH,IAAI,CAACR,CAAL,CAAO,0BAAP,CAA3C;AAEA6pH,2CAAiB,CAACmB,UAAlB,CAA6Bf,eAA7B,GAA+CzpH,IAAI,CAACR,CAAL,CAAO,sCAAP,CAA/C;AACA6pH,2CAAiB,CAACmB,UAAlB,CAA6Bd,UAA7B,GAA0C1pH,IAAI,CAACR,CAAL,CAAO,yBAAP,CAA1C;AAEA,SAAO6pH,yCAAP;AACD,C;;AClDD;;AAEA,SAASoB,QAAT,CAAkBzqH,IAAlB,EAAwB;AACtB,OAAKk9C,KAAL,GAAal9C,IAAb;AACD;;AAEDyqH,QAAQ,CAAChxI,SAAT,CAAmBsE,KAAnB,GAA2B,UAAS7B,OAAT,EAAkBqjC,OAAlB,EAA2B/3B,OAA3B,EAAoC;AAC7D,MAAIjK,IAAI,GAAGM,CAAC,CAACzC,MAAF,CAAS;AAClBiJ,SAAK,EAAE,KADW;AAElBk7B,WAAO,EAAEA,OAFS;AAGlBmrG,iBAAa,EAAE;AAHG,GAAT,EAIRljI,OAJQ,CAAX;AAKA,MAAIm3B,MAAM,GAAG,IAAIH,YAAJ,CAAgBjhC,IAAhB,EAAsB,KAAK2/D,KAA3B,CAAb;AAEAv+B,QAAM,CAACK,UAAP,CAAkB,UAAU9iC,OAAV,GAAoB,QAAtC;AACAyiC,QAAM,CAACE,IAAP;AACD,CAVD;;AAYA4rG,QAAQ,CAAChxI,SAAT,CAAmBkxI,MAAnB,GAA4B,UAASzuI,OAAT,EAAkBsL,OAAlB,EAA2B;AACrD,MAAIjK,IAAI,GAAGM,CAAC,CAACzC,MAAF,CAAS;AAClBiJ,SAAK,EAAE,KADW;AAElBqmI,iBAAa,EAAE,KAFG;AAGlBlrG,SAAK,EAAE;AAHW,GAAT,EAIRh4B,OAJQ,CAAX;AAKA,MAAIm3B,MAAM,GAAG,IAAIH,YAAJ,CAAgBjhC,IAAhB,EAAsB,KAAK2/D,KAA3B,CAAb;AAEAv+B,QAAM,CAACK,UAAP,CAAkB,UAAU9iC,OAAV,GAAoB,QAAtC;AACAyiC,QAAM,CAACE,IAAP;AACA,SAAOF,MAAP;AACD,CAXD;;AAae8rG,mEAAf,E;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIxhE,8BAAe,GAAGqgE,iCAAY,CAACrgE,eAAnC;AAEe,SAASxvD,oBAAT,CAAekzD,iBAAf,EAAkCyzB,GAAlC,EAAuC;AACpD,MAAIpgF,IAAI,GAAGogF,GAAG,CAACpgF,IAAf;AAAA,MACE4qH,QAAQ,GAAG,IAAIH,sBAAJ,CAAazqH,IAAb,CADb;AAAA,MAGEspF,eAHF;AAAA,MAIEtgC,eAJF;AAAA,MAKEx6C,QALF;AAAA,MAMEuT,UAAS,GAAG,IANd;AAAA,MAOE8oG,WAAW,GAAG,KAPhB;AAAA,MAQEC,iBARF;AAAA,MASE7B,UATF;AAAA,MAUE8B,MAVF;AAAA,MAWEC,aAAa,GAAG,KAXlB;AAAA,MAYEC,oBAAoB,GAAG,KAZzB;AAAA,MAaEC,oBAAoB,GAAG,CAbzB;AAAA,MAcEC,uBAdF;AAAA,MAeEjC,gBAfF;AAAA,MAgBEhhI,IAhBF;AAAA,MAiBEkjI,cAjBF;AAAA,MAkBEv6G,YAlBF;AAAA,MAmBEw6G,cAnBF;AAAA,MAoBEC,QApBF;AAAA,MAqBEC,gBArBF;AAAA,MAsBEC,gBAtBF;AAAA,MAuBE3jI,KAvBF;;AAyBA,MAAI4jI,mCAAmC,GAAG;AACxCzwH,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,oCAAP,CADiC;AAExC0D,oBAAgB,EAAE,GAFsB;AAGxC5H,UAAM,EAAE,KAHgC;AAIxC/gB,OAAG,EAAE,CAJmC;AAKxCD,OAAG,EAAE;AALmC,GAA1C;AAOA,MAAI+uI,iBAAiB,GAAGqC,8BAAoB,CAAC1rH,IAAD,CAA5C;;AAEA,WAAS2rH,mBAAT,CAA6BhoH,QAA7B,EAAuCppB,GAAvC,EAA4CD,GAA5C,EAAiD;AAC/C,QAAI+sE,eAAJ;AACA,QAAI31C,WAAJ;AAEA21C,mBAAe,GAAGx/D,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,EAAuCykD,OAAvC,EAAlB;AACAf,mBAAe,CAAC9sE,GAAhB,GAAsBA,GAAtB;AACA8sE,mBAAe,CAAC/sE,GAAhB,GAAsBA,GAAtB;AAEAo3B,eAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,8BAAxB,EAAyC5B,eAAzC,CAAd;AACA2B,mBAAe,CAACzD,sBAAhB,CAAuC5hD,QAAvC,EAAiD+N,WAAjD;AACD,GA7CmD,CA+CpD;;;AACA,WAASk6G,sBAAT,GAAkC;AAChC,QAAI/jI,KAAK,CAACwb,UAAN,CAAiB8lH,cAAjB,IAAmC,IAAvC,EAA6C;AAC3C;AACD;;AACDwC,uBAAmB,CAAC,aAAD,EAAgB,CAAhB,EAAmB9jI,KAAK,CAACwb,UAAN,CAAiB8lH,cAApC,CAAnB;AACD;;AAED,WAAS0C,YAAT,GAAwB;AACtB,QAAId,MAAJ,EAAY;AACVA,YAAM,CAACe,eAAP,CAAuB,MAAvB;AACAf,YAAM,CAACe,eAAP,CAAuB,iBAAvB;AACAf,YAAM,CAACe,eAAP,CAAuB,iBAAvB;AAEAf,YAAM,CAACrvI,MAAP;AACD;;AAEDmM,SAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC6kE,mBAAa,GAAG,KAAhB;AACAC,0BAAoB,GAAG,KAAvB;AACD,KAHD;AAID;;AAED,WAASc,YAAT,GAAwB;AACtBlkI,SAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC8kE,0BAAoB,GAAG,IAAvB;AACD,KAFD,EADsB,CAKtB;AACA;AACA;AACA;;AACA9hG,cAAU,CAAC,YAAW;AACpB4hG,YAAM,CAACx0H,EAAP,CAAU,MAAV,EAAkBy1H,kBAAlB;AACAjB,YAAM,CAACx0H,EAAP,CAAU,iBAAV,EAA6B,YAAW;AACtC01H,uBAAe,CAAC,QAAD,CAAf;AACD,OAFD;AAGAlB,YAAM,CAACx0H,EAAP,CAAU,iBAAV,EAA6B,YAAW;AACtC01H,uBAAe,CAAC,QAAD,CAAf;AACD,OAFD;AAIAlB,YAAM,CAACjlI,MAAP,CAAcjI,CAAC,CAAC,MAAD,CAAf,EAAyB,UAASI,KAAT,EAAgB;AAEvC,YAAIA,KAAJ,EAAW;AACT,cAAIA,KAAK,YAAYqrI,iCAAY,CAAC4C,aAAlC,EAAiD;AAC/CC,gCAAoB,CAACnsH,IAAI,CAACR,CAAL,CAAO,mCAAP,CAAD,CAApB;AACD,WAFD,MAEO,IAAIvhB,KAAK,YAAYqrI,iCAAY,CAAC8C,yBAAlC,EAA6D;AAClED,gCAAoB,CAACnsH,IAAI,CAACR,CAAL,CAAO,yCAAP,CAAD,CAApB;AACD,WAFM,MAEA,IAAIvhB,KAAK,YAAYqrI,iCAAY,CAAC+C,qBAAlC,EAAyD;AAC9DC,uCAA2B;AAC5B,WAFM,MAEA;AACLH,gCAAoB,CAACnsH,IAAI,CAACR,CAAL,CAAO,kCAAP,CAAD,CAApB;AACD;;AACD3X,eAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC8kE,gCAAoB,GAAG,KAAvB;AACD,WAFD;AAGA;AACD;;AAEDpjI,aAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC6kE,uBAAa,GAAG,IAAhB;AACAC,8BAAoB,GAAG,KAAvB;AACD,SAHD;AAID,OAtBD;AAuBD,KAhCS,EAgCP,EAhCO,CAAV;AAiCD;;AAED,WAASqB,2BAAT,GAAuC;AACrCT,gBAAY;AACZ,QAAItsG,OAAO,GAAG,EAAd;;AACAA,WAAO,CAACvf,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAD,CAAP,GAA+C,YAAW;AACxD3hB,OAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf,EADwD,CAExD;AACA;;AACAotG,kBAAY;AACb,KALD;;AAMAxsG,WAAO,CAACvf,IAAI,CAACR,CAAL,CAAO,wBAAP,CAAD,CAAP,GAA4C,YAAW;AACrD3hB,OAAC,CAAC,IAAD,CAAD,CAAQnC,MAAR;AACAmM,WAAK,CAACo6D,MAAN;AACD,KAHD;;AAIA2oE,YAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,qCAAP,EAA8C;AAC3D+sH,iBAAW,EAAE1kI,KAAK,CAACwb,UAAN,CAAiBqmH;AAD6B,KAA9C,CAAf,EAEInqG,OAFJ;AAGD;;AAED,WAAS4sG,oBAAT,CAA8BjwI,OAA9B,EAAuC;AACrC2vI,gBAAY;AACZjB,YAAQ,CAAC7sI,KAAT,CAAe7B,OAAf,EAAwB;AACtBswI,QAAE,EAAE,cAAW;AACb3uI,SAAC,CAAC,IAAD,CAAD,CAAQnC,MAAR;AACAmM,aAAK,CAACo6D,MAAN;AACD;AAJqB,KAAxB;AAMD;;AAED,WAASgqE,eAAT,CAAyBQ,IAAzB,EAA+B;AAC7BZ,gBAAY;AACZhkI,SAAK,CAAC89B,IAAN;AACAlG,qBAAgB,CAACxB,SAAjB,CAA2B,cAAcp2B,KAAK,CAACwb,UAAN,CAAiBopH,IAAI,GAAG,MAAxB,CAAzC;AACA,QAAIltG,OAAO,GAAG,EAAd;;AACAA,WAAO,CAACvf,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAD,CAAP,GAA+C,YAAW;AACxD3hB,OAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAotG,kBAAY;AACb,KAHD;;AAIAxsG,WAAO,CAACvf,IAAI,CAACR,CAAL,CAAO,wBAAP,CAAD,CAAP,GAA4C,YAAW;AACrD3hB,OAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACD,KAFD;;AAGAisG,YAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,4CAAP,EAAqD;AAClEktH,2BAAqB,EAAE7kI,KAAK,CAACwb,UAAN,CAAiBopH,IAAI,GAAG,MAAxB;AAD2C,KAArD,CAAf,EAEIltG,OAFJ;AAGD;;AAED,WAASotG,kBAAT,GAA8B;AAC5B,QAAIxB,uBAAJ,EAA6B;AAC3B5hG,mBAAa,CAAC4hG,uBAAD,CAAb;AACD;;AACD,QAAIyB,kBAAkB,GAAG,SAArBA,kBAAqB,CAAS3uI,KAAT,EAAgB8c,MAAhB,EAAwB;AAC/C,UAAI9c,KAAJ,EAAW;AACT,YAAIA,KAAK,YAAYqrI,iCAAY,CAACuD,mBAAlC,EAAuD,CACrD;AACD,SAFD,MAEO,IAAI5uI,KAAK,YAAYqrI,iCAAY,CAAC+C,qBAAlC,EAAyD;AAC9D9iG,uBAAa,CAAC4hG,uBAAD,CAAb;AACAmB,qCAA2B;AAC5B,SAHM,MAGA;AACL/iG,uBAAa,CAAC4hG,uBAAD,CAAb;AACA,gBAAMltI,KAAN;AACD;AACF,OAVD,MAUO;AACL4J,aAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtCilE,wBAAc,GAAGrwH,MAAM,CAAC,CAAD,CAAvB;;AACA,cAAIuwH,QAAJ,EAAc;AACZzjI,iBAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6BgC,cAA7B;AACAE,oBAAQ,GAAG,KAAX;AACD;AACF,SAND;AAOD;AACF,KApBD;;AAqBAH,2BAAuB,GAAG9hG,WAAW,CAAC,YAAW;AAC/C0hG,YAAM,CAAC+B,UAAP,CAAkBF,kBAAlB;AACD,KAFoC,EAElC,OAAO1B,oBAF2B,CAArC;AAGD;;AAED,WAAS6B,iBAAT,GAA6B;AAC3B,QAAI5B,uBAAJ,EAA6B;AAC3B5hG,mBAAa,CAAC4hG,uBAAD,CAAb;AACAA,6BAAuB,GAAG,IAA1B;AACD;AACF;;AAED,WAAS6B,wBAAT,GAAoC;AAClCn8G,gBAAW,GAAG,CAAd;AACA3oB,QAAI,GAAG,CAAP;AACAkjI,kBAAc,GAAGjzI,SAAjB;AACAkzI,kBAAc,GAAG,KAAjB;AACAE,oBAAgB,GAAG,KAAnB;AACAD,YAAQ,GAAG,KAAX;AACD;;AAED,WAAS2B,aAAT,CAAuBC,WAAvB,EAAoC;AAClC,QAAIC,WAAJ;AACA,QAAIC,gBAAJ;AACA,QAAI17G,WAAJ;AACA,QAAI27G,eAAJ;;AAEA,QAAIpE,UAAU,KAAKiE,WAAnB,EAAgC;AAC9B;AACD;;AAED,QAAIjE,UAAJ,EAAgB;AACd;AACAphI,WAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6B,CAA7B;AACD;;AAEDH,cAAU,GAAGiE,WAAb;AACA9B,kBAAc,GAAGjzI,SAAjB;;AAEA,QAAI4yI,MAAJ,EAAY;AACVc,kBAAY;AACb;;AAED,QAAI5C,UAAJ,EAAgB;AACdmE,sBAAgB,GAAG/D,iBAAiB,CAACJ,UAAD,CAApC;AACAC,sBAAgB,GAAGkE,gBAAgB,CAAClE,gBAApC;AACAmE,qBAAe,GAAGD,gBAAgB,CAACC,eAAnC;AACAF,iBAAW,GAAG7D,iCAAY,CAAC8D,gBAAgB,CAACE,WAAlB,CAA1B;AACA/B,sBAAgB,GAAG6B,gBAAgB,CAACG,QAApC;AAEAxC,YAAM,GAAGrzI,MAAM,CAACi3D,GAAP,CAAW6+E,MAAX,CAAkBvE,UAAlB,IAAgC,IAAIkE,WAAJ,CAAgB;AACvDM,oBAAY,EAAE,gBAAgBxE,UADyB;AAEvDI,yBAAiB,EAAE,CAAC+D,gBAAD,CAFoC;AAGvDM,gBAAQ,EAAEzE,UAAU,GAAG,SAHgC;AAIvD0E,gBAAQ,EAAE9/F,6BAAS,CAAC3iB,OAAV,GAAoB;AAJyB,OAAhB,CAAzC;AAOA6gH,kBAAY,GAdE,CAgBd;;AACAr6G,iBAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,8BAAxB,EAAyC;AACrDjuD,aAAK,EAAEoyH,gBAAgB,CAAC3D,eAD6B;AAErD3+H,gBAAQ,EAAEuiI,eAF2C;AAGrD9yI,WAAG,EAAE6yI,gBAAgB,CAACQ,UAH+B;AAIrDtzI,WAAG,EAAE8yI,gBAAgB,CAACS;AAJ+B,OAAzC,CAAd;AAOA7kE,qBAAe,CAACzD,sBAAhB,CAAuC,eAAvC,EAAwD7zC,WAAxD,EAxBc,CA0Bd;;AACA,UAAI7pB,KAAK,CAACwb,UAAN,CAAiB8lH,cAAjB,IAAmC,IAAvC,EAA6C;AAC3CthI,aAAK,CAACwb,UAAN,CAAiB8lH,cAAjB,GAAkCiE,gBAAgB,CAACU,UAAnD;AACD;AACF,KA9BD,MA8BO,IAAIjmI,KAAK,CAACwb,UAAN,CAAiB7mB,cAAjB,CAAgC,eAAhC,CAAJ,EAAsD;AAC3D;AACAk1B,iBAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,8BAAxB,EAAyCwiE,mCAAzC,CAAd;AACAziE,qBAAe,CAACzD,sBAAhB,CAAuC,eAAvC,EAAwD7zC,WAAxD;AACD;AACF;;AAED,WAASs6G,kBAAT,CAA4BhtH,CAA5B,EAA+B;AAC7B6R,gBAAW;AAEX3oB,QAAI,IAAK,IAAIghI,gBAAb,CAH6B,CAK7B;AACA;AACA;;AACAxxI,UAAM,CAACq2I,kBAAP,GAA4B,CAA5B;AAEA3C,kBAAc,GAAGpsH,CAAC,CAAC,CAAD,CAAlB,CAV6B,CAW7B;;AACA,QAAI,CAACqsH,cAAL,EAAqB;AACnBxjI,WAAK,CAACy9B,MAAN,CAAa,YAAb;AACD;;AAED+lG,kBAAc,GAAG,IAAjB;AACAxjI,SAAK,CAACujE,yBAAN;AACA58C,YAAQ,CAAC4Z,IAAT;AACD;;AAEDvgC,OAAK,GAAG;AAEN0O,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD,KAJK;AAMNya,SAAK,EAAE,iBAAW;AAChB,UAAI,CAAC//B,KAAK,CAACwb,UAAN,CAAiBgyC,UAAtB,EAAkC;AAChC;AACD;;AAED01E,YAAM,CAACnjG,KAAP,CAAa,UAAS3pC,KAAT,EAAgB+vI,SAAhB,EAA2B;AACtC,YAAI/vI,KAAJ,EAAW;AACT,cAAIA,KAAK,YAAYqrI,iCAAY,CAAC+C,qBAAlC,EAAyD;AACvDC,uCAA2B;AAC5B;AACF,SAJD,MAIO,IAAI0B,SAAJ,EAAe;AACpBnmI,eAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtCpkC,sBAAS,GAAG,KAAZ;AACD,WAFD;AAGAvT,kBAAQ,CAAC89C,IAAT;AACD;AACF,OAXD;AAYD,KAvBK;AAyBN3mC,QAAI,EAAE,gBAAW;AAEf,UAAIolG,MAAJ,EAAY;AACVA,cAAM,CAACplG,IAAP;AACD;;AACD99B,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtCpkC,kBAAS,GAAG,IAAZ;AACD,OAFD;AAGAvT,cAAQ,CAACmX,IAAT;AACD,KAlCK;AAoCNsoG,QAAI,EAAE,gBAAW;AACf,UAAI,CAAClsG,UAAL,EAAgB;AACd,cAAM,IAAIjpC,KAAJ,CAAU,qDAAV,CAAN;AACD;;AACD,UAAIqyI,uBAAuB,IAAI,IAA3B,IAAmCC,cAAc,IAAI,IAAzD,EAA+D;AAC7DvjI,aAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6BgC,cAA7B;AACD,OAFD,MAEO;AACLvjI,aAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtCmlE,kBAAQ,GAAG,IAAX;AACD,SAFD;AAGD;AACF,KA/CK;AAiDNlpE,aAAS,EAAE,qBAAW;AACpB5zC,cAAQ,CAAC4zC,SAAT;AACD,KAnDK;AAqDN/+D,SAAK,EAAE,iBAAW;AAChBwE,WAAK,CAAC89B,IAAN;AACAkmG,kBAAY;AAEZmB,8BAAwB;AACxBnlI,WAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6BoC,gBAA7B;AACA3jI,WAAK,CAAC09B,QAAN,CAAe,YAAf;AACA19B,WAAK,CAACwb,UAAN,CAAiB4lH,UAAjB,GAA8B6B,iBAA9B;AAEAt8G,cAAQ,CAACnrB,KAAT;AACD,KA/DK;AAiEN4+D,UAAM,EAAE,kBAAW;AACjBp6D,WAAK,CAAC89B,IAAN;AACA99B,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC0kE,mBAAW,GAAG,IAAd;AACD,OAFD;AAGD,KAtEK;AAwEN9oG,aAAS,EAAE,qBAAW;AACpB,aAAOA,UAAP;AACD,KA1EK;AA4ENlR,eAAW,EAAE,uBAAW;AACtB,aAAOA,YAAP;AACD,KA9EK;AAgFNnzB,aAAS,EAAE,qBAAW;AACpB,aAAO,EAAP;AACD;AAlFK,GAAR;AAqFAsvI,0BAAwB,GAlX4B,CAoXpD;;AACA,MAAIt1I,MAAM,CAACi3D,GAAP,KAAex2D,SAAnB,EAA8B;AAC5BT,UAAM,CAACi3D,GAAP,GAAa,EAAb;AACD;;AACDj3D,QAAM,CAACi3D,GAAP,CAAW6+E,MAAX,GAAoB,EAApB;AAEAlkC,iBAAe,GAAG,IAAIt8B,eAAJ,CAAoB;AACpCjwE,YAAQ,EAAEA,eAD0B;AAEpC2vE,WAAO,EAAE;AACPu8D,gBAAU,EAAEgE;AADL,KAF2B;AAKpChkE,mBAAe,EAAEA,8BALmB;AAMpC0D,qBAAiB,EAAEA,iBANiB;AAOpCM,sBAAkB,EAAE;AAPgB,GAApB,CAAlB;AAUAq8B,iBAAe,CAACz6E,OAAhB,CAAwBhnB,KAAxB;AACAmhE,iBAAe,GAAGsgC,eAAe,CAACtgC,eAAlC;AACAx6C,UAAQ,GAAG86E,eAAe,CAACl8B,eAA3B;AACA5+C,UAAQ,CAACQ,aAAT,CAAuB,MAAvB,EAA+B,MAA/B,EAAuC,MAAvC,EAA+C,WAA/C,EAA4D,SAA5D,EAvYoD,CAyYpD;;AACA87G,mBAAiB,GAAGjjI,KAAK,CAACwb,UAAN,CAAiB4lH,UAArC;AACAuC,kBAAgB,GAAG3jI,KAAK,CAACwb,UAAN,CAAiB+lH,SAApC;AAEAvhI,OAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B;AACzB1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADkB;AAEzB1U,YAAQ,EAAE,MAFe;AAGzBwQ,UAAM,EAAE;AAHiB,GAA3B,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADyB;AAEhC1U,YAAQ,EAAE,MAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,eAAnB,EAAoC+gE,mCAApC,EAAyE,YAAW;AAClF,QAAIL,cAAc,IAAI,IAAtB,EAA4B;AAC1B,aAAOA,cAAP;AACD;;AACD,WAAOA,cAAc,GAAGvjI,KAAK,CAACwb,UAAN,CAAiB+lH,SAAzC;AACD,GALD,EA7ZoD,CAoapD;AACA;AACA;AACA;;AAEAvhI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOquH,iBAAiB,CAACJ,UAAD,CAAjB,CAA8BS,UAArC;AACD,GAJD;AAMA7hI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOquH,iBAAiB,CAACJ,UAAD,CAAjB,CAA8BiF,UAArC;AACD,GAJD;AAMArmI,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO+mB,UAAP;AACD,GAJD,EArboD,CA2bpD;;AACAl6B,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOgwH,aAAa,IAAI,CAACK,cAAzB;AACD,GAJD;AAMAxjI,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAOqwH,cAAP;AACD,GAJD;AAMAxjI,OAAK,CAAC6iE,YAAN,CAAmB,kBAAnB,EAAuC;AACrC1vD,SAAK,EAAE;AAD8B,GAAvC,EAEG,YAAW;AACZ,WAAOnT,KAAK,CAACwb,UAAN,CAAiBgyC,UAAjB,IAA+BtzB,UAAtC;AACD,GAJD;AAMAl6B,OAAK,CAAC6iE,YAAN,CAAmB,sBAAnB,EAA2C;AACzC1vD,SAAK,EAAE;AADkC,GAA3C,EAEG,YAAW;AACZ,WAAOiwH,oBAAP;AACD,GAJD;AAMApjI,OAAK,CAAC6iE,YAAN,CAAmB,UAAnB,EAA+B;AAC7B1vD,SAAK,EAAE;AADsB,GAA/B,EAEG,YAAW;AACZ,WAAOswH,QAAP;AACD,GAJD;AAMAzjI,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE;AADqB,GAA9B,EAEG,YAAW;AACZ,WAAO+mB,UAAS,IAAI,CAACspG,cAAd,IAAgCE,gBAAhC,IAAoD,CAACD,QAA5D;AACD,GAJD;AAMAzjI,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE;AADyB,GAAlC,EAEG,YAAW;AACZ,WAAO6vH,WAAP;AACD,GAJD,EAheoD,CAsepD;AACA;;AACAhjI,OAAK,CAAC0O,EAAN,CAAS,iBAAT,EAA4Bs1H,YAA5B;AAEAhkI,OAAK,CAACu+B,WAAN,CAAkB,kBAAlB,EAAsC,YAAW;AAC/C,QAAIv+B,KAAK,CAACwb,UAAN,CAAiB8qH,gBAArB,EAAuC;AACrCxB,wBAAkB;AACnB,KAFD,MAEO;AACLI,uBAAiB;AAClB;AACF,GAND;AAQAllI,OAAK,CAACu+B,WAAN,CAAkB,gBAAlB,EAAoCwlG,sBAApC;AACAA,wBAAsB,GAnf8B,CAqfpD;;AACAqB,eAAa,CAACplI,KAAK,CAACwb,UAAN,CAAiB4lH,UAAlB,CAAb;AAEA,SAAOphI,KAAP;AACD;AAAA,C;;ACpgBD;AACA;AACA;AACA;AAEA,IAAMwhI,sBAAiB,GAAGC,iCAAY,CAACD,iBAAvC;AAEe,0DAASxhI,KAAT,EAAgB8lC,QAAhB,EAA0B3tB,IAA1B,EAAgC;AAE7C,MAAIouH,cAAc,GAAG,IAAI19F,aAAJ,CAAkB;AACrC9rC,MAAE,EAAE,kBADiC;AAErC4C,WAAO,EAAE,CAAC;AACRxO,WAAK,EAAE,IADC;AAER+a,UAAI,EAAEiM,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFE;AAGRkH,cAAQ,EAAE7e,KAAK,CAACwb,UAAN,CAAiB4lH,UAAjB,IAA+B,IAHjC;AAIRnjH,cAAQ,EAAE;AAJF,KAAD,EAKNmJ,MALM,CAKCz1B,MAAM,CAAC2b,IAAP,CAAYk0H,sBAAZ,EAA+B3vG,GAA/B,CAAmC,UAASrkB,GAAT,EAAc;AACzD,aAAO;AACLrc,aAAK,EAAEqc,GADF;AAELtB,YAAI,EAAEs1H,sBAAiB,CAACh0H,GAAD,CAAjB,CAAuBq0H,UAFxB;AAGLhjH,gBAAQ,EAAErR,GAAG,KAAKxN,KAAK,CAACwb,UAAN,CAAiB4lH,UAH9B;AAILnjH,gBAAQ,EAAE;AAJL,OAAP;AAMD,KAPS,CALD,CAF4B;AAerC/C,YAAQ,EAAE,kBAASyrB,MAAT,EAAiB;AACzB3mC,WAAK,CAACwb,UAAN,CAAiB4lH,UAAjB,GAA8Bz6F,MAAM,CAACx1C,KAArC;AACD;AAjBoC,GAAlB,CAArB,CAF6C,CAsB7C;AACA;;AACA,MAAIsiB,MAAM,GAAGC,EAAE,CAACD,MAAH,CAAU,KAAV,CAAb;AACA,MAAI+yH,iBAAJ;AACA,MAAI18F,IAAJ;;AAEA,WAAS28F,gBAAT,GAA4B;AAC1B,QAAIzmI,KAAK,CAACwb,UAAN,CAAiBioH,QAArB,EAA+B;AAC7B35F,UAAI,CAAC48F,WAAL,CAAiBv2H,IAAjB,CAAsB,QAAtB,EAAgCk0B,IAAhC,CAAqClsB,IAAI,CAACR,CAAL,CAAO,gBAAP,CAArC;AACD,KAFD,MAEO;AACLmyB,UAAI,CAAC48F,WAAL,CAAiBv2H,IAAjB,CAAsB,QAAtB,EAAgCk0B,IAAhC,CAAqClsB,IAAI,CAACR,CAAL,CAAO,aAAP,CAArC;AACD;AACF;;AAED,WAASgvH,eAAT,GAA2B;AACzB,QAAI3mI,KAAK,CAACwb,UAAN,CAAiBorH,OAArB,EAA8B;AAC5BzjG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAAC48F,WAA1B;AACD,KAFD,MAEO;AACLvjG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAAC48F,WAA3B;AACD;AACF;;AAED,WAASG,0BAAT,GAAsC;AACpC,QAAIh9G,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,YAA7B,CAAlB;;AACA,QAAID,WAAW,CAACib,SAAZ,EAAJ,EAA6B;AAC3B3B,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACg9F,UAA3B;AACD,KAFD,MAEO;AACL3jG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACg9F,UAA1B;AACD;AACF;;AAED,WAASC,mBAAT,GAA+B;AAC7B/mI,SAAK,CAACu+B,WAAN,CAAkB,UAAlB,EAA8BkoG,gBAA9B;AACAA,oBAAgB;AAEhBzmI,SAAK,CAACu+B,WAAN,CAAkB,SAAlB,EAA6BooG,eAA7B;AACAA,mBAAe;AAEf3mI,SAAK,CAACwpB,8BAAN,CAAqC,YAArC,EAAmDq9G,0BAAnD;AACAA,8BAA0B;AAC3B;;AAED,SAAO/8F,IAAI,GAAG;AACZx5B,OAAG,EAAEta,CAAC,CAAC,uEAAD,CADM;AAGZ8rC,aAAS,EAAE,mBAASC,QAAT,EAAmBs4B,WAAnB,EAAgC;AACzCv0B,cAAQ,GAAGu0B,WAAW,IAAIv0B,QAA1B;AACA9lC,WAAK,GAAG+hC,QAAQ,IAAI/hC,KAApB;AAEA+mI,yBAAmB;AACpB,KARW;AAUZtoI,qBAAiB,EAAE,6BAAW;AAC5B,aAAO,OAAP;AACD,KAZW;AAcZ;AACAwsC,SAAK,EAAE,iBAAW;AAEhB,WAAK36B,GAAL,CAASoG,KAAT;AAEA8vH,uBAAiB,GAAG,IAAIlsF,iBAAJ,CAAsB;AACxCv9C,UAAE,EAAE,mBADoC;AAExCoW,aAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,gBAAP,CAFiC;AAGxCxI,aAAK,EAAEnP,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,EAA8CE,mBAA9C;AAHiC,OAAtB,CAApB;AAMA,UAAI88G,UAAU,GAAGP,cAAc,CAACxxH,MAAf,CAAsB,KAAKzE,GAA3B,CAAjB;AAAA,UACEo2H,WAAW,GAAG1wI,CAAC,CAAC,kBAAkBmiB,IAAI,CAACR,CAAL,CAAO,aAAP,CAAlB,GAA0C,iBAA3C,CADjB;AAAA,UAEEqvH,cAAc,GAAGR,iBAAiB,CAACzxH,MAAlB,EAFnB;AAIA+xH,gBAAU,CAACxoI,QAAX,CAAoB,kDAApB;AACAooI,iBAAW,CAACpoI,QAAZ,CAAqB,gDAArB;AACA0oI,oBAAc,CAAC1oI,QAAf,CAAwB,uDAAxB;AAEA,WAAKgS,GAAL,CAAS1T,GAAT,CAAa,QAAb,EAAuB,CAAvB;AACA,WAAK0T,GAAL,CAASrS,MAAT,CAAgB6oI,UAAhB;AACA,WAAKx2H,GAAL,CAASrS,MAAT,CAAgB+oI,cAAhB;AACA,WAAK12H,GAAL,CAASrS,MAAT,CAAgByoI,WAAhB;AAEA,WAAKA,WAAL,GAAmBA,WAAnB;AACA,WAAKI,UAAL,GAAkBA,UAAlB;AAEAN,uBAAiB,CAAClmI,MAAlB;AACAymI,yBAAmB;AAEnBL,iBAAW,CAACh4H,EAAZ,CAAe,OAAf,EAAwB,QAAxB,EAAkC,YAAW;AAC3C1O,aAAK,CAAComI,IAAN;AACD,OAFD;AAGD,KA/CW;AAiDZa,8BAA0B,EAAE,sCAAW;AACrC,UAAIC,YAAJ;;AAEA,UAAI,CAAC,KAAKC,qBAAV,EAAiC;AAC/BD,oBAAY,GAAGlxI,CAAC,CAAC,QAAD,CAAD,CACZya,IADY,CACP,IADO,EACD,oBADC,CAAf;AAGA,aAAK02H,qBAAL,GAA6BnxI,CAAC,CAAC,QAAD,CAAD,CAC1Bya,IAD0B,CACrB,IADqB,EACf,8BADe,EAE1B7T,GAF0B,CAEtB,QAFsB,EAEZ5G,CAAC,CAAC,MAAD,CAAD,CAAUyG,MAAV,KAAqB,CAArB,GAAyB,EAAzB,GAA8BzG,CAAC,CAAC,yBAAD,CAAD,CAA6Bmf,MAA7B,GAAsCpZ,GAFxD,EAG1BkC,MAH0B,CAGnB,wBAAwBka,IAAI,CAACR,CAAL,CAAO,uBAAP,CAAxB,GAA0D,QAHvC,EAI1B1Z,MAJ0B,CAInBipI,YAJmB,EAK1BjqI,QAL0B,CAKjB,yBALiB,CAA7B;AAOAiqI,oBAAY,CAACE,WAAb,CAAyB;AACvBj2I,eAAK,EAAE;AADgB,SAAzB;AAGD;;AAED,WAAKg2I,qBAAL,CAA2Bv6E,IAA3B;AACD,KArEW;AAuEZy6E,8BAA0B,EAAE,sCAAW;AACrC,WAAKF,qBAAL,CAA2Bt6E,IAA3B;AACD,KAzEW;AA2EZvsD,UAAM,EAAE,kBAAW;AACjB,UAAIkmI,iBAAJ,EAAuB;AACrBA,yBAAiB,CAAClmI,MAAlB;AACD;AACF,KA/EW;AAiFZsvB,WAAO,EAAE,mBAAW,CAAE,CAjFV;AAmFZ04B,YAAQ,EAAE,oBAAW,CAAE,CAnFX;AAqFZ1M,eAAW,EAAE,qBAASzsC,KAAT,EAAgB;AAC3Bq3H,uBAAiB,CAAC5qF,WAAlB,CAA8BzsC,KAA9B;;AACA,UAAInP,KAAK,CAACwb,UAAN,CAAiB8rH,aAAjB,IAAkC,IAAtC,EAA4C;AAC1Cd,yBAAiB,CAAC3qF,SAAlB;AACD;AACF,KA1FW;AA4FZ3lC,UAAM,EAAE,kBAAW;AACjB,UAAIlW,KAAK,CAACwb,UAAN,CAAiB8rH,aAAjB,IAAkC,IAAtC,EAA4C;AAC1Cd,yBAAiB,CAACtwH,MAAlB,CAAyB,EAAzB;AACAswH,yBAAiB,CAAC3qF,SAAlB;AACD,OAHD,MAGO;AACL2qF,yBAAiB,CAACtwH,MAAlB,CAAyBzC,MAAM,CAACzT,KAAK,CAACwb,UAAN,CAAiB8rH,aAAlB,CAA/B;AACAd,yBAAiB,CAAC1qF,SAAlB;AACD;AACF;AApGW,GAAd;AAsGD;AAAA,C;;AC7KA;;;;;;;;;AAWc,SAASyrF,kBAAT,CAA4Bx3H,MAA5B,EAAoC;AACjD,SAAO;AACL;;;;;;;;;;;;;AAaAoxH,cAAU,EAAE,SAASA,UAAT,CAAoBxhI,OAApB,EAA6B;AACvCoQ,YAAM,CAAC8xB,aAAP,CAAqBs/F,UAArB,CAAgCxhI,OAAhC;AACD;AAhBI,GAAP;AAkBD;AAAA,C;;AC7BD;AACA;AACA;CAEA;;AAEe,gEAASmmC,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,MAAI2I,UAAU,GAAG,IAAIstC,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACf3R,oBADe,EACR6nD,WADQ,EACQh9B,kBADR,CAAjB,CADqE,CAIrE;AACA;;AAEA,WAASsqG,mBAAT,GAA+B;AAC7B,QAAI/mI,KAAK,GAAGksB,UAAU,CAAClsB,KAAvB;AAEAA,SAAK,CAACu+B,WAAN,CAAkB,sBAAlB,EAA0C,YAAW;AACnD,UAAIuL,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;;AAEA,UAAI9+B,KAAK,CAACwb,UAAN,CAAiB4nH,oBAArB,EAA2C;AACzCt5F,YAAI,CAACm9F,0BAAL;AACD,OAFD,MAEO;AACLn9F,YAAI,CAACu9F,0BAAL;AACD;AACF,KARD;AAUArnI,SAAK,CAACu+B,WAAN,CAAkB,eAAlB,EAAmC,YAAW;AAC5C;AACA,UAAIv+B,KAAK,CAACk6B,SAAN,EAAJ,EAAuB;AACrBhO,kBAAU,CAAC0uC,UAAX;AACD;AACF,KALD;AAOA56D,SAAK,CAACu+B,WAAN,CAAkB,aAAlB,EAAiC,YAAW;AAC1C,UAAIv+B,KAAK,CAACwb,UAAN,CAAiBwnH,WAArB,EAAkC;AAChCz/G,6BAAqB,CAAC0c,WAAtB;AACD;AACF,KAJD;AAMAjgC,SAAK,CAACwpB,8BAAN,CAAqC,eAArC,EAAsD,YAAW;AAC/D,UAAIK,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,CAAlB;AACA,UAAIggB,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;AAEAgL,UAAI,CAAC8R,WAAL,CAAiB/xB,WAAW,CAACG,mBAAZ,EAAjB;AACD,KALD;AAMD;;AAEDzG,uBAAqB,CAAC7U,EAAtB,CAAyB,qCAAzB,EAAgEq4H,mBAAhE;AAEAxjH,uBAAqB,CAAC7U,EAAtB,CAAyB,oCAAzB,EAA+D,YAAW;AACxEwd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,KAA3C;AACD,GAFD;AAIA4vB,uBAAqB,CAAC7U,EAAtB,CAAyB,gBAAzB,EAA2C,YAAW;AACpDwd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,IAA3C;AACD,GAFD;AAIA,SAAOu4B,UAAP;AACD;AAAA,C;;AC1Dc;AACbrpB,gBAAc,EAAE;AACd5K,QAAI,EAAE;AACJnC,kBAAY,EAAE,aADV;AAEJd,eAAS,EAAE;AAFP,KADQ;AAKdosI,cAAU,EAAE;AACVtrI,kBAAY,EAAE;AADJ,KALE;AAQd0xI,eAAW,EAAE;AACX1xI,kBAAY,EAAE;AADH,KARC;AAWdurI,oBAAgB,EAAE;AAChBtsI,cAAQ,EAAE;AADM,KAXJ;AAcdusI,kBAAc,EAAE;AACdxrI,kBAAY,EAAE;AADA,KAdF;AAiBdyrI,aAAS,EAAE;AACTzrI,kBAAY,EAAE;AADL,KAjBG;AAoBd2xI,cAAU,EAAE;AACV3xI,kBAAY,EAAE;AADJ,KApBE;AAuBd4xI,YAAQ,EAAE;AACR5xI,kBAAY,EAAE;AADN,KAvBI;AA0Bd6xI,qBAAiB,EAAE;AACjB7xI,kBAAY,EAAE;AADG;AA1BL,GADH;AA+Bb+O,aAAW,EAAE;AACXQ,aAAS,EAAE;AACTvP,kBAAY,EAAE,IADL;AAETN,+BAAyB,EAAE;AAFlB,KADA;AAKXyR,kBAAc,EAAE;AACdnR,kBAAY,EAAE,YADA;AAEdN,+BAAyB,EAAE;AAFb,KALL;AASX0R,sBAAkB,EAAE;AAClBpR,kBAAY,EAAE,OADI;AAElBN,+BAAyB,EAAE,KAFT;AAGlBK,eAAS,EAAE;AAHO;AATT;AA/BA,CAAf,E;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIurE,mCAAe,GAAGqgE,iCAAY,CAACrgE,eAAnC;AAEe,SAASxvD,yBAAT,CAAekzD,iBAAf,EAAkCyzB,GAAlC,EAAuC;AACpD,MAAIp3B,eAAe,GAAG,IAAIxF,eAAJ,CAAoB;AACtC9kE,SAAK,EAAE,CAAC,cAAD,EAAiB,YAAjB,EAA+B,WAA/B,EAA4C,QAA5C;AAD+B,GAApB,CAAtB;AAAA,MAIEshB,IAAI,GAAGogF,GAAG,CAACpgF,IAJb;AAAA,MAKE4qH,QAAQ,GAAG,IAAIH,sBAAJ,CAAazqH,IAAb,CALb;AAAA,MAOEtT,WAPF;AAAA,MAQEhC,cARF;AAAA,MASEq3B,UAAS,GAAG,IATd;AAAA,MAUE8oG,WAAW,GAAG,KAVhB;AAAA,MAWEr8G,QAAQ,GAAGjT,EAAE,CAACiT,QAAH,CAAY,MAAZ,EAAoB,MAApB,EAA4B,MAA5B,EAAoC,WAApC,EAAiD,WAAjD,EAA8D,OAA9D,EAAuE,aAAvE,EACT,UADS,EACG,MADH,EACW,cADX,CAXb;AAAA,MAaEs8G,iBAbF;AAAA,MAcE7B,UAdF;AAAA,MAeEoG,WAfF;AAAA,MAgBEtE,MAhBF;AAAA,MAiBEC,aAAa,GAAG,KAjBlB;AAAA,MAkBEC,oBAAoB,GAAG,KAlBzB;AAAA,MAmBEC,oBAAoB,GAAG,CAnBzB;AAAA,MAoBEC,uBApBF;AAAA,MAqBEjC,gBAAgB,GAAG,EArBrB;AAAA,MAsBEhhI,IAtBF;AAAA,MAuBEkjI,cAvBF;AAAA,MAwBEqE,eAxBF;AAAA,MAyBE5+G,YAzBF;AAAA,MA0BEw6G,cA1BF;AAAA,MA2BEC,QA3BF;AAAA,MA4BEoE,SA5BF;AAAA,MA6BEnE,gBA7BF;AAAA,MA8BEoE,iBA9BF;AAAA,MA+BEnE,gBA/BF;AAAA,MAgCExnE,8BAA8B,GAAG,CAhCnC;AAAA,MAiCE3hD,eAAe,GAAG,EAjCpB;AAAA,MAkCE2mF,aAlCF;AAAA,MAmCEnhG,KAnCF;;AAqCA,MAAI4jI,mCAAmC,GAAG;AACxCzwH,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,oCAAP,CADiC;AAExC0D,oBAAgB,EAAE,GAFsB;AAGxC5H,UAAM,EAAE,KAHgC;AAIxC/gB,OAAG,EAAE,CAJmC;AAKxCD,OAAG,EAAE;AALmC,GAA1C;AAOA,MAAI+uI,iBAAiB,GAAGqC,8BAAoB,CAAC1rH,IAAD,CAA5C,CA7CoD,CA+CpD;AACA;AACA;AACA;;AACA,WAAS4sD,qBAAT,CAA+Bv3D,GAA/B,EAAoCvV,IAApC,EAA0CqpE,MAA1C,EAAkD;AAChD,QAAI0D,eAAJ,EACEnI,UADF,EAEErnE,yBAFF,EAGEyN,QAHF;;AAKA,QAAIhL,IAAI,KAAK,cAAb,EAA6B;AAC3B+sE,qBAAe,GAAG9vE,oBAAQ,CAAC2N,cAA3B;AACD,KAFD,MAEO,IAAI5K,IAAI,KAAK,YAAb,EAA2B;AAChC+sE,qBAAe,GAAG9vE,oBAAQ,CAAC2P,WAA3B;AACD,KAFM,MAEA;AACL,YAAM,IAAI5T,KAAJ,CAAUgH,IAAI,GAAG,4CAAjB,CAAN;AACD;;AAEDzC,6BAAyB,GAAGsyB,4BAAS,CAACtyB,yBAAV,CAAoCwvE,eAAe,CAACx3D,GAAD,CAAnD,CAA5B;AAEAqvD,cAAU,GAAG;AACX5kE,UAAI,EAAEA,IADK;AAEXqjE,cAAQ,EAAExzC,4BAAS,CAACvyB,kBAAV,CAA6ByvE,eAAe,CAACx3D,GAAD,CAA5C,CAFC;AAGX7Z,SAAG,EAAE2tE,MAHM;AAIX/F,2BAAqB,EAAE,CAAC,CAACyJ,eAAe,CAACx3D,GAAD,CAAf,CAAqBpK,kBAJnC;AAKXnO,cAAQ,EAAE,kBAAS9D,KAAT,EAAgB;AACxB,eAAO22B,4BAAS,CAAClzB,sBAAV,CAAiCowE,eAAe,CAACx3D,GAAD,CAAhD,EAAuDA,GAAvD,EAA4Drc,KAA5D,EAAmE,KAAnE,CAAP;AACD,OAPU;AAQX+pE,uBAAiB,EAAE1lE,yBAAyB,GAAG+oE,yBAAH,GAA+BjuE,SARhE;AASX6qE,sBAAgB,EAAE3lE,yBAAyB,GAAGgpE,0BAAH,GAAgCluE;AAThE,KAAb;AAYA2S,YAAQ,GAAG+hE,eAAe,CAACx3D,GAAD,CAAf,CAAqBvK,QAAhC;;AACA,QAAIA,QAAJ,EAAc;AACZ45D,gBAAU,CAAChzC,WAAX,GAAyB,IAAIy1C,oBAAJ,CAAwB8B,mCAAxB,EAAyC;AAChEn+D,gBAAQ,EAAEA;AADsD,OAAzC,CAAzB;AAGD,KAJD,MAIO;AACL;AACA45D,gBAAU,CAAChzC,WAAX,GAAyB,IAAIy1C,oBAAJ,CAAwB,IAAxB,EAA8B;AACrDnsD,aAAK,EAAE6xD,eAAe,CAAC7xD,KAAhB,IAAyB3F;AADqB,OAA9B,CAAzB;AAGD;;AAED2zD,mBAAe,CAAC3kC,cAAhB,CAA+BhvB,GAA/B,EAAoCqvD,UAApC;AACD;;AAED,WAAS0B,yBAAT,GAAqC;AACnC,QAAIpC,8BAA8B,KAAK,CAAvC,EAA0C;AACxCgF,qBAAe,CAACxC,uBAAhB;AACAwC,qBAAe,CAACzC,kCAAhB;AACAyC,qBAAe,CAACrC,aAAhB,GAAgC,KAAhC;AACD;;AACD3C,kCAA8B;AAC/B;;AAED,WAASqC,0BAAT,GAAsC;AACpCrC,kCAA8B;AAC9BuG,yBAAqB;;AACrB,QAAIvG,8BAA8B,KAAK,CAAvC,EAA0C;AACxCgF,qBAAe,CAACrC,aAAhB,GAAgC,IAAhC;AACAqC,qBAAe,CAACvC,+BAAhB;AACD;AACF;;AAED,WAASN,sBAAT,CAAgCnB,OAAhC,EAAyC;AACvCoB,6BAAyB;AACzBpB,WAAO;AACPqB,8BAA0B;AAC3B;;AAED,WAASkE,qBAAT,GAAiC;AAC/BloD,mBAAe,CAACjN,OAAhB,CAAwB,UAAS+N,MAAT,EAAiB;AACvCA,YAAM,CAACqnD,SAAP;AACD,KAFD;AAGD;;AAED,WAASmhE,mBAAT,CAA6BhoH,QAA7B,EAAuCppB,GAAvC,EAA4CD,GAA5C,EAAiD;AAC/C,QAAI+sE,eAAJ;AACA,QAAI31C,WAAJ;AAEA21C,mBAAe,GAAGx/D,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,EAAuCykD,OAAvC,EAAlB;AACAf,mBAAe,CAAC9sE,GAAhB,GAAsBA,GAAtB;AACA8sE,mBAAe,CAAC/sE,GAAhB,GAAsBA,GAAtB;AAEAo3B,eAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,mCAAxB,EAAyC5B,eAAzC,CAAd;AACA2B,mBAAe,CAACzD,sBAAhB,CAAuC5hD,QAAvC,EAAiD+N,WAAjD;AACD,GAtImD,CAwIpD;;;AACA,WAASk6G,sBAAT,GAAkC;AAChC,QAAI/jI,KAAK,CAACwb,UAAN,CAAiB8lH,cAAjB,IAAmC,IAAvC,EAA6C;AAC3C;AACD;;AACDwC,uBAAmB,CAAC,aAAD,EAAgB,CAAhB,EAAmB9jI,KAAK,CAACwb,UAAN,CAAiB8lH,cAApC,CAAnB;AACD;;AAED,WAAS0C,YAAT,GAAwB;AACtB,QAAId,MAAJ,EAAY;AACVA,YAAM,CAACe,eAAP,CAAuB,MAAvB;AACAf,YAAM,CAACe,eAAP,CAAuB,iBAAvB;AACAf,YAAM,CAACe,eAAP,CAAuB,iBAAvB;AAEAf,YAAM,CAACrvI,MAAP;AACD;;AAEDyqE,0BAAsB,CAAC,YAAW;AAChC6kE,mBAAa,GAAG,KAAhB;AACAC,0BAAoB,GAAG,KAAvB;AACD,KAHqB,CAAtB;AAID;;AAED,WAASc,YAAT,GAAwB;AACtB5lE,0BAAsB,CAAC,YAAW;AAChC8kE,0BAAoB,GAAG,IAAvB;AACD,KAFqB,CAAtB,CADsB,CAKtB;AACA;AACA;AACA;;AACA9hG,cAAU,CAAC,YAAW;AACpB4hG,YAAM,CAACx0H,EAAP,CAAU,MAAV,EAAkBy1H,kBAAlB;AACAjB,YAAM,CAACx0H,EAAP,CAAU,iBAAV,EAA6B,YAAW;AACtC01H,uBAAe,CAAC,QAAD,CAAf;AACD,OAFD;AAGAlB,YAAM,CAACx0H,EAAP,CAAU,iBAAV,EAA6B,YAAW;AACtC01H,uBAAe,CAAC,QAAD,CAAf;AACD,OAFD;AAIAlB,YAAM,CAACjlI,MAAP,CAAcjI,CAAC,CAAC,MAAD,CAAf,EAAyB,UAASI,KAAT,EAAgB;AAEvC,YAAIA,KAAJ,EAAW;AACT,cAAIA,KAAK,YAAYqrI,iCAAY,CAAC4C,aAAlC,EAAiD;AAC/CC,gCAAoB,CAACnsH,IAAI,CAACR,CAAL,CAAO,mCAAP,CAAD,CAApB;AACD,WAFD,MAEO,IAAIvhB,KAAK,YAAYqrI,iCAAY,CAAC8C,yBAAlC,EAA6D;AAClED,gCAAoB,CAACnsH,IAAI,CAACR,CAAL,CAAO,yCAAP,CAAD,CAApB;AACD,WAFM,MAEA,IAAIvhB,KAAK,YAAYqrI,iCAAY,CAAC+C,qBAAlC,EAAyD;AAC9DC,uCAA2B;AAC5B,WAFM,MAEA;AACLH,gCAAoB,CAACnsH,IAAI,CAACR,CAAL,CAAO,kCAAP,CAAD,CAApB;AACD;;AACD2mD,gCAAsB,CAAC,YAAW;AAChC8kE,gCAAoB,GAAG,KAAvB;AACD,WAFqB,CAAtB;AAGA;AACD;;AAED9kE,8BAAsB,CAAC,YAAW;AAChC6kE,uBAAa,GAAG,IAAhB;AACAC,8BAAoB,GAAG,KAAvB;AACD,SAHqB,CAAtB;AAID,OAtBD;AAuBD,KAhCS,EAgCP,EAhCO,CAAV;AAiCD;;AAED,WAASqB,2BAAT,GAAuC;AACrCT,gBAAY;AACZ,QAAItsG,OAAO,GAAG,EAAd;;AACAA,WAAO,CAACvf,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAD,CAAP,GAA+C,YAAW;AACxD3hB,OAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf,EADwD,CAExD;AACA;;AACAotG,kBAAY;AACb,KALD;;AAMAxsG,WAAO,CAACvf,IAAI,CAACR,CAAL,CAAO,wBAAP,CAAD,CAAP,GAA4C,YAAW;AACrD3hB,OAAC,CAAC,IAAD,CAAD,CAAQnC,MAAR;AACAmM,WAAK,CAACo6D,MAAN;AACD,KAHD;;AAIA2oE,YAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,qCAAP,EAA8C;AAC3D+sH,iBAAW,EAAE1kI,KAAK,CAACwb,UAAN,CAAiBqmH;AAD6B,KAA9C,CAAf,EAEInqG,OAFJ;AAGD;;AAED,WAAS4sG,oBAAT,CAA8BjwI,OAA9B,EAAuC;AACrC2vI,gBAAY;AACZjB,YAAQ,CAAC7sI,KAAT,CAAe7B,OAAf,EAAwB;AACtBswI,QAAE,EAAE,cAAW;AACb3uI,SAAC,CAAC,IAAD,CAAD,CAAQnC,MAAR;AACAmM,aAAK,CAACo6D,MAAN;AACD;AAJqB,KAAxB;AAMD;;AAED,WAASgqE,eAAT,CAAyBQ,IAAzB,EAA+B;AAC7BZ,gBAAY;AACZhkI,SAAK,CAAC89B,IAAN;AACAlG,qBAAgB,CAACxB,SAAjB,CAA2B,cAAcp2B,KAAK,CAACwb,UAAN,CAAiBopH,IAAI,GAAG,MAAxB,CAAzC;AACA,QAAIltG,OAAO,GAAG,EAAd;;AACAA,WAAO,CAACvf,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAD,CAAP,GAA+C,YAAW;AACxD3hB,OAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAotG,kBAAY;AACb,KAHD;;AAIAxsG,WAAO,CAACvf,IAAI,CAACR,CAAL,CAAO,wBAAP,CAAD,CAAP,GAA4C,YAAW;AACrD3hB,OAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACD,KAFD;;AAGAisG,YAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,4CAAP,EAAqD;AAClEktH,2BAAqB,EAAE7kI,KAAK,CAACwb,UAAN,CAAiBopH,IAAI,GAAG,MAAxB;AAD2C,KAArD,CAAf,EAEIltG,OAFJ;AAGD;;AAED,WAASotG,kBAAT,GAA8B;AAC5B,QAAIxB,uBAAJ,EAA6B;AAC3B5hG,mBAAa,CAAC4hG,uBAAD,CAAb;AACD;;AACD,QAAIyB,kBAAkB,GAAG,SAArBA,kBAAqB,CAAS3uI,KAAT,EAAgB8c,MAAhB,EAAwB;AAC/C,UAAI9c,KAAJ,EAAW;AACT,YAAIA,KAAK,YAAYqrI,iCAAY,CAACuD,mBAAlC,EAAuD,CACrD;AACD,SAFD,MAEO,IAAI5uI,KAAK,YAAYqrI,iCAAY,CAAC+C,qBAAlC,EAAyD;AAC9D9iG,uBAAa,CAAC4hG,uBAAD,CAAb;AACAmB,qCAA2B;AAC5B,SAHM,MAGA;AACL/iG,uBAAa,CAAC4hG,uBAAD,CAAb;AACA,gBAAMltI,KAAN;AACD;AACF,OAVD,MAUO;AACLkoE,8BAAsB,CAAC,YAAW;AAChCilE,wBAAc,GAAGrwH,MAAM,CAAC,CAAD,CAAvB;AACA00H,yBAAe,GAAG10H,MAAM,CAAC,CAAD,CAAxB;;AACA,cAAIuwH,QAAJ,EAAc;AACZzjI,iBAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6BgC,cAA7B;AACAE,oBAAQ,GAAG,KAAX;AACD;;AACD,cAAIoE,SAAJ,EAAe;AACb7nI,iBAAK,CAACwb,UAAN,CAAiBisH,UAAjB,GAA8BG,eAA9B;AACAC,qBAAS,GAAG,KAAZ;AACD;AACF,SAXqB,CAAtB;AAYD;AACF,KAzBD;;AA0BAvE,2BAAuB,GAAG9hG,WAAW,CAAC,YAAW;AAC/C0hG,YAAM,CAAC+B,UAAP,CAAkBF,kBAAlB;AACD,KAFoC,EAElC,OAAO1B,oBAF2B,CAArC;AAGD;;AAED,WAAS6B,iBAAT,GAA6B;AAC3B,QAAI5B,uBAAJ,EAA6B;AAC3B5hG,mBAAa,CAAC4hG,uBAAD,CAAb;AACAA,6BAAuB,GAAG,IAA1B;AACD;AACF;;AAED,WAAS6B,wBAAT,GAAoC;AAClCn8G,gBAAW,GAAG,CAAd;AACA3oB,QAAI,GAAG,CAAP;AACAkjI,kBAAc,GAAGjzI,SAAjB;AACAs3I,mBAAe,GAAGt3I,SAAlB;AACAkzI,kBAAc,GAAG,KAAjB;AACAE,oBAAgB,GAAG,KAAnB;AACAoE,qBAAiB,GAAG,KAApB;AACArE,YAAQ,GAAG,KAAX;AACAoE,aAAS,GAAG,KAAZ;AACD;;AAED,WAASE,WAAT,GAAuB;AACrB,QAAI3G,UAAU,IAAIoG,WAAlB,EAA+B;AAC7B,UAAIjC,gBAAgB,GAAG/D,iBAAiB,CAACJ,UAAD,CAAxC;AAAA,UACE4G,iBAAiB,GAAGxG,iBAAiB,CAACgG,WAAD,CADvC;AAAA,UAEElC,WAAW,GAAG7D,iCAAY,CAAC8D,gBAAgB,CAACE,WAAlB,CAF5B;AAIAvC,YAAM,GAAGrzI,MAAM,CAACi3D,GAAP,CAAW6+E,MAAX,CAAkBvE,UAAU,GAAGoG,WAA/B,IAA8C,IAAIlC,WAAJ,CAAgB;AACrEM,oBAAY,EAAE,gBAAgBxE,UAAhB,GAA6BoG,WAD0B;AAErEhG,yBAAiB,EAAE,CAAC+D,gBAAD,EAAmByC,iBAAnB,CAFkD;AAGrEnC,gBAAQ,EAAEzE,UAAU,GAAGoG,WAAb,GAA2B,SAHgC;AAIrE1B,gBAAQ,EAAE9/F,6BAAS,CAAC3iB,OAAV,GAAoB;AAJuC,OAAhB,CAAvD;AAOA6gH,kBAAY;AACb;AAEF;;AAED,WAAS+D,sBAAT,GAAkC;AAChC,QAAI7G,UAAU,IAAIoG,WAAlB,EAA+B;AAC7B,UAAIjC,gBAAgB,GAAG/D,iBAAiB,CAACJ,UAAD,CAAxC;AAAA,UACE4G,iBAAiB,GAAGxG,iBAAiB,CAACgG,WAAD,CADvC;AAGAnG,sBAAgB,GAAG7uI,IAAI,CAACC,GAAL,CAAS8yI,gBAAgB,CAAClE,gBAA1B,EAA4C2G,iBAAiB,CAAC3G,gBAA9D,CAAnB;AACD;AACF;;AAED,WAAS+D,aAAT,CAAuBC,WAAvB,EAAoC;AAClC,QAAIE,gBAAJ;AACA,QAAI17G,WAAJ;AACA,QAAI27G,eAAJ;;AAEA,QAAIpE,UAAU,KAAKiE,WAAnB,EAAgC;AAC9B;AACD;;AAED,QAAIjE,UAAJ,EAAgB;AACd;AACAphI,WAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6B,CAA7B;AACD;;AAEDH,cAAU,GAAGiE,WAAb;AACA9B,kBAAc,GAAGjzI,SAAjB;;AAEA,QAAI4yI,MAAJ,EAAY;AACVc,kBAAY;AACb;;AAED,QAAI5C,UAAJ,EAAgB;AACdmE,sBAAgB,GAAG/D,iBAAiB,CAACJ,UAAD,CAApC;AACAoE,qBAAe,GAAGD,gBAAgB,CAACC,eAAnC;AACA9B,sBAAgB,GAAG6B,gBAAgB,CAACG,QAApC;AACAuC,4BAAsB;AAEtBF,iBAAW,GANG,CAQd;;AACAl+G,iBAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,mCAAxB,EAAyC;AACrDjuD,aAAK,EAAEoyH,gBAAgB,CAAC3D,eAD6B;AAErD3+H,gBAAQ,EAAEuiI,eAF2C;AAGrD9yI,WAAG,EAAE6yI,gBAAgB,CAACQ,UAH+B;AAIrDtzI,WAAG,EAAE8yI,gBAAgB,CAACS;AAJ+B,OAAzC,CAAd;AAOA7kE,qBAAe,CAACzD,sBAAhB,CAAuC,eAAvC,EAAwD7zC,WAAxD,EAhBc,CAkBd;;AACA,UAAI7pB,KAAK,CAACwb,UAAN,CAAiB8lH,cAAjB,IAAmC,IAAvC,EAA6C;AAC3CthI,aAAK,CAACwb,UAAN,CAAiB8lH,cAAjB,GAAkCiE,gBAAgB,CAACU,UAAnD;AACD;AACF,KAtBD,MAsBO,IAAIjmI,KAAK,CAACwb,UAAN,CAAiB7mB,cAAjB,CAAgC,eAAhC,CAAJ,EAAsD;AAC3D;AACAk1B,iBAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,mCAAxB,EAAyCwiE,mCAAzC,CAAd;AACAziE,qBAAe,CAACzD,sBAAhB,CAAuC,eAAvC,EAAwD7zC,WAAxD;AACD;AACF;;AAED,WAASq+G,cAAT,CAAwB7C,WAAxB,EAAqC;AACnC,QAAIE,gBAAJ;AACA,QAAI17G,WAAJ;AACA,QAAI27G,eAAJ;;AAEA,QAAIgC,WAAW,KAAKnC,WAApB,EAAiC;AAC/B;AACD;;AAED,QAAImC,WAAJ,EAAiB;AACf;AACAxnI,WAAK,CAACwb,UAAN,CAAiBisH,UAAjB,GAA8B,CAA9B;AACD;;AAEDD,eAAW,GAAGnC,WAAd;AACAuC,mBAAe,GAAGt3I,SAAlB;;AAEA,QAAI4yI,MAAJ,EAAY;AACVc,kBAAY;AACb;;AAED,QAAIwD,WAAJ,EAAiB;AACfjC,sBAAgB,GAAG/D,iBAAiB,CAACgG,WAAD,CAApC;AACAhC,qBAAe,GAAGD,gBAAgB,CAACC,eAAnC;AACAsC,uBAAiB,GAAGvC,gBAAgB,CAACG,QAArC;AACAuC,4BAAsB;AAEtBF,iBAAW,GANI,CAQf;;AACAl+G,iBAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,mCAAxB,EAAyC;AACrDjuD,aAAK,EAAEoyH,gBAAgB,CAAC3D,eAD6B;AAErD3+H,gBAAQ,EAAEuiI,eAF2C;AAGrD9yI,WAAG,EAAE6yI,gBAAgB,CAACQ,UAH+B;AAIrDtzI,WAAG,EAAE8yI,gBAAgB,CAACS;AAJ+B,OAAzC,CAAd;AAOA7kE,qBAAe,CAACzD,sBAAhB,CAAuC,gBAAvC,EAAyD7zC,WAAzD,EAhBe,CAkBf;;AACA,UAAI7pB,KAAK,CAACwb,UAAN,CAAiB8lH,cAAjB,IAAmC,IAAvC,EAA6C;AAC3CthI,aAAK,CAACwb,UAAN,CAAiB8lH,cAAjB,GAAkCiE,gBAAgB,CAACU,UAAnD;AACD;AACF,KAtBD,MAsBO,IAAIjmI,KAAK,CAACwb,UAAN,CAAiB7mB,cAAjB,CAAgC,gBAAhC,CAAJ,EAAuD;AAC5D;AACAk1B,iBAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,mCAAxB,EAAyCwiE,mCAAzC,CAAd;AACAziE,qBAAe,CAACzD,sBAAhB,CAAuC,gBAAvC,EAAyD7zC,WAAzD;AACD;AACF;;AAED,WAASs6G,kBAAT,CAA4BhtH,CAA5B,EAA+B;AAC7B6R,gBAAW;AAEX3oB,QAAI,IAAK,IAAIghI,gBAAb,CAH6B,CAK7B;AACA;AACA;;AACAxxI,UAAM,CAACq2I,kBAAP,GAA4B,CAA5B;AAEA3C,kBAAc,GAAGpsH,CAAC,CAAC,CAAD,CAAlB;AACAywH,mBAAe,GAAGzwH,CAAC,CAAC,CAAD,CAAnB,CAX6B,CAY7B;;AACA,QAAI,CAACqsH,cAAL,EAAqB;AACnBxjI,WAAK,CAACy9B,MAAN,CAAa,YAAb;AACAz9B,WAAK,CAACy9B,MAAN,CAAa,aAAb;AACD;;AAED+lG,kBAAc,GAAG,IAAjB;AAEAriE,mBAAe,CAACzC,kCAAhB;AACAyC,mBAAe,CAACtC,2BAAhB;AACA6D,yBAAqB;AAErB/7C,YAAQ,CAAC4Z,IAAT;AACD;;AAEDvgC,OAAK,GAAG;AAEN0O,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD,KAJK;AAMNya,SAAK,EAAE,iBAAW;AAChB,UAAI,CAAC//B,KAAK,CAACwb,UAAN,CAAiBgyC,UAAtB,EAAkC;AAChC;AACD;;AAED01E,YAAM,CAACnjG,KAAP,CAAa,UAAS3pC,KAAT,EAAgB+vI,SAAhB,EAA2B;AACtC,YAAI/vI,KAAJ,EAAW;AACT,cAAIA,KAAK,YAAYqrI,iCAAY,CAAC+C,qBAAlC,EAAyD;AACvDC,uCAA2B;AAC5B;AACF,SAJD,MAIO,IAAI0B,SAAJ,EAAe;AACpB7nE,gCAAsB,CAAC,YAAW;AAChCpkC,sBAAS,GAAG,KAAZ;AACD,WAFqB,CAAtB;AAGAvT,kBAAQ,CAAC89C,IAAT;AACD;AACF,OAXD;AAYD,KAvBK;AAyBN3mC,QAAI,EAAE,gBAAW;AAEf,UAAIolG,MAAJ,EAAY;AACVA,cAAM,CAACplG,IAAP;AACD;;AACDwgC,4BAAsB,CAAC,YAAW;AAChCpkC,kBAAS,GAAG,IAAZ;AACD,OAFqB,CAAtB;AAGAvT,cAAQ,CAACmX,IAAT;AACD,KAlCK;AAoCNsoG,QAAI,EAAE,gBAAW;AACf,UAAI,CAAClsG,UAAL,EAAgB;AACd,cAAM,IAAIjpC,KAAJ,CAAU,qDAAV,CAAN;AACD;;AACD,UAAIqyI,uBAAuB,IAAI,IAA3B,IAAmCC,cAAc,IAAI,IAAzD,EAA+D;AAC7DvjI,aAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6BgC,cAA7B;AACD,OAFD,MAEO;AACLjlE,8BAAsB,CAAC,YAAW;AAChCmlE,kBAAQ,GAAG,IAAX;AACD,SAFqB,CAAtB;AAGD;AACF,KA/CK;AAiDN0E,SAAK,EAAE,iBAAW;AAChB,UAAI,CAACjuG,UAAL,EAAgB;AACd,cAAM,IAAIjpC,KAAJ,CAAU,qDAAV,CAAN;AACD;;AACD,UAAIqyI,uBAAuB,IAAI,IAA3B,IAAmCsE,eAAe,IAAI,IAA1D,EAAgE;AAC9D5nI,aAAK,CAACwb,UAAN,CAAiBisH,UAAjB,GAA8BG,eAA9B;AACD,OAFD,MAEO;AACLtpE,8BAAsB,CAAC,YAAW;AAChCupE,mBAAS,GAAG,IAAZ;AACD,SAFqB,CAAtB;AAGD;AACF,KA5DK;AA8DNttE,aAAS,EAAE,qBAAW;AACpB5zC,cAAQ,CAAC4zC,SAAT;AACD,KAhEK;AAkEN/+D,SAAK,EAAE,iBAAW;AAChBwE,WAAK,CAAC89B,IAAN;AACAkmG,kBAAY;AAEZmB,8BAAwB;AACxBnlI,WAAK,CAAC09B,QAAN,CAAe,YAAf;AACA19B,WAAK,CAAC09B,QAAN,CAAe,aAAf;AACA19B,WAAK,CAACwb,UAAN,CAAiB4lH,UAAjB,GAA8B6B,iBAA9B;AACAjjI,WAAK,CAACwb,UAAN,CAAiBgsH,WAAjB,GAA+BvE,iBAA/B;AAEAt8G,cAAQ,CAACnrB,KAAT;AACD,KA7EK;AA+EN4+D,UAAM,EAAE,kBAAW;AACjBp6D,WAAK,CAAC89B,IAAN;AACAwgC,4BAAsB,CAAC,YAAW;AAChC0kE,mBAAW,GAAG,IAAd;AACD,OAFqB,CAAtB;AAGD,KApFK;AAsFN9oG,aAAS,EAAE,qBAAW;AACpB,aAAOA,UAAP;AACD,KAxFK;AA0FNlR,eAAW,EAAE,uBAAW;AACtB,aAAOA,YAAP;AACD,KA5FK;AA8FN;AACA;AACA;AAEAuD,yBAAqB,EAAE,+BAAS/Q,UAAT,EAAqB2J,QAArB,EAA+B;AACpD,UAAI,OAAO3J,UAAP,KAAsB,QAA1B,EAAoC;AAClCxb,aAAK,CAACu+B,WAAN,CAAkB/iB,UAAlB,EAA8B2J,QAA9B;AACD,OAFD,MAEO;AACL3J,kBAAU,CAACjO,OAAX,CAAmB,UAASuO,QAAT,EAAmB;AACpC9b,eAAK,CAACu+B,WAAN,CAAkBziB,QAAlB,EAA4BqJ,QAA5B;AACD,SAFD;AAGD;AACF,KA1GK;AA4GNk8C,mBAAe,EAAE,yBAAS7zD,GAAT,EAAcgyD,eAAd,EAA+B8B,MAA/B,EAAuC;AACtD,UAAIzE,UAAU,GAAG;AACf5kE,YAAI,EAAE,WADS;AAEfsjE,6BAAqB,EAAE,IAFR;AAGfC,oCAA4B,EAAE,KAHf;AAIf3xC,mBAAW,EAAE,IAAIy1C,oBAAJ,CAAwB8B,mCAAxB,EAAyC5B,eAAzC,CAJE;AAKftE,yBAAiB,EAAEqD,yBALJ;AAMfpD,wBAAgB,EAAEqD;AANH,OAAjB,CADsD,CAUtD;;AACA,UAAI8C,MAAJ,EAAY;AACVzE,kBAAU,CAAClpE,GAAX,GAAiB,UAASxC,KAAT,EAAgB;AAC/BmwE,gBAAM,CAACxvE,IAAP,CAAYkO,KAAZ,EAAmB7O,KAAnB;AACD,SAFD;AAGD;;AACDgwE,qBAAe,CAAC3kC,cAAhB,CAA+BhvB,GAA/B,EAAoCqvD,UAApC;AACD,KA7HK;AA+HNgG,gBAAY,EAAE,sBAASr1D,GAAT,EAAcgyD,eAAd,EAA+BsD,MAA/B,EAAuC;AACnD3B,qBAAe,CAAC3kC,cAAhB,CAA+BhvB,GAA/B,EAAoC;AAClCvV,YAAI,EAAE,QAD4B;AAElCqjE,gBAAQ,EAAE,KAFwB;AAGlCnlD,WAAG,EAAE2sD,MAH6B;AAIlCvH,6BAAqB,EAAE,KAJW;AAKlC1xC,mBAAW,EAAE,IAAIy1C,oBAAJ,CAAwB8B,mCAAxB,EAAyC5B,eAAzC;AALqB,OAApC;AAOD,KAvIK;AAyINhzC,wBAAoB,EAAE,8BAAShf,GAAT,EAAcqc,WAAd,EAA2Bk5C,mBAA3B,EAAgD9qE,IAAhD,EAAsD8jB,MAAtD,EAA8D;AAClF,UAAI6d,MAAJ,EAAY3e,YAAZ;;AAEA,UAAIhjB,IAAI,KAAK,gBAAb,EAA+B;AAC7B2hC,cAAM,GAAG,IAAI2nC,sBAAJ,CAAyBxlD,MAAzB,CAAT;AACD,OAFD,MAEO;AACL,cAAM,IAAI9qB,KAAJ,CAAU,yCAAyCgH,IAAzC,GAAgD,GAA1D,CAAN;AACD,OAPiF,CASlF;;;AACAgjB,kBAAY,GAAGjb,KAAK,CAACwb,UAAN,CAAiBhO,GAAjB,CAAf;;AACA,UAAIyN,YAAY,KAAK3qB,SAAjB,IAA8B8O,KAAK,CAACtM,MAAM,CAACmoB,YAAD,CAAP,CAAvC,EAA+D;AAC7D,cAAM,IAAIhqB,KAAJ,CAAU,2EAAV,CAAN;AACD;;AACD2oC,YAAM,CAAC+oC,SAAP,CAAiB3iE,KAAK,CAACwb,UAAN,CAAiBnb,IAAlC,EAAwC4a,YAAxC;AAEAT,qBAAe,CAACxmB,IAAhB,CAAqB;AACnB2uE,iBAAS,EAAE,qBAAW;AACpB/oC,gBAAM,CAAC+oC,SAAP,CAAiB3iE,KAAK,CAACwb,UAAN,CAAiBnb,IAAlC,EAAwCL,KAAK,CAACwb,UAAN,CAAiBunD,mBAAjB,CAAxC;AACD;AAHkB,OAArB,EAhBkF,CAsBlF;;AACAl5C,iBAAW,CAAC/N,QAAZ,GAAuBinD,mBAAvB;AACAl5C,iBAAW,CAAC5xB,IAAZ,GAAmBA,IAAnB;AACA4xB,iBAAW,CAAC9N,MAAZ,GAAqBA,MAArB;AAEA/b,WAAK,CAAC6iE,YAAN,CAAmBr1D,GAAnB,EAAwBqc,WAAxB,EAAqC,YAAW;AAC9C,eAAO+P,MAAM,CAAC0pC,SAAP,EAAP;AACD,OAFD;AAGD,KAvKK;AAyKNztE,aAAS,EAAE,qBAAW;AACpB,aAAO,EAAP;AACD;AA3KK,GAAR;AA8KAsvI,0BAAwB,GAtnB4B,CAwnBpD;;AACA,MAAIt1I,MAAM,CAACi3D,GAAP,KAAex2D,SAAnB,EAA8B;AAC5BT,UAAM,CAACi3D,GAAP,GAAa,EAAb;AACD;;AACDj3D,QAAM,CAACi3D,GAAP,CAAW6+E,MAAX,GAAoB,EAApB;AAEAxkE,iBAAe,CAACn6C,OAAhB,CAAwBhnB,KAAxB;AAEAmhG,eAAa,GAAG;AACdigC,cAAU,EAAEgE,aADE;AAEdoC,eAAW,EAAEU;AAFC,GAAhB;AAKArlI,gBAAc,GAAGilB,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC2N,cAAxC,EAAwDiiE,iBAAxD,CAAjB;AACAnzE,QAAM,CAAC2b,IAAP,CAAYzK,cAAZ,EAA4B0K,OAA5B,CAAoC,UAASC,GAAT,EAAc;AAChDu3D,yBAAqB,CAACv3D,GAAD,EAAM,cAAN,EAAsB2zF,aAAa,CAAC3zF,GAAD,CAAnC,CAArB;AACD,GAFD;AAGA2zD,iBAAe,CAAClC,YAAhB,CAA6Bp8D,cAA7B,EAzoBoD,CA2oBpD;;AACAogI,mBAAiB,GAAGjjI,KAAK,CAACwb,UAAN,CAAiB4lH,UAArC;AACAuC,kBAAgB,GAAG3jI,KAAK,CAACwb,UAAN,CAAiB+lH,SAApC;AAEA18H,aAAW,GAAGijB,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAAC2P,WAAxC,EAAqDigE,iBAAiB,CAACjgE,WAAlB,IAAiC,EAAtF,CAAd;AACAlT,QAAM,CAAC2b,IAAP,CAAYzI,WAAZ,EAAyB0I,OAAzB,CAAiC,UAASC,GAAT,EAAc;AAC7Cu3D,yBAAqB,CAACv3D,GAAD,EAAM,YAAN,CAArB;AACD,GAFD;AAGA2zD,iBAAe,CAAClC,YAAhB,CAA6Bp6D,WAA7B;AAEA7E,OAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B;AACzB1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADkB;AAEzB1U,YAAQ,EAAE,MAFe;AAGzBwQ,UAAM,EAAE;AAHiB,GAA3B,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADyB;AAEhC1U,YAAQ,EAAE,MAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,eAAnB,EAAoC+gE,mCAApC,EAAyE,YAAW;AAClF,QAAIL,cAAc,IAAI,IAAtB,EAA4B;AAC1B,aAAOA,cAAP;AACD;;AACD,WAAOA,cAAc,GAAGvjI,KAAK,CAACwb,UAAN,CAAiB+lH,SAAzC;AACD,GALD;AAOAvhI,OAAK,CAAC6iE,YAAN,CAAmB,gBAAnB,EAAqC+gE,mCAArC,EAA0E,YAAW;AACnF,QAAIgE,eAAe,IAAI,IAAvB,EAA6B;AAC3B,aAAOA,eAAP;AACD;;AACD,WAAOA,eAAe,GAAG5nI,KAAK,CAACwb,UAAN,CAAiBisH,UAA1C;AACD,GALD,EA5qBoD,CAmrBpD;AACA;AACA;AACA;;AAEAznI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOquH,iBAAiB,CAACJ,UAAD,CAAjB,CAA8BS,UAArC;AACD,GAJD;AAMA7hI,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE;AADyB,GAAlC,EAEG,YAAW;AACZ,WAAOquH,iBAAiB,CAACgG,WAAD,CAAjB,CAA+B3F,UAAtC;AACD,GAJD;AAMA7hI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOquH,iBAAiB,CAACJ,UAAD,CAAjB,CAA8BiF,UAArC;AACD,GAJD;AAMArmI,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE;AADyB,GAAlC,EAEG,YAAW;AACZ,WAAOquH,iBAAiB,CAACgG,WAAD,CAAjB,CAA+BnB,UAAtC;AACD,GAJD;AAMArmI,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO+mB,UAAP;AACD,GAJD,EAhtBoD,CAstBpD;;AACAl6B,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOgwH,aAAa,IAAI,CAACK,cAAzB;AACD,GAJD;AAMAxjI,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAOqwH,cAAP;AACD,GAJD;AAMAxjI,OAAK,CAAC6iE,YAAN,CAAmB,kBAAnB,EAAuC;AACrC1vD,SAAK,EAAE;AAD8B,GAAvC,EAEG,YAAW;AACZ,WAAOnT,KAAK,CAACwb,UAAN,CAAiBgyC,UAAjB,IAA+BtzB,UAAtC;AACD,GAJD;AAMAl6B,OAAK,CAAC6iE,YAAN,CAAmB,sBAAnB,EAA2C;AACzC1vD,SAAK,EAAE;AADkC,GAA3C,EAEG,YAAW;AACZ,WAAOiwH,oBAAP;AACD,GAJD;AAMApjI,OAAK,CAAC6iE,YAAN,CAAmB,UAAnB,EAA+B;AAC7B1vD,SAAK,EAAE;AADsB,GAA/B,EAEG,YAAW;AACZ,WAAOswH,QAAP;AACD,GAJD;AAMAzjI,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO00H,SAAP;AACD,GAJD;AAMA7nI,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE;AADqB,GAA9B,EAEG,YAAW;AACZ,WAAO+mB,UAAS,IAAI,CAACspG,cAAd,IAAgCE,gBAAhC,IAAoD,CAACD,QAA5D;AACD,GAJD;AAMAzjI,OAAK,CAAC6iE,YAAN,CAAmB,UAAnB,EAA+B;AAC7B1vD,SAAK,EAAE;AADsB,GAA/B,EAEG,YAAW;AACZ,WAAO+mB,UAAS,IAAI,CAACspG,cAAd,IAAgCsE,iBAAhC,IAAqD,CAACD,SAA7D;AACD,GAJD;AAMA7nI,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE;AADyB,GAAlC,EAEG,YAAW;AACZ,WAAO6vH,WAAP;AACD,GAJD,EAvwBoD,CA6wBpD;AACA;;AACAhjI,OAAK,CAAC0O,EAAN,CAAS,iBAAT,EAA4Bs1H,YAA5B;AAEAhkI,OAAK,CAACu+B,WAAN,CAAkB,kBAAlB,EAAsC,YAAW;AAC/C,QAAIv+B,KAAK,CAACwb,UAAN,CAAiB8qH,gBAArB,EAAuC;AACrCxB,wBAAkB;AACnB,KAFD,MAEO;AACLI,uBAAiB;AAClB;AACF,GAND;AAQAllI,OAAK,CAACu+B,WAAN,CAAkB,gBAAlB,EAAoCwlG,sBAApC;AACAA,wBAAsB,GA1xB8B,CA4xBpD;;AACAqB,eAAa,CAACplI,KAAK,CAACwb,UAAN,CAAiB4lH,UAAlB,CAAb;AACA8G,gBAAc,CAACloI,KAAK,CAACwb,UAAN,CAAiBgsH,WAAlB,CAAd;AAEA,SAAOxnI,KAAP;AACD;AAAA,C;;AC9yBD;AACA;AACA;AACA;AACA,IAAMwhI,kCAAiB,GAAGC,iCAAY,CAACD,iBAAvC;AAEe,+DAASxhI,KAAT,EAAgB8lC,QAAhB,EAA0B3tB,IAA1B,EAAgC;AAE7C,MAAIouH,cAAc,GAAG,IAAI19F,aAAJ,CAAkB;AACrC9rC,MAAE,EAAE,kBADiC;AAErC4C,WAAO,EAAE,CAAC;AACRxO,WAAK,EAAE,IADC;AAER+a,UAAI,EAAEiM,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFE;AAGRkH,cAAQ,EAAE7e,KAAK,CAACwb,UAAN,CAAiB4lH,UAAjB,IAA+B,IAHjC;AAIRnjH,cAAQ,EAAE;AAJF,KAAD,EAKNmJ,MALM,CAKCz1B,MAAM,CAAC2b,IAAP,CAAYk0H,kCAAZ,EAA+B5nG,MAA/B,CAAsC,UAASpsB,GAAT,EAAc;AAC5D,aAAOg0H,kCAAiB,CAACh0H,GAAD,CAAjB,CAAuBi4H,WAAvB,KAAuC,UAA9C;AACD,KAFS,EAEP5zG,GAFO,CAEH,UAASrkB,GAAT,EAAc;AACnB,aAAO;AACLrc,aAAK,EAAEqc,GADF;AAELtB,YAAI,EAAEs1H,kCAAiB,CAACh0H,GAAD,CAAjB,CAAuBq0H,UAFxB;AAGLhjH,gBAAQ,EAAErR,GAAG,KAAKxN,KAAK,CAACwb,UAAN,CAAiB4lH,UAH9B;AAILnjH,gBAAQ,EAAE;AAJL,OAAP;AAMD,KATS,CALD,CAF4B;AAiBrC/C,YAAQ,EAAE,kBAASyrB,MAAT,EAAiB;AACzB3mC,WAAK,CAACwb,UAAN,CAAiB4lH,UAAjB,GAA8Bz6F,MAAM,CAACx1C,KAArC;AACD;AAnBoC,GAAlB,CAArB;AAsBA,MAAIi3I,eAAe,GAAG,IAAIv/F,aAAJ,CAAkB;AACtC9rC,MAAE,EAAE,mBADkC;AAEtC4C,WAAO,EAAE,CAAC;AACRxO,WAAK,EAAE,IADC;AAER+a,UAAI,EAAEiM,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFE;AAGRkH,cAAQ,EAAE7e,KAAK,CAACwb,UAAN,CAAiBgsH,WAAjB,IAAgC,IAHlC;AAIRvpH,cAAQ,EAAE;AAJF,KAAD,EAKNmJ,MALM,CAKCz1B,MAAM,CAAC2b,IAAP,CAAYk0H,kCAAZ,EAA+B5nG,MAA/B,CAAsC,UAASpsB,GAAT,EAAc;AAC5D,aAAOg0H,kCAAiB,CAACh0H,GAAD,CAAjB,CAAuBi4H,WAAvB,KAAuC,UAA9C;AACD,KAFS,EAEP5zG,GAFO,CAEH,UAASrkB,GAAT,EAAc;AACnB,aAAO;AACLrc,aAAK,EAAEqc,GADF;AAELtB,YAAI,EAAEs1H,kCAAiB,CAACh0H,GAAD,CAAjB,CAAuBq0H,UAFxB;AAGLhjH,gBAAQ,EAAErR,GAAG,KAAKxN,KAAK,CAACwb,UAAN,CAAiBgsH,WAH9B;AAILvpH,gBAAQ,EAAE;AAJL,OAAP;AAMD,KATS,CALD,CAF6B;AAiBtC/C,YAAQ,EAAE,kBAASyrB,MAAT,EAAiB;AACzB3mC,WAAK,CAACwb,UAAN,CAAiBgsH,WAAjB,GAA+B7gG,MAAM,CAACx1C,KAAtC;AACD;AAnBqC,GAAlB,CAAtB,CAxB6C,CA8C7C;AACA;;AACA,MAAIsiB,MAAM,GAAGC,EAAE,CAACD,MAAH,CAAU,KAAV,CAAb;AACA,MAAI+yH,iBAAJ,EAAuB6B,kBAAvB;AACA,MAAIv+F,IAAJ;;AAEA,WAAS28F,gBAAT,GAA4B;AAC1B,QAAIzmI,KAAK,CAACwb,UAAN,CAAiBioH,QAArB,EAA+B;AAC7B35F,UAAI,CAAC48F,WAAL,CAAiBv2H,IAAjB,CAAsB,QAAtB,EAAgCk0B,IAAhC,CAAqClsB,IAAI,CAACR,CAAL,CAAO,gBAAP,CAArC;AACD,KAFD,MAEO;AACLmyB,UAAI,CAAC48F,WAAL,CAAiBv2H,IAAjB,CAAsB,QAAtB,EAAgCk0B,IAAhC,CAAqClsB,IAAI,CAACR,CAAL,CAAO,aAAP,CAArC;AACD;AACF;;AAED,WAASgvH,eAAT,GAA2B;AACzB,QAAI3mI,KAAK,CAACwb,UAAN,CAAiBorH,OAArB,EAA8B;AAC5BzjG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAAC48F,WAA1B;AACD,KAFD,MAEO;AACLvjG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAAC48F,WAA3B;AACD;AACF;;AAED,WAAS4B,iBAAT,GAA6B;AAC3B,QAAItoI,KAAK,CAACwb,UAAN,CAAiBqsH,SAArB,EAAgC;AAC9B/9F,UAAI,CAACy+F,YAAL,CAAkBp4H,IAAlB,CAAuB,QAAvB,EAAiCk0B,IAAjC,CAAsClsB,IAAI,CAACR,CAAL,CAAO,gBAAP,CAAtC;AACD,KAFD,MAEO;AACLmyB,UAAI,CAACy+F,YAAL,CAAkBp4H,IAAlB,CAAuB,QAAvB,EAAiCk0B,IAAjC,CAAsClsB,IAAI,CAACR,CAAL,CAAO,aAAP,CAAtC;AACD;AACF;;AAED,WAAS6wH,gBAAT,GAA4B;AAC1B,QAAIxoI,KAAK,CAACwb,UAAN,CAAiBitH,QAArB,EAA+B;AAC7BtlG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACy+F,YAA1B;AACD,KAFD,MAEO;AACLplG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACy+F,YAA3B;AACD;AACF;;AAED,WAAS1B,0BAAT,GAAsC;AACpC,QAAIh9G,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,YAA7B,CAAlB;;AACA,QAAID,WAAW,CAACib,SAAZ,EAAJ,EAA6B;AAC3B3B,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACg9F,UAA3B;AACD,KAFD,MAEO;AACL3jG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACg9F,UAA1B;AACD;AACF;;AAED,WAAS4B,2BAAT,GAAuC;AACrC,QAAI7+G,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,aAA7B,CAAlB;;AACA,QAAID,WAAW,CAACib,SAAZ,EAAJ,EAA6B;AAC3B3B,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAAC6+F,WAA3B;AACD,KAFD,MAEO;AACLxlG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAAC6+F,WAA1B;AACD;AACF;;AAED,WAAS5B,mBAAT,GAA+B;AAC7B/mI,SAAK,CAACu+B,WAAN,CAAkB,UAAlB,EAA8BkoG,gBAA9B;AACAzmI,SAAK,CAACu+B,WAAN,CAAkB,WAAlB,EAA+B+pG,iBAA/B;AACA7B,oBAAgB;AAChB6B,qBAAiB;AAEjBtoI,SAAK,CAACu+B,WAAN,CAAkB,SAAlB,EAA6BooG,eAA7B;AACA3mI,SAAK,CAACu+B,WAAN,CAAkB,UAAlB,EAA8BiqG,gBAA9B;AACA7B,mBAAe;AACf6B,oBAAgB;AAEhBxoI,SAAK,CAACwpB,8BAAN,CAAqC,YAArC,EAAmDq9G,0BAAnD;AACAA,8BAA0B;AAC1B7mI,SAAK,CAACwpB,8BAAN,CAAqC,aAArC,EAAoDk/G,2BAApD;AACAA,+BAA2B;AAC5B;;AAED,SAAO5+F,IAAI,GAAG;AACZx5B,OAAG,EAAEta,CAAC,CAAC,uEAAD,CADM;AAGZ8rC,aAAS,EAAE,mBAASC,QAAT,EAAmBs4B,WAAnB,EAAgC;AACzCv0B,cAAQ,GAAGu0B,WAAW,IAAIv0B,QAA1B;AACA9lC,WAAK,GAAG+hC,QAAQ,IAAI/hC,KAApB;AAEA+mI,yBAAmB;AACpB,KARW;AAUZtoI,qBAAiB,EAAE,6BAAW;AAC5B,aAAO,OAAP;AACD,KAZW;AAcZ;AACAwsC,SAAK,EAAE,iBAAW;AAEhB,WAAK36B,GAAL,CAASoG,KAAT;AAEA8vH,uBAAiB,GAAG,IAAIlsF,iBAAJ,CAAsB;AACxCv9C,UAAE,EAAE,mBADoC;AAExCoW,aAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,gBAAP,CAFiC;AAGxCxI,aAAK,EAAEnP,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,EAA8CE,mBAA9C;AAHiC,OAAtB,CAApB;AAMAq+G,wBAAkB,GAAG,IAAI/tF,iBAAJ,CAAsB;AACzCv9C,UAAE,EAAE,qBADqC;AAEzCoW,aAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,gBAAP,CAFkC;AAGzCxI,aAAK,EAAEnP,KAAK,CAAC8pB,sBAAN,CAA6B,gBAA7B,EAA+CE,mBAA/C;AAHkC,OAAtB,CAArB;AAMA,UAAI4+G,KAAK,GAAG5yI,CAAC,CAAC,aAAD,CAAb;AAAA,UACE6yI,KAAK,GAAG7yI,CAAC,CAAC,aAAD,CADX;AAAA,UAEE8wI,UAAU,GAAGP,cAAc,CAACxxH,MAAf,CAAsB,KAAKzE,GAA3B,CAFf;AAAA,UAGEq4H,WAAW,GAAGP,eAAe,CAACrzH,MAAhB,CAAuB,KAAKzE,GAA5B,CAHhB;AAAA,UAIEo2H,WAAW,GAAG1wI,CAAC,CAAC,kBAAkBmiB,IAAI,CAACR,CAAL,CAAO,aAAP,CAAlB,GAA0C,iBAA3C,CAJjB;AAAA,UAKE4wH,YAAY,GAAGvyI,CAAC,CAAC,kBAAkBmiB,IAAI,CAACR,CAAL,CAAO,aAAP,CAAlB,GAA0C,iBAA3C,CALlB;AAAA,UAMEqvH,cAAc,GAAGR,iBAAiB,CAACzxH,MAAlB,EANnB;AAAA,UAOE+zH,eAAe,GAAGT,kBAAkB,CAACtzH,MAAnB,EAPpB;AASA+xH,gBAAU,CAACxoI,QAAX,CAAoB,kDAApB;AACAqqI,iBAAW,CAACrqI,QAAZ,CAAqB,kDAArB;AACAooI,iBAAW,CAACpoI,QAAZ,CAAqB,gDAArB;AACAiqI,kBAAY,CAACjqI,QAAb,CAAsB,gDAAtB;AACA0oI,oBAAc,CAAC1oI,QAAf,CAAwB,uDAAxB;AACAwqI,qBAAe,CAACxqI,QAAhB,CAAyB,uDAAzB;AAEA,WAAKgS,GAAL,CAAS1T,GAAT,CAAa,QAAb,EAAuB,CAAvB;AACA,WAAK0T,GAAL,CAASrS,MAAT,CAAgB2qI,KAAhB;AACA,WAAKt4H,GAAL,CAASrS,MAAT,CAAgB4qI,KAAhB;AACAD,WAAK,CAAC3qI,MAAN,CAAa6oI,UAAb;AACA8B,WAAK,CAAC3qI,MAAN,CAAa+oI,cAAb;AACA4B,WAAK,CAAC3qI,MAAN,CAAayoI,WAAb;AACAmC,WAAK,CAAC5qI,MAAN,CAAa0qI,WAAb;AACAE,WAAK,CAAC5qI,MAAN,CAAa6qI,eAAb;AACAD,WAAK,CAAC5qI,MAAN,CAAasqI,YAAb;AAEA,WAAK7B,WAAL,GAAmBA,WAAnB;AACA,WAAK6B,YAAL,GAAoBA,YAApB;AACA,WAAKzB,UAAL,GAAkBA,UAAlB;AACA,WAAK6B,WAAL,GAAmBA,WAAnB;AAEAnC,uBAAiB,CAAClmI,MAAlB;AACA+nI,wBAAkB,CAAC/nI,MAAnB;AAEAymI,yBAAmB;AAEnBL,iBAAW,CAACh4H,EAAZ,CAAe,OAAf,EAAwB,QAAxB,EAAkC,YAAW;AAC3C1O,aAAK,CAAComI,IAAN;AACD,OAFD;AAGAmC,kBAAY,CAAC75H,EAAb,CAAgB,OAAhB,EAAyB,QAAzB,EAAmC,YAAW;AAC5C1O,aAAK,CAACmoI,KAAN;AACD,OAFD;AAGD,KAzEW;AA2EZlB,8BAA0B,EAAE,sCAAW;AACrC,UAAIC,YAAJ;;AAEA,UAAI,CAAC,KAAKC,qBAAV,EAAiC;AAC/BD,oBAAY,GAAGlxI,CAAC,CAAC,QAAD,CAAD,CACZya,IADY,CACP,IADO,EACD,oBADC,CAAf;AAGA,aAAK02H,qBAAL,GAA6BnxI,CAAC,CAAC,QAAD,CAAD,CAC1Bya,IAD0B,CACrB,IADqB,EACf,8BADe,EAE1B7T,GAF0B,CAEtB,QAFsB,EAEZ5G,CAAC,CAAC,MAAD,CAAD,CAAUyG,MAAV,KAAqB,CAArB,GAAyB,EAAzB,GAA8BzG,CAAC,CAAC,yBAAD,CAAD,CAA6Bmf,MAA7B,GAAsCpZ,GAFxD,EAG1BkC,MAH0B,CAGnB,wBAAwBka,IAAI,CAACR,CAAL,CAAO,uBAAP,CAAxB,GAA0D,QAHvC,EAI1B1Z,MAJ0B,CAInBipI,YAJmB,EAK1BjqI,QAL0B,CAKjB,yBALiB,CAA7B;AAOAiqI,oBAAY,CAACE,WAAb,CAAyB;AACvBj2I,eAAK,EAAE;AADgB,SAAzB;AAGD;;AAED,WAAKg2I,qBAAL,CAA2Bv6E,IAA3B;AACD,KA/FW;AAiGZy6E,8BAA0B,EAAE,sCAAW;AACrC,WAAKF,qBAAL,CAA2Bt6E,IAA3B;AACD,KAnGW;AAqGZvsD,UAAM,EAAE,kBAAW;AACjB,UAAIkmI,iBAAJ,EAAuB;AACrBA,yBAAiB,CAAClmI,MAAlB;AACD;;AAED,UAAI+nI,kBAAJ,EAAwB;AACtBA,0BAAkB,CAAC/nI,MAAnB;AACD;AACF,KA7GW;AA+GZsvB,WAAO,EAAE,mBAAW,CAAE,CA/GV;AAiHZ04B,YAAQ,EAAE,oBAAW,CAAE,CAjHX;AAmHZ1M,eAAW,EAAE,qBAASzsC,KAAT,EAAgB;AAC3Bq3H,uBAAiB,CAAC5qF,WAAlB,CAA8BzsC,KAA9B;;AACA,UAAInP,KAAK,CAACwb,UAAN,CAAiB8rH,aAAjB,IAAkC,IAAtC,EAA4C;AAC1Cd,yBAAiB,CAAC3qF,SAAlB;AACD;AACF,KAxHW;AA0HZktF,gBAAY,EAAE,sBAAS55H,KAAT,EAAgB;AAC5Bk5H,wBAAkB,CAACzsF,WAAnB,CAA+BzsC,KAA/B;;AACA,UAAInP,KAAK,CAACwb,UAAN,CAAiBwtH,cAAjB,IAAmC,IAAvC,EAA6C;AAC3CX,0BAAkB,CAACxsF,SAAnB;AACD;AACF,KA/HW;AAiIZ3lC,UAAM,EAAE,kBAAW;AACjB,UAAIlW,KAAK,CAACwb,UAAN,CAAiB8rH,aAAjB,IAAkC,IAAtC,EAA4C;AAC1Cd,yBAAiB,CAACtwH,MAAlB,CAAyB,EAAzB;AACAswH,yBAAiB,CAAC3qF,SAAlB;AACD,OAHD,MAGO;AACL2qF,yBAAiB,CAACtwH,MAAlB,CAAyBzC,MAAM,CAACzT,KAAK,CAACwb,UAAN,CAAiB8rH,aAAlB,CAA/B;AACAd,yBAAiB,CAAC1qF,SAAlB;AACD;;AAED,UAAI97C,KAAK,CAACwb,UAAN,CAAiBwtH,cAAjB,IAAmC,IAAvC,EAA6C;AAC3CX,0BAAkB,CAACnyH,MAAnB,CAA0B,EAA1B;AACAmyH,0BAAkB,CAACxsF,SAAnB;AACD,OAHD,MAGO;AACLwsF,0BAAkB,CAACnyH,MAAnB,CAA0BzC,MAAM,CAACzT,KAAK,CAACwb,UAAN,CAAiBwtH,cAAlB,CAAhC;AACAX,0BAAkB,CAACvsF,SAAnB;AACD;AACF;AAjJW,GAAd;AAmJD;AAAA,C;;AChRA;;;;;;;;;AAWc,SAASmtF,sBAAT,CAAgCl5H,MAAhC,EAAwC;AACrD,SAAO;AACL;;;;;;;;;;;;;AAaAoxH,cAAU,EAAE,SAASA,UAAT,CAAoBxhI,OAApB,EAA6B;AACvCoQ,YAAM,CAAC8xB,aAAP,CAAqBs/F,UAArB,CAAgCxhI,OAAhC;AACD;AAhBI,GAAP;AAkBD;AAAA,C;;AC7BD;AACA;AACA;CAEA;;AAEe,qEAASmmC,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,MAAI2I,UAAU,GAAG,IAAIstC,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACf3R,yBADe,EACR6nD,gBADQ,EACQh9B,sBADR,CAAjB,CADqE,CAIrE;AACA;;AAEA,WAASsqG,mBAAT,GAA+B;AAC7B,QAAI/mI,KAAK,GAAGksB,UAAU,CAAClsB,KAAvB;AAEAA,SAAK,CAACu+B,WAAN,CAAkB,sBAAlB,EAA0C,YAAW;AACnD,UAAIuL,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;;AAEA,UAAI9+B,KAAK,CAACwb,UAAN,CAAiB4nH,oBAArB,EAA2C;AACzCt5F,YAAI,CAACm9F,0BAAL;AACD,OAFD,MAEO;AACLn9F,YAAI,CAACu9F,0BAAL;AACD;AACF,KARD;AAUArnI,SAAK,CAACu+B,WAAN,CAAkB,eAAlB,EAAmC,YAAW;AAC5C;AACA,UAAIv+B,KAAK,CAACk6B,SAAN,EAAJ,EAAuB;AACrBhO,kBAAU,CAAC0uC,UAAX;AACD;AACF,KALD;AAOA56D,SAAK,CAACu+B,WAAN,CAAkB,gBAAlB,EAAoC,YAAW;AAC7C;AACA,UAAIv+B,KAAK,CAACk6B,SAAN,EAAJ,EAAuB;AACrBhO,kBAAU,CAAC0uC,UAAX;AACD;AACF,KALD;AAOA56D,SAAK,CAACu+B,WAAN,CAAkB,aAAlB,EAAiC,YAAW;AAC1C,UAAIv+B,KAAK,CAACwb,UAAN,CAAiBwnH,WAArB,EAAkC;AAChCz/G,6BAAqB,CAAC0c,WAAtB;AACD;AACF,KAJD,EA3B6B,CAiC7B;;AACAjgC,SAAK,CAACwpB,8BAAN,CAAqC,eAArC,EAAsD,YAAW;AAC/D,UAAIK,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,CAAlB;AACA,UAAIggB,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;AAEAgL,UAAI,CAAC8R,WAAL,CAAiB/xB,WAAW,CAACG,mBAAZ,EAAjB;AACD,KALD;AAOAhqB,SAAK,CAACwpB,8BAAN,CAAqC,gBAArC,EAAuD,YAAW;AAChE,UAAIK,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,gBAA7B,CAAlB;AACA,UAAIggB,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;AAEAgL,UAAI,CAACi/F,YAAL,CAAkBl/G,WAAW,CAACG,mBAAZ,EAAlB;AACD,KALD;AAMD;;AAEDzG,uBAAqB,CAAC7U,EAAtB,CAAyB,0CAAzB,EAAqEq4H,mBAArE;AAEAxjH,uBAAqB,CAAC7U,EAAtB,CAAyB,yCAAzB,EAAoE,YAAW;AAC7Ewd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,KAA3C;AACD,GAFD;AAIA4vB,uBAAqB,CAAC7U,EAAtB,CAAyB,gBAAzB,EAA2C,YAAW;AACpDwd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,IAA3C;AACD,GAFD;AAIA,SAAOu4B,UAAP;AACD;AAAA,C;;ACzEc;AACbrpB,gBAAc,EAAE;AACd5K,QAAI,EAAE;AACJnC,kBAAY,EAAE,uBADV;AAEJd,eAAS,EAAE;AAFP,KADQ;AAKdusI,aAAS,EAAE;AACTzrI,kBAAY,EAAE;AADL,KALG;AAQd2xI,cAAU,EAAE;AACV3xI,kBAAY,EAAE;AADJ,KARE;AAWd4xI,YAAQ,EAAE;AACR5xI,kBAAY,EAAE;AADN,KAXI;AAcdozI,cAAU,EAAE;AACVpzI,kBAAY,EAAE;AADJ,KAdE;AAiBd6xI,qBAAiB,EAAE;AACjB7xI,kBAAY,EAAE;AADG,KAjBL;AAoBd4O,eAAW,EAAE;AACX5O,kBAAY,EAAE,OADH;AAEXsN,wBAAkB,EAAE,KAFT;AAGXnO,cAAQ,EAAE,kBAAS9D,KAAT,EAAgB;AACxB,YAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,KAA5B,IAAqCA,KAAK,KAAK,OAAnD,EAA4D;AAC1D,iBAAOA,KAAP;AACD;;AACD,cAAM,IAAIF,KAAJ,CAAU,kCAAkCE,KAA5C,CAAN;AACD;AARU,KApBC;AA8BdwT,qBAAiB,EAAE;AACjB7O,kBAAY,EAAE,EADG;AAEjBsN,wBAAkB,EAAE;AAFH;AA9BL,GADH;AAoCbyB,aAAW,EAAE;AACXQ,aAAS,EAAE;AACTvP,kBAAY,EAAE,IADL;AAETN,+BAAyB,EAAE;AAFlB,KADA;AAKXyR,kBAAc,EAAE;AACdnR,kBAAY,EAAE,YADA;AAEdN,+BAAyB,EAAE;AAFb,KALL;AASX0R,sBAAkB,EAAE;AAClBpR,kBAAY,EAAE,OADI;AAElBN,+BAAyB,EAAE,KAFT;AAGlBK,eAAS,EAAE;AAHO;AATT;AApCA,CAAf,E;;ACAA;AACA;AACA;AACA;AACA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,SAASszI,YAAT,CAAsB5f,MAAtB,EAA8B;AAC5B,MAAI14G,IAAI,GAAG,IAAX;AAEA,OAAK04G,MAAL,GAAcA,MAAd;AACA,OAAK6f,YAAL,GAAoB,IAApB;AAEAz3I,QAAM,CAAC2b,IAAP,CAAYi8G,MAAZ,EAAoBh8G,OAApB,CAA4B,UAASC,GAAT,EAAc;AACxC,QAAI8qB,KAAK,GAAGixF,MAAM,CAAC/7G,GAAD,CAAlB,CADwC,CAExC;;AACA,QAAI8qB,KAAK,CAACtgC,IAAN,KAAe1H,SAAf,IAA4BgoC,KAAK,CAACtgC,IAAN,KAAewV,GAA/C,EAAoD;AAClD,YAAM,IAAIvc,KAAJ,CAAU,WAAWuc,GAAX,GAAiB,kEAA3B,CAAN;AACD;;AACD8qB,SAAK,CAACtgC,IAAN,GAAawV,GAAb;;AAEA,QAAI8qB,KAAK,CAAC+wG,SAAN,KAAoB/4I,SAAxB,EAAmC;AACjC,YAAM,IAAIW,KAAJ,CAAU,WAAWuc,GAAX,GAAiB,4EAA3B,CAAN;AACD;;AACD8qB,SAAK,CAAC+wG,SAAN,GAAkB,UAASC,WAAT,EAAsB;AACtC,UAAI,SAASz4H,IAAI,CAACu4H,YAAlB,EAAgC;AAC9B,cAAM,IAAIn4I,KAAJ,CAAU,mCAAmC,KAAK+G,IAAxC,GAA+C,4BAAzD,EAAuF6Y,IAAI,CAAC04H,mBAAL,EAAvF,CAAN;AACD,OAHqC,CAItC;;;AACA14H,UAAI,CAACw4H,SAAL,CAAeC,WAAf;AACD,KAND;AAQD,GAnBD;AAoBD;;AAGDH,YAAY,CAACv3I,SAAb,CAAuB23I,mBAAvB,GAA6C,YAAW;AACtD,MAAI,KAAKH,YAAT,EAAuB;AACrB,WAAO,KAAKA,YAAL,CAAkBpxI,IAAzB;AACD,GAFD,MAEO;AACL,WAAO,YAAP;AACD;AACF,CAND;;AASAmxI,YAAY,CAACv3I,SAAb,CAAuBy3I,SAAvB,GAAmC,UAASC,WAAT,EAAsB;AACvD,MAAIE,OAAO,GAAG,KAAKjgB,MAAL,CAAY+f,WAAZ,CAAd;;AACA,MAAI,CAACE,OAAL,EAAc;AACZ,UAAM,IAAIv4I,KAAJ,CAAU,0CAA0Cq4I,WAA1C,GAAwD,4BAAlE,CAAN;AACD;;AAED,MAAI,KAAKF,YAAL,IAAqB,OAAO,KAAKA,YAAL,CAAkBK,UAAzB,KAAwC,UAAjE,EAA6E;AAC3E,SAAKL,YAAL,CAAkBK,UAAlB;AACD;;AAED,OAAKL,YAAL,GAAoBI,OAApB;;AAEA,MAAI,OAAO,KAAKJ,YAAL,CAAkBM,UAAzB,KAAwC,UAA5C,EAAwD;AACtD,SAAKN,YAAL,CAAkBM,UAAlB;AACD;AACF,CAfD;;AAkBAP,YAAY,CAACv3I,SAAb,CAAuB+3I,WAAvB,GAAqC,UAAS9jH;AAAU;AAAnB,EAAyC;AAC5E,MAAI+jH,SAAS,GAAGp5I,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,CAAhB;;AAEA,MAAI,OAAO,KAAK+zI,YAAL,CAAkBvjH,SAAlB,CAAP,KAAwC,UAA5C,EAAwD;AACtD,SAAKujH,YAAL,CAAkBvjH,SAAlB,EAA6BlzB,KAA7B,CAAmC,KAAKy2I,YAAxC,EAAsDQ,SAAtD;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD,CARD;;AAWeT,8DAAf,E;;;;;;ACvHe;AACbh6H,OAAK,EAAE;AACL9O,QAAI,EAAE;AACJrI,UAAI,EAAE,QADF;AAEJgoE,gBAAU,EAAE,SAFR;AAGJC,YAAM,EAAE;AAHJ;AADD;AADM,CAAf,E;;ACAA;AACe,gFAAS9nD,IAAT,EAAe;AAC5B,SAAO;AACL,WAAO;AACL,oBAAcA,IAAI,CAACR,CAAL,CAAO,oBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,iCAAP,CAFd;AAGL,yBAAmB,aAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KADF;AASL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,qBAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFhB;AAGH,yBAAmB,UAHhB;AAIH,kBAAY,IAJT;AAKH,oBAAc,CAAC,GALZ;AAMH,oBAAc;AANX,KATA;AAiBL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,kCAAP,CAFb;AAGN,yBAAmB,cAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,CAAC,IALT;AAMN,oBAAc;AANR,KAjBH;AAyBL,aAAS;AACP,oBAAcQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CADP;AAEP,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,kCAAP,CAFZ;AAGP,yBAAmB,cAHZ;AAIP,kBAAY,IAJL;AAKP,oBAAc,CAAC,IALR;AAMP,oBAAc;AANP,KAzBJ;AAiCL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,kCAAP,CAFhB;AAGH,yBAAmB,cAHhB;AAIH,kBAAY,IAJT;AAKH,oBAAc,CAAC,GALZ;AAMH,oBAAc;AANX,KAjCA;AAyCL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,kCAAP,CAFb;AAGN,yBAAmB,cAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,CAAC,IALT;AAMN,oBAAc;AANR,KAzCH;AAiDL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,+BAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,sCAAP,CAFb;AAGN,yBAAmB,IAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,GALR;AAMN,oBAAc;AANR,KAjDH;AAyDL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,uBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFd;AAGL,yBAAmB,UAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAzDF;AAiEL,aAAS;AACP,oBAAcQ,IAAI,CAACR,CAAL,CAAO,uBAAP,CADP;AAEP,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFZ;AAGP,yBAAmB,UAHZ;AAIP,kBAAY,IAJL;AAKP,oBAAc,GALP;AAMP,oBAAc;AANP,KAjEJ;AAyEL,aAAS;AACP,oBAAcQ,IAAI,CAACR,CAAL,CAAO,uBAAP,CADP;AAEP,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFZ;AAGP,yBAAmB,UAHZ;AAIP,kBAAY,IAJL;AAKP,oBAAc,GALP;AAMP,oBAAc;AANP,KAzEJ;AAiFL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,uBAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFb;AAGN,yBAAmB,UAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,GALR;AAMN,oBAAc;AANR,KAjFH;AAyFL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,uBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFd;AAGL,yBAAmB,UAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAzFF;AAiGL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,uBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFd;AAGL,yBAAmB,UAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAjGF;AAyGL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,uBAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFb;AAGN,yBAAmB,UAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,GALR;AAMN,oBAAc;AANR,KAzGH;AAiHL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CAFf;AAGJ,yBAAmB,QAHf;AAIJ,kBAAY,KAJR;AAKJ,oBAAc,CAAC,IALX;AAMJ,oBAAc;AANV,KAjHD;AAyHL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,sBAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,+BAAP,CAFhB;AAGH,yBAAmB,WAHhB;AAIH,kBAAY,IAJT;AAKH,oBAAc,CAAC,IALZ;AAMH,oBAAc;AANX,KAzHA;AAiIL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,iBAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,wBAAP,CAFf;AAGJ,yBAAmB,IAHf;AAIJ,kBAAY,KAJR;AAKJ,oBAAc,GALV;AAMJ,oBAAc;AANV,KAjID;AAyIL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,sBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CAFd;AAGL,yBAAmB,KAHd;AAIL,kBAAY,KAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAzIF;AAiJL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,sBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CAFd;AAGL,yBAAmB,KAHd;AAIL,kBAAY,KAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAjJF;AAyJL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,sBAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CAFhB;AAGH,yBAAmB,KAHhB;AAIH,kBAAY,KAJT;AAKH,oBAAc,GALX;AAMH,oBAAc;AANX,KAzJA;AAiKL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,0BAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,mCAAP,CAFf;AAGJ,yBAAmB,eAHf;AAIJ,kBAAY,KAJR;AAKJ,oBAAc,GALV;AAMJ,oBAAc;AANV,KAjKD;AAyKL,aAAS;AACP,oBAAcQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CADP;AAEP,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,kCAAP,CAFZ;AAGP,yBAAmB,cAHZ;AAIP,kBAAY,IAJL;AAKP,oBAAc,GALP;AAMP,oBAAc;AANP,KAzKJ;AAiLL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,kCAAP,CAFb;AAGN,yBAAmB,cAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,GALR;AAMN,oBAAc;AANR,KAjLH;AAyLL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,sBAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,6BAAP,CAFhB;AAGH,yBAAmB,SAHhB;AAIH,kBAAY,IAJT;AAKH,oBAAc,CAAC,GALZ;AAMH,oBAAc;AANX,KAzLA;AAiML,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,sBAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,6BAAP,CAFf;AAGJ,yBAAmB,SAHf;AAIJ,kBAAY,IAJR;AAKJ,oBAAc,GALV;AAMJ,oBAAc;AANV,KAjMD;AAyML,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,0BAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,iCAAP,CAFf;AAGJ,yBAAmB,aAHf;AAIJ,kBAAY,KAJR;AAKJ,oBAAc,GALV;AAMJ,oBAAc;AANV,KAzMD;AAiNL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,0BAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,iCAAP,CAFb;AAGN,yBAAmB,aAHb;AAIN,kBAAY,KAJN;AAKN,oBAAc,GALR;AAMN,oBAAc;AANR,KAjNH;AAyNL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,0BAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,iCAAP,CAFf;AAGJ,yBAAmB,aAHf;AAIJ,kBAAY,KAJR;AAKJ,oBAAc,IALV;AAMJ,oBAAc;AANV,KAzND;AAiOL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,0BAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,iCAAP,CAFb;AAGN,yBAAmB,aAHb;AAIN,kBAAY,KAJN;AAKN,oBAAc,IALR;AAMN,oBAAc;AANR,KAjOH;AAyOL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,0BAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,iCAAP,CAFhB;AAGH,yBAAmB,aAHhB;AAIH,kBAAY,KAJT;AAKH,oBAAc,KALX;AAMH,oBAAc;AANX,KAzOA;AAiPL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,oBAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFhB;AAGH,yBAAmB,OAHhB;AAIH,kBAAY,IAJT;AAKH,oBAAc,CAAC,IALZ;AAMH,oBAAc;AANX,KAjPA;AAyPL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,oBAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFf;AAGJ,yBAAmB,OAHf;AAIJ,kBAAY,IAJR;AAKJ,oBAAc,CAAC,IALX;AAMJ,oBAAc;AANV,KAzPD;AAiQL,UAAM;AACJ,oBAAc,IADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,+BAAP,CAFf;AAGJ,yBAAmB,WAHf;AAIJ,kBAAY,IAJR;AAKJ,oBAAc,CAAC,KALX;AAMJ,oBAAc;AANV,KAjQD;AAyQL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,qBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFd;AAGL,yBAAmB,UAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,CAAC,GALV;AAML,oBAAc;AANT,KAzQF;AAiRL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFb;AAGN,yBAAmB,OAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,GALR;AAMN,oBAAc;AANR,KAjRH;AAyRL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,qBAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFf;AAGJ,yBAAmB,UAHf;AAIJ,kBAAY,IAJR;AAKJ,oBAAc,GALV;AAMJ,oBAAc;AANV,KAzRD;AAiSL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,+BAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFf;AAGJ,yBAAmB,OAHf;AAIJ,kBAAY,IAJR;AAKJ,oBAAc,GALV;AAMJ,oBAAc;AANV,KAjSD;AAySL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CAFhB;AAGH,yBAAmB,QAHhB;AAIH,kBAAY,KAJT;AAKH,oBAAc,GALX;AAMH,oBAAc;AANX,KAzSA;AAiTL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,6BAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,oCAAP,CAFf;AAGJ,yBAAmB,gBAHf;AAIJ,kBAAY,IAJR;AAKJ,oBAAc,CAAC,GALX;AAMJ,oBAAc;AANV,KAjTD;AAyTL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,6BAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,oCAAP,CAFhB;AAGH,yBAAmB,gBAHhB;AAIH,kBAAY,IAJT;AAKH,oBAAc,CAAC,IALZ;AAMH,oBAAc;AANX,KAzTA;AAiUL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFd;AAGL,yBAAmB,OAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,CAAC,IALV;AAML,oBAAc;AANT,KAjUF;AAyUL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFhB;AAGH,yBAAmB,OAHhB;AAIH,kBAAY,IAJT;AAKH,oBAAc,CAAC,MALZ;AAMH,oBAAc;AANX,KAzUA;AAiVL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,qCAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFf;AAGJ,yBAAmB,UAHf;AAIJ,kBAAY,IAJR;AAKJ,oBAAc,GALV;AAMJ,oBAAc;AANV,KAjVD;AAyVL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,0BAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,iCAAP,CAFf;AAGJ,yBAAmB,aAHf;AAIJ,kBAAY,IAJR;AAKJ,oBAAc,IALV;AAMJ,oBAAc;AANV,KAzVD;AAiWL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,0BAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,iCAAP,CAFd;AAGL,yBAAmB,aAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,IALT;AAML,oBAAc;AANT,KAjWF;AAyWL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,gCAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,+BAAP,CAFd;AAGL,yBAAmB,WAHd;AAIL,kBAAY,KAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAzWF;AAiXL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,gCAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,yCAAP,CAFd;AAGL,yBAAmB,qBAHd;AAIL,kBAAY,KAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAjXF;AAyXL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,gCAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,yCAAP,CAFb;AAGN,yBAAmB,qBAHb;AAIN,kBAAY,KAJN;AAKN,oBAAc,GALR;AAMN,oBAAc;AANR,KAzXH;AAiYL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,+BAAP,CAFd;AAGL,yBAAmB,WAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,CAAC,GALV;AAML,oBAAc;AANT,KAjYF;AAyYL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,+BAAP,CAFb;AAGN,yBAAmB,WAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,CAAC,MALT;AAMN,oBAAc;AANR,KAzYH;AAiZL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,wBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,+BAAP,CAFd;AAGL,yBAAmB,WAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAjZF;AAyZL,aAAS;AACP,oBAAcQ,IAAI,CAACR,CAAL,CAAO,wBAAP,CADP;AAEP,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,kCAAP,CAFZ;AAGP,yBAAmB,cAHZ;AAIP,kBAAY,IAJL;AAKP,oBAAc,GALP;AAMP,oBAAc;AANP,KAzZJ;AAiaL,UAAM;AACJ,oBAAcQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CADV;AAEJ,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,4BAAP,CAFf;AAGJ,yBAAmB,QAHf;AAIJ,kBAAY,KAJR;AAKJ,oBAAc,GALV;AAMJ,oBAAc;AANV,KAjaD;AAyaL,SAAK;AACH,oBAAcQ,IAAI,CAACR,CAAL,CAAO,uBAAP,CADX;AAEH,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,8BAAP,CAFhB;AAGH,yBAAmB,UAHhB;AAIH,kBAAY,IAJT;AAKH,oBAAc,CAAC,KALZ;AAMH,oBAAc;AANX,KAzaA;AAibL,WAAO;AACL,oBAAcQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CADT;AAEL,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFd;AAGL,yBAAmB,OAHd;AAIL,kBAAY,IAJP;AAKL,oBAAc,GALT;AAML,oBAAc;AANT,KAjbF;AAybL,YAAQ;AACN,oBAAcQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CADR;AAEN,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFb;AAGN,yBAAmB,OAHb;AAIN,kBAAY,IAJN;AAKN,oBAAc,GALR;AAMN,oBAAc;AANR,KAzbH;AAicL,aAAS;AACP,oBAAcQ,IAAI,CAACR,CAAL,CAAO,yBAAP,CADP;AAEP,yBAAmBQ,IAAI,CAACR,CAAL,CAAO,2BAAP,CAFZ;AAGP,yBAAmB,OAHZ;AAIP,kBAAY,IAJL;AAKP,oBAAc,GALP;AAMP,oBAAc;AANP;AAjcJ,GAAP;AA0cD;AAAA,C;;AC3cD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGe,SAAS/F,mCAAT,CAAekzD,iBAAf,EAAkCyzB,GAAlC,EAAuC;AACpD,MAAIpgF,IAAI,GAAGogF,GAAG,CAACpgF,IAAf;AAAA,MACE4qH,QAAQ,GAAG,IAAIH,sBAAJ,CAAazqH,IAAb,CADb;AAAA,MAGEspF,eAHF;AAAA,MAIEtgC,eAJF;AAAA,MAKEx6C,QALF;AAAA,MAMEkjH,YANF;AAAA,MAOEC,wBAPF;AAAA,MAQEC,UARF;AAAA,MASEC,UATF;AAAA,MAUEC,WAVF;AAAA,MAWEC,cAXF;AAAA,MAYEC,eAZF;AAAA,MAaEtI,UAbF;AAAA,MAcEuI,WAdF;AAAA,MAeElwG,UAfF;AAAA,MAgBE8oG,WAhBF;AAAA,MAiBE3iI,IAjBF;AAAA,MAkBEkjI,cAlBF;AAAA,MAmBEqE,eAnBF;AAAA,MAoBEyC,eApBF;AAAA,MAqBEC,gBArBF;AAAA,MAsBEthH,YAtBF;AAAA,MAuBEwkC,UAvBF;AAAA,MAwBEo5E,OAxBF;AAAA,MAyBE6B,QAzBF;AAAA,MA0BE8B,UA1BF;AAAA,MA2BEC,kBA3BF;AAAA,MA4BE9G,gBA5BF;AAAA,MA6BEoE,iBA7BF;AAAA,MA8BEzzI,OA9BF;AAAA,MA+BEo2I,YA/BF;AAAA,MAgCEC,YAhCF;AAAA,MAiCE3/B,8BAjCF;AAAA,MAkCE/qG,KAlCF;;AAoCA,MAAI2qI,+BAA+B,GAAG;AACpCx3H,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,oCAAP,CAD6B;AAEpC0D,oBAAgB,EAAE,GAFkB;AAGpC5H,UAAM,EAAE,KAH4B;AAIpC/gB,OAAG,EAAE,CAJ+B;AAKpCD,OAAG,EAAE;AAL+B,GAAtC;AAOA,MAAI+uI,iBAAiB,GAAGqC,iCAAoB,CAAC1rH,IAAD,CAA5C;;AAEA,WAAS2rH,mBAAT,CAA6BhoH,QAA7B,EAAuCppB,GAAvC,EAA4CD,GAA5C,EAAiD;AAC/C,QAAI+sE,eAAJ;AACA,QAAI31C,WAAJ;AAEA21C,mBAAe,GAAGx/D,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,EAAuCykD,OAAvC,EAAlB;AACAf,mBAAe,CAAC9sE,GAAhB,GAAsBA,GAAtB;AACA8sE,mBAAe,CAAC/sE,GAAhB,GAAsBA,GAAtB;AAEAo3B,eAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,gBAAxB,EAAyC5B,eAAzC,CAAd;AACA2B,mBAAe,CAACzD,sBAAhB,CAAuC5hD,QAAvC,EAAiD+N,WAAjD;AACD,GAxDmD,CA0DpD;;;AACA,WAASk6G,sBAAT,GAAkC;AAChC,QAAI/jI,KAAK,CAACwb,UAAN,CAAiByyC,cAAjB,KAAoC,IAApC,IAA4CjuD,KAAK,CAACwb,UAAN,CAAiByyC,cAAjB,KAAoClvD,QAApF,EAA8F;AAC5F;AACD;;AACD+kI,uBAAmB,CAAC,aAAD,EAAgB,CAAhB,EAAmB9jI,KAAK,CAACwb,UAAN,CAAiByyC,cAApC,CAAnB;AACD;;AAED,WAAS28E,2BAAT,GAAuC;AACrC,QAAIrF,gBAAJ;AACA,QAAI17G,WAAJ;;AAEA,QAAImgH,UAAJ,EAAgB;AACdzE,sBAAgB,GAAG/D,iBAAiB,CAACwI,UAAU,CAAC76H,KAAZ,CAApC;;AAEA,UAAIo2H,gBAAJ,EAAsB;AACpB17G,mBAAW,GAAG;AACZ1W,eAAK,EAAEoyH,gBAAgB,CAAC3D,eADZ;AAEZnuH,gBAAM,EAAE,KAFI;AAGZ/gB,aAAG,EAAE6yI,gBAAgB,CAACQ,UAHV;AAIZtzI,aAAG,EAAE8yI,gBAAgB,CAACS;AAJV,SAAd;;AAMA,YAAI5kE,gBAAe,CAACjyD,KAAhB,CAAsBo2H,gBAAgB,CAACC,eAAvC,CAAJ,EAA6D;AAC3D37G,qBAAW,CAAC5mB,QAAZ,GAAuBsiI,gBAAgB,CAACC,eAAxC;AACD,SAFD,MAEO;AACL37G,qBAAW,CAACxO,gBAAZ,GAA+B2uH,UAAU,CAAC76H,KAA1C;AACD;;AACDu0H,wBAAgB,GAAG6B,gBAAgB,CAACG,QAApC;AACA7D,kBAAU,GAAG0D,gBAAgB,CAAC1D,UAAjB,IAAgCmI,UAAU,CAAC76H,KAAX,GAAmB,GAAnB,GAAyBgJ,IAAI,CAACR,CAAL,CAAO,qBAAP,CAAtE;AACD,OAdD,MAcO;AACLkS,mBAAW,GAAG;AACZ1W,eAAK,EAAE62H,UAAU,CAAChyI,IAAX,IAAmBmgB,IAAI,CAACR,CAAL,CAAO,oCAAP,CADd;AAEZ0D,0BAAgB,EAAE2uH,UAAU,CAAC76H,KAFjB;AAGZsE,gBAAM,EAAE,KAHI;AAIZ/gB,aAAG,EAAE,CAJO;AAKZD,aAAG,EAAE;AALO,SAAd;AAOAixI,wBAAgB,GAAG,IAAnB;AACA7B,kBAAU,GAAGmI,UAAU,CAAC76H,KAAX,GAAmB,GAAnB,GAAyBgJ,IAAI,CAACR,CAAL,CAAO,qBAAP,CAAtC;AACD;AACF,KA5BD,MA4BO;AACLkS,iBAAW,GAAG8gH,+BAAd;AACAjH,sBAAgB,GAAG,KAAnB;AACA7B,gBAAU,GAAG1pH,IAAI,CAACR,CAAL,CAAO,wBAAP,CAAb;AACD;;AAEDwpD,mBAAe,CAACzD,sBAAhB,CAAuC,eAAvC,EACE,IAAI4B,oBAAJ,CAAwB8B,gBAAxB,EAAyCv3C,WAAzC,CADF;AAEAs3C,mBAAe,CAACzD,sBAAhB,CAAuC,mBAAvC,EACE,IAAI4B,oBAAJ,CAAwB8B,gBAAxB,EAAyCv3C,WAAzC,CADF;AAED;;AAED,WAASghH,4BAAT,GAAwC;AACtC,QAAItF,gBAAJ;AACA,QAAI17G,WAAJ;;AAEA,QAAIogH,WAAJ,EAAiB;AACf1E,sBAAgB,GAAG/D,iBAAiB,CAACyI,WAAW,CAAC96H,KAAb,CAApC;;AAEA,UAAIo2H,gBAAJ,EAAsB;AACpB17G,mBAAW,GAAG;AACZ1W,eAAK,EAAEoyH,gBAAgB,CAAC3D,eADZ;AAEZnuH,gBAAM,EAAE,KAFI;AAGZ/gB,aAAG,EAAE6yI,gBAAgB,CAACQ,UAHV;AAIZtzI,aAAG,EAAE8yI,gBAAgB,CAACS;AAJV,SAAd;;AAMA,YAAI5kE,gBAAe,CAACjyD,KAAhB,CAAsBo2H,gBAAgB,CAACC,eAAvC,CAAJ,EAA6D;AAC3D37G,qBAAW,CAAC5mB,QAAZ,GAAuBsiI,gBAAgB,CAACC,eAAxC;AACD,SAFD,MAEO;AACL37G,qBAAW,CAACxO,gBAAZ,GAA+B4uH,WAAW,CAAC96H,KAA3C;AACD;;AACD24H,yBAAiB,GAAGvC,gBAAgB,CAACG,QAArC;AACA0E,mBAAW,GAAG7E,gBAAgB,CAAC1D,UAAjB,IAAgCmI,UAAU,CAAC76H,KAAX,GAAmB,GAAnB,GAAyBgJ,IAAI,CAACR,CAAL,CAAO,qBAAP,CAAvE;AACD,OAdD,MAcO;AACLkS,mBAAW,GAAG;AACZ1W,eAAK,EAAE82H,WAAW,CAACjyI,IAAZ,IAAoBmgB,IAAI,CAACR,CAAL,CAAO,oCAAP,CADf;AAEZ0D,0BAAgB,EAAE4uH,WAAW,CAAC96H,KAFlB;AAGZsE,gBAAM,EAAE,KAHI;AAIZ/gB,aAAG,EAAE,CAJO;AAKZD,aAAG,EAAE;AALO,SAAd;AAOAq1I,yBAAiB,GAAG,IAApB;AACAsC,mBAAW,GAAGH,WAAW,CAAC96H,KAAZ,GAAoB,GAApB,GAA0BgJ,IAAI,CAACR,CAAL,CAAO,qBAAP,CAAxC;AACD;AACF,KA5BD,MA4BO;AACLkS,iBAAW,GAAG8gH,+BAAd;AACA7C,uBAAiB,GAAG,KAApB;AACAsC,iBAAW,GAAGjyH,IAAI,CAACR,CAAL,CAAO,wBAAP,CAAd;AACD;;AAEDwpD,mBAAe,CAACzD,sBAAhB,CAAuC,gBAAvC,EACE,IAAI4B,oBAAJ,CAAwB8B,gBAAxB,EAAyCv3C,WAAzC,CADF;AAEAs3C,mBAAe,CAACzD,sBAAhB,CAAuC,oBAAvC,EACE,IAAI4B,oBAAJ,CAAwB8B,gBAAxB,EAAyCv3C,WAAzC,CADF;AAED;;AAED,WAASs7G,wBAAT,GAAoC;AAClCjrG,cAAS,GAAG,IAAZ;AACAqwG,cAAU,GAAGT,wBAAwB,CAACS,UAAtC;AACAC,sBAAkB,GAAG,KAArB,CAHkC,CAIlC;;AACA,QAAI,OAAON,cAAP,KAA2B,WAA3B,IAA0CA,cAAc,KAAK,IAAjE,EAAuE;AACrEA,oBAAc,GAAG;AACfx/G,aAAK,EAAE;AADQ,OAAjB;AAGD;;AACD,QAAI,OAAOy/G,eAAP,KAA4B,WAA5B,IAA2CA,eAAe,KAAK,IAAnE,EAAyE;AACvEA,qBAAe,GAAG;AAChBz/G,aAAK,EAAE;AADS,OAAlB;AAGD;;AACD1B,gBAAW,GAAG,CAAd;AACA3oB,QAAI,GAAG,CAAP;AACAqqI,gBAAY,GAAG,CAAf;AACAnH,kBAAc,GAAGjzI,SAAjB;AACAs3I,mBAAe,GAAGt3I,SAAlB;AACA+5I,mBAAe,GAAG/5I,SAAlB;AACAg6I,oBAAgB,GAAGh6I,SAAnB;AACAy5I,cAAU,GAAGz5I,SAAb;AACA05I,cAAU,GAAG15I,SAAb;AACA25I,eAAW,GAAG35I,SAAd;AACD;;AAED,WAASw6I,0BAAT,CAAoCjiF,OAApC,EAA6C/0D,GAA7C,EAAkD;AAChD,QAAIi3I,YAAY,GAAGliF,OAAO,CAACzM,OAAR,CAAgBtoD,GAAhB,CAAnB;;AACA,QAAIi3I,YAAY,IAAIA,YAAY,CAAC57H,KAAb,KAAuB+6H,cAAc,CAAC/6H,KAA1D,EAAiE;AAC/D+6H,oBAAc,CAACx/G,KAAf,GAAuB52B,GAAvB;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAED,WAASk3I,2BAAT,CAAqCniF,OAArC,EAA8C/0D,GAA9C,EAAmD;AACjD,QAAIi3I,YAAY,GAAGliF,OAAO,CAACzM,OAAR,CAAgBtoD,GAAhB,CAAnB;;AACA,QAAIi3I,YAAY,IAAIA,YAAY,CAAC57H,KAAb,KAAuBg7H,eAAe,CAACh7H,KAA3D,EAAkE;AAChEg7H,qBAAe,CAACz/G,KAAhB,GAAwB52B,GAAxB;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAED,WAASm3I,qBAAT,CAA+BpiF,OAA/B,EAAwC;AACtC,QAAIA,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA7B,EAAgC;AAC9B,aAAO,KAAP;AACD;;AACD,QAAIw3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,KAA2B,CAA3B,IAAgC,CAACw3D,OAAO,CAACzM,OAAR,CAAgB,CAAhB,EAAmBpkD,IAApD,IAA4D,CAAC6wD,OAAO,CAACzM,OAAR,CAAgB,CAAhB,EAAmBjtC,KAApF,EAA2F;AACzF,aAAO,KAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAED,WAAS+7H,SAAT,GAAqB;AACnB,QAAIriF,OAAO,GAAGihF,wBAAwB,CAACqB,QAAzB,CAAkC,CAAlC,CAAd;AACA,QAAIC,aAAJ,EAAmBC,cAAnB,EAAmCC,IAAnC;AAEAd,sBAAkB,GAAG3hF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA9C,CAJmB,CAMnB;;AACA04I,cAAU,GAAGlhF,OAAO,CAACzM,OAAR,CAAgB,CAAhB,CAAb;;AACA,QAAI0tF,wBAAwB,CAACyB,oBAA7B,EAAmD;AACjD,UAAIN,qBAAqB,CAACpiF,OAAD,CAArB,IAAkC2hF,kBAAtC,EAA0D;AACxD,YAAID,UAAJ,EAAgB;AACdl2I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,uBAAP,CAAV;AACD,SAFD,MAEO,IAAImyH,wBAAwB,CAAC0B,SAAzB,CAAmCtC,UAAvC,EAAmD;AACxD70I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iCAAP,EAA0C;AAClD8zH,8BAAkB,EAAE3B,wBAAwB,CAAC0B,SAAzB,CAAmCtC;AADL,WAA1C,CAAV;AAGD,SAJM,MAIA;AACL70I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,wCAAP,CAAV;AACD;;AACD61C,kBAAU,GAAG,IAAb;AACD,OAXD,MAWO;AACLn5D,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,4BAAP,CAAV;AACA61C,kBAAU,GAAG,KAAb;AACD,OAfgD,CAiBjD;AACA;;;AACA89E,UAAI,GAAGpB,cAAc,CAACx/G,KAAtB;;AACA,UAAI4gH,IAAI,IAAIziF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAxB,IAAkCw3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA/D,EAAkE;AAChE;AACAi6I,YAAI,GAAGziF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAAhC;AACD;;AACD+5I,mBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAhB,CAAhB;;AACA,UAAIF,aAAa,IAAIlB,cAAc,CAAC/6H,KAAhC,IAAyCi8H,aAAa,CAACj8H,KAAd,KAAwB+6H,cAAc,CAAC/6H,KAApF,EAA2F;AACzF;AACA;AACA,YAAI27H,0BAA0B,CAACjiF,OAAD,EAAUyiF,IAAI,GAAG,CAAjB,CAA9B,EAAmD;AACjDF,uBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAI,GAAG,CAAvB,CAAhB;AACD,SAFD,MAEO,IAAIA,IAAI,GAAG,CAAP,IAAYR,0BAA0B,CAACjiF,OAAD,EAAUyiF,IAAI,GAAG,CAAjB,CAA1C,EAA+D;AACpE;AACAF,uBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAI,GAAG,CAAvB,CAAhB;AACD,SAHM,MAGA;AACL;AACAF,uBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgB,CAAhB,CAAhB;AACA8tF,wBAAc,CAACx/G,KAAf,GAAuB,CAAvB;AACD;AACF,OAtCgD,CAwCjD;;;AACA4gH,UAAI,GAAGnB,eAAe,CAACz/G,KAAvB;;AACA,UAAI4gH,IAAI,IAAIziF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAxB,IAAkCw3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA/D,EAAkE;AAChE;AACAi6I,YAAI,GAAGziF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAAhC;AACD;;AACDg6I,oBAAc,GAAGxiF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAhB,CAAjB;;AACA,UAAID,cAAc,IAAIlB,eAAe,CAACh7H,KAAlC,IAA2Ck8H,cAAc,CAACl8H,KAAf,KAAyBg7H,eAAe,CAACh7H,KAAxF,EAA+F;AAC7F;AACA;AACA,YAAI67H,2BAA2B,CAACniF,OAAD,EAAUyiF,IAAI,GAAG,CAAjB,CAA/B,EAAoD;AAClDD,wBAAc,GAAGxiF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAI,GAAG,CAAvB,CAAjB;AACD,SAFD,MAEO,IAAIA,IAAI,GAAG,CAAP,IAAYN,2BAA2B,CAACniF,OAAD,EAAUyiF,IAAI,GAAG,CAAjB,CAA3C,EAAgE;AACrE;AACAD,wBAAc,GAAGxiF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAI,GAAG,CAAvB,CAAjB;AACD,SAHM,MAGA;AACL;AACAD,wBAAc,GAAGxiF,OAAO,CAACzM,OAAR,CAAgB,CAAhB,CAAjB;AACA+tF,yBAAe,CAACz/G,KAAhB,GAAwB,CAAxB;AACD;AACF;AACF,KA7DD,MA6DO;AACLr2B,aAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,4BAAP,CAAV;AACA61C,gBAAU,GAAG,KAAb;AACD;;AAED,QAAI49E,aAAa,IAAI,CAACA,aAAa,CAACpzI,IAAhC,IAAwC,CAACozI,aAAa,CAACj8H,KAA3D,EAAkE;AAChE;AACAi8H,mBAAa,GAAG,IAAhB;AACD;;AAED,QAAIC,cAAc,IAAI,CAACA,cAAc,CAACrzI,IAAlC,IAA0C,CAACqzI,cAAc,CAACl8H,KAA9D,EAAqE;AACnE;AACAk8H,oBAAc,GAAG,IAAjB;AACD;;AAEDrB,cAAU,GAAGoB,aAAb;;AACA,QAAIpB,UAAJ,EAAgB;AACdE,oBAAc,CAAC/6H,KAAf,GAAuB66H,UAAU,CAAC76H,KAAlC;AACD;;AACDy7H,+BAA2B;AAE3BX,eAAW,GAAGoB,cAAd;;AACA,QAAIpB,WAAJ,EAAiB;AACfE,qBAAe,CAACh7H,KAAhB,GAAwB86H,WAAW,CAAC96H,KAApC;AACD;;AACD07H,gCAA4B;;AAE5B,QAAI,CAACb,UAAL,EAAiB;AACfK,qBAAe,GAAG/5I,SAAlB;AACD;;AACD,QAAI,CAAC25I,WAAL,EAAkB;AAChBK,sBAAgB,GAAGh6I,SAAnB;AACD;AACF;;AAED,WAASo7I,UAAT,GAAsB;AACpB,QAAI,CAAC3B,UAAD,IAAe,CAACC,UAAhB,IAA8B,CAACC,WAAnC,EAAgD;AAC9C;AACD;;AAED,QAAI0B,cAAc,GAAGn5I,IAAI,CAACE,GAAL,CAASF,IAAI,CAACE,GAAL,CAASq3I,UAAU,CAAChzH,IAAX,CAAgB1lB,MAAzB,EAAiC24I,UAAU,CAACjzH,IAAX,CAAgB1lB,MAAjD,CAAT,EAAmE44I,WAAW,CAAClzH,IAAZ,CAAiB1lB,MAApF,CAArB;;AACA,WAAO23B,YAAW,GAAG2iH,cAArB,EAAqC3iH,YAAW,EAAhD,EAAoD;AAClD3oB,UAAI,GAAG0pI,UAAU,CAAChzH,IAAX,CAAgBiS,YAAhB,CAAP;;AAEA,UAAI3oB,IAAI,GAAGL,KAAK,CAACwb,UAAN,CAAiByyC,cAA5B,EAA4C;AAC1C;AACA;AACAjuD,aAAK,CAAC89B,IAAN;AACD;;AACDylG,oBAAc,GAAGyG,UAAU,CAACjzH,IAAX,CAAgBiS,YAAhB,CAAjB;AACA4+G,qBAAe,GAAGqC,WAAW,CAAClzH,IAAZ,CAAiBiS,YAAjB,CAAlB;AACAhpB,WAAK,CAACujE,yBAAN;AACA58C,cAAQ,CAAC4Z,IAAT;AACD;AACF;;AAED,WAASqrG,wBAAT,CAAkCC,MAAlC,EAA0C;AACxC,WAAOA,MAAM,CAACC,uBAAP,IAAkCD,MAAM,CAACE,wBAAhD;AACD;;AAED,WAASC,iBAAT,GAA6B;AAC3B,WAAOJ,wBAAwB,CAAC7B,UAAD,CAAxB,KAAyC,CAACC,UAAD,IAAe4B,wBAAwB,CAAC5B,UAAD,CAAhF,MAAkG,CAACC,WAAD,IAAgB2B,wBAAwB,CAAC3B,WAAD,CAA1I,CAAP;AACD;;AAED,WAASgC,gBAAT,GAA4B;AAC1B,QAAIC,OAAO,GAAG,EAAd;AAAA,QACErjF,OAAO,GAAGihF,wBAAwB,CAACqB,QAAzB,CAAkC,CAAlC,CADZ;AAAA,QAEE/5I,CAFF;;AAIA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGy3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C86I,aAAO,CAACl4I,IAAR,CAAa;AACXmb,aAAK,EAAE05C,OAAO,CAACzM,OAAR,CAAgBhrD,CAAhB,EAAmB+d,KADf;AAEXnX,YAAI,EAAE6wD,OAAO,CAACzM,OAAR,CAAgBhrD,CAAhB,EAAmB4G;AAFd,OAAb;AAID;;AACD,WAAOk0I,OAAP;AACD;;AAEDlsI,OAAK,GAAG;AAEN0O,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD,KAJK;AAMNya,SAAK,EAAE,iBAAW;AAChBosG,YAAM,CAAC,OAAD,CAAN;AACD,KARK;AAUNruG,QAAI,EAAE,gBAAW;AACfquG,YAAM,CAAC,MAAD,CAAN;AACD,KAZK;AAcN/F,QAAI,EAAE,gBAAW;AACf,UAAIgG,WAAW,GAAG5+E,UAAlB;AACAA,gBAAU,GAAG,KAAb;AACA2+E,YAAM,CAAC,MAAD,CAAN;AACA3+E,gBAAU,GAAG4+E,WAAb;AACD,KAnBK;AAqBNjE,SAAK,EAAE,iBAAW;AAChB,UAAIiE,WAAW,GAAG5+E,UAAlB;AACAA,gBAAU,GAAG,KAAb;AACA2+E,YAAM,CAAC,OAAD,CAAN;AACA3+E,gBAAU,GAAG4+E,WAAb;AACD,KA1BK;AA4BN7xE,aAAS,EAAE,qBAAW;AACpB5zC,cAAQ,CAAC4zC,SAAT;AACD,KA9BK;AAgCN/+D,SAAK,EAAE,iBAAW;AAChB2wI,YAAM,CAAC,OAAD,CAAN;AACD,KAlCK;AAoCN/xE,UAAM,EAAE,kBAAW;AACjBp6D,WAAK,CAAC89B,IAAN;AACA99B,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC0kE,mBAAW,GAAG,IAAd;AACD,OAFD;AAGD,KAzCK;AA2CN9oG,aAAS,EAAE,qBAAW;AACpB,aAAOA,UAAP;AACD,KA7CK;AA+CNlR,eAAW,EAAE,uBAAW;AACtB,aAAOA,YAAP;AACD,KAjDK;AAmDNijH,oBAAgB,EAAEA,gBAnDZ;AAoDNI,qBAAiB,EAAE,6BAAW;AAC5B,aAAOnC,cAAc,CAACx/G,KAAtB;AACD,KAtDK;AAuDN4hH,sBAAkB,EAAE,8BAAW;AAC7B,aAAOnC,eAAe,CAACz/G,KAAvB;AACD,KAzDK;AA0DN6hH,qBAAiB,EAAE,2BAASC,WAAT,EAAsB;AACvC,UAAItC,cAAc,CAACx/G,KAAf,KAAyB8hH,WAA7B,EAA0C;AACxCtC,sBAAc,CAACx/G,KAAf,GAAuB8hH,WAAvB;AACAtC,sBAAc,CAAC/6H,KAAf,GAAuB,IAAvB;AACAnP,aAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6B,CAA7B,CAHwC,CAGR;;AAChC2J,iBAAS;AACV;AACF,KAjEK;AAkENuB,sBAAkB,EAAE,4BAASD,WAAT,EAAsB;AACxC,UAAIrC,eAAe,CAACz/G,KAAhB,KAA0B8hH,WAA9B,EAA2C;AACzCrC,uBAAe,CAACz/G,KAAhB,GAAwB8hH,WAAxB;AACArC,uBAAe,CAACh7H,KAAhB,GAAwB,IAAxB;AACAnP,aAAK,CAACwb,UAAN,CAAiBisH,UAAjB,GAA8B,CAA9B,CAHyC,CAGR;;AACjCyD,iBAAS;AACV;AACF,KAzEK;AA2ENr1I,aAAS,EAAE,qBAAW;AACpB,aAAO,EAAP;AACD;AA7EK,GAAR;AAiFAg0I,cAAY,GAAG,IAAIV,aAAJ,CAAiB;AAE9BuD,gBAAY,EAAE;AACZhD,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,+BAAP,CAAV;AACA+yH,oBAAY,GAAG,CAAf,CAFqB,CAGrB;;AACAZ,gCAAwB,CAAC6C,YAAzB,CAAsC,CACZ,yBADY,EACe,yBADf,EAEZ,wBAFY,EAEc,wBAFd,CAAtC,EAG0B3sI,KAAK,CAACwb,UAAN,CAAiBksH,QAH3C,EAGqD1nI,KAAK,CAACwb,UAAN,CAAiB0tH,UAHtE;AAIA,aAAKG,SAAL,CAAe,YAAf;AACD;AAVW,KAFgB;AAe9BuD,cAAU,EAAE;AACVlD,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,4BAAP,CAAV;;AACA,YAAImyH,wBAAwB,CAAC+C,WAA7B,EAA0C;AACxC,eAAKxD,SAAL,CAAe,WAAf;AACD,SAFD,MAEO;AACLoB,sBAAY,GAAG1H,QAAQ,CAACD,MAAT,CAAgB3qH,IAAI,CAACR,CAAL,CAAO,wCAAP,CAAhB,EAAkE;AAC/E8e,uBAAW,EAAE;AADkE,WAAlE,CAAf;AAGD;AACF,OAVS;AAYVgzG,gBAAU,EAAE,sBAAW;AACrB,YAAIgB,YAAJ,EAAkB;AAChBA,sBAAY,CAACvzG,KAAb;AACAuzG,sBAAY,GAAG,IAAf;AACD;AACF,OAjBS;AAmBVqC,mBAAa,EAAE,yBAAW;AACxB,aAAKzD,SAAL,CAAe,0BAAf;AACD,OArBS;AAuBV0D,wBAAkB,EAAE,8BAAW;AAC7B,aAAK1D,SAAL,CAAe,0BAAf;AACD,OAzBS;AA2BV2D,oBAAc,EAAE,0BAAW;AACzB,aAAK3D,SAAL,CAAe,0BAAf;AACD,OA7BS;AA+BV4D,oBAAc,EAAE,0BAAW;AACzB,aAAK5D,SAAL,CAAe,WAAf;AACD,OAjCS;AAmCV6D,oBAAc,EAAE,0BAAW;AACzB;AACApD,gCAAwB,CAACqD,WAAzB;AACArD,gCAAwB,CAAC6C,YAAzB;AACD;AAvCS,KAfkB;AAyD9BS,4BAAwB,EAAE;AACxB1D,gBAAU,EAAE,sBAAW;AACrBI,gCAAwB,CAACqD,WAAzB;AACA94I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,mCAAP,EAA4C;AACpD01H,oBAAU,EAAE;AADwC,SAA5C,CAAV;AAGA,YAAIC,UAAU,GAAG,yCAAjB;AACAvK,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO21H,UAAP,EAAmB;AAChCC,yBAAe,EAAE,2FACfp1H,IAAI,CAACR,CAAL,CAAO,4BAAP,CADe,GACwB;AAFT,SAAnB,CAAf,EAGI;AACF,uBAAa,oBAAW;AACtB3hB,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,SAAD,CAAN;AACD;AAJC,SAHJ,EAQG;AACDj1G,eAAK,EAAE,iBAAW;AAChBi1G,kBAAM,CAAC,QAAD,CAAN;AACD;AAHA,SARH;AAaD,OApBuB;AAsBxB;AACAW,mBAAa,EAAE,yBAAW,CAAE,CAvBJ;AAwBxBC,wBAAkB,EAAE,8BAAW,CAAE,CAxBT;AAyBxBC,oBAAc,EAAE,0BAAW,CAAE,CAzBL;AA2BxBQ,YAAM,EAAE,kBAAW;AACjBn5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,mCAAP,EAA4C;AACpD01H,oBAAU,EAAE,sDAAsDl1H,IAAI,CAACR,CAAL,CAAO,mDAAP,CAAtD,GAAoH;AAD5E,SAA5C,CAAV,CADiB,CAIjB;;AACA,YAAI81H,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAW;AACnC,cAAIC,KAAK,GAAG13I,CAAC,CAAC,cAAD,CAAb;;AACA,cAAI03I,KAAK,CAAC,CAAD,CAAT,EAAc;AACZA,iBAAK,CAACh1G,KAAN,CAAY,YAAW;AACrByzG,oBAAM,CAAC,SAAD,CAAN;AACD,aAFD;AAGD,WAJD,MAIO;AACL7qG,sBAAU,CAACmsG,mBAAD,EAAsB,EAAtB,CAAV;AACD;AACF,SATD;;AAUAA,2BAAmB;AACpB,OA3CuB;AA6CxBE,aAAO,EAAE,mBAAW;AAClB,aAAKtE,SAAL,CAAe,cAAf;AACD;AA/CuB,KAzDI;AA2G9BuE,aAAS,EAAE;AACTlE,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAV;AACAivH,eAAO,GAAG,IAAV;AACA6B,gBAAQ,GAAG,IAAX;AACAj7E,kBAAU,GAAG,IAAb;AACAtzB,kBAAS,GAAG,IAAZ;AAEAgxG,iBAAS;;AAET,YAAIX,UAAJ,EAAgB;AACd,eAAKsD,cAAL;AACD,SAFD,MAEO;AACL,eAAKC,eAAL;AACD;;AAED,YAAIhE,wBAAwB,CAACiE,YAA7B,EAA2C;AACzC,eAAK1E,SAAL,CAAe,SAAf;AACD;AACF,OAnBQ;AAqBTI,gBAAU,EAAE,sBAAW;AACrB7C,eAAO,GAAG,KAAV;AACA6B,gBAAQ,GAAG,KAAX;AACAj7E,kBAAU,GAAG,KAAb;AACD,OAzBQ;AA2BT;AACAwgF,iBAAW,EAAE9C,SA5BJ;AA6BT+C,mBAAa,EAAE/C,SA7BN;AA8BTgD,uBAAiB,EAAEhD,SA9BV;AA+BTiD,iBAAW,EAAEjD,SA/BJ;AAiCTkD,wBAAkB,EAAElD,SAjCX;AAkCTmD,sBAAgB,EAAEnD,SAlCT;AAoCT9E,UAAI,EAAE,gBAAW;AACf,YAAI4D,UAAJ,EAAgB;AACdhqI,eAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6ByI,UAAU,CAACsE,SAAxC;AACD;AACF,OAxCQ;AA0CTnG,WAAK,EAAE,iBAAW;AAChB,YAAI8B,WAAJ,EAAiB;AACfjqI,eAAK,CAACwb,UAAN,CAAiBisH,UAAjB,GAA8BwC,WAAW,CAACqE,SAA1C;AACD;AACF,OA9CQ;AAgDT;AACAvuG,WAAK,EAAE,iBAAW;AAChB;AACA;AACA;AACA;AACA;AACA+pG,gCAAwB,CAACyE,YAAzB,YAA8C,YAAW;AACvDpC,gBAAM,CAAC,oBAAD,CAAN;AACD,SAFD;AAGA,aAAK9C,SAAL,CAAe,UAAf;AACD,OA3DQ;AA6DTwE,oBAAc,EAAE,0BAAW;AACzBx5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAV;AACD,OA/DQ;AAiETm2H,qBAAe,EAAE,2BAAW;AAC1B,YAAIhE,wBAAwB,CAAC0B,SAAzB,CAAmCtC,UAAvC,EAAmD;AACjD70I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iDAAP,EAA0D;AAClE8zH,8BAAkB,EAAE3B,wBAAwB,CAAC0B,SAAzB,CAAmCtC;AADW,WAA1D,CAAV;AAGD,SAJD,MAIO;AACL70I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,wDAAP,CAAV;AACD;AACF,OAzEQ;AA2ETu1H,oBAAc,EAAE,0BAAW;AACzBpD,gCAAwB,CAACqD,WAAzB;AACArD,gCAAwB,CAAC6C,YAAzB;AACA,aAAKtD,SAAL,CAAe,YAAf;AACD,OA/EQ;AAiFT;AACAmF,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD;AApFQ,KA3GmB;AAkM9BoF,YAAQ,EAAE;AACR/E,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACAuiB,kBAAS,GAAG,KAAZ;AACA,YAAIrpB,IAAI,GAAG,IAAX;AACA,aAAK69H,aAAL,GAAqBptG,UAAU,CAAC,IAAD,EAAO,YAAW;AAC/CzwB,cAAI,CAACw4H,SAAL,CAAe,oBAAf;AACD,SAF8B,CAA/B;AAGD,OARO;AAURI,gBAAU,EAAE,sBAAW;AACrBhoG,oBAAY,CAAC,KAAKitG,aAAN,CAAZ;AACD,OAZO;AAcRC,wBAAkB,EAAE,8BAAW;AAC7B,aAAKtF,SAAL,CAAe,eAAf;AACD,OAhBO;AAkBRmF,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD;AApBO,KAlMoB;AAyN9BuF,iBAAa,EAAE;AACblF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,gDAAP,CAAV;AACAuiB,kBAAS,GAAG,IAAZ;AAEA6oG,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAf,EAA+E;AAC7EgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,sBAAD,CAAN;AACD;AAJ4E,SAA/E;AAMD,OAXY;AAabqC,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD,OAfY;AAiBbwF,0BAAoB,EAAE,gCAAW;AAC/B,aAAKxF,SAAL,CAAe,WAAf;AACD;AAnBY,KAzNe;AA+O9ByF,WAAO,EAAE;AACPpF,gBAAU,EAAE,sBAAW;AACrBxvG,kBAAS,GAAG,KAAZ;AACAgxG,iBAAS;AACT19E,kBAAU,GAAG,KAAb;;AACA,YAAI+8E,UAAJ,EAAgB;AACdl2I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iCAAP,CAAV;AACD,SAFD,MAEO;AACLtjB,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAV;AACD,SARoB,CAUrB;AACA;;;AACA,YAAI,CAACmyH,wBAAwB,CAACiE,YAA9B,EAA4C;AAC1C,eAAK1E,SAAL,CAAe,SAAf;AACD;;AAED,YAAK,CAACW,UAAF,IAAkB,CAACC,WAAvB,EAAqC;AACnC,eAAKZ,SAAL,CAAe,yBAAf;AACD;AACF,OApBM;AAsBPtyH,UAAI,EAAE20H,UAtBC;AAwBPmC,oBAAc,EAAE,0BAAW;AACzBx5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iCAAP,CAAV;AACD,OA1BM;AA4BPm2H,qBAAe,EAAE,2BAAW;AAC1Bz5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAV;AACD,OA9BM;AAgCPmmB,UAAI,EAAE,gBAAW;AACfgsG,gCAAwB,CAACiF,WAAzB,YAA6C,YAAW;AACtD5C,gBAAM,CAAC,mBAAD,CAAN;AACD,SAFD;AAGA,aAAK9C,SAAL,CAAe,UAAf;AACD,OArCM;AAuCP2F,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD;AAzCM,KA/OqB;AA2R9B;AACA4F,2BAAuB,EAAE;AACvBvF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,yBAAP,CAAV;AAEAmyH,gCAAwB,CAACiF,WAAzB;AACAhM,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,+BAAP,CAAf,EAAwD;AACtDgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACD;AAHqD,SAAxD;AAKD,OAVsB;AAYvBk4G,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,yBAAf;AACD;AAdsB,KA5RK;AA6S9B6F,2BAAuB,EAAE;AACvBxF,gBAAU,EAAE,sBAAW;AACrB,YAAIsC,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,WAAf;AACD;AACF,OALsB;AAOvBtyH,UAAI,EAAE,gBAAW;AACf,YAAIi1H,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,WAAf;AACD;AACF;AAXsB,KA7SK;AA2T9B8F,YAAQ,EAAE;AACRzF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACD,OAHO;AAKRZ,UAAI,EAAE20H,UALE;AAOR0D,uBAAiB,EAAE,6BAAW;AAC5B,aAAK/F,SAAL,CAAe,eAAf;AACD,OATO;AAWR2F,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD;AAbO,KA3ToB;AA2U9BgG,iBAAa,EAAE;AACb3F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,gDAAP,CAAV;AACAorH,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAf,EAA+E;AAC7EgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,sBAAD,CAAN;AACD;AAJ4E,SAA/E;AAMD,OATY;AAWbp1H,UAAI,EAAE20H,UAXO;AAabsD,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD,OAfY;AAiBbiG,0BAAoB,EAAE,gCAAW;AAC/B,aAAKjG,SAAL,CAAe,SAAf;AACD;AAnBY,KA3Ue;AAiW9B;AACA2F,qBAAiB,EAAE;AACjBtF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,yCAAP,CAAV;;AACA,YAAIq0H,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,oBAAf;AACD;AACF,OANgB;AAQjBtyH,UAAI,EAAE,gBAAW;AACf20H,kBAAU;;AACV,YAAIM,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,oBAAf;AACD;AACF;AAbgB,KAlWW;AAkX9BkG,sBAAkB,EAAE;AAClB7F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACAuiB,kBAAS,GAAG,IAAZ;AACAvT,gBAAQ,CAACmX,IAAT;AACD,OALiB;AAOlBtiC,WAAK,EAAE,iBAAW;AAChB2pI,gCAAwB;AACxByF,mCAA2B;AAC3BC,oCAA4B;AAC5B,aAAKxB,SAAL,CAAe,YAAf;AACA1iH,gBAAQ,CAACnrB,KAAT;AACD;AAbiB,KAlXU;AAkY9Bg0I,gBAAY,EAAE;AACZ9F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,8BAAP,CAAV;AACAmyH,gCAAwB,CAACqD,WAAzB;AACA,YAAIt8H,IAAI,GAAG,IAAX;AACAywB,kBAAU,CAAC,YAAW;AACpBzwB,cAAI,CAACw4H,SAAL,CAAe,cAAf;AACD,SAFS,EAEP,IAFO,CAAV;AAGD;AARW;AAlYgB,GAAjB,CAAf,CArboD,CAm0BpD;AACA;;AACA,WAAS8C,MAAT,CAAgBtmH,SAAhB,EAA2B;AACzB,QAAIQ,IAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,CAAX;AAEA2K,SAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC,UAAImxE,OAAO,GAAG5F,YAAY,CAACF,WAAb,CAAyBh3I,KAAzB,CAA+Bk3I,YAA/B,EAA6CxjH,IAA7C,CAAd;;AAEA,UAAI,CAACopH,OAAL,EAAc;AACZ;AACA,YAAI5pH,SAAS,KAAK,oBAAlB,EAAwC;AACtCgkH,sBAAY,CAACR,SAAb,CAAuB,cAAvB;AACD,SAFD,MAEO,IAAIxjH,SAAS,KAAK,gBAAlB,EAAoC;AACzCikH,kCAAwB,CAACqD,WAAzB;AACAtD,sBAAY,CAACR,SAAb,CAAuB,cAAvB;AACD,SAHM,MAGA,IAAIxjH,SAAS,KAAK,eAAlB,EAAmC;AACxCgkH,sBAAY,CAACR,SAAb,CAAuB,0BAAvB;AACD;AACF;AACF,KAdD;AAeD;;AAEDS,0BAAwB,GAAG,IAAI4F,oCAAJ,EAA3B,CAz1BoD,CA21BpD;;AACA5F,0BAAwB,CAACp7H,EAAzB,CAA4B,GAA5B,EAAiC,YAAW;AAC1C,QAAI2X,IAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,CAAX;AACA82I,UAAM,CAACx5I,KAAP,CAAa,IAAb,EAAmB,CAAC,KAAK0e,KAAN,EAAa+V,MAAb,CAAoBf,IAApB,CAAnB;AACD,GAHD,EA51BoD,CAi2BpD;;AACAyjH,0BAAwB,CAACp7H,EAAzB,CAA4B,gBAA5B,EAA8C,YAAW;AACvD,QAAIs7H,UAAJ,EAAgB;AACdhqI,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC+rE,uBAAe,GAAGL,UAAU,CAACsE,SAA7B;AACD,OAFD;AAGD;;AACD,QAAIrE,WAAJ,EAAiB;AACfjqI,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtCgsE,wBAAgB,GAAGL,WAAW,CAACqE,SAA/B;AACD,OAFD;AAGD;AACF,GAXD;AAaAxE,0BAAwB,CAACp7H,EAAzB,CAA4B,gBAA5B,EAA8C,YAAW;AACvD67H,cAAU,GAAG,IAAb;AACD,GAFD;AAIAT,0BAAwB,CAACp7H,EAAzB,CAA4B,iBAA5B,EAA+C,YAAW;AACxD67H,cAAU,GAAG,KAAb;AACD,GAFD;AAIA9oC,iBAAe,GAAG,IAAIt8B,eAAJ,CAAoB;AACpCjwE,YAAQ,EAAEA,8BAD0B;AAEpC2vE,WAAO,EAAE,EAF2B;AAGpCzD,mBAAe,EAAEA,gBAHmB;AAIpC0D,qBAAiB,EAAEA,iBAJiB;AAKpCM,sBAAkB,EAAE;AALgB,GAApB,CAAlB;AAQAjE,iBAAe,GAAGsgC,eAAe,CAACtgC,eAAlC;AACAx6C,UAAQ,GAAG86E,eAAe,CAACl8B,eAA3B;AACA5+C,UAAQ,CAACQ,aAAT,CAAuB,MAAvB,EAA+B,MAA/B,EAAuC,MAAvC,EAA+C,WAA/C,EAA4D,SAA5D;AAEAs6E,iBAAe,CAACz6E,OAAhB,CAAwBhnB,KAAxB;AAEAmlI,0BAAwB;;AAExB,MAAInlI,KAAK,CAACwb,UAAN,CAAiBmsH,iBAArB,EAAwC;AACtC3nI,SAAK,CAACwb,UAAN,CAAiBksH,QAAjB,GAA4Bl1I,IAAI,CAACwqC,KAAL,CAAW,CAAC,IAAIxqC,IAAI,CAACyO,MAAL,EAAL,IAAsB,WAAjC,EAA8CpP,QAA9C,CAAuD,EAAvD,CAA5B,CADsC,CACkD;AACzF;;AAEDmO,OAAK,CAACu+B,WAAN,CAAkB,YAAlB,EAAgC,YAAW;AACzCurG,4BAAwB,CAACZ,UAAzB,GAAsClpI,KAAK,CAACwb,UAAN,CAAiB0tH,UAAvD;AACD,GAFD;AAIAlpI,OAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B;AACzB1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADkB;AAEzB1U,YAAQ,EAAE,MAFe;AAGzBwQ,UAAM,EAAE;AAHiB,GAA3B,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADyB;AAEhC1U,YAAQ,EAAE,MAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQA0qG,gCAA8B,GAAG/qG,KAAK,CAAC8pB,sBAAN,CAA6B,aAA7B,CAAjC;AAEA9pB,OAAK,CAAC6iE,YAAN,CAAmB,eAAnB,EAAoC8nE,+BAApC,EAAqE,YAAW;AAC9E,QAAIpH,cAAc,IAAI,IAAtB,EAA4B;AAC1B,aAAOA,cAAP;AACD;;AACD,WAAOA,cAAc,GAAGvjI,KAAK,CAACwb,UAAN,CAAiB+lH,SAAzC;AACD,GALD;AAOAvhI,OAAK,CAAC6iE,YAAN,CAAmB,gBAAnB,EAAqC8nE,+BAArC,EAAsE,YAAW;AAC/E,QAAI/C,eAAe,IAAI,IAAvB,EAA6B;AAC3B,aAAOA,eAAP;AACD;;AACD,WAAOA,eAAe,GAAG5nI,KAAK,CAACwb,UAAN,CAAiBisH,UAA1C;AACD,GALD;AAOA;;;;AAIAznI,OAAK,CAAC6iE,YAAN,CAAmB,iBAAnB,EAAsC,EAAtC,EAA0C,YAAW;AACnD,WAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,EAAnB,EAAuB,EAAvB,EAA2B,EAA3B,CAAP;AACD,GAFD;;AAIA7iE,OAAK,CAACquD,UAAN,GAAmB,UAAShuD,IAAT,EAAe;AAChC,WAAO0qG,8BAA8B,CAACt3F,MAA/B,CAAsCpT,IAAtC,CAAP;AACD,GAFD;;AAIAL,OAAK,CAAC6iE,YAAN,CAAmB,mBAAnB,EAAwC,EAAxC,EAA4C4+B,eAAe,CAAC/9B,wBAA5D;AAEA1jE,OAAK,CAAC6iE,YAAN,CAAmB,gBAAnB,EAAqC;AACnC1vD,SAAK,EAAE,qBAD4B;AAEnClQ,YAAQ,EAAE,MAFyB;AAGnCwQ,UAAM,EAAE;AAH2B,GAArC,EAIGguF,eAAe,CAAC99B,qBAJnB,EA77BoD,CAm8BpD;AACA;AACA;;AACA3jE,OAAK,CAAC6iE,YAAN,CAAmB,mBAAnB,EAAwC8nE,+BAAxC,EAAyE,YAAW;AAClF,QAAIN,eAAe,IAAI,IAAvB,EAA6B;AAC3B,aAAOA,eAAP;AACD;;AACD,WAAOA,eAAe,GAAGrqI,KAAK,CAACwb,UAAN,CAAiB+lH,SAA1C;AACD,GALD;AAOAvhI,OAAK,CAAC6iE,YAAN,CAAmB,oBAAnB,EAAyC8nE,+BAAzC,EAA0E,YAAW;AACnF,QAAIL,gBAAgB,IAAI,IAAxB,EAA8B;AAC5B,aAAOA,gBAAP;AACD;;AACD,WAAOA,gBAAgB,GAAGtqI,KAAK,CAACwb,UAAN,CAAiBisH,UAA3C;AACD,GALD;AAOAznI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAO0uH,UAAP;AACD,GAJD;AAMA7hI,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE;AADyB,GAAlC,EAEG,YAAW;AACZ,WAAOi3H,WAAP;AACD,GAJD;AAMApqI,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO+mB,UAAP;AACD,GAJD,EAh+BoD,CAs+BpD;;AACAl6B,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOq6C,UAAP;AACD,GAJD;AAMAxtD,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO6V,YAAW,GAAG,CAArB;AACD,GAJD;AAMAhpB,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE;AADqB,GAA9B,EAEG,YAAW;AACZ,WAAOyzH,OAAO,IAAIlD,gBAAlB;AACD,GAJD;AAMA1jI,OAAK,CAAC6iE,YAAN,CAAmB,UAAnB,EAA+B;AAC7B1vD,SAAK,EAAE;AADsB,GAA/B,EAEG,YAAW;AACZ,WAAOs1H,QAAQ,IAAIX,iBAAnB;AACD,GAJD;AAMA9nI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOo3H,UAAP;AACD,GAJD;AAMAvqI,OAAK,CAAC6iE,YAAN,CAAmB,oBAAnB,EAAyC;AACvC1vD,SAAK,EAAE;AADgC,GAAzC,EAEG,YAAW;AACZ,WAAOq3H,kBAAP;AACD,GAJD;AAMAxqI,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE;AADyB,GAAlC,EAEG,YAAW;AACZ,WAAO6vH,WAAP;AACD,GAJD;AAMAhjI,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE;AADqB,GAA9B,EAEG,YAAW;AACZ,WAAO9e,OAAP;AACD,GAJD,EAjhCoD,CAuhCpD;;AACA2L,OAAK,CAACqhE,eAAN,CAAsB,oBAAtB,EAA4C;AAC1CpmD,gBAAY,EAAE;AAD4B,GAA5C,EAxhCoD,CA4hCpD;AACA;;AACAjb,OAAK,CAAC0O,EAAN,CAAS,iBAAT,EAA4B,YAAW;AACrCo7H,4BAAwB,CAACqD,WAAzB;;AACA,QAAIrD,wBAAwB,CAACiE,YAA7B,EAA2C;AACzCjE,8BAAwB,CAACiF,WAAzB;AACD;AACF,GALD;AAOA/uI,OAAK,CAACu+B,WAAN,CAAkB,gBAAlB,EAAoCwlG,sBAApC;AACAA,wBAAsB;AAEtB/jI,OAAK,CAACujE,yBAAN;AACAsmE,cAAY,CAACR,SAAb,CAAuB,cAAvB;AAEA,SAAOrpI,KAAP;AACD;AAAA,C;;ACvjCD;AACA;AACA;AACA;AAGe,yEAASA,KAAT,EAAgB8lC,QAAhB,EAA0B3tB,IAA1B,EAAgC;AAE7C;AACA;AACA,MAAI1E,MAAM,GAAGC,EAAE,CAACD,MAAH,CAAU,KAAV,CAAb;AACA,MAAI+yH,iBAAJ;AACA,MAAImJ,kBAAJ;AACA,MAAI7lG,IAAJ;AAEA,MAAI03F,iBAAiB,GAAGqC,iCAAoB,CAAC1rH,IAAD,CAA5C;;AAEA,WAASwuH,eAAT,GAA2B;AACzB,QAAI3mI,KAAK,CAACwb,UAAN,CAAiBorH,OAArB,EAA8B;AAC5BzjG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAAC48F,WAA1B;AACD,KAFD,MAEO;AACLvjG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAAC48F,WAA3B;AACD;AACF;;AAED,WAASkJ,gBAAT,GAA4B;AAC1B,QAAI5vI,KAAK,CAACwb,UAAN,CAAiBitH,QAArB,EAA+B;AAC7BtlG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACy+F,YAA1B;AACD,KAFD,MAEO;AACLplG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACy+F,YAA3B;AACD;AACF;;AAED,WAASsH,kBAAT,GAA8B,CAC5B;AACA;AACA;AACA;AACA;AACD;;AAED,WAASC,0BAAT,GAAsC;AACpC,QAAI9vI,KAAK,CAACwb,UAAN,CAAiBgvH,kBAAjB,IAAuCxqI,KAAK,CAACwb,UAAN,CAAiBgyC,UAA5D,EAAwE;AACtErqB,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACimG,mBAA1B;AACA5sG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACkmG,oBAA1B;AACD,KAHD,MAGO;AACL7sG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACimG,mBAA3B;AACA5sG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACkmG,oBAA3B;AACD;AACF;;AAED,WAASC,cAAT,GAA0B;AACxBnmG,QAAI,CAAComG,QAAL,CAAc7rG,IAAd,CAAmBrkC,KAAK,CAACwb,UAAN,CAAiBnnB,OAApC;AACD;;AAED,WAAS0yI,mBAAT,GAA+B;AAC7B/mI,SAAK,CAACu+B,WAAN,CAAkB,SAAlB,EAA6BooG,eAA7B;AACA3mI,SAAK,CAACu+B,WAAN,CAAkB,UAAlB,EAA8BqxG,gBAA9B;AACAjJ,mBAAe;AACfiJ,oBAAgB;AAEhB5vI,SAAK,CAACu+B,WAAN,CAAkB,YAAlB,EAAgCsxG,kBAAhC;AACAA,sBAAkB;AAElB7vI,SAAK,CAACu+B,WAAN,CAAkB,oBAAlB,EAAwCuxG,0BAAxC;AACA9vI,SAAK,CAACu+B,WAAN,CAAkB,YAAlB,EAAgCuxG,0BAAhC;AACAA,8BAA0B;AAE1B9vI,SAAK,CAACu+B,WAAN,CAAkB,SAAlB,EAA6B0xG,cAA7B;AACAA,kBAAc;AACf;;AAED,WAASE,kBAAT,GAA8B;AAC5BC,qBAAiB,CAAC,KAAD,CAAjB;AACD;;AAED,WAASC,kBAAT,GAA8B;AAC5BD,qBAAiB,CAAC,IAAD,CAAjB;AACD;;AAED,WAASA,iBAAT,CAA2BE,MAA3B,EAAmC;AACjCA,UAAM,GAAGA,MAAM,IAAI,KAAnB;AACA,QAAIx5G,MAAM,GAAG,IAAIH,YAAJ,CAAgB;AAC3Bn6B,WAAK,EAAE,KADoB;AAE3Bi6B,iBAAW,EAAE,6BAFc;AAG3BosG,mBAAa,EAAE,KAHY;AAI3B7wH,WAAK,EAAEmG,IAAI,CAACR,CAAL,CAAO,4BAAP,CAJoB;AAK3B+f,aAAO,EAAE;AACPitG,UAAE,EAAE,cAAW;AACbxuI,iBAAO,CAACiL,GAAR,CAAY,YAAZ;AACApL,WAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf,EAFa,CAGb;;AACA,cAAIw5G,MAAJ,EAAY;AACVtwI,iBAAK,CAACysI,kBAAN,CAAyBz2I,CAAC,CAAC,IAAD,CAAD,CAAQma,IAAR,CAAa,eAAb,EAA8BtW,GAA9B,EAAzB;AACD,WAFD,MAEO;AACLmG,iBAAK,CAACusI,iBAAN,CAAwBv2I,CAAC,CAAC,IAAD,CAAD,CAAQma,IAAR,CAAa,eAAb,EAA8BtW,GAA9B,EAAxB;AACD;AACF,SAVM;AAWP02I,cAAM,EAAE,kBAAW;AACjBp6I,iBAAO,CAACiL,GAAR,CAAY,gBAAZ;AACApL,WAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACD;AAdM;AALkB,KAAhB,EAqBV3e,IArBU,CAAb;AAsBA,QAAI0F,OAAO,GAAG,EAAd;AAAA,QACE1K,KAAK,GAAG,EADV;AAAA,QAEE+4H,OAAO,GAAGlsI,KAAK,CAACisI,gBAAN,EAFZ;AAAA,QAGEhgF,KAAK,GAAG,IAHV;AAAA,QAIEi+E,cAAc,GAAIoG,MAAM,GAAGtwI,KAAK,CAACssI,kBAAN,EAAH,GAAgCtsI,KAAK,CAACqsI,iBAAN,EAJ1D;AAAA,QAKEj7I,CALF;AAAA,QAKKo/I,OALL;AAAA,QAKcC,SALd;;AAMA,SAAKr/I,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG86I,OAAO,CAAC76I,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,UAAI86I,OAAO,CAAC96I,CAAD,CAAP,CAAW+d,KAAX,KAAqB,GAAzB,EAA8B;AAC5BqhI,eAAO,GAAG,EAAV;;AACA,YAAItE,OAAO,CAAC96I,CAAD,CAAP,CAAW4G,IAAf,EAAqB;AACnBy4I,mBAAS,GAAG;AACV7O,2BAAe,EAAEsK,OAAO,CAAC96I,CAAD,CAAP,CAAW4G;AADlB,WAAZ;AAGD,SAJD,MAIO;AACLy4I,mBAAS,GAAGjP,iBAAiB,CAAC0K,OAAO,CAAC96I,CAAD,CAAP,CAAW+d,KAAZ,CAA7B;;AACA,cAAI,CAACshI,SAAL,EAAgB;AACdA,qBAAS,GAAG;AACV7O,6BAAe,EAAE;AADP,aAAZ;AAGD;AACF;;AACDzuH,aAAK,GAAGs9H,SAAS,CAAC7O,eAAV,GAA4B,IAA5B,GAAmCsK,OAAO,CAAC96I,CAAD,CAAP,CAAW+d,KAA9C,GAAsD,GAA9D;;AACA,YAAI+6H,cAAc,IAAI94I,CAAlB,IAAwB66D,KAAK,IAAIi+E,cAAc,IAAI,CAAC,CAAxD,EAA4D;AAC1DsG,iBAAO,GAAG,UAAV;AACD;;AAAA;AACD3yH,eAAO,IAAI,6DAA6DzsB,CAA7D,GAAiE,IAAjE,GAAwEo/I,OAAxE,GAAkF,IAAlF,GAAyFr9H,KAAzF,GAAiG,OAA5G;AACA84C,aAAK,GAAG,KAAR;AACD;AACF;;AACDn1B,UAAM,CAACK,UAAP,CAAkBtZ,OAAlB;AACAiZ,UAAM,CAACE,IAAP;AACD;;AAED,SAAO8S,IAAI,GAAG;AACZx5B,OAAG,EAAEta,CAAC,CAAC,uEAAD,CADM;AAEZ06I,iBAAa,EAAE,IAFH;AAIZ5uG,aAAS,EAAE,mBAASC,QAAT,EAAmBs4B,WAAnB,EAAgC;AACzCv0B,cAAQ,GAAGu0B,WAAW,IAAIv0B,QAA1B;AACA9lC,WAAK,GAAG+hC,QAAQ,IAAI/hC,KAApB;AAEA+mI,yBAAmB;AACpB,KATW;AAWZtoI,qBAAiB,EAAE,6BAAW;AAC5B,aAAO,OAAP;AACD,KAbW;AAeZ;AACAwsC,SAAK,EAAE,iBAAW;AAChBnB,UAAI,CAACx5B,GAAL,CAASoG,KAAT;AACAozB,UAAI,CAAC6mG,kBAAL,GAA0B36I,CAAC,CAAC,aAAD,CAA3B;AACA8zC,UAAI,CAAC8mG,gBAAL,GAAwB56I,CAAC,CAAC,aAAD,CAAzB,CAHgB,CAIhB;;AACAwwI,uBAAiB,GAAG,IAAIlsF,iBAAJ,CAAsB;AACxCv9C,UAAE,EAAE,mBADoC;AAExCoW,aAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,gBAAP,CAFiC;AAGxCxI,aAAK,EAAEnP,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,EAA8CE,mBAA9C;AAHiC,OAAtB,CAApB;AAKA2lH,wBAAkB,GAAG,IAAIr1F,iBAAJ,CAAsB;AACzCv9C,UAAE,EAAE,qBADqC;AAEzCoW,aAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,gBAAP,CAFkC;AAGzCxI,aAAK,EAAEnP,KAAK,CAAC8pB,sBAAN,CAA6B,gBAA7B,EAA+CE,mBAA/C;AAHkC,OAAtB,CAArB,CAVgB,CAgBhB;;AACA8f,UAAI,CAAC48F,WAAL,GAAmB1wI,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,aAAP,CAA7C,GAAqE,iBAAtE,CAApB;AACAmyB,UAAI,CAACy+F,YAAL,GAAoBvyI,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,aAAP,CAA7C,GAAqE,iBAAtE,CAArB;AACAmyB,UAAI,CAACimG,mBAAL,GAA2B/5I,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,sBAAP,CAA7C,GAA8E,iBAA/E,CAA5B;AACAmyB,UAAI,CAACkmG,oBAAL,GAA4Bh6I,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,sBAAP,CAA7C,GAA8E,iBAA/E,CAA7B;AACAmyB,UAAI,CAAComG,QAAL,GAAgBl6I,CAAC,CAAC,6BAAD,CAAjB;AACA8zC,UAAI,CAACk9F,cAAL,GAAsBR,iBAAiB,CAACzxH,MAAlB,GAA2BzW,QAA3B,CAAoC,YAApC,CAAtB;AACAwrC,UAAI,CAACg/F,eAAL,GAAuB6G,kBAAkB,CAAC56H,MAAnB,GAA4BzW,QAA5B,CAAqC,YAArC,CAAvB;AAEAwrC,UAAI,CAAC6mG,kBAAL,CACE;AACA;AAFF,OAGG1yI,MAHH,CAGU6rC,IAAI,CAACk9F,cAHf,EAIG/oI,MAJH,CAIU6rC,IAAI,CAAC48F,WAJf,EAKGzoI,MALH,CAKU6rC,IAAI,CAACimG,mBALf,EAMG9xI,MANH,CAMU6rC,IAAI,CAACg/F,eANf,EAOG7qI,MAPH,CAOU6rC,IAAI,CAACy+F,YAPf,EAQGtqI,MARH,CAQU6rC,IAAI,CAACkmG,oBARf;AAUAlmG,UAAI,CAAC8mG,gBAAL,CACG3yI,MADH,CACU6rC,IAAI,CAAComG,QADf;AAGApmG,UAAI,CAACx5B,GAAL,CAAS1T,GAAT,CAAa,QAAb,EAAuB,CAAvB,EACGqB,MADH,CACU6rC,IAAI,CAAC6mG,kBADf,EAEG1yI,MAFH,CAEU6rC,IAAI,CAAC8mG,gBAFf;AAIA9mG,UAAI,CAAC6mG,kBAAL,CAAwBxgI,IAAxB,CAA6B,KAA7B,EAAoC7R,QAApC,CAA6C,6BAA7C;AACAwrC,UAAI,CAAC8mG,gBAAL,CAAsBzgI,IAAtB,CAA2B,KAA3B,EAAkC7R,QAAlC,CAA2C,6BAA3C;AAEAkoI,uBAAiB,CAAClmI,MAAlB;AACAqvI,wBAAkB,CAACrvI,MAAnB;AACAymI,yBAAmB,GA/CH,CAiDhB;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACAj9F,UAAI,CAAC48F,WAAL,CAAiBh4H,EAAjB,CAAoB,OAApB,EAA6B,QAA7B,EAAuC1O,KAAK,CAAComI,IAA7C;AACAt8F,UAAI,CAACy+F,YAAL,CAAkB75H,EAAlB,CAAqB,OAArB,EAA8B,QAA9B,EAAwC1O,KAAK,CAACmoI,KAA9C;AACAr+F,UAAI,CAACimG,mBAAL,CAAyBrhI,EAAzB,CAA4B,OAA5B,EAAqC,QAArC,EAA+CyhI,kBAA/C;AACArmG,UAAI,CAACkmG,oBAAL,CAA0BthI,EAA1B,CAA6B,OAA7B,EAAsC,QAAtC,EAAgD2hI,kBAAhD;AACD,KA/EW;AAiFZ/vI,UAAM,EAAE,kBAAW;AACjB,UAAIkmI,iBAAJ,EAAuB;AACrBA,yBAAiB,CAAClmI,MAAlB;AACD;;AACD,UAAIqvI,kBAAJ,EAAwB;AACtBA,0BAAkB,CAACrvI,MAAnB;AACD;AACF,KAxFW;AA0FZsvB,WAAO,EAAE,mBAAW,CAAE,CA1FV;AA4FZ04B,YAAQ,EAAE,oBAAW,CAAE,CA5FX;AA8FZ1M,eAAW,EAAE,qBAASzsC,KAAT,EAAgB;AAC3Bq3H,uBAAiB,CAAC5qF,WAAlB,CAA8BzsC,KAA9B;;AACA,UAAInP,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAjB,IAAsC,IAA1C,EAAgD;AAC9CrK,yBAAiB,CAAC3qF,SAAlB;AACD;AACF,KAnGW;AAqGZktF,gBAAY,EAAE,sBAAS55H,KAAT,EAAgB;AAC5BwgI,wBAAkB,CAAC/zF,WAAnB,CAA+BzsC,KAA/B;;AACA,UAAInP,KAAK,CAACwb,UAAN,CAAiBs1H,kBAAjB,IAAuC,IAA3C,EAAiD;AAC/CnB,0BAAkB,CAAC9zF,SAAnB;AACD;AACF,KA1GW;AA4GZ3lC,UAAM,EAAE,kBAAW;AACjB,UAAIlW,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAjB,IAAsC,IAA1C,EAAgD;AAC9CrK,yBAAiB,CAACtwH,MAAlB,CAAyB,EAAzB;AACAswH,yBAAiB,CAAC3qF,SAAlB;AACD,OAHD,MAGO;AACL2qF,yBAAiB,CAACtwH,MAAlB,CAAyBzC,MAAM,CAACzT,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAlB,CAA/B;AACArK,yBAAiB,CAAC1qF,SAAlB;AACD;;AACD,UAAI97C,KAAK,CAACwb,UAAN,CAAiBs1H,kBAAjB,IAAuC,IAA3C,EAAiD;AAC/CnB,0BAAkB,CAACz5H,MAAnB,CAA0B,EAA1B;AACAy5H,0BAAkB,CAAC9zF,SAAnB;AACD,OAHD,MAGO;AACL8zF,0BAAkB,CAACz5H,MAAnB,CAA0BzC,MAAM,CAACzT,KAAK,CAACwb,UAAN,CAAiBs1H,kBAAlB,CAAhC;AACAnB,0BAAkB,CAAC7zF,SAAnB;AACD;AACF;AA3HW,GAAd;AA6HD;AAAA,C;;ACtQA;;;;;;;;;AAWc,SAASi1F,+BAAT,CAAyChhI,MAAzC,EAAiD;AAC9D,SAAO;AACL;;;;;;;;;;;;;AAaAoxH,cAAU,EAAE,SAASA,UAAT,CAAoBxhI,OAApB,EAA6B;AACvCoQ,YAAM,CAAC8xB,aAAP,CAAqBs/F,UAArB,CAAgCxhI,OAAhC;AACD;AAhBI,GAAP;AAkBD;AAAA,C;;AC7BD;AACA;AACA;CAEA;;AAEe,+EAASmmC,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,MAAI2I,UAAU,GAAG,IAAIstC,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACf3R,mCADe,EACR6nD,0BADQ,EACQh9B,+BADR,CAAjB,CADqE,CAIrE;AACA;;AAEA,WAASsqG,mBAAT,GAA+B;AAC7B,QAAI/mI,KAAK,GAAGksB,UAAU,CAAClsB,KAAvB;AAEAA,SAAK,CAACu+B,WAAN,CAAkB,mBAAlB,EAAuC,YAAW;AAChDrS,gBAAU,CAAC0uC,UAAX;AACD,KAFD;AAIA56D,SAAK,CAACu+B,WAAN,CAAkB,oBAAlB,EAAwC,YAAW;AACjDrS,gBAAU,CAAC0uC,UAAX;AACD,KAFD;AAIA56D,SAAK,CAACu+B,WAAN,CAAkB,aAAlB,EAAiC,YAAW;AAC1C,UAAIv+B,KAAK,CAACwb,UAAN,CAAiBwnH,WAArB,EAAkC;AAChCz/G,6BAAqB,CAAC0c,WAAtB;AACD;AACF,KAJD;AAMAjgC,SAAK,CAACwpB,8BAAN,CAAqC,eAArC,EAAsD,YAAW;AAC/D,UAAIK,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,CAAlB;AACA,UAAIggB,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;AAEAgL,UAAI,CAAC8R,WAAL,CAAiB/xB,WAAW,CAACG,mBAAZ,EAAjB;AACD,KALD;AAOAhqB,SAAK,CAACwpB,8BAAN,CAAqC,gBAArC,EAAuD,YAAW;AAChE,UAAIK,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,gBAA7B,CAAlB;AACA,UAAIggB,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;AAEAgL,UAAI,CAACi/F,YAAL,CAAkBl/G,WAAW,CAACG,mBAAZ,EAAlB;AACD,KALD;AAMD;;AAEDzG,uBAAqB,CAAC7U,EAAtB,CAAyB,oDAAzB,EAA+Eq4H,mBAA/E;AAEAxjH,uBAAqB,CAAC7U,EAAtB,CAAyB,mDAAzB,EAA8E,YAAW;AACvFwd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,KAA3C;AACD,GAFD;AAIA4vB,uBAAqB,CAAC7U,EAAtB,CAAyB,gBAAzB,EAA2C,YAAW;AACpDwd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,IAA3C;AACAu4B,cAAU,CAAClsB,KAAX,CAAiBu6D,SAAjB;AACD,GAHD;AAKA,SAAOruC,UAAP;AACD;AAAA,C;;ACzDc;AACbrpB,gBAAc,EAAE;AACd5K,QAAI,EAAE;AACJnC,kBAAY,EAAE,kBADV;AAEJd,eAAS,EAAE;AAFP,KADQ;AAKdosI,cAAU,EAAE;AACVtrI,kBAAY,EAAE;AADJ,KALE;AAQdyrI,aAAS,EAAE;AACTzrI,kBAAY,EAAE;AADL,KARG;AAWd4xI,YAAQ,EAAE;AACR5xI,kBAAY,EAAE;AADN,KAXI;AAcdozI,cAAU,EAAE;AACVpzI,kBAAY,EAAE;AADJ,KAdE;AAiBd6xI,qBAAiB,EAAE;AACjB7xI,kBAAY,EAAE;AADG,KAjBL;AAoBd4O,eAAW,EAAE;AACX5O,kBAAY,EAAE,OADH;AAEXsN,wBAAkB,EAAE,KAFT;AAGXnO,cAAQ,EAAE,kBAAS9D,KAAT,EAAgB;AACxB,YAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,KAA5B,IAAqCA,KAAK,KAAK,OAAnD,EAA4D;AAC1D,iBAAOA,KAAP;AACD;;AACD,cAAM,IAAIF,KAAJ,CAAU,kCAAkCE,KAA5C,CAAN;AACD;AARU,KApBC;AA8BdwT,qBAAiB,EAAE;AACjB7O,kBAAY,EAAE,EADG;AAEjBsN,wBAAkB,EAAE;AAFH;AA9BL,GADH;AAoCbyB,aAAW,EAAE;AACXQ,aAAS,EAAE;AACTvP,kBAAY,EAAE,IADL;AAETN,+BAAyB,EAAE;AAFlB,KADA;AAKXyR,kBAAc,EAAE;AACdnR,kBAAY,EAAE,YADA;AAEdN,+BAAyB,EAAE;AAFb,KALL;AASX0R,sBAAkB,EAAE;AAClBpR,kBAAY,EAAE,OADI;AAElBN,+BAAyB,EAAE,KAFT;AAGlBK,eAAS,EAAE;AAHO;AATT;AApCA,CAAf,E;;ACDe;AACbsZ,OAAK,EAAE;AACL9O,QAAI,EAAE;AACJrI,UAAI,EAAE,QADF;AAEJgoE,gBAAU,EAAE,SAFR;AAGJC,YAAM,EAAE;AAHJ;AADD;AADM,CAAf,E;;ACCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGe,SAASruD,8BAAT,CAAekzD,iBAAf,EAAkCyzB,GAAlC,EAAuC;AACpD,MAAIpgF,IAAI,GAAGogF,GAAG,CAACpgF,IAAf;AAAA,MACE4qH,QAAQ,GAAG,IAAIH,sBAAJ,CAAazqH,IAAb,CADb;AAAA,MAGEspF,eAHF;AAAA,MAIEtgC,eAJF;AAAA,MAKEx6C,QALF;AAAA,MAMEkjH,YANF;AAAA,MAOEC,wBAPF;AAAA,MAQEC,UARF;AAAA,MASEC,UATF;AAAA,MAUEE,cAVF;AAAA,MAWErI,UAXF;AAAA,MAYE3nG,UAZF;AAAA,MAaE8oG,WAbF;AAAA,MAcE3iI,IAdF;AAAA,MAeEkjI,cAfF;AAAA,MAgBE8G,eAhBF;AAAA,MAiBErhH,YAjBF;AAAA,MAkBEwkC,UAlBF;AAAA,MAmBEo5E,OAnBF;AAAA,MAoBE2D,UApBF;AAAA,MAqBEC,kBArBF;AAAA,MAsBE9G,gBAtBF;AAAA,MAuBErvI,OAvBF;AAAA,MAwBEo2I,YAxBF;AAAA,MAyBEC,YAzBF;AAAA,MA0BE3/B,8BA1BF;AAAA,MA2BE/qG,KA3BF;;AA6BA,MAAI2qI,+BAA+B,GAAG;AACpCx3H,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,oCAAP,CAD6B;AAEpC0D,oBAAgB,EAAE,GAFkB;AAGpC5H,UAAM,EAAE,KAH4B;AAIpC/gB,OAAG,EAAE,CAJ+B;AAKpCD,OAAG,EAAE;AAL+B,GAAtC;AAOA,MAAI+uI,iBAAiB,GAAGqC,iCAAoB,CAAC1rH,IAAD,CAA5C;;AAEA,WAAS2rH,mBAAT,CAA6BhoH,QAA7B,EAAuCppB,GAAvC,EAA4CD,GAA5C,EAAiD;AAC/C,QAAI+sE,eAAJ;AACA,QAAI31C,WAAJ;AAEA21C,mBAAe,GAAGx/D,KAAK,CAAC8pB,sBAAN,CAA6BhO,QAA7B,EAAuCykD,OAAvC,EAAlB;AACAf,mBAAe,CAAC9sE,GAAhB,GAAsBA,GAAtB;AACA8sE,mBAAe,CAAC/sE,GAAhB,GAAsBA,GAAtB;AAEAo3B,eAAW,GAAG,IAAIy1C,oBAAJ,CAAwB8B,iCAAxB,EAAyC5B,eAAzC,CAAd;AACA2B,mBAAe,CAACzD,sBAAhB,CAAuC5hD,QAAvC,EAAiD+N,WAAjD;AACD,GAjDmD,CAmDpD;;;AACA,WAASk6G,sBAAT,GAAkC;AAChC,QAAI/jI,KAAK,CAACwb,UAAN,CAAiByyC,cAAjB,KAAoC,IAApC,IAA4CjuD,KAAK,CAACwb,UAAN,CAAiByyC,cAAjB,KAAoClvD,QAApF,EAA8F;AAC5F;AACD;;AACD+kI,uBAAmB,CAAC,aAAD,EAAgB,CAAhB,EAAmB9jI,KAAK,CAACwb,UAAN,CAAiByyC,cAApC,CAAnB;AACD;;AAED,WAAS28E,2BAAT,GAAuC;AACrC,QAAIrF,gBAAJ;AACA,QAAI17G,WAAJ;;AAEA,QAAImgH,UAAJ,EAAgB;AACdzE,sBAAgB,GAAG/D,iBAAiB,CAACwI,UAAU,CAAC76H,KAAZ,CAApC;;AAEA,UAAIo2H,gBAAJ,EAAsB;AACpB17G,mBAAW,GAAG;AACZ1W,eAAK,EAAEoyH,gBAAgB,CAAC3D,eADZ;AAEZnuH,gBAAM,EAAE,KAFI;AAGZ/gB,aAAG,EAAE6yI,gBAAgB,CAACQ,UAHV;AAIZtzI,aAAG,EAAE8yI,gBAAgB,CAACS;AAJV,SAAd;;AAMA,YAAI5kE,iCAAe,CAACjyD,KAAhB,CAAsBo2H,gBAAgB,CAACC,eAAvC,CAAJ,EAA6D;AAC3D37G,qBAAW,CAAC5mB,QAAZ,GAAuBsiI,gBAAgB,CAACC,eAAxC;AACD,SAFD,MAEO;AACL37G,qBAAW,CAACxO,gBAAZ,GAA+B2uH,UAAU,CAAC76H,KAA1C;AACD;;AACDu0H,wBAAgB,GAAG6B,gBAAgB,CAACG,QAApC;AACA7D,kBAAU,GAAG0D,gBAAgB,CAAC1D,UAAjB,IAAgCmI,UAAU,CAAC76H,KAAX,GAAmB,SAAhE;AACD,OAdD,MAcO;AACL0a,mBAAW,GAAG;AACZ1W,eAAK,EAAE62H,UAAU,CAAChyI,IAAX,IAAmBmgB,IAAI,CAACR,CAAL,CAAO,oCAAP,CADd;AAEZ0D,0BAAgB,EAAE2uH,UAAU,CAAC76H,KAFjB;AAGZsE,gBAAM,EAAE,KAHI;AAIZ/gB,aAAG,EAAE,CAJO;AAKZD,aAAG,EAAE;AALO,SAAd;AAOAixI,wBAAgB,GAAG,IAAnB;AACA7B,kBAAU,GAAGmI,UAAU,CAAC76H,KAAX,GAAmB,SAAhC;AACD;AACF,KA5BD,MA4BO;AACL0a,iBAAW,GAAG8gH,+BAAd;AACAjH,sBAAgB,GAAG,KAAnB;AACA7B,gBAAU,GAAG,aAAb;AACD;;AAED1gE,mBAAe,CAACzD,sBAAhB,CAAuC,eAAvC,EACE,IAAI4B,oBAAJ,CAAwB8B,iCAAxB,EAAyCv3C,WAAzC,CADF;AAEAs3C,mBAAe,CAACzD,sBAAhB,CAAuC,mBAAvC,EACE,IAAI4B,oBAAJ,CAAwB8B,iCAAxB,EAAyCv3C,WAAzC,CADF;AAED;;AAED,WAASs7G,wBAAT,GAAoC;AAClCjrG,cAAS,GAAG,IAAZ;AACAqwG,cAAU,GAAGT,wBAAwB,CAACS,UAAtC;AACAC,sBAAkB,GAAG,KAArB,CAHkC,CAIlC;;AACA,QAAI,OAAON,cAAP,KAA2B,WAA3B,IAA0CA,cAAc,KAAK,IAAjE,EAAuE;AACrEA,oBAAc,GAAG;AACfx/G,aAAK,EAAE;AADQ,OAAjB;AAGD;;AACD1B,gBAAW,GAAG,CAAd;AACA3oB,QAAI,GAAG,CAAP;AACAqqI,gBAAY,GAAG,CAAf;AACAnH,kBAAc,GAAGjzI,SAAjB;AACA+5I,mBAAe,GAAG/5I,SAAlB;AACAy5I,cAAU,GAAGz5I,SAAb;AACA05I,cAAU,GAAG15I,SAAb;AACD;;AAED,WAASw6I,0BAAT,CAAoCjiF,OAApC,EAA6C/0D,GAA7C,EAAkD;AAChD,QAAIi3I,YAAY,GAAGliF,OAAO,CAACzM,OAAR,CAAgBtoD,GAAhB,CAAnB;;AACA,QAAIi3I,YAAY,IAAIA,YAAY,CAAC57H,KAAb,KAAuB+6H,cAAc,CAAC/6H,KAA1D,EAAiE;AAC/D+6H,oBAAc,CAACx/G,KAAf,GAAuB52B,GAAvB;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAED,WAASm3I,qBAAT,CAA+BpiF,OAA/B,EAAwC;AACtC,QAAIA,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA7B,EAAgC;AAC9B,aAAO,KAAP;AACD;;AACD,QAAIw3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,KAA2B,CAA3B,IAAgC,CAACw3D,OAAO,CAACzM,OAAR,CAAgB,CAAhB,EAAmBpkD,IAApD,IAA4D,CAAC6wD,OAAO,CAACzM,OAAR,CAAgB,CAAhB,EAAmBjtC,KAApF,EAA2F;AACzF,aAAO,KAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAED,WAAS+7H,SAAT,GAAqB;AACnB,QAAIriF,OAAO,GAAGihF,wBAAwB,CAACqB,QAAzB,CAAkC,CAAlC,CAAd;AACA,QAAIC,aAAJ,EAAmBE,IAAnB;AAEAd,sBAAkB,GAAG3hF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA9C,CAJmB,CAMnB;;AACA04I,cAAU,GAAGlhF,OAAO,CAACzM,OAAR,CAAgB,CAAhB,CAAb;;AACA,QAAI0tF,wBAAwB,CAACyB,oBAA7B,EAAmD;AACjD,UAAIN,qBAAqB,CAACpiF,OAAD,CAAzB,EAAoC;AAClC,YAAI0hF,UAAJ,EAAgB;AACdl2I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,uBAAP,CAAV;AACD,SAFD,MAEO,IAAImyH,wBAAwB,CAAC0B,SAAzB,CAAmCtC,UAAvC,EAAmD;AACxD70I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iCAAP,EAA0C;AAClD8zH,8BAAkB,EAAE3B,wBAAwB,CAAC0B,SAAzB,CAAmCtC;AADL,WAA1C,CAAV;AAGD,SAJM,MAIA;AACL70I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,wCAAP,CAAV;AACD;;AACD61C,kBAAU,GAAG,IAAb;AACD,OAXD,MAWO;AACLn5D,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,4BAAP,CAAV;AACA61C,kBAAU,GAAG,KAAb;AACD,OAfgD,CAiBjD;AACA;;;AACA89E,UAAI,GAAGpB,cAAc,CAACx/G,KAAtB;;AACA,UAAI4gH,IAAI,IAAIziF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAxB,IAAkCw3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA/D,EAAkE;AAChE;AACAi6I,YAAI,GAAGziF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAAhC;AACD;;AACD+5I,mBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAhB,CAAhB;;AACA,UAAIF,aAAa,IAAIlB,cAAc,CAAC/6H,KAAhC,IAAyCi8H,aAAa,CAACj8H,KAAd,KAAwB+6H,cAAc,CAAC/6H,KAApF,EAA2F;AACzF;AACA;AACA,YAAI27H,0BAA0B,CAACjiF,OAAD,EAAUyiF,IAAI,GAAG,CAAjB,CAA9B,EAAmD;AACjDF,uBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAI,GAAG,CAAvB,CAAhB;AACD,SAFD,MAEO,IAAIA,IAAI,GAAG,CAAP,IAAYR,0BAA0B,CAACjiF,OAAD,EAAUyiF,IAAI,GAAG,CAAjB,CAA1C,EAA+D;AACpE;AACAF,uBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAI,GAAG,CAAvB,CAAhB;AACD,SAHM,MAGA;AACL;AACAF,uBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgB,CAAhB,CAAhB;AACA8tF,wBAAc,CAACx/G,KAAf,GAAuB,CAAvB;AACD;AACF;AACF,KAvCD,MAuCO;AACLr2B,aAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,4BAAP,CAAV;AACA61C,gBAAU,GAAG,KAAb;AACD;;AAED,QAAI49E,aAAa,IAAI,CAACA,aAAa,CAACpzI,IAAhC,IAAwC,CAACozI,aAAa,CAACj8H,KAA3D,EAAkE;AAChE;AACAi8H,mBAAa,GAAG,IAAhB;AACD;;AAEDpB,cAAU,GAAGoB,aAAb;;AACA,QAAIpB,UAAJ,EAAgB;AACdE,oBAAc,CAAC/6H,KAAf,GAAuB66H,UAAU,CAAC76H,KAAlC;AACD;;AACDy7H,+BAA2B;;AAE3B,QAAI,CAACZ,UAAL,EAAiB;AACfK,qBAAe,GAAG/5I,SAAlB;AACD;AACF;;AAED,WAASo7I,UAAT,GAAsB;AACpB,QAAI,CAAC3B,UAAD,IAAe,CAACC,UAApB,EAAgC;AAC9B;AACD;;AAED,QAAI2B,cAAc,GAAGn5I,IAAI,CAACE,GAAL,CAASq3I,UAAU,CAAChzH,IAAX,CAAgB1lB,MAAzB,EAAiC24I,UAAU,CAACjzH,IAAX,CAAgB1lB,MAAjD,CAArB;;AACA,WAAO23B,YAAW,GAAG2iH,cAArB,EAAqC3iH,YAAW,EAAhD,EAAoD;AAClD3oB,UAAI,GAAG0pI,UAAU,CAAChzH,IAAX,CAAgBiS,YAAhB,CAAP;;AAEA,UAAI3oB,IAAI,GAAGL,KAAK,CAACwb,UAAN,CAAiByyC,cAA5B,EAA4C;AAC1C;AACA;AACAjuD,aAAK,CAAC89B,IAAN;AACD;;AACDylG,oBAAc,GAAGyG,UAAU,CAACjzH,IAAX,CAAgBiS,YAAhB,CAAjB;AACAhpB,WAAK,CAACujE,yBAAN;AACA58C,cAAQ,CAAC4Z,IAAT;AACD;AACF;;AAED,WAASqrG,wBAAT,CAAkCC,MAAlC,EAA0C;AACxC,WAAOA,MAAM,CAACC,uBAAP,IAAkCD,MAAM,CAACE,wBAAhD;AACD;;AAED,WAASC,iBAAT,GAA6B;AAC3B,WAAOJ,wBAAwB,CAAC7B,UAAD,CAAxB,KAAyC,CAACC,UAAD,IAAe4B,wBAAwB,CAAC5B,UAAD,CAAhF,CAAP;AACD;;AAED,WAASiC,gBAAT,GAA4B;AAC1B,QAAIC,OAAO,GAAG,EAAd;AAAA,QACErjF,OAAO,GAAGihF,wBAAwB,CAACqB,QAAzB,CAAkC,CAAlC,CADZ;AAAA,QAEE/5I,CAFF;;AAIA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGy3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C86I,aAAO,CAACl4I,IAAR,CAAa;AACXmb,aAAK,EAAE05C,OAAO,CAACzM,OAAR,CAAgBhrD,CAAhB,EAAmB+d,KADf;AAEXnX,YAAI,EAAE6wD,OAAO,CAACzM,OAAR,CAAgBhrD,CAAhB,EAAmB4G;AAFd,OAAb;AAID;;AACD,WAAOk0I,OAAP;AACD;;AAEDlsI,OAAK,GAAG;AAEN0O,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD,KAJK;AAMNya,SAAK,EAAE,iBAAW;AAChBosG,YAAM,CAAC,OAAD,CAAN;AACD,KARK;AAUNruG,QAAI,EAAE,gBAAW;AACfquG,YAAM,CAAC,MAAD,CAAN;AACD,KAZK;AAcN/F,QAAI,EAAE,gBAAW;AACf,UAAIgG,WAAW,GAAG5+E,UAAlB;AACAA,gBAAU,GAAG,KAAb;AACA2+E,YAAM,CAAC,MAAD,CAAN;AACA3+E,gBAAU,GAAG4+E,WAAb;AACD,KAnBK;AAqBN7xE,aAAS,EAAE,qBAAW;AACpB5zC,cAAQ,CAAC4zC,SAAT;AACD,KAvBK;AAyBN/+D,SAAK,EAAE,iBAAW;AAChB2wI,YAAM,CAAC,OAAD,CAAN;AACD,KA3BK;AA6BN/xE,UAAM,EAAE,kBAAW;AACjBp6D,WAAK,CAAC89B,IAAN;AACA99B,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC0kE,mBAAW,GAAG,IAAd;AACD,OAFD;AAGD,KAlCK;AAoCN9oG,aAAS,EAAE,qBAAW;AACpB,aAAOA,UAAP;AACD,KAtCK;AAwCNlR,eAAW,EAAE,uBAAW;AACtB,aAAOA,YAAP;AACD,KA1CK;AA4CNijH,oBAAgB,EAAEA,gBA5CZ;AA6CNI,qBAAiB,EAAE,6BAAW;AAC5B,aAAOnC,cAAc,CAACx/G,KAAtB;AACD,KA/CK;AAgDN6hH,qBAAiB,EAAE,2BAASC,WAAT,EAAsB;AACvC,UAAItC,cAAc,CAACx/G,KAAf,IAAwB8hH,WAA5B,EAAyC;AACvCtC,sBAAc,CAACx/G,KAAf,GAAuB8hH,WAAvB;AACAtC,sBAAc,CAAC/6H,KAAf,GAAuB,IAAvB;AACAnP,aAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6B,CAA7B,CAHuC,CAGP;;AAChC2J,iBAAS;AACV;AACF,KAvDK;AAyDNr1I,aAAS,EAAE,qBAAW;AACpB,aAAO,EAAP;AACD;AA3DK,GAAR;AA+DAg0I,cAAY,GAAG,IAAIV,aAAJ,CAAiB;AAE9BuD,gBAAY,EAAE;AACZhD,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,+BAAP,CAAV;AACA+yH,oBAAY,GAAG,CAAf,CAFqB,CAGrB;;AACAZ,gCAAwB,CAAC6C,YAAzB,CAAsC,CACZ,yBADY,EACe,yBADf,EAEZ,wBAFY,EAEc,wBAFd,CAAtC,EAG0B3sI,KAAK,CAACwb,UAAN,CAAiBksH,QAH3C,EAGqD1nI,KAAK,CAACwb,UAAN,CAAiB0tH,UAHtE;AAIA,aAAKG,SAAL,CAAe,YAAf;AACD;AAVW,KAFgB;AAe9BuD,cAAU,EAAE;AACVlD,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,4BAAP,CAAV;;AACA,YAAImyH,wBAAwB,CAAC+C,WAA7B,EAA0C;AACxC,eAAKxD,SAAL,CAAe,WAAf;AACD,SAFD,MAEO;AACLoB,sBAAY,GAAG1H,QAAQ,CAACD,MAAT,CAAgB3qH,IAAI,CAACR,CAAL,CAAO,wCAAP,CAAhB,EAAkE;AAC/E8e,uBAAW,EAAE;AADkE,WAAlE,CAAf;AAGD;AACF,OAVS;AAYVgzG,gBAAU,EAAE,sBAAW;AACrB,YAAIgB,YAAJ,EAAkB;AAChBA,sBAAY,CAACvzG,KAAb;AACAuzG,sBAAY,GAAG,IAAf;AACD;AACF,OAjBS;AAmBVqC,mBAAa,EAAE,yBAAW;AACxB,aAAKzD,SAAL,CAAe,0BAAf;AACD,OArBS;AAuBV0D,wBAAkB,EAAE,8BAAW;AAC7B,aAAK1D,SAAL,CAAe,0BAAf;AACD,OAzBS;AA2BV2D,oBAAc,EAAE,0BAAW;AACzB,aAAK3D,SAAL,CAAe,0BAAf;AACD,OA7BS;AA+BV4D,oBAAc,EAAE,0BAAW;AACzB,aAAK5D,SAAL,CAAe,WAAf;AACD,OAjCS;AAmCV6D,oBAAc,EAAE,0BAAW;AACzB;AACApD,gCAAwB,CAACqD,WAAzB;AACArD,gCAAwB,CAAC6C,YAAzB;AACD;AAvCS,KAfkB;AAyD9BS,4BAAwB,EAAE;AACxB1D,gBAAU,EAAE,sBAAW;AACrBI,gCAAwB,CAACqD,WAAzB;AACA94I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,mCAAP,EAA4C;AACpD01H,oBAAU,EAAE;AADwC,SAA5C,CAAV;AAGA,YAAIC,UAAU,GAAG,yCAAjB;AACAvK,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO21H,UAAP,EAAmB;AAChCC,yBAAe,EAAE,2FACfp1H,IAAI,CAACR,CAAL,CAAO,4BAAP,CADe,GACwB;AAFT,SAAnB,CAAf,EAGI;AACF,uBAAa,oBAAW;AACtB3hB,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,SAAD,CAAN;AACD;AAJC,SAHJ,EAQG;AACDj1G,eAAK,EAAE,iBAAW;AAChBi1G,kBAAM,CAAC,QAAD,CAAN;AACD;AAHA,SARH;AAaD,OApBuB;AAsBxB;AACAW,mBAAa,EAAE,yBAAW,CAAE,CAvBJ;AAwBxBC,wBAAkB,EAAE,8BAAW,CAAE,CAxBT;AAyBxBC,oBAAc,EAAE,0BAAW,CAAE,CAzBL;AA2BxBQ,YAAM,EAAE,kBAAW;AACjBn5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,mCAAP,EAA4C;AACpD01H,oBAAU,EAAE,sDAAsDl1H,IAAI,CAACR,CAAL,CAAO,mDAAP,CAAtD,GAAoH;AAD5E,SAA5C,CAAV,CADiB,CAIjB;;AACA,YAAI81H,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAW;AACnC,cAAIC,KAAK,GAAG13I,CAAC,CAAC,cAAD,CAAb;;AACA,cAAI03I,KAAK,CAAC,CAAD,CAAT,EAAc;AACZA,iBAAK,CAACh1G,KAAN,CAAY,YAAW;AACrByzG,oBAAM,CAAC,SAAD,CAAN;AACD,aAFD;AAGD,WAJD,MAIO;AACL7qG,sBAAU,CAACmsG,mBAAD,EAAsB,EAAtB,CAAV;AACD;AACF,SATD;;AAUAA,2BAAmB;AACpB,OA3CuB;AA6CxBE,aAAO,EAAE,mBAAW;AAClB,aAAKtE,SAAL,CAAe,cAAf;AACD;AA/CuB,KAzDI;AA2G9BuE,aAAS,EAAE;AACTlE,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAV;AACAivH,eAAO,GAAG,IAAV;AACAp5E,kBAAU,GAAG,IAAb;AACAtzB,kBAAS,GAAG,IAAZ;AAEAgxG,iBAAS;;AAET,YAAIX,UAAJ,EAAgB;AACd,eAAKsD,cAAL;AACD,SAFD,MAEO;AACL,eAAKC,eAAL;AACD;;AAED,YAAIhE,wBAAwB,CAACiE,YAA7B,EAA2C;AACzC,eAAK1E,SAAL,CAAe,SAAf;AACD;AACF,OAlBQ;AAoBTI,gBAAU,EAAE,sBAAW;AACrB7C,eAAO,GAAG,KAAV;AACAp5E,kBAAU,GAAG,KAAb;AACD,OAvBQ;AAyBT;AACAwgF,iBAAW,EAAE9C,SA1BJ;AA2BT+C,mBAAa,EAAE/C,SA3BN;AA4BTgD,uBAAiB,EAAEhD,SA5BV;AA6BTiD,iBAAW,EAAEjD,SA7BJ;AA+BTkD,wBAAkB,EAAElD,SA/BX;AAgCTmD,sBAAgB,EAAEnD,SAhCT;AAkCT9E,UAAI,EAAE,gBAAW;AACf,YAAI4D,UAAJ,EAAgB;AACdhqI,eAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6ByI,UAAU,CAACsE,SAAxC;AACD;AACF,OAtCQ;AAwCT;AACAvuG,WAAK,EAAE,iBAAW;AAChB;AACA;AACA;AACA;AACA;AACA+pG,gCAAwB,CAACyE,YAAzB,YAA8C,YAAW;AACvDpC,gBAAM,CAAC,oBAAD,CAAN;AACD,SAFD;AAGA,aAAK9C,SAAL,CAAe,UAAf;AACD,OAnDQ;AAqDTwE,oBAAc,EAAE,0BAAW;AACzBx5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAV;AACD,OAvDQ;AAyDTm2H,qBAAe,EAAE,2BAAW;AAC1B,YAAIhE,wBAAwB,CAAC0B,SAAzB,CAAmCtC,UAAvC,EAAmD;AACjD70I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iDAAP,EAA0D;AAClE8zH,8BAAkB,EAAE3B,wBAAwB,CAAC0B,SAAzB,CAAmCtC;AADW,WAA1D,CAAV;AAGD,SAJD,MAIO;AACL70I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,wDAAP,CAAV;AACD;AACF,OAjEQ;AAmETu1H,oBAAc,EAAE,0BAAW;AACzBpD,gCAAwB,CAACqD,WAAzB;AACArD,gCAAwB,CAAC6C,YAAzB;AACA,aAAKtD,SAAL,CAAe,YAAf;AACD,OAvEQ;AAyET;AACAmF,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD;AA5EQ,KA3GmB;AA0L9BoF,YAAQ,EAAE;AACR/E,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACAuiB,kBAAS,GAAG,KAAZ;AACA,YAAIrpB,IAAI,GAAG,IAAX;AACA,aAAK69H,aAAL,GAAqBptG,UAAU,CAAC,IAAD,EAAO,YAAW;AAC/CzwB,cAAI,CAACw4H,SAAL,CAAe,oBAAf;AACD,SAF8B,CAA/B;AAGD,OARO;AAURI,gBAAU,EAAE,sBAAW;AACrBhoG,oBAAY,CAAC,KAAKitG,aAAN,CAAZ;AACD,OAZO;AAcRC,wBAAkB,EAAE,8BAAW;AAC7B,aAAKtF,SAAL,CAAe,eAAf;AACD,OAhBO;AAkBRmF,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD;AApBO,KA1LoB;AAiN9BuF,iBAAa,EAAE;AACblF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,gDAAP,CAAV;AACAuiB,kBAAS,GAAG,IAAZ;AAEA6oG,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAf,EAA+E;AAC7EgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,sBAAD,CAAN;AACD;AAJ4E,SAA/E;AAMD,OAXY;AAabqC,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD,OAfY;AAiBbwF,0BAAoB,EAAE,gCAAW;AAC/B,aAAKxF,SAAL,CAAe,WAAf;AACD;AAnBY,KAjNe;AAuO9ByF,WAAO,EAAE;AACPpF,gBAAU,EAAE,sBAAW;AACrBxvG,kBAAS,GAAG,KAAZ;AACAgxG,iBAAS;AACT19E,kBAAU,GAAG,KAAb;;AACA,YAAI+8E,UAAJ,EAAgB;AACdl2I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iCAAP,CAAV;AACD,SAFD,MAEO;AACLtjB,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAV;AACD,SARoB,CAUrB;AACA;;;AACA,YAAI,CAACmyH,wBAAwB,CAACiE,YAA9B,EAA4C;AAC1C,eAAK1E,SAAL,CAAe,SAAf;AACD;;AAED,YAAI,CAACW,UAAL,EAAiB;AACf,eAAKX,SAAL,CAAe,yBAAf;AACD;AACF,OApBM;AAsBPtyH,UAAI,EAAE20H,UAtBC;AAwBPmC,oBAAc,EAAE,0BAAW;AACzBx5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iCAAP,CAAV;AACD,OA1BM;AA4BPm2H,qBAAe,EAAE,2BAAW;AAC1Bz5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAV;AACD,OA9BM;AAgCPmmB,UAAI,EAAE,gBAAW;AACfgsG,gCAAwB,CAACiF,WAAzB,YAA6C,YAAW;AACtD5C,gBAAM,CAAC,mBAAD,CAAN;AACD,SAFD;AAGA,aAAK9C,SAAL,CAAe,UAAf;AACD,OArCM;AAuCP2F,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD;AAzCM,KAvOqB;AAmR9B;AACA4F,2BAAuB,EAAE;AACvBvF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,yBAAP,CAAV;AAEAmyH,gCAAwB,CAACiF,WAAzB;AACAhM,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,+BAAP,CAAf,EAAwD;AACtDgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACD;AAHqD,SAAxD;AAKD,OAVsB;AAYvBk4G,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,yBAAf;AACD;AAdsB,KApRK;AAqS9B6F,2BAAuB,EAAE;AACvBxF,gBAAU,EAAE,sBAAW;AACrB,YAAIsC,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,WAAf;AACD;AACF,OALsB;AAOvBtyH,UAAI,EAAE,gBAAW;AACf,YAAIi1H,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,WAAf;AACD;AACF;AAXsB,KArSK;AAmT9B8F,YAAQ,EAAE;AACRzF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACD,OAHO;AAKRZ,UAAI,EAAE20H,UALE;AAOR0D,uBAAiB,EAAE,6BAAW;AAC5B,aAAK/F,SAAL,CAAe,eAAf;AACD,OATO;AAWR2F,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD;AAbO,KAnToB;AAmU9BgG,iBAAa,EAAE;AACb3F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,gDAAP,CAAV;AACAorH,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAf,EAA+E;AAC7EgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,sBAAD,CAAN;AACD;AAJ4E,SAA/E;AAMD,OATY;AAWbp1H,UAAI,EAAE20H,UAXO;AAabsD,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD,OAfY;AAiBbiG,0BAAoB,EAAE,gCAAW;AAC/B,aAAKjG,SAAL,CAAe,SAAf;AACD;AAnBY,KAnUe;AAyV9B;AACA2F,qBAAiB,EAAE;AACjBtF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,yCAAP,CAAV;;AACA,YAAIq0H,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,oBAAf;AACD;AACF,OANgB;AAQjBtyH,UAAI,EAAE,gBAAW;AACf20H,kBAAU;;AACV,YAAIM,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,oBAAf;AACD;AACF;AAbgB,KA1VW;AA0W9BkG,sBAAkB,EAAE;AAClB7F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACAuiB,kBAAS,GAAG,IAAZ;AACAvT,gBAAQ,CAACmX,IAAT;AACD,OALiB;AAOlBtiC,WAAK,EAAE,iBAAW;AAChB2pI,gCAAwB;AACxByF,mCAA2B;AAC3B,aAAKvB,SAAL,CAAe,YAAf;AACA1iH,gBAAQ,CAACnrB,KAAT;AACD;AAZiB,KA1WU;AAyX9Bg0I,gBAAY,EAAE;AACZ9F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,8BAAP,CAAV;AACAmyH,gCAAwB,CAACqD,WAAzB;AACA,YAAIt8H,IAAI,GAAG,IAAX;AACAywB,kBAAU,CAAC,YAAW;AACpBzwB,cAAI,CAACw4H,SAAL,CAAe,cAAf;AACD,SAFS,EAEP,IAFO,CAAV;AAGD;AARW;AAzXgB,GAAjB,CAAf,CA1ToD,CA+rBpD;AACA;;AACA,WAAS8C,MAAT,CAAgBtmH,SAAhB,EAA2B;AACzB,QAAIQ,IAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,CAAX;AAEA2K,SAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC,UAAImxE,OAAO,GAAG5F,YAAY,CAACF,WAAb,CAAyBh3I,KAAzB,CAA+Bk3I,YAA/B,EAA6CxjH,IAA7C,CAAd;;AAEA,UAAI,CAACopH,OAAL,EAAc;AACZ;AACA,YAAI5pH,SAAS,KAAK,oBAAlB,EAAwC;AACtCgkH,sBAAY,CAACR,SAAb,CAAuB,cAAvB;AACD,SAFD,MAEO,IAAIxjH,SAAS,KAAK,gBAAlB,EAAoC;AACzCikH,kCAAwB,CAACqD,WAAzB;AACAtD,sBAAY,CAACR,SAAb,CAAuB,cAAvB;AACD,SAHM,MAGA,IAAIxjH,SAAS,KAAK,eAAlB,EAAmC;AACxCgkH,sBAAY,CAACR,SAAb,CAAuB,0BAAvB;AACD;AACF;AACF,KAdD;AAeD;;AAEDS,0BAAwB,GAAG,IAAI4F,oCAAJ,EAA3B,CArtBoD,CAutBpD;;AACA5F,0BAAwB,CAACp7H,EAAzB,CAA4B,GAA5B,EAAiC,YAAW;AAC1C,QAAI2X,IAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,CAAX;AACA82I,UAAM,CAACx5I,KAAP,CAAa,IAAb,EAAmB,CAAC,KAAK0e,KAAN,EAAa+V,MAAb,CAAoBf,IAApB,CAAnB;AACD,GAHD,EAxtBoD,CA6tBpD;;AACAyjH,0BAAwB,CAACp7H,EAAzB,CAA4B,gBAA5B,EAA8C,YAAW;AACvD,QAAIs7H,UAAJ,EAAgB;AACdhqI,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC+rE,uBAAe,GAAGL,UAAU,CAACsE,SAA7B;AACD,OAFD;AAGD;AACF,GAND;AAQAxE,0BAAwB,CAACp7H,EAAzB,CAA4B,gBAA5B,EAA8C,YAAW;AACvD67H,cAAU,GAAG,IAAb;AACD,GAFD;AAIAT,0BAAwB,CAACp7H,EAAzB,CAA4B,iBAA5B,EAA+C,YAAW;AACxD67H,cAAU,GAAG,KAAb;AACD,GAFD;AAIA9oC,iBAAe,GAAG,IAAIt8B,eAAJ,CAAoB;AACpCjwE,YAAQ,EAAEA,yBAD0B;AAEpC2vE,WAAO,EAAE,EAF2B;AAGpCzD,mBAAe,EAAEA,iCAHmB;AAIpC0D,qBAAiB,EAAEA,iBAJiB;AAKpCM,sBAAkB,EAAE;AALgB,GAApB,CAAlB;AAQAjE,iBAAe,GAAGsgC,eAAe,CAACtgC,eAAlC;AACAx6C,UAAQ,GAAG86E,eAAe,CAACl8B,eAA3B;AACA5+C,UAAQ,CAACQ,aAAT,CAAuB,MAAvB,EAA+B,MAA/B,EAAuC,MAAvC,EAA+C,WAA/C,EAA4D,SAA5D;AAEAs6E,iBAAe,CAACz6E,OAAhB,CAAwBhnB,KAAxB;AAEAmlI,0BAAwB;;AAExB,MAAInlI,KAAK,CAACwb,UAAN,CAAiBmsH,iBAArB,EAAwC;AACtC3nI,SAAK,CAACwb,UAAN,CAAiBksH,QAAjB,GAA4Bl1I,IAAI,CAACwqC,KAAL,CAAW,CAAC,IAAIxqC,IAAI,CAACyO,MAAL,EAAL,IAAsB,WAAjC,EAA8CpP,QAA9C,CAAuD,EAAvD,CAA5B,CADsC,CACkD;AACzF;;AAEDmO,OAAK,CAACu+B,WAAN,CAAkB,YAAlB,EAAgC,YAAW;AACzCurG,4BAAwB,CAACZ,UAAzB,GAAsClpI,KAAK,CAACwb,UAAN,CAAiB0tH,UAAvD;AACD,GAFD;AAIAlpI,OAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B;AACzB1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADkB;AAEzB1U,YAAQ,EAAE,MAFe;AAGzBwQ,UAAM,EAAE;AAHiB,GAA3B,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADyB;AAEhC1U,YAAQ,EAAE,MAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQA0qG,gCAA8B,GAAG/qG,KAAK,CAAC8pB,sBAAN,CAA6B,aAA7B,CAAjC;AAEA9pB,OAAK,CAAC6iE,YAAN,CAAmB,eAAnB,EAAoC8nE,+BAApC,EAAqE,YAAW;AAC9E,QAAIpH,cAAc,IAAI,IAAtB,EAA4B;AAC1B,aAAOA,cAAP;AACD;;AACD,WAAOA,cAAc,GAAGvjI,KAAK,CAACwb,UAAN,CAAiB+lH,SAAzC;AACD,GALD;AAOA;;;;AAIAvhI,OAAK,CAAC6iE,YAAN,CAAmB,iBAAnB,EAAsC,EAAtC,EAA0C,YAAW;AACnD,WAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,EAAnB,EAAuB,EAAvB,EAA2B,EAA3B,CAAP;AACD,GAFD;;AAIA7iE,OAAK,CAACquD,UAAN,GAAmB,UAAShuD,IAAT,EAAe;AAChC,WAAO0qG,8BAA8B,CAACt3F,MAA/B,CAAsCpT,IAAtC,CAAP;AACD,GAFD;;AAIAL,OAAK,CAAC6iE,YAAN,CAAmB,mBAAnB,EAAwC,EAAxC,EAA4C4+B,eAAe,CAAC/9B,wBAA5D;AAEA1jE,OAAK,CAAC6iE,YAAN,CAAmB,gBAAnB,EAAqC;AACnC1vD,SAAK,EAAE,qBAD4B;AAEnClQ,YAAQ,EAAE,MAFyB;AAGnCwQ,UAAM,EAAE;AAH2B,GAArC,EAIGguF,eAAe,CAAC99B,qBAJnB,EA7yBoD,CAmzBpD;AACA;AACA;;AACA3jE,OAAK,CAAC6iE,YAAN,CAAmB,mBAAnB,EAAwC8nE,+BAAxC,EAAyE,YAAW;AAClF,QAAIN,eAAe,IAAI,IAAvB,EAA6B;AAC3B,aAAOA,eAAP;AACD;;AACD,WAAOA,eAAe,GAAGrqI,KAAK,CAACwb,UAAN,CAAiB+lH,SAA1C;AACD,GALD;AAOAvhI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAO0uH,UAAP;AACD,GAJD;AAMA7hI,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO+mB,UAAP;AACD,GAJD,EAn0BoD,CAy0BpD;;AACAl6B,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOq6C,UAAP;AACD,GAJD;AAMAxtD,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO6V,YAAW,GAAG,CAArB;AACD,GAJD;AAMAhpB,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE;AADqB,GAA9B,EAEG,YAAW;AACZ,WAAOyzH,OAAO,IAAIlD,gBAAlB;AACD,GAJD;AAMA1jI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOo3H,UAAP;AACD,GAJD;AAMAvqI,OAAK,CAAC6iE,YAAN,CAAmB,oBAAnB,EAAyC;AACvC1vD,SAAK,EAAE;AADgC,GAAzC,EAEG,YAAW;AACZ,WAAOq3H,kBAAP;AACD,GAJD;AAMAxqI,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE;AADyB,GAAlC,EAEG,YAAW;AACZ,WAAO6vH,WAAP;AACD,GAJD;AAMAhjI,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE;AADqB,GAA9B,EAEG,YAAW;AACZ,WAAO9e,OAAP;AACD,GAJD,EA92BoD,CAo3BpD;;AACA2L,OAAK,CAACqhE,eAAN,CAAsB,oBAAtB,EAA4C;AAC1CpmD,gBAAY,EAAE;AAD4B,GAA5C,EAr3BoD,CAy3BpD;AACA;;AACAjb,OAAK,CAAC0O,EAAN,CAAS,iBAAT,EAA4B,YAAW;AACrCo7H,4BAAwB,CAACqD,WAAzB;;AACA,QAAIrD,wBAAwB,CAACiE,YAA7B,EAA2C;AACzCjE,8BAAwB,CAACiF,WAAzB;AACD;AACF,GALD;AAOA/uI,OAAK,CAACu+B,WAAN,CAAkB,gBAAlB,EAAoCwlG,sBAApC;AACAA,wBAAsB;AAEtB/jI,OAAK,CAACujE,yBAAN;AACAsmE,cAAY,CAACR,SAAb,CAAuB,cAAvB;AAEA,SAAOrpI,KAAP;AACD;AAAA,C;;ACp5BD;AACA;AACA;AACA;AAGe,oEAASA,KAAT,EAAgB8lC,QAAhB,EAA0B3tB,IAA1B,EAAgC;AAE7C;AACA;AACA,MAAI1E,MAAM,GAAGC,EAAE,CAACD,MAAH,CAAU,KAAV,CAAb;AACA,MAAI+yH,iBAAJ;AACA,MAAI18F,IAAJ;AAEA,MAAI03F,iBAAiB,GAAGqC,iCAAoB,CAAC1rH,IAAD,CAA5C;;AAEA,WAASwuH,eAAT,GAA2B;AACzB,QAAI3mI,KAAK,CAACwb,UAAN,CAAiBorH,OAArB,EAA8B;AAC5BzjG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAAC48F,WAA1B;AACD,KAFD,MAEO;AACLvjG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAAC48F,WAA3B;AACD;AACF;;AAED,WAASmJ,kBAAT,GAA8B,CAC5B;AACA;AACA;AACA;AACA;AACD;;AAED,WAASC,0BAAT,GAAsC;AACpC,QAAI9vI,KAAK,CAACwb,UAAN,CAAiBgvH,kBAAjB,IAAuCxqI,KAAK,CAACwb,UAAN,CAAiBgyC,UAA5D,EAAwE;AACtErqB,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACimG,mBAA1B;AACD,KAFD,MAEO;AACL5sG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACimG,mBAA3B;AACD;AACF;;AAED,WAASE,cAAT,GAA0B;AACxBnmG,QAAI,CAAComG,QAAL,CAAc7rG,IAAd,CAAmBrkC,KAAK,CAACwb,UAAN,CAAiBnnB,OAApC;AACD;;AAED,WAAS0yI,mBAAT,GAA+B;AAC7B/mI,SAAK,CAACu+B,WAAN,CAAkB,SAAlB,EAA6BooG,eAA7B;AACAA,mBAAe;AAEf3mI,SAAK,CAACu+B,WAAN,CAAkB,YAAlB,EAAgCsxG,kBAAhC;AACAA,sBAAkB;AAElB7vI,SAAK,CAACu+B,WAAN,CAAkB,oBAAlB,EAAwCuxG,0BAAxC;AACA9vI,SAAK,CAACu+B,WAAN,CAAkB,YAAlB,EAAgCuxG,0BAAhC;AACAA,8BAA0B;AAE1B9vI,SAAK,CAACu+B,WAAN,CAAkB,SAAlB,EAA6B0xG,cAA7B;AACAA,kBAAc;AACf;;AAED,WAASG,iBAAT,GAA6B;AAC3B,QAAIt5G,MAAM,GAAG,IAAIH,YAAJ,CAAgB;AAC3Bn6B,WAAK,EAAE,KADoB;AAE3Bi6B,iBAAW,EAAE,6BAFc;AAG3BosG,mBAAa,EAAE,KAHY;AAI3B7wH,WAAK,EAAEmG,IAAI,CAACR,CAAL,CAAO,4BAAP,CAJoB;AAK3B+f,aAAO,EAAE;AACPitG,UAAE,EAAE,cAAW;AACbxuI,iBAAO,CAACiL,GAAR,CAAY,YAAZ;AACApL,WAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf,EAFa,CAGb;;AACA92B,eAAK,CAACusI,iBAAN,CAAwBv2I,CAAC,CAAC,IAAD,CAAD,CAAQma,IAAR,CAAa,eAAb,EAA8BtW,GAA9B,EAAxB;AACD,SANM;AAOP02I,cAAM,EAAE,kBAAW;AACjBp6I,iBAAO,CAACiL,GAAR,CAAY,gBAAZ;AACApL,WAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACD;AAVM;AALkB,KAAhB,EAiBV3e,IAjBU,CAAb;AAkBA,QAAI0F,OAAO,GAAG,EAAd;AAAA,QACE1K,KAAK,GAAG,EADV;AAAA,QAEE+4H,OAAO,GAAGlsI,KAAK,CAACisI,gBAAN,EAFZ;AAAA,QAGEhgF,KAAK,GAAG,IAHV;AAAA,QAIEi+E,cAAc,GAAGlqI,KAAK,CAACqsI,iBAAN,EAJnB;AAAA,QAKEj7I,CALF;AAAA,QAKKo/I,OALL;AAAA,QAKcC,SALd;;AAMA,SAAKr/I,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG86I,OAAO,CAAC76I,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,UAAI86I,OAAO,CAAC96I,CAAD,CAAP,CAAW+d,KAAX,KAAqB,GAAzB,EAA8B;AAC5BqhI,eAAO,GAAG,EAAV;;AACA,YAAItE,OAAO,CAAC96I,CAAD,CAAP,CAAW4G,IAAf,EAAqB;AACnBy4I,mBAAS,GAAG;AACV7O,2BAAe,EAAEsK,OAAO,CAAC96I,CAAD,CAAP,CAAW4G;AADlB,WAAZ;AAGD,SAJD,MAIO;AACLy4I,mBAAS,GAAGjP,iBAAiB,CAAC0K,OAAO,CAAC96I,CAAD,CAAP,CAAW+d,KAAZ,CAA7B;;AACA,cAAI,CAACshI,SAAL,EAAgB;AACdA,qBAAS,GAAG;AACV7O,6BAAe,EAAE;AADP,aAAZ;AAGD;AACF;;AACDzuH,aAAK,GAAGs9H,SAAS,CAAC7O,eAAV,GAA4B,IAA5B,GAAmCsK,OAAO,CAAC96I,CAAD,CAAP,CAAW+d,KAA9C,GAAsD,GAA9D;;AACA,YAAI+6H,cAAc,IAAI94I,CAAlB,IAAwB66D,KAAK,IAAIi+E,cAAc,IAAI,CAAC,CAAxD,EAA4D;AAC1DsG,iBAAO,GAAG,UAAV;AACD;;AAAA;AACD3yH,eAAO,IAAI,6DAA6DzsB,CAA7D,GAAiE,IAAjE,GAAwEo/I,OAAxE,GAAkF,IAAlF,GAAyFr9H,KAAzF,GAAiG,OAA5G;AACA84C,aAAK,GAAG,KAAR;AACD;AACF;;AACDn1B,UAAM,CAACK,UAAP,CAAkBtZ,OAAlB;AACAiZ,UAAM,CAACE,IAAP;AACD;;AAED,SAAO8S,IAAI,GAAG;AACZx5B,OAAG,EAAEta,CAAC,CAAC,uEAAD,CADM;AAEZ06I,iBAAa,EAAE,IAFH;AAIZ5uG,aAAS,EAAE,mBAASC,QAAT,EAAmBs4B,WAAnB,EAAgC;AACzCv0B,cAAQ,GAAGu0B,WAAW,IAAIv0B,QAA1B;AACA9lC,WAAK,GAAG+hC,QAAQ,IAAI/hC,KAApB;AAEA+mI,yBAAmB;AACpB,KATW;AAWZtoI,qBAAiB,EAAE,6BAAW;AAC5B,aAAO,OAAP;AACD,KAbW;AAeZ;AACAwsC,SAAK,EAAE,iBAAW;AAChBnB,UAAI,CAACx5B,GAAL,CAASoG,KAAT;AACAozB,UAAI,CAAC6mG,kBAAL,GAA0B36I,CAAC,CAAC,aAAD,CAA3B;AACA8zC,UAAI,CAAC8mG,gBAAL,GAAwB56I,CAAC,CAAC,aAAD,CAAzB,CAHgB,CAIhB;;AACAwwI,uBAAiB,GAAG,IAAIlsF,iBAAJ,CAAsB;AACxCv9C,UAAE,EAAE,mBADoC;AAExCoW,aAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,gBAAP,CAFiC;AAGxCxI,aAAK,EAAEnP,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,EAA8CE,mBAA9C;AAHiC,OAAtB,CAApB,CALgB,CAWhB;;AACA8f,UAAI,CAAC48F,WAAL,GAAmB1wI,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,aAAP,CAA7C,GAAqE,iBAAtE,CAApB;AACAmyB,UAAI,CAACimG,mBAAL,GAA2B/5I,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,sBAAP,CAA7C,GAA8E,iBAA/E,CAA5B;AACAmyB,UAAI,CAAComG,QAAL,GAAgBl6I,CAAC,CAAC,6BAAD,CAAjB;AACA8zC,UAAI,CAACk9F,cAAL,GAAsBR,iBAAiB,CAACzxH,MAAlB,GAA2BzW,QAA3B,CAAoC,YAApC,CAAtB;AAEAwrC,UAAI,CAAC6mG,kBAAL,CACE;AACA;AAFF,OAGG1yI,MAHH,CAGU6rC,IAAI,CAACk9F,cAHf,EAIG/oI,MAJH,CAIU6rC,IAAI,CAAC48F,WAJf,EAKGzoI,MALH,CAKU6rC,IAAI,CAACimG,mBALf;AAOAjmG,UAAI,CAAC8mG,gBAAL,CACG3yI,MADH,CACU6rC,IAAI,CAAComG,QADf;AAGApmG,UAAI,CAACx5B,GAAL,CAAS1T,GAAT,CAAa,QAAb,EAAuB,CAAvB,EACGqB,MADH,CACU6rC,IAAI,CAAC6mG,kBADf,EAEG1yI,MAFH,CAEU6rC,IAAI,CAAC8mG,gBAFf;AAIA9mG,UAAI,CAAC6mG,kBAAL,CAAwBxgI,IAAxB,CAA6B,KAA7B,EAAoC7R,QAApC,CAA6C,6BAA7C;AACAwrC,UAAI,CAAC8mG,gBAAL,CAAsBzgI,IAAtB,CAA2B,KAA3B,EAAkC7R,QAAlC,CAA2C,6BAA3C;AAEAkoI,uBAAiB,CAAClmI,MAAlB;AACAymI,yBAAmB,GAnCH,CAqChB;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACAj9F,UAAI,CAAC48F,WAAL,CAAiBh4H,EAAjB,CAAoB,OAApB,EAA6B,QAA7B,EAAuC1O,KAAK,CAAComI,IAA7C;AACAt8F,UAAI,CAACimG,mBAAL,CAAyBrhI,EAAzB,CAA4B,OAA5B,EAAqC,QAArC,EAA+C0hI,iBAA/C;AACD,KAjEW;AAmEZ9vI,UAAM,EAAE,kBAAW;AACjB,UAAIkmI,iBAAJ,EAAuB;AACrBA,yBAAiB,CAAClmI,MAAlB;AACD;AACF,KAvEW;AAyEZsvB,WAAO,EAAE,mBAAW,CAAE,CAzEV;AA2EZ04B,YAAQ,EAAE,oBAAW,CAAE,CA3EX;AA6EZ1M,eAAW,EAAE,qBAASzsC,KAAT,EAAgB;AAC3Bq3H,uBAAiB,CAAC5qF,WAAlB,CAA8BzsC,KAA9B;;AACA,UAAInP,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAjB,IAAsC,IAA1C,EAAgD;AAC9CrK,yBAAiB,CAAC3qF,SAAlB;AACD;AACF,KAlFW;AAoFZ3lC,UAAM,EAAE,kBAAW;AACjB,UAAIlW,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAjB,IAAsC,IAA1C,EAAgD;AAC9CrK,yBAAiB,CAACtwH,MAAlB,CAAyB,EAAzB;AACAswH,yBAAiB,CAAC3qF,SAAlB;AACD,OAHD,MAGO;AACL2qF,yBAAiB,CAACtwH,MAAlB,CAAyBzC,MAAM,CAACzT,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAlB,CAA/B;AACArK,yBAAiB,CAAC1qF,SAAlB;AACD;AACF;AA5FW,GAAd;AA8FD;AAAA,C;;AC7MA;;;;;;;;;AAWc,SAASyrF,gCAAT,CAA4Bx3H,MAA5B,EAAoC;AACjD,SAAO;AACL;;;;;;;;;;;;;AAaAoxH,cAAU,EAAE,SAASA,UAAT,CAAoBxhI,OAApB,EAA6B;AACvCoQ,YAAM,CAAC8xB,aAAP,CAAqBs/F,UAArB,CAAgCxhI,OAAhC;AACD;AAhBI,GAAP;AAkBD;AAAA,C;;AC7BD;AACA;AACA;CAEA;;AAEe,0EAASmmC,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,MAAI2I,UAAU,GAAG,IAAIstC,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACf3R,8BADe,EACR6nD,qBADQ,EACQh9B,gCADR,CAAjB,CADqE,CAIrE;AACA;;AAEA,WAASsqG,mBAAT,GAA+B;AAC7B,QAAI/mI,KAAK,GAAGksB,UAAU,CAAClsB,KAAvB;AAEAA,SAAK,CAACu+B,WAAN,CAAkB,mBAAlB,EAAuC,YAAW;AAChDrS,gBAAU,CAAC0uC,UAAX;AACD,KAFD;AAIA56D,SAAK,CAACu+B,WAAN,CAAkB,aAAlB,EAAiC,YAAW;AAC1C,UAAIv+B,KAAK,CAACwb,UAAN,CAAiBwnH,WAArB,EAAkC;AAChCz/G,6BAAqB,CAAC0c,WAAtB;AACD;AACF,KAJD;AAMAjgC,SAAK,CAACwpB,8BAAN,CAAqC,eAArC,EAAsD,YAAW;AAC/D,UAAIK,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,CAAlB;AACA,UAAIggB,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;AAEAgL,UAAI,CAAC8R,WAAL,CAAiB/xB,WAAW,CAACG,mBAAZ,EAAjB;AACD,KALD;AAMD;;AAEDzG,uBAAqB,CAAC7U,EAAtB,CAAyB,+CAAzB,EAA0Eq4H,mBAA1E;AAEAxjH,uBAAqB,CAAC7U,EAAtB,CAAyB,8CAAzB,EAAyE,YAAW;AAClFwd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,KAA3C;AACD,GAFD;AAIA4vB,uBAAqB,CAAC7U,EAAtB,CAAyB,gBAAzB,EAA2C,YAAW;AACpDwd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,IAA3C;AACAu4B,cAAU,CAAClsB,KAAX,CAAiBu6D,SAAjB;AACD,GAHD;AAKA,SAAOruC,UAAP;AACD;AAAA,C;;AC9Cc;AACbrpB,gBAAc,EAAE;AACd5K,QAAI,EAAE;AACJnC,kBAAY,EAAE,WADV;AAEJd,eAAS,EAAE;AAFP,KADQ;AAKdosI,cAAU,EAAE;AACVtrI,kBAAY,EAAE;AADJ,KALE;AAQdyrI,aAAS,EAAE;AACTzrI,kBAAY,EAAE;AADL;AARG,GADH;AAab+O,aAAW,EAAE;AACXQ,aAAS,EAAE;AACTvP,kBAAY,EAAE,IADL;AAETN,+BAAyB,EAAE;AAFlB,KADA;AAKXyR,kBAAc,EAAE;AACdnR,kBAAY,EAAE,YADA;AAEdN,+BAAyB,EAAE;AAFb,KALL;AASX0R,sBAAkB,EAAE;AAClBpR,kBAAY,EAAE,OADI;AAElBN,+BAAyB,EAAE,KAFT;AAGlBK,eAAS,EAAE;AAHO;AATT;AAbA,CAAf,E;;;;;;ACDe;AACbsZ,OAAK,EAAE;AACL9O,QAAI,EAAE;AACJrI,UAAI,EAAE,QADF;AAEJgoE,gBAAU,EAAE,SAFR;AAGJC,YAAM,EAAE;AAHJ,KADD;AAML9zB,YAAQ,EAAE;AACRn0C,UAAI,EAAE,OADE;AAERgoE,gBAAU,EAAE,QAFJ;AAGRC,YAAM,EAAE;AAHA,KANL;AAWL3W,eAAW,EAAE;AACXtxD,UAAI,EAAE,gBADK;AAEXg5I,iBAAW,EAAE,iBAFF;AAGX/wE,YAAM,EAAE;AAHG,KAXR;AAgBLgxE,SAAK,EAAE;AACLj5I,UAAI,EAAE,KADD;AAELgoE,gBAAU,EAAE,KAFP;AAGLC,YAAM,EAAE;AAHH,KAhBF;AAqBLyK,SAAK,EAAE;AACL1yE,UAAI,EAAE,QADD;AAELgoE,gBAAU,EAAE,SAFP;AAGLC,YAAM,EAAE;AAHH,KArBF;AA0BLixE,MAAE,EAAE;AACFl5I,UAAI,EAAE,SADJ;AAEFgoE,gBAAU,EAAE,UAFV;AAGFC,YAAM,EAAE;AAHN,KA1BC;AA+BLkxE,OAAG,EAAE;AACHn5I,UAAI,EAAE,kBADH;AAEHgoE,gBAAU,EAAE,mBAFT;AAGHC,YAAM,EAAE;AAHL,KA/BA;AAoCLmxE,MAAE,EAAE;AACFp5I,UAAI,EAAE,kBADJ;AAEFgoE,gBAAU,EAAE,mBAFV;AAGFC,YAAM,EAAE;AAHN;AApCC;AADM,CAAf,E;;ACCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGe,SAASruD,uBAAT,CAAekzD,iBAAf,EAAkCyzB,GAAlC,EAAuC;AACpD,MAAIpgF,IAAI,GAAGogF,GAAG,CAACpgF,IAAf;AAAA,MACE4qH,QAAQ,GAAG,IAAIH,sBAAJ,CAAazqH,IAAb,CADb;AAAA,MAGEspF,eAHF;AAAA,MAIEtgC,eAJF;AAAA,MAKEx6C,QALF;AAAA,MAMEkjH,YANF;AAAA,MAOEE,UAPF;AAAA,MAQEC,UARF;AAAA,MASEE,cATF;AAAA,MAUErI,UAVF;AAAA,MAWE3nG,UAXF;AAAA,MAYE8oG,WAZF;AAAA,MAaE3iI,IAbF;AAAA,MAcEkjI,cAdF;AAAA,MAeE8G,eAfF;AAAA,MAgBEgH,sBAhBF;AAAA,MAiBEC,oBAjBF;AAAA,MAkBEtoH,YAlBF;AAAA,MAmBEwkC,UAnBF;AAAA,MAoBE+jF,UApBF;AAAA,MAqBE3K,OArBF;AAAA,MAsBE4K,QAtBF;AAAA,MAuBEjH,UAvBF;AAAA,MAwBEC,kBAxBF;AAAA,MAyBE9G,gBAzBF;AAAA,MA0BErvI,OA1BF;AAAA,MA2BE2L,KA3BF;;AA6BA,MAAI2qI,+BAA+B,GAAG;AACpCx3H,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,oCAAP,CAD6B;AAEpC0D,oBAAgB,EAAE,GAFkB;AAGpC5H,UAAM,EAAE,KAH4B;AAIpC/gB,OAAG,EAAE,CAJ+B;AAKpCD,OAAG,EAAE;AAL+B,GAAtC;AAOA,MAAI+uI,iBAAiB,GAAGqC,iCAAoB,CAAC1rH,IAAD,CAA5C;;AAEA,WAASyyH,2BAAT,GAAuC;AACrC,QAAIrF,gBAAJ;AACA,QAAI17G,WAAJ;;AAEA,QAAImgH,UAAJ,EAAgB;AACdzE,sBAAgB,GAAG/D,iBAAiB,CAACwI,UAAU,CAAC76H,KAAZ,CAApC;;AAEA,UAAIo2H,gBAAJ,EAAsB;AACpB17G,mBAAW,GAAG;AACZ1W,eAAK,EAAEoyH,gBAAgB,CAAC3D,eADZ;AAEZnuH,gBAAM,EAAE,KAFI;AAGZ/gB,aAAG,EAAE6yI,gBAAgB,CAACQ,UAHV;AAIZtzI,aAAG,EAAE8yI,gBAAgB,CAACS;AAJV,SAAd;;AAMA,YAAI5kE,0BAAe,CAACjyD,KAAhB,CAAsBo2H,gBAAgB,CAACC,eAAvC,CAAJ,EAA6D;AAC3D37G,qBAAW,CAAC5mB,QAAZ,GAAuBsiI,gBAAgB,CAACC,eAAxC;AACD,SAFD,MAEO;AACL37G,qBAAW,CAACxO,gBAAZ,GAA+B2uH,UAAU,CAAC76H,KAA1C;AACD;;AACDu0H,wBAAgB,GAAG6B,gBAAgB,CAACG,QAApC;AACA7D,kBAAU,GAAG0D,gBAAgB,CAAC1D,UAA9B;AACD,OAdD,MAcO;AACLh4G,mBAAW,GAAG;AACZ1W,eAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,oCAAP,CADK;AAEZ0D,0BAAgB,EAAE2uH,UAAU,CAAC76H,KAFjB;AAGZsE,gBAAM,EAAE,KAHI;AAIZ/gB,aAAG,EAAE,CAJO;AAKZD,aAAG,EAAE;AALO,SAAd;AAOAixI,wBAAgB,GAAG,IAAnB;AACA7B,kBAAU,GAAGmI,UAAU,CAAC76H,KAAX,GAAmB,SAAhC;AACD;AACF,KA5BD,MA4BO;AACL0a,iBAAW,GAAG8gH,+BAAd;AACAjH,sBAAgB,GAAG,KAAnB;AACA7B,gBAAU,GAAG,aAAb;AACD;;AAED1gE,mBAAe,CAACzD,sBAAhB,CAAuC,eAAvC,EACE,IAAI4B,oBAAJ,CAAwB8B,0BAAxB,EAAyCv3C,WAAzC,CADF;AAEAs3C,mBAAe,CAACzD,sBAAhB,CAAuC,mBAAvC,EACE,IAAI4B,oBAAJ,CAAwB8B,0BAAxB,EAAyCv3C,WAAzC,CADF;AAED;;AAED,WAASs7G,wBAAT,GAAoC;AAClCjrG,cAAS,GAAG,IAAZ;AACAq3G,cAAU,GAAG,KAAb;AACAhH,cAAU,GAAGkH,qCAAkB,CAAClH,UAAhC;AACAC,sBAAkB,GAAG,KAArB,CAJkC,CAKlC;;AACA,QAAI,OAAON,cAAP,KAA2B,WAA3B,IAA0CA,cAAc,KAAK,IAAjE,EAAuE;AACrEA,oBAAc,GAAG;AACfx/G,aAAK,EAAE,CAAC;AADO,OAAjB;AAGD;;AACD1B,gBAAW,GAAG,CAAd;AACA3oB,QAAI,GAAG,CAAP;AACAkjI,kBAAc,GAAGjzI,SAAjB;AACA+5I,mBAAe,GAAG/5I,SAAlB;AACA+gJ,0BAAsB,GAAG,CAAzB;AACAC,wBAAoB,GAAG,CAAvB;AACAvH,cAAU,GAAGz5I,SAAb;AACA05I,cAAU,GAAG15I,SAAb;AACD;;AAED,WAASw6I,0BAAT,CAAoCjiF,OAApC,EAA6C/0D,GAA7C,EAAkD;AAChD,QAAIi3I,YAAY,GAAGliF,OAAO,CAACzM,OAAR,CAAgBtoD,GAAhB,CAAnB;;AACA,QAAIi3I,YAAY,IAAIA,YAAY,CAAC57H,KAAb,KAAuB+6H,cAAc,CAAC/6H,KAA1D,EAAiE;AAC/D+6H,oBAAc,CAACx/G,KAAf,GAAuB52B,GAAvB;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAED,WAASo3I,SAAT,GAAqB;AACnB,QAAIriF,OAAO,GAAG4oF,qCAAkB,CAACtG,QAAnB,CAA4B,CAA5B,CAAd;AACA,QAAIC,aAAJ,EAAmBE,IAAnB,EAAyBP,YAAzB;AAEAP,sBAAkB,GAAG3hF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA9C;AAEA04I,cAAU,GAAG56E,oBAAC,CAACh/C,IAAF,CAAO04C,OAAO,CAACzM,OAAf,EAAwB,UAASyvF,MAAT,EAAiB;AACpD,aAAOA,MAAM,CAAC18H,KAAP,KAAiB,GAAxB;AACD,KAFY,CAAb,CANmB,CAUnB;AACA;;AACAm8H,QAAI,GAAGpB,cAAc,CAACx/G,KAAtB;;AACA,QAAI4gH,IAAI,IAAI,CAAC,CAAb,EAAgB;AACdF,mBAAa,GAAGj8E,oBAAC,CAACh/C,IAAF,CAAO04C,OAAO,CAACzM,OAAf,EAAwB,UAASyvF,MAAT,EAAiB/3I,GAAjB,EAAsB;AAC5D,YAAI+3I,MAAM,CAAC18H,KAAP,KAAiB,GAArB,EAA0B;AACxB+6H,wBAAc,CAACx/G,KAAf,GAAuB52B,GAAvB;AACAo2I,wBAAc,CAAC/6H,KAAf,GAAuB08H,MAAM,CAAC18H,KAA9B;AACAm8H,cAAI,GAAGx3I,GAAP;AACA,iBAAO,IAAP;AACD;;AACD,eAAO,KAAP;AACD,OARe,CAAhB;AASD;;AACD,QAAIw3I,IAAI,IAAIziF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAxB,IAAkCw3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAA/D,EAAkE;AAChE;AACAi6I,UAAI,GAAGziF,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhB,GAAyB,CAAhC;AAED;;AACD+5I,iBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAhB,CAAhB;;AACA,QAAIF,aAAa,IAAIlB,cAAc,CAAC/6H,KAAhC,IAAyCi8H,aAAa,CAACj8H,KAAd,KAAwB+6H,cAAc,CAAC/6H,KAApF,EAA2F;AACzF;AACA;AACA,UAAI27H,0BAA0B,CAACjiF,OAAD,EAAUyiF,IAAI,GAAG,CAAjB,CAA9B,EAAmD;AACjDF,qBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAI,GAAG,CAAvB,CAAhB;AACD,OAFD,MAEO,IAAIA,IAAI,GAAG,CAAP,IAAYR,0BAA0B,CAACjiF,OAAD,EAAUyiF,IAAI,GAAG,CAAjB,CAA1C,EAA+D;AACpE;AACAF,qBAAa,GAAGviF,OAAO,CAACzM,OAAR,CAAgBkvF,IAAI,GAAG,CAAvB,CAAhB;AACD,OAHM,MAGA;AACL;AACAF,qBAAa,GAAGj8E,oBAAC,CAACh/C,IAAF,CAAO04C,OAAO,CAACzM,OAAf,EAAwB,UAASyvF,MAAT,EAAiB/3I,GAAjB,EAAsB;AAC5D,cAAI+3I,MAAM,CAAC18H,KAAP,KAAiB,GAArB,EAA0B;AACxB+6H,0BAAc,CAACx/G,KAAf,GAAuB52B,GAAvB;AACAo2I,0BAAc,CAAC/6H,KAAf,GAAuB08H,MAAM,CAAC18H,KAA9B;AACAm8H,gBAAI,GAAGx3I,GAAP;AACA,mBAAO,IAAP;AACD;;AACD,iBAAO,KAAP;AACD,SARe,CAAhB;AASD;AACF;;AAEDk2I,cAAU,GAAGoB,aAAb;;AACA,QAAIpB,UAAJ,EAAgB;AACdE,oBAAc,CAAC/6H,KAAf,GAAuB66H,UAAU,CAAC76H,KAAlC;AACD;;AACDy7H,+BAA2B;;AAE3B,QAAI,CAACZ,UAAL,EAAiB;AACfK,qBAAe,GAAG/5I,SAAlB;AACD;AACF;;AAED,WAASo7I,UAAT,GAAsB;AACpB,QAAI,CAAC3B,UAAD,IAAe,CAACC,UAApB,EAAgC;AAC9B;AACD;;AAED,QAAI2B,cAAc,GAAGn5I,IAAI,CAACE,GAAL,CAASq3I,UAAU,CAAChzH,IAAX,CAAgB1lB,MAAzB,EAAiC24I,UAAU,CAACjzH,IAAX,CAAgB1lB,MAAjD,CAArB;;AACA,WAAO23B,YAAW,GAAG2iH,cAArB,EAAqC3iH,YAAW,EAAhD,EAAoD;AAClD3oB,UAAI,GAAG0pI,UAAU,CAAChzH,IAAX,CAAgBiS,YAAhB,CAAP;AACAu6G,oBAAc,GAAGyG,UAAU,CAACjzH,IAAX,CAAgBiS,YAAhB,CAAjB;AACAhpB,WAAK,CAACujE,yBAAN;AACA58C,cAAQ,CAAC4Z,IAAT;AACD;AACF;;AAED,WAASqrG,wBAAT,CAAkCC,MAAlC,EAA0C;AACxC,WAAOA,MAAM,CAACC,uBAAP,IAAkCD,MAAM,CAACE,wBAAhD;AACD;;AAED,WAASC,iBAAT,GAA6B;AAC3B,WAAOJ,wBAAwB,CAAC7B,UAAD,CAAxB,KAAyC,CAACC,UAAD,IAAe4B,wBAAwB,CAAC5B,UAAD,CAAhF,CAAP;AACD;;AAED,WAASiC,gBAAT,GAA4B;AAC1B,QAAIC,OAAO,GAAG,EAAd;AAAA,QACErjF,OAAO,GAAG4oF,qCAAkB,CAACtG,QAAnB,CAA4B,CAA5B,CADZ;AAAA,QAEE/5I,CAFF;AAAA,QAEKuG,IAFL;;AAIA,SAAKvG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGy3D,OAAO,CAACzM,OAAR,CAAgB/qD,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C86I,aAAO,CAACl4I,IAAR,CAAa60D,OAAO,CAACzM,OAAR,CAAgBhrD,CAAhB,EAAmB+d,KAAhC;AACD;;AACD,WAAO+8H,OAAP;AACD;;AAEDlsI,OAAK,GAAG;AAEN0O,MAAE,EAAE,YAASzW,IAAT,EAAeqtB,QAAf,EAAyB;AAC3BqB,cAAQ,CAACjY,EAAT,CAAYzW,IAAZ,EAAkBqtB,QAAlB;AACD,KAJK;AAMNosH,WAAO,EAAE,iBAASC,OAAT,EAAkB;AACzBxF,YAAM,CAAC,SAAD,EAAYwF,OAAZ,CAAN;AACD,KARK;AAUN5xG,SAAK,EAAE,iBAAW;AAChBosG,YAAM,CAAC,OAAD,CAAN;AACD,KAZK;AAcNruG,QAAI,EAAE,gBAAW;AACfquG,YAAM,CAAC,MAAD,CAAN;AACD,KAhBK;AAkBN/F,QAAI,EAAE,gBAAW;AACf,UAAIgG,WAAW,GAAG5+E,UAAlB;AACAA,gBAAU,GAAG,KAAb;AACA2+E,YAAM,CAAC,MAAD,CAAN;AACA3+E,gBAAU,GAAG4+E,WAAb;AACD,KAvBK;AAyBN7xE,aAAS,EAAE,qBAAW;AACpB5zC,cAAQ,CAAC4zC,SAAT;AACD,KA3BK;AA6BN/+D,SAAK,EAAE,iBAAW;AAChB2wI,YAAM,CAAC,OAAD,CAAN;AACD,KA/BK;AAiCN/xE,UAAM,EAAE,kBAAW;AACjBp6D,WAAK,CAAC89B,IAAN;AACA99B,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC0kE,mBAAW,GAAG,IAAd;AACD,OAFD;AAGD,KAtCK;AAwCN9oG,aAAS,EAAE,qBAAW;AACpB,aAAOA,UAAP;AACD,KA1CK;AA4CNlR,eAAW,EAAE,uBAAW;AACtB,aAAOA,YAAP;AACD,KA9CK;AAgDNijH,oBAAgB,EAAEA,gBAhDZ;AAiDNI,qBAAiB,EAAE,6BAAW;AAC5B,aAAOnC,cAAc,CAACx/G,KAAtB;AACD,KAnDK;AAoDN6hH,qBAAiB,EAAE,2BAASC,WAAT,EAAsB;AACvC,UAAItC,cAAc,CAACx/G,KAAf,KAAyB8hH,WAA7B,EAA0C;AACxCtC,sBAAc,CAACx/G,KAAf,GAAuB8hH,WAAvB;AACAtC,sBAAc,CAAC/6H,KAAf,GAAuB,IAAvB;AACAnP,aAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6B,CAA7B,CAHwC,CAGR;;AAChC2J,iBAAS;AACV;AACF,KA3DK;AA6DNr1I,aAAS,EAAE,qBAAW;AACpB,aAAO,EAAP;AACD;AA/DK,GAAR;AAmEAg0I,cAAY,GAAG,IAAIV,aAAJ,CAAiB;AAE9BuD,gBAAY,EAAE;AACZhD,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,+BAAP,CAAV;AACA45H,kBAAU,GAAG,IAAb;AACD,OAJW;AAMZ9H,gBAAU,EAAE,sBAAW;AACrB8H,kBAAU,GAAG,KAAb;AACD,OARW;AAUZG,aAAO,EAAE,iBAASC,OAAT,EAAkB;AACzBF,6CAAkB,CAAC9E,YAAnB,CAAgCgF,OAAhC;AACA,aAAKtI,SAAL,CAAe,YAAf;AACD;AAbW,KAFgB;AAkB9BuD,cAAU,EAAE;AACVlD,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,4BAAP,CAAV;;AACA,YAAI85H,qCAAkB,CAAC5E,WAAvB,EAAoC;AAClC,eAAKxD,SAAL,CAAe,WAAf;AACD;AACF,OANS;AAQVyD,mBAAa,EAAE,yBAAW;AACxB,aAAKzD,SAAL,CAAe,0BAAf;AACD,OAVS;AAYV0D,wBAAkB,EAAE,8BAAW;AAC7B,aAAK1D,SAAL,CAAe,0BAAf;AACD,OAdS;AAgBV4D,oBAAc,EAAE,0BAAW;AACzB,aAAK5D,SAAL,CAAe,WAAf;AACD,OAlBS;AAoBV6D,oBAAc,EAAE,0BAAW;AACzB;AACAuE,6CAAkB,CAACtE,WAAnB;AACAsE,6CAAkB,CAAC9E,YAAnB;AACD;AAxBS,KAlBkB;AA6C9BS,4BAAwB,EAAE;AACxB1D,gBAAU,EAAE,sBAAW;AACrB+H,6CAAkB,CAACtE,WAAnB;AACA94I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,mCAAP,CAAV;AACAorH,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,mDAAP,CAAf,EAA4E;AAC1EgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,SAAD,CAAN;AACD;AAJyE,SAA5E;AAMD,OAVuB;AAYxBwB,aAAO,EAAE,mBAAW;AAClB,aAAKtE,SAAL,CAAe,cAAf;AACD;AAduB,KA7CI;AA8D9BuE,aAAS,EAAE;AACTlE,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAV;AACAivH,eAAO,GAAG,IAAV;AACAp5E,kBAAU,GAAG,IAAb;AACAtzB,kBAAS,GAAG,IAAZ;AAEAgxG,iBAAS;;AAET,YAAIX,UAAJ,EAAgB;AACd,eAAKsD,cAAL;AACD,SAFD,MAEO;AACL,eAAKC,eAAL;AACD;;AAED,YAAI2D,qCAAkB,CAAC1D,YAAvB,EAAqC;AACnC,eAAK1E,SAAL,CAAe,SAAf;AACD;AACF,OAlBQ;AAoBTI,gBAAU,EAAE,sBAAW;AACrB7C,eAAO,GAAG,KAAV;AACAp5E,kBAAU,GAAG,KAAb;AACD,OAvBQ;AAyBT;AACAwgF,iBAAW,EAAE9C,SA1BJ;AA2BT+C,mBAAa,EAAE/C,SA3BN;AA4BTgD,uBAAiB,EAAEhD,SA5BV;AA6BTiD,iBAAW,EAAEjD,SA7BJ;AA+BT9E,UAAI,EAAE,gBAAW;AACf,YAAI4D,UAAJ,EAAgB;AACd,cAAIwH,QAAJ,EAAc;AACZxxI,iBAAK,CAACwb,UAAN,CAAiB+lH,SAAjB,GAA6ByI,UAAU,CAACsE,SAAxC;AACD,WAFD,MAEO;AACL1H,mBAAO,GAAG,KAAV,CADK,CAEL;;AACA7D,oBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,sCAAP,CAAf,EAA+D;AAC7DgtH,gBAAE,EAAE,cAAW;AACb3uI,iBAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACA8vG,uBAAO,GAAG,IAAV;AACD;AAJ4D,aAA/D;AAMD;AACF;AACF,OA9CQ;AAgDT;AACA7mG,WAAK,EAAE,iBAAW;AAChB;AACA;AACA;AACA;AACA;AACA0xG,6CAAkB,CAAClD,YAAnB,YAAwC,YAAW;AACjDpC,gBAAM,CAAC,oBAAD,CAAN;AACD,SAFD;AAGA,aAAK9C,SAAL,CAAe,UAAf;AACD,OA3DQ;AA6DTwE,oBAAc,EAAE,0BAAW;AACzBx5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,2BAAP,CAAV;AACD,OA/DQ;AAiETm2H,qBAAe,EAAE,2BAAW;AAC1Bz5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,2CAAP,CAAV;AACD,OAnEQ;AAqETu1H,oBAAc,EAAE,0BAAW;AACzBuE,6CAAkB,CAACtE,WAAnB;AACAsE,6CAAkB,CAAC9E,YAAnB;AACA,aAAKtD,SAAL,CAAe,YAAf;AACD,OAzEQ;AA2ET;AACAmF,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD;AA9EQ,KA9DmB;AA+I9BoF,YAAQ,EAAE;AACR/E,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACAuiB,kBAAS,GAAG,KAAZ;AACA,YAAIrpB,IAAI,GAAG,IAAX;AACA,aAAK69H,aAAL,GAAqBptG,UAAU,CAAC,IAAD,EAAO,YAAW;AAC/CzwB,cAAI,CAACw4H,SAAL,CAAe,oBAAf;AACD,SAF8B,CAA/B;AAGD,OARO;AAURI,gBAAU,EAAE,sBAAW;AACrBhoG,oBAAY,CAAC,KAAKitG,aAAN,CAAZ;AACD,OAZO;AAcRC,wBAAkB,EAAE,8BAAW;AAC7B,aAAKtF,SAAL,CAAe,eAAf;AACD,OAhBO;AAkBRvrG,UAAI,EAAE,gBAAW;AACf,aAAKurG,SAAL,CAAe,WAAf;AACD,OApBO;AAsBRmF,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD;AAxBO,KA/IoB;AA0K9BuF,iBAAa,EAAE;AACblF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,gDAAP,CAAV;AACAuiB,kBAAS,GAAG,IAAZ;AAEA6oG,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAf,EAA+E;AAC7EgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,sBAAD,CAAN;AACD;AAJ4E,SAA/E;AAMD,OAXY;AAabqC,uBAAiB,EAAE,6BAAW;AAC5B,aAAKnF,SAAL,CAAe,SAAf;AACD,OAfY;AAiBbwF,0BAAoB,EAAE,gCAAW;AAC/B,aAAKxF,SAAL,CAAe,WAAf;AACD;AAnBY,KA1Ke;AAgM9ByF,WAAO,EAAE;AACPpF,gBAAU,EAAE,sBAAW;AACrB,YAAIa,UAAJ,EAAgB;AACdl2I,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iCAAP,CAAV;AACD,SAFD,MAEO;AACLtjB,iBAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,gDAAP,CAAV;AACD;;AACDuiB,kBAAS,GAAG,KAAZ;AACAgxG,iBAAS,GAPY,CASrB;AACA;;AACA,YAAI,CAACuG,qCAAkB,CAAC1D,YAAxB,EAAsC;AACpC,eAAK1E,SAAL,CAAe,SAAf;AACD;;AAED,YAAI,CAACW,UAAL,EAAiB;AACf,eAAKX,SAAL,CAAe,yBAAf;AACD;AACF,OAnBM;AAqBPtyH,UAAI,EAAE20H,UArBC;AAuBPmC,oBAAc,EAAE,0BAAW;AACzBx5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iCAAP,CAAV;AACD,OAzBM;AA2BPm2H,qBAAe,EAAE,2BAAW;AAC1Bz5I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,gDAAP,CAAV;AACD,OA7BM;AA+BPmmB,UAAI,EAAE,gBAAW;AACf2zG,6CAAkB,CAAC1C,WAAnB,YAAuC,YAAW;AAChD5C,gBAAM,CAAC,mBAAD,CAAN;AACD,SAFD;AAGA,aAAK9C,SAAL,CAAe,UAAf;AACD,OApCM;AAsCP2F,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD;AAxCM,KAhMqB;AA2O9B;AACA4F,2BAAuB,EAAE;AACvBvF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,yBAAP,CAAV;AAEA85H,6CAAkB,CAAC1C,WAAnB;AACAhM,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,yCAAP,CAAf,EAAkE;AAChEgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACD;AAH+D,SAAlE;AAKD,OAVsB;AAYvBk4G,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,yBAAf;AACD;AAdsB,KA5OK;AA6P9B6F,2BAAuB,EAAE;AACvBxF,gBAAU,EAAE,sBAAW;AACrB,YAAIsC,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,WAAf;AACD;AACF,OALsB;AAOvBtyH,UAAI,EAAE,gBAAW;AACf,YAAIi1H,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,WAAf;AACD;AACF;AAXsB,KA7PK;AA2Q9BuI,aAAS,EAAE;AACTlI,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,2CAAP,CAAV;AACAuiB,kBAAS,GAAG,IAAZ;AACD,OAJQ;AAMTnjB,UAAI,EAAE20H,UANG;AAQTmG,yBAAmB,EAAE,+BAAW;AAC9B,aAAKxI,SAAL,CAAe,gBAAf;AACD,OAVQ;AAYTmF,uBAAiB,EAAE,6BAAW;AAC5BiD,6CAAkB,CAAC1C,WAAnB,YAAuC,YAAW;AAChD5C,gBAAM,CAAC,qBAAD,CAAN;AACD,SAFD;AAGD,OAhBQ;AAkBT6C,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD;AApBQ,KA3QmB;AAkS9ByI,kBAAc,EAAE;AACdpI,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,iDAAP,CAAV;AACAorH,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,uDAAP,CAAf,EAAgF;AAC9EgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,sBAAD,CAAN;AACD;AAJ6E,SAAhF;AAMD,OATa;AAWdp1H,UAAI,EAAE20H,UAXQ;AAadsD,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD,OAfa;AAiBdiG,0BAAoB,EAAE,gCAAW;AAC/B,aAAKjG,SAAL,CAAe,SAAf;AACD;AAnBa,KAlSc;AAwT9B8F,YAAQ,EAAE;AACRzF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACD,OAHO;AAKRZ,UAAI,EAAE20H,UALE;AAOR0D,uBAAiB,EAAE,6BAAW;AAC5B,aAAK/F,SAAL,CAAe,eAAf;AACD,OATO;AAWR2F,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD;AAbO,KAxToB;AAwU9BgG,iBAAa,EAAE;AACb3F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,gDAAP,CAAV;AACAorH,gBAAQ,CAAC7sI,KAAT,CAAeiiB,IAAI,CAACR,CAAL,CAAO,sDAAP,CAAf,EAA+E;AAC7EgtH,YAAE,EAAE,cAAW;AACb3uI,aAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf;AACAq1G,kBAAM,CAAC,sBAAD,CAAN;AACD;AAJ4E,SAA/E;AAMD,OATY;AAWbp1H,UAAI,EAAE20H,UAXO;AAabsD,uBAAiB,EAAE,6BAAW;AAC5B,aAAK3F,SAAL,CAAe,mBAAf;AACD,OAfY;AAiBbiG,0BAAoB,EAAE,gCAAW;AAC/B,aAAKjG,SAAL,CAAe,SAAf;AACD;AAnBY,KAxUe;AA8V9B;AACA2F,qBAAiB,EAAE;AACjBtF,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,yCAAP,CAAV;;AACA,YAAIq0H,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,oBAAf;AACD;AACF,OANgB;AAQjBtyH,UAAI,EAAE,gBAAW;AACf20H,kBAAU;;AACV,YAAIM,iBAAiB,EAArB,EAAyB;AACvB,eAAK3C,SAAL,CAAe,oBAAf;AACD;AACF;AAbgB,KA/VW;AA+W9BkG,sBAAkB,EAAE;AAClB7F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,0CAAP,CAAV;AACAuiB,kBAAS,GAAG,IAAZ;AACD,OAJiB;AAMlB1+B,WAAK,EAAE,iBAAW;AAChB2pI,gCAAwB;AACxByF,mCAA2B;AAC3B,aAAKvB,SAAL,CAAe,YAAf;AACA1iH,gBAAQ,CAACnrB,KAAT;AACD;AAXiB,KA/WU;AA6X9Bg0I,gBAAY,EAAE;AACZ9F,gBAAU,EAAE,sBAAW;AACrBr1I,eAAO,GAAG8jB,IAAI,CAACR,CAAL,CAAO,8BAAP,CAAV;AACA45H,kBAAU,GAAG,IAAb;AACAE,6CAAkB,CAACtE,WAAnB;AACD,OALW;AAOZ1D,gBAAU,EAAE,sBAAW;AACrB8H,kBAAU,GAAG,KAAb;AACD,OATW;AAWZG,aAAO,EAAE,iBAASC,OAAT,EAAkB;AACzBF,6CAAkB,CAAC9E,YAAnB,CAAgCgF,OAAhC;AACA,aAAKtI,SAAL,CAAe,YAAf;AACD;AAdW;AA7XgB,GAAjB,CAAf,CApRoD,CAmqBpD;AACA;;AACA,WAAS8C,MAAT,CAAgBtmH,SAAhB,EAA2B;AACzB,QAAIQ,IAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,CAAX;AAEA2K,SAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC,UAAImxE,OAAO,GAAG5F,YAAY,CAACF,WAAb,CAAyBh3I,KAAzB,CAA+Bk3I,YAA/B,EAA6CxjH,IAA7C,CAAd;;AAEA,UAAI,CAACopH,OAAL,EAAc;AACZ;AACA,YAAI5pH,SAAS,KAAK,oBAAd,IACFA,SAAS,KAAK,gBADhB,EACkC;AAChCgkH,sBAAY,CAACR,SAAb,CAAuB,cAAvB;AACD;AACF;AACF,KAVD;AAWD,GAnrBmD,CAqrBpD;;;AACAoI,uCAAkB,CAAC/iI,EAAnB,CAAsB,GAAtB,EAA2B,YAAW;AACpC,QAAI2X,IAAI,GAAG71B,KAAK,CAACoB,SAAN,CAAgBQ,KAAhB,CAAsBN,IAAtB,CAA2BuD,SAA3B,EAAsC,CAAtC,CAAX;AACA82I,UAAM,CAACx5I,KAAP,CAAa,IAAb,EAAmB,CAAC,KAAK0e,KAAN,EAAa+V,MAAb,CAAoBf,IAApB,CAAnB;AACD,GAHD,EAtrBoD,CA2rBpD;;AACAorH,uCAAkB,CAAC/iI,EAAnB,CAAsB,gBAAtB,EAAwC,YAAW;AACjD,QAAIs7H,UAAJ,EAAgB;AACdhqI,WAAK,CAACs+D,sBAAN,CAA6B,YAAW;AACtC;AACA;AACA,YAAI/mC,GAAG,GAAG,IAAID,IAAJ,EAAV;;AACA,YAAK0yG,UAAU,CAAC+H,kBAAX,GAAgCV,sBAAjC,GAA2D,CAA/D,EAAkE;AAChEG,kBAAQ,GAAG,IAAX;AACAH,gCAAsB,GAAGrH,UAAU,CAAC+H,kBAApC;AACAT,8BAAoB,GAAG/5G,GAAvB;AACD,SAJD,MAIO;AACL,cAAKA,GAAG,GAAG+5G,oBAAP,GAA+B,IAAnC,EAAyC;AACvCE,oBAAQ,GAAG,IAAX;AACD,WAFD,MAEO;AACLA,oBAAQ,GAAG,KAAX;AACD;AACF;;AACDnH,uBAAe,GAAGL,UAAU,CAACsE,SAA7B;AACD,OAhBD;AAiBD;AACF,GApBD;AAsBAmD,uCAAkB,CAAC/iI,EAAnB,CAAsB,gBAAtB,EAAwC,YAAW;AACjD67H,cAAU,GAAG,IAAb;AACD,GAFD;AAIAkH,uCAAkB,CAAC/iI,EAAnB,CAAsB,iBAAtB,EAAyC,YAAW;AAClD67H,cAAU,GAAG,KAAb;AACD,GAFD;AAIA9oC,iBAAe,GAAG,IAAIt8B,eAAJ,CAAoB;AACpCjwE,YAAQ,EAAEA,kBAD0B;AAEpC2vE,WAAO,EAAE,EAF2B;AAGpCzD,mBAAe,EAAEA,0BAHmB;AAIpC0D,qBAAiB,EAAEA,iBAJiB;AAKpCM,sBAAkB,EAAE;AALgB,GAApB,CAAlB;AAQAq8B,iBAAe,CAACz6E,OAAhB,CAAwBhnB,KAAxB;AACAmhE,iBAAe,GAAGsgC,eAAe,CAACtgC,eAAlC;AACAx6C,UAAQ,GAAG86E,eAAe,CAACl8B,eAA3B;AACA5+C,UAAQ,CAACQ,aAAT,CAAuB,MAAvB,EAA+B,MAA/B,EAAuC,MAAvC,EAA+C,WAA/C,EAA4D,SAA5D;AAEAg+G,0BAAwB;AAExBnlI,OAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B;AACzB1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADkB;AAEzB1U,YAAQ,EAAE,MAFe;AAGzBwQ,UAAM,EAAE;AAHiB,GAA3B,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,0BAAP,CADyB;AAEhC1U,YAAQ,EAAE,MAFsB;AAGhCwQ,UAAM,EAAE;AAHwB,GAAlC,EAIG,YAAW;AACZ,WAAOpT,IAAP;AACD,GAND;AAQAL,OAAK,CAAC6iE,YAAN,CAAmB,eAAnB,EAAoC8nE,+BAApC,EAAqE,YAAW;AAC9E,QAAIpH,cAAc,IAAI,IAAtB,EAA4B;AAC1B,aAAOA,cAAP;AACD;;AACD,WAAOA,cAAc,GAAGvjI,KAAK,CAACwb,UAAN,CAAiB+lH,SAAzC;AACD,GALD,EAzvBoD,CAgwBpD;AACA;AACA;;AACAvhI,OAAK,CAAC6iE,YAAN,CAAmB,mBAAnB,EAAwC8nE,+BAAxC,EAAyE,YAAW;AAClF,QAAIN,eAAe,IAAI,IAAvB,EAA6B;AAC3B,aAAOA,eAAP;AACD;;AACD,WAAOA,eAAe,GAAGrqI,KAAK,CAACwb,UAAN,CAAiB+lH,SAA1C;AACD,GALD;AAOAvhI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAO0uH,UAAP;AACD,GAJD;AAMA7hI,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO+mB,UAAP;AACD,GAJD,EAhxBoD,CAsxBpD;;AACAl6B,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOq6C,UAAP;AACD,GAJD;AAMAxtD,OAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,SAAK,EAAE;AADuB,GAAhC,EAEG,YAAW;AACZ,WAAO6V,YAAW,GAAG,CAArB;AACD,GAJD;AAMAhpB,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE;AADqB,GAA9B,EAEG,YAAW;AACZ,WAAOyzH,OAAO,IAAIlD,gBAAlB;AACD,GAJD;AAMA1jI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOo+H,UAAP;AACD,GAJD;AAMAvxI,OAAK,CAAC6iE,YAAN,CAAmB,YAAnB,EAAiC;AAC/B1vD,SAAK,EAAE;AADwB,GAAjC,EAEG,YAAW;AACZ,WAAOo3H,UAAP;AACD,GAJD;AAMAvqI,OAAK,CAAC6iE,YAAN,CAAmB,oBAAnB,EAAyC;AACvC1vD,SAAK,EAAE;AADgC,GAAzC,EAEG,YAAW;AACZ,WAAOq3H,kBAAP;AACD,GAJD;AAMAxqI,OAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,SAAK,EAAE;AADyB,GAAlC,EAEG,YAAW;AACZ,WAAO6vH,WAAP;AACD,GAJD;AAMAhjI,OAAK,CAAC6iE,YAAN,CAAmB,SAAnB,EAA8B;AAC5B1vD,SAAK,EAAE;AADqB,GAA9B,EAEG,YAAW;AACZ,WAAO9e,OAAP;AACD,GAJD,EAj0BoD,CAu0BpD;AACA;;AACA2L,OAAK,CAAC0O,EAAN,CAAS,iBAAT,EAA4B,YAAW;AACrC+iI,yCAAkB,CAACtE,WAAnB;AACAsE,yCAAkB,CAAC1C,WAAnB;AACD,GAHD;AAKA/uI,OAAK,CAACujE,yBAAN;AACAsmE,cAAY,CAACR,SAAb,CAAuB,cAAvB;AAEA,SAAOrpI,KAAP;AACD;AAAA,C;;AC91BD;AACA;AACA;AACA;AAGe,6DAASA,KAAT,EAAgB8lC,QAAhB,EAA0B3tB,IAA1B,EAAgC;AAE7C;AACA;AACA,MAAI1E,MAAM,GAAGC,EAAE,CAACD,MAAH,CAAU,KAAV,CAAb;AACA,MAAI+yH,iBAAJ;AACA,MAAI18F,IAAJ;AAEA,MAAI03F,iBAAiB,GAAGqC,iCAAoB,CAAC1rH,IAAD,CAA5C;;AAEA,WAASwuH,eAAT,GAA2B;AACzB,QAAI3mI,KAAK,CAACwb,UAAN,CAAiBorH,OAArB,EAA8B;AAC5BzjG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAAC48F,WAA1B;AACD,KAFD,MAEO;AACLvjG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAAC48F,WAA3B;AACD;AACF;;AAED,WAASmJ,kBAAT,GAA8B;AAC5B,QAAI7vI,KAAK,CAACwb,UAAN,CAAiB+1H,UAArB,EAAiC;AAC/BpuG,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACkoG,cAA1B;AACD,KAFD,MAEO;AACL7uG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACkoG,cAA3B;AACD;AACF;;AAED,WAASlC,0BAAT,GAAsC;AACpC,QAAI9vI,KAAK,CAACwb,UAAN,CAAiBgvH,kBAAjB,IAAuCxqI,KAAK,CAACwb,UAAN,CAAiBgyC,UAA5D,EAAwE;AACtErqB,gBAAS,CAACD,UAAV,CAAqB4G,IAAI,CAACimG,mBAA1B;AACD,KAFD,MAEO;AACL5sG,gBAAS,CAACF,WAAV,CAAsB6G,IAAI,CAACimG,mBAA3B;AACD;AACF;;AAED,WAASE,cAAT,GAA0B;AACxBnmG,QAAI,CAAComG,QAAL,CAAchkI,IAAd,CAAmBlM,KAAK,CAACwb,UAAN,CAAiBnnB,OAApC;AACD;;AAED,WAAS0yI,mBAAT,GAA+B;AAC7B/mI,SAAK,CAACu+B,WAAN,CAAkB,SAAlB,EAA6BooG,eAA7B;AACAA,mBAAe;AAEf3mI,SAAK,CAACu+B,WAAN,CAAkB,YAAlB,EAAgCsxG,kBAAhC;AACAA,sBAAkB;AAElB7vI,SAAK,CAACu+B,WAAN,CAAkB,oBAAlB,EAAwCuxG,0BAAxC;AACA9vI,SAAK,CAACu+B,WAAN,CAAkB,YAAlB,EAAgCuxG,0BAAhC;AACAA,8BAA0B;AAE1B9vI,SAAK,CAACu+B,WAAN,CAAkB,SAAlB,EAA6B0xG,cAA7B;AACAA,kBAAc;AACf;;AAED,WAASG,iBAAT,GAA6B;AAC3B,QAAIt5G,MAAM,GAAG,IAAIH,YAAJ,CAAgB;AAC3Bn6B,WAAK,EAAE,KADoB;AAE3Bi6B,iBAAW,EAAE,6BAFc;AAG3BosG,mBAAa,EAAE,KAHY;AAI3B7wH,WAAK,EAAEmG,IAAI,CAACR,CAAL,CAAO,4BAAP,CAJoB;AAK3B+f,aAAO,EAAE;AACPitG,UAAE,EAAE,cAAW;AACbxuI,iBAAO,CAACiL,GAAR,CAAY,YAAZ;AACApL,WAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf,EAFa,CAGb;;AACA92B,eAAK,CAACusI,iBAAN,CAAwBv2I,CAAC,CAAC,IAAD,CAAD,CAAQma,IAAR,CAAa,eAAb,EAA8BtW,GAA9B,EAAxB;AACD,SANM;AAOP02I,cAAM,EAAE,kBAAW;AACjBp6I,iBAAO,CAACiL,GAAR,CAAY,gBAAZ;AACApL,WAAC,CAAC,IAAD,CAAD,CAAQ8gC,MAAR,CAAe,OAAf,EAFiB,CAGjB;AACD;AAXM;AALkB,KAAhB,EAkBV3e,IAlBU,CAAb;AAmBA,QAAI0F,OAAO,GAAG,EAAd;AAAA,QACE1K,KAAK,GAAG,EADV;AAAA,QAEE+4H,OAAO,GAAGlsI,KAAK,CAACisI,gBAAN,EAFZ;AAAA,QAGEhgF,KAAK,GAAG,IAHV;AAAA,QAIEi+E,cAAc,GAAGlqI,KAAK,CAACqsI,iBAAN,EAJnB;AAAA,QAKEj7I,CALF;AAAA,QAKKo/I,OALL;AAAA,QAKcC,SALd;;AAMA,SAAKr/I,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG86I,OAAO,CAAC76I,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,UAAI86I,OAAO,CAAC96I,CAAD,CAAP,KAAe,GAAnB,EAAwB;AACtBo/I,eAAO,GAAG,EAAV;AACAC,iBAAS,GAAGjP,iBAAiB,CAAC0K,OAAO,CAAC96I,CAAD,CAAR,CAA7B;;AACA,YAAI,CAACq/I,SAAL,EAAgB;AACdA,mBAAS,GAAG;AACV7O,2BAAe,EAAE;AADP,WAAZ;AAGD;;AACDzuH,aAAK,GAAGs9H,SAAS,CAAC7O,eAAV,GAA4B,IAA5B,GAAmCsK,OAAO,CAAC96I,CAAD,CAA1C,GAAgD,GAAxD;;AACA,YAAI84I,cAAc,IAAI94I,CAAlB,IAAwB66D,KAAK,IAAIi+E,cAAc,IAAI,CAAC,CAAxD,EAA4D;AAC1DsG,iBAAO,GAAG,UAAV;AACD;;AAAA;AACD3yH,eAAO,IAAI,6DAA6DzsB,CAA7D,GAAiE,IAAjE,GAAwEo/I,OAAxE,GAAkF,IAAlF,GAAyFr9H,KAAzF,GAAiG,OAA5G;AACA84C,aAAK,GAAG,KAAR;AACD;AACF;;AACDn1B,UAAM,CAACK,UAAP,CAAkBtZ,OAAlB;AACAiZ,UAAM,CAACE,IAAP;AACD;;AAED,SAAO8S,IAAI,GAAG;AACZx5B,OAAG,EAAEta,CAAC,CAAC,uEAAD,CADM;AAEZ06I,iBAAa,EAAE,IAFH;AAIZ5uG,aAAS,EAAE,mBAASC,QAAT,EAAmBs4B,WAAnB,EAAgC;AACzCv0B,cAAQ,GAAGu0B,WAAW,IAAIv0B,QAA1B;AACA9lC,WAAK,GAAG+hC,QAAQ,IAAI/hC,KAApB;AAEA+mI,yBAAmB;AACpB,KATW;AAWZtoI,qBAAiB,EAAE,6BAAW;AAC5B,aAAO,OAAP;AACD,KAbW;AAeZ;AACAwsC,SAAK,EAAE,iBAAW;AAChBnB,UAAI,CAACx5B,GAAL,CAASoG,KAAT;AACAozB,UAAI,CAAC6mG,kBAAL,GAA0B36I,CAAC,CAAC,aAAD,CAA3B;AACA8zC,UAAI,CAAC8mG,gBAAL,GAAwB56I,CAAC,CAAC,aAAD,CAAzB;AACA8zC,UAAI,CAACmoG,aAAL,GAAqBj8I,CAAC,CAAC,qFAAqFmiB,IAAI,CAACR,CAAL,CAAO,0BAAP,CAArF,GAA0H,kBAA3H,CAAtB;AACA6uH,uBAAiB,GAAG,IAAIlsF,iBAAJ,CAAsB;AACxCv9C,UAAE,EAAE,mBADoC;AAExCoW,aAAK,EAAEgF,IAAI,CAACR,CAAL,CAAO,gBAAP,CAFiC;AAGxCxI,aAAK,EAAEnP,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,EAA8CE,mBAA9C;AAHiC,OAAtB,CAApB;AAMA8f,UAAI,CAACkoG,cAAL,GAAsBh8I,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,gBAAP,CAA7C,GAAwE,iBAAzE,CAAvB;AACAmyB,UAAI,CAAC48F,WAAL,GAAmB1wI,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,aAAP,CAA7C,GAAqE,iBAAtE,CAApB;AACAmyB,UAAI,CAACimG,mBAAL,GAA2B/5I,CAAC,CAAC,6CAA6CmiB,IAAI,CAACR,CAAL,CAAO,sBAAP,CAA7C,GAA8E,iBAA/E,CAA5B;AACAmyB,UAAI,CAAComG,QAAL,GAAgBl6I,CAAC,CAAC,6BAAD,CAAjB;AACA8zC,UAAI,CAACk9F,cAAL,GAAsBR,iBAAiB,CAACzxH,MAAlB,GAA2BzW,QAA3B,CAAoC,YAApC,CAAtB;AAEAwrC,UAAI,CAAC6mG,kBAAL,CACG1yI,MADH,CACU6rC,IAAI,CAACmoG,aADf,EAEGh0I,MAFH,CAEU6rC,IAAI,CAACkoG,cAFf,EAGG/zI,MAHH,CAGU6rC,IAAI,CAACk9F,cAHf,EAIG/oI,MAJH,CAIU6rC,IAAI,CAAC48F,WAJf,EAKGzoI,MALH,CAKU6rC,IAAI,CAACimG,mBALf;AAOAjmG,UAAI,CAAC8mG,gBAAL,CACG3yI,MADH,CACU6rC,IAAI,CAAComG,QADf;AAGApmG,UAAI,CAACx5B,GAAL,CAAS1T,GAAT,CAAa,QAAb,EAAuB,CAAvB,EACGqB,MADH,CACU6rC,IAAI,CAAC6mG,kBADf,EAEG1yI,MAFH,CAEU6rC,IAAI,CAAC8mG,gBAFf;AAIA9mG,UAAI,CAAC6mG,kBAAL,CAAwBxgI,IAAxB,CAA6B,KAA7B,EAAoC7R,QAApC,CAA6C,6BAA7C;AACAwrC,UAAI,CAAC8mG,gBAAL,CAAsBzgI,IAAtB,CAA2B,KAA3B,EAAkC7R,QAAlC,CAA2C,6BAA3C;AAEAkoI,uBAAiB,CAAClmI,MAAlB;AACAymI,yBAAmB;;AAEnB,UAAI,OAAOj9F,IAAI,CAAC4mG,aAAZ,IAA8B,QAAlC,EAA4C;AAC1C5mG,YAAI,CAACmoG,aAAL,CAAmB9hI,IAAnB,CAAwB,OAAxB,EAAiCtW,GAAjC,CAAqCiwC,IAAI,CAAC4mG,aAA1C;AACD;;AACD5mG,UAAI,CAACmoG,aAAL,CAAmB9hI,IAAnB,CAAwB,OAAxB,EAAiCzB,EAAjC,CAAoC,QAApC,EAA8C,YAAW;AACvDo7B,YAAI,CAAC4mG,aAAL,GAAqB16I,CAAC,CAAC,IAAD,CAAD,CAAQ6D,GAAR,EAArB;AACD,OAFD,EAxCgB,CA4ChB;;AACAiwC,UAAI,CAACmoG,aAAL,CAAmB9hI,IAAnB,CAAwB,OAAxB,EAAiCzB,EAAjC,CAAoC,UAApC,EAAgD,UAASsgB,GAAT,EAAc;AAC5D,YAAIoxB,IAAI,GAAGpxB,GAAG,CAACqxB,OAAJ,IAAerxB,GAAG,CAACsxB,KAAnB,IAA4B,CAAvC;;AACA,YAAIF,IAAI,IAAI,EAAR,IAAcpgD,KAAK,CAACwb,UAAN,CAAiB+1H,UAAnC,EAA+C;AAC7CvxI,eAAK,CAAC0xI,OAAN,CAAc5nG,IAAI,CAACmoG,aAAL,CAAmB9hI,IAAnB,CAAwB,OAAxB,EAAiCtW,GAAjC,EAAd;AACAm1B,aAAG,CAACiW,cAAJ;AACD;AACF,OAND;AAQA6E,UAAI,CAACkoG,cAAL,CAAoBtjI,EAApB,CAAuB,OAAvB,EAAgC,QAAhC,EAA0C,YAAW;AACnD1O,aAAK,CAAC0xI,OAAN,CAAc5nG,IAAI,CAACmoG,aAAL,CAAmB9hI,IAAnB,CAAwB,OAAxB,EAAiCtW,GAAjC,EAAd;AACD,OAFD;AAGAiwC,UAAI,CAAC48F,WAAL,CAAiBh4H,EAAjB,CAAoB,OAApB,EAA6B,QAA7B,EAAuC1O,KAAK,CAAComI,IAA7C;AACAt8F,UAAI,CAACimG,mBAAL,CAAyBrhI,EAAzB,CAA4B,OAA5B,EAAqC,QAArC,EAA+C0hI,iBAA/C;AACD,KA1EW;AA4EZ9vI,UAAM,EAAE,kBAAW;AACjB,UAAIkmI,iBAAJ,EAAuB;AACrBA,yBAAiB,CAAClmI,MAAlB;AACD;AACF,KAhFW;AAkFZsvB,WAAO,EAAE,mBAAW,CAAE,CAlFV;AAoFZ04B,YAAQ,EAAE,oBAAW,CAAE,CApFX;AAsFZ1M,eAAW,EAAE,qBAASzsC,KAAT,EAAgB;AAC3Bq3H,uBAAiB,CAAC5qF,WAAlB,CAA8BzsC,KAA9B;;AACA,UAAInP,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAjB,IAAsC,IAA1C,EAAgD;AAC9CrK,yBAAiB,CAAC3qF,SAAlB;AACD;AACF,KA3FW;AA6FZ3lC,UAAM,EAAE,kBAAW;AACjB,UAAIlW,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAjB,IAAsC,IAA1C,EAAgD;AAC9CrK,yBAAiB,CAACtwH,MAAlB,CAAyB,EAAzB;AACAswH,yBAAiB,CAAC3qF,SAAlB;AACD,OAHD,MAGO;AACL2qF,yBAAiB,CAACtwH,MAAlB,CAAyBzC,MAAM,CAACzT,KAAK,CAACwb,UAAN,CAAiBq1H,iBAAlB,CAA/B;AACArK,yBAAiB,CAAC1qF,SAAlB;AACD;AACF;AArGW,GAAd;AAuGD;AAAA,C;;ACjNA;;;;;;;;;AAWc,SAASyrF,0CAAT,CAA4Bx3H,MAA5B,EAAoC;AACjD,SAAO;AACL;;;;;;;;;;;;;AAaAoxH,cAAU,EAAE,SAASA,UAAT,CAAoBxhI,OAApB,EAA6B;AACvCoQ,YAAM,CAAC8xB,aAAP,CAAqBs/F,UAArB,CAAgCxhI,OAAhC;AACD;AAhBI,GAAP;AAkBD;AAAA,C;;AC7BD;AACA;AACA;CAEA;;AAEe,mEAASmmC,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,MAAI2I,UAAU,GAAG,IAAIstC,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACf3R,uBADe,EACR6nD,cADQ,EACQh9B,0CADR,CAAjB,CADqE,CAIrE;AACA;;AAEA,WAASsqG,mBAAT,GAA+B;AAC7B,QAAI/mI,KAAK,GAAGksB,UAAU,CAAClsB,KAAvB;AAEAA,SAAK,CAACu+B,WAAN,CAAkB,mBAAlB,EAAuC,YAAW;AAChDrS,gBAAU,CAAC0uC,UAAX;AACD,KAFD;AAIA56D,SAAK,CAACu+B,WAAN,CAAkB,aAAlB,EAAiC,YAAW;AAC1C,UAAIv+B,KAAK,CAACwb,UAAN,CAAiBwnH,WAArB,EAAkC;AAChCz/G,6BAAqB,CAAC0c,WAAtB;AACD;AACF,KAJD;AAMAjgC,SAAK,CAACwpB,8BAAN,CAAqC,eAArC,EAAsD,YAAW;AAC/D,UAAIK,WAAW,GAAG7pB,KAAK,CAAC8pB,sBAAN,CAA6B,eAA7B,CAAlB;AACA,UAAIggB,IAAI,GAAG5d,UAAU,CAAC4S,cAAtB;AAEAgL,UAAI,CAAC8R,WAAL,CAAiB/xB,WAAW,CAACG,mBAAZ,EAAjB;AACD,KALD;AAMD;;AAEDzG,uBAAqB,CAAC7U,EAAtB,CAAyB,wCAAzB,EAAmEq4H,mBAAnE;AAEAxjH,uBAAqB,CAAC7U,EAAtB,CAAyB,uCAAzB,EAAkE,YAAW;AAC3Ewd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,KAA3C;AACD,GAFD;AAIA4vB,uBAAqB,CAAC7U,EAAtB,CAAyB,gBAAzB,EAA2C,YAAW;AACpDwd,cAAU,CAAClsB,KAAX,CAAiBrM,GAAjB,CAAqB,oBAArB,EAA2C,IAA3C;AACAu4B,cAAU,CAAClsB,KAAX,CAAiBu6D,SAAjB;AACD,GAHD;AAKA,SAAOruC,UAAP;AACD;AAAA,C;;;;;;AC/CD;AAEe;AACbrpB,gBAAc,EAAE;AACd5K,QAAI,EAAE;AACJnC,kBAAY,EAAE,UADV;AAEJd,eAAS,EAAE;AAFP,KADQ;AAKdk9I,aAAS,EAAE;AACTp8I,kBAAY,EAAE;AADL,KALG;AAQdq8I,cAAU,EAAE;AACVr8I,kBAAY,EAAE,GADJ;AAEVd,eAAS,EAAE;AAFD,KARE;AAYdo9I,eAAW,EAAE;AACXt8I,kBAAY,EAAE,GADH;AAEXd,eAAS,EAAE;AAFA,KAZC;AAgBdq9I,eAAW,EAAE;AACXv8I,kBAAY,EAAE,EADH;AAEXd,eAAS,EAAE;AAFA,KAhBC;AAoBds9I,gBAAY,EAAE;AACZx8I,kBAAY,EAAE,EADF;AAEZd,eAAS,EAAE;AAFC,KApBA;AAwBd0O,YAAQ,EAAE;AACR5N,kBAAY,EAAE;AADN,KAxBI;AA2BdqO,oBAAgB,EAAE;AAChBrO,kBAAY,EAAE;AADE,KA3BJ;AA8Bdy8I,mBAAe,EAAE;AACfz8I,kBAAY,EAAE;AADC,KA9BH;AAiCd08I,cAAU,EAAE;AACV18I,kBAAY,EAAE;AADJ,KAjCE;AAoCd28I,0BAAsB,EAAE;AACtB38I,kBAAY,EAAE;AADQ,KApCV;AAuCd48I,2BAAuB,EAAE;AACvB58I,kBAAY,EAAEsZ,mBAAS,CAAC0I;AADD,KAvCX;AA0Cd66H,4BAAwB,EAAE;AACxB78I,kBAAY,EAAEsZ,mBAAS,CAAC2I;AADA,KA1CZ;AA6Cd66H,sBAAkB,EAAE;AAClB98I,kBAAY,EAAEsZ,mBAAS,CAAC4I;AADN,KA7CN;AAgDd66H,wBAAoB,EAAE;AACpB/8I,kBAAY,EAAEsZ,mBAAS,CAAC6I;AADJ,KAhDR;AAmDd66H,oBAAgB,EAAE;AAChBh9I,kBAAY,EAAE;AADE,KAnDJ;AAsDdi9I,0BAAsB,EAAE;AACtBj9I,kBAAY,EAAE;AADQ,KAtDV;AAyDdk9I,YAAQ,EAAE;AACRl9I,kBAAY,EAAE;AACZmC,YAAI,EAAE,aADM;AAEZg7I,aAAK,EAAE,CAFK;AAGZC,aAAK,EAAE,CAHK;AAIZj3I,YAAI,EAAE,CAJM;AAKZuC,aAAK,EAAE;AALK;AADN,KAzDI;AAkEd20I,SAAK,EAAE;AACLr9I,kBAAY,EAAE;AADT,KAlEO;AAqEds9I,aAAS,EAAE;AACTt9I,kBAAY,EAAE;AADL,KArEG;AAwEdu9I,uBAAmB,EAAE;AACnBv9I,kBAAY,EAAE;AADK,KAxEP;AA2Edw9I,mBAAe,EAAE;AACfx9I,kBAAY,EAAE;AADC,KA3EH;AA8Edy9I,mBAAe,EAAE;AACfz9I,kBAAY,EAAE;AADC,KA9EH;AAiFd09I,4BAAwB,EAAE;AACxB19I,kBAAY,EAAE;AADU;AAjFZ,GADH;AAuFb+O,aAAW,EAAE;AACXQ,aAAS,EAAE;AACTvP,kBAAY,EAAE,IADL;AAETN,+BAAyB,EAAE;AAFlB,KADA;AAKXyR,kBAAc,EAAE;AACdnR,kBAAY,EAAE,YADA;AAEdN,+BAAyB,EAAE;AAFb,KALL;AASX0R,sBAAkB,EAAE;AAClBpR,kBAAY,EAAE,OADI;AAElBN,+BAAyB,EAAE,KAFT;AAGlBK,eAAS,EAAE;AAHO,KATT;AAcX49I,sBAAkB,EAAE;AAClB39I,kBAAY,EAAE;AADI,KAdT;AAiBX66F,YAAQ,EAAE;AACR76F,kBAAY,EAAE;AADN,KAjBC;AAoBX49I,uBAAmB,EAAE;AACnB59I,kBAAY,EAAE;AADK,KApBV;AAuBX69I,uBAAmB,EAAE;AACnB79I,kBAAY,EAAE;AADK,KAvBV;AA0BXwR,0BAAsB,EAAE;AACtBxR,kBAAY,EAAE;AADQ;AA1Bb,GAvFA;AAsHb89I,MAAI,EAAE;AACJ/+D,aAAS,EAAE;AACT;AACA9+E,cAAQ,EAAE,IAFD;AAGTf,eAAS,EAAE;AAHF,KADP;AAMJzC,KAAC,EAAE;AACDuD,kBAAY,EAAE;AADb,KANC;AASJgS,KAAC,EAAE;AACDhS,kBAAY,EAAE;AADb,KATC;AAYJ0G,SAAK,EAAE,EAZH;AAaJC,UAAM,EAAE,EAbJ;AAcJlM,KAAC,EAAE,EAdC;AAeJ+B,KAAC,EAAE,EAfC;AAgBJuhJ,SAAK,EAAE,EAhBH;AAiBJC,SAAK,EAAE,EAjBH;AAkBJC,YAAQ,EAAE,EAlBN;AAoBJ;AACA;AACA;AACAC,gBAAY,EAAE;AACZn+I,eAAS,EAAE;AADC,KAvBV;AA0BJo+I,gBAAY,EAAE;AACZp+I,eAAS,EAAE;AADC,KA1BV;AA8BJq+I,wBAAoB,EAAE;AACpBp+I,kBAAY,EAAE;AADM,KA9BlB;AAiCJq+I,iBAAa,EAAE;AACbr+I,kBAAY,EAAE;AADD,KAjCX;AAoCJs+I,WAAO,EAAE;AACPt+I,kBAAY,EAAE;AADP,KApCL;AAuCJu+I,gBAAY,EAAE;AACZv+I,kBAAY,EAAE;AADF,KAvCV;AA0CJw+I,cAAU,EAAE;AACVx+I,kBAAY,EAAE;AADJ,KA1CR;AA6CJy+I,cAAU,EAAE;AACVz+I,kBAAY,EAAE;AADJ,KA7CR;AAgDJ0+I,cAAU,EAAE;AACV1+I,kBAAY,EAAE;AADJ,KAhDR;AAmDJwzD,eAAW,EAAE;AACXxzD,kBAAY,EAAE;AADH,KAnDT;AAsDJ2+I,wBAAoB,EAAE;AACpB3+I,kBAAY,EAAE;AADM,KAtDlB;AAyDJ4+I,SAAK,EAAE;AACL5+I,kBAAY,EAAE;AADT,KAzDH;AA4DJ6+I,cAAU,EAAE;AACV7+I,kBAAY,EAAE;AADJ,KA5DR;AA+DJ8+I,cAAU,EAAE;AACV9+I,kBAAY,EAAE;AADJ,KA/DR;AAkEJwS,WAAO,EAAE;AACPxS,kBAAY,EAAE;AADP,KAlEL;AAqEJ++I,UAAM,EAAE;AACN/+I,kBAAY,EAAE;AADR,KArEJ;AAwEJ2R,SAAK,EAAE;AACL;AACA;AACA3R,kBAAY,EAAE;AAHT,KAxEH;AA6EJqd,SAAK,EAAE;AACLrd,kBAAY,EAAE;AADT,KA7EH;AAgFJotH,WAAO,EAAE;AACPptH,kBAAY,EAAE;AADP,KAhFL;AAmFJ2S,aAAS,EAAE;AACT3S,kBAAY,EAAE;AADL;AAnFP,GAtHO;AA8Mb6vI,QAAM,EAAE;AACN1tI,QAAI,EAAE;AACJlC,cAAQ,EAAE,IADN;AAEJf,eAAS,EAAE;AAFP,KADA;AAKNzC,KAAC,EAAE;AACDwD,cAAQ,EAAE,IADT;AAEDkN,cAAQ,EAAE;AAFT,KALG;AASN6E,KAAC,EAAE;AACD/R,cAAQ,EAAE,IADT;AAEDkN,cAAQ,EAAE;AAFT,KATG;AAaNuI,SAAK,EAAE;AACL;AACAxW,eAAS,EAAE;AAFN,KAbD;AAiBNme,SAAK,EAAE;AACLrd,kBAAY,EAAE;AADT,KAjBD;AAoBN3E,SAAK,EAAE;AACL4D,cAAQ,EAAE,IADL;AAELc,eAAS,EAAE;AAFN;AApBD;AA9MK,CAAf,E;;ACDA;AAEA,IAAIi/I,gBAAgB,GAAG,CAAvB;AAEO,IAAMC,0BAAc,GAAG,SAAjBA,cAAiB,CAAS/0I,KAAT,EAAgB;AAAE,MAC9C;AACEoqB,OAAK,GAAGpqB,KAAK,CAACg1I,eAAN,EAFoC;AAAA,MAG5Cp2D,EAAE,GAAGx0D,KAAK,CAAC+nH,UAHiC;AAAA,MAI5CtzD,EAAE,GAAGz0D,KAAK,CAACgoH,WAJiC;AAAA,MAM5C6C,eAAe,GAAGH,gBAN0B;AAAA,MAQ5C;AACAI,cAAY,GAAGl1I,KAAK,CAACm1I,oBAAN,EAT6B;AAAA,MAU5CC,QAAQ,GAAGp1I,KAAK,CAACq1I,gBAAN,EAViC;AAAA,MAW5CjB,OAAO,GAAGp0I,KAAK,CAACs1I,eAAN,EAXkC;AAAA,MAY5C71E,CAAC,GAAGz/D,KAAK,CAACu1I,iBAAN,EAZwC;AAAA,MAa5Cl2G,CAAC,GAAGr/B,KAAK,CAACw1I,iBAAN,EAbwC;AAAA,MAc5CC,EAAE,GAAGz1I,KAAK,CAAC01I,2BAAN,EAduC;AAAA,MAe5CC,QAAQ,GAAG31I,KAAK,CAAC41I,gBAAN,EAfiC;AAAA,MAiB5C;AACAC,IAAE,GAAGnmJ,yBAAM,CAACQ,MAAP,CAAc0uF,EAAE,GAAGC,EAAnB,EAAuB,CAAvB,EAA0B7+E,KAAK,CAAC81I,YAAN,EAA1B,CAlBuC;AAAA,MAoB5C;AACAC,KAAG,GAAGn3D,EAAE,GAAG,CArBiC;AAAA,MAsB5Co3D,GAAG,GAAGn3D,EAAE,GAAG,CAtBiC;AAAA,MAuB5Co3D,GAAG,GAAGr3D,EAAE,GAAG,CAvBiC;AAAA,MAwB5Cs3D,GAAG,GAAGr3D,EAAE,GAAG,CAxBiC;AAAA,MA0B5Cs3D,MAAM,GAAG/rH,KAAK,CAACioH,WAAN,GAAoBjoH,KAAK,CAAC+nH,UA1BS;AAAA,MA2B5CiE,MAAM,GAAGhsH,KAAK,CAACkoH,YAAN,GAAqBloH,KAAK,CAACgoH,WA3BQ;AAAA,MA6B5C;AACA;AACA;AAEAiE,eAAa,GAAG,SAAhBA,aAAgB,CAAS1+H,CAAT,EAAY;AAC1B,QAAIq7H,QAAQ,GAAG5oH,KAAK,CAAC4oH,QAArB;AAAA,QAA+BsD,EAAE,GAAGtD,QAAQ,CAACC,KAA7C;AAAA,QAAoDsD,EAAE,GAAGvD,QAAQ,CAACE,KAAlE;AAAA,QACEsD,EAAE,GAAGxD,QAAQ,CAAC/2I,IADhB;AAAA,QAEEw6I,EAAE,GAAGzD,QAAQ,CAACx0I,KAFhB;AAAA,QAGEpN,CAHF;AAAA,QAGKyM,CAHL;AAAA,QAGQ64I,GAHR;AAAA,QAGaC,OAHb;;AAKA,QAAI3D,QAAQ,CAAC/6I,IAAT,KAAkB,aAAtB,EAAqC;AACnC,WAAK7G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwtF,EAAhB,EAAoBxtF,CAAC,IAAI,CAAzB,EAA4B;AAC1BslJ,WAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;AACAjnE,SAAC,CAAC++H,GAAD,CAAD,GAASJ,EAAT;AACA3+H,SAAC,CAAC++H,GAAG,GAAGV,GAAP,CAAD,GAAeO,EAAf;AACD;;AACD,WAAK14I,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGghF,EAAhB,EAAoBhhF,CAAC,IAAI,CAAzB,EAA4B;AAC1B8Z,SAAC,CAAC9Z,CAAD,CAAD,GAAO24I,EAAP;AACA7+H,SAAC,CAACo+H,GAAG,GAAGn3D,EAAN,GAAW/gF,CAAZ,CAAD,GAAkB44I,EAAlB;AACD;AACF,KAVD,MAUO,IAAIzD,QAAQ,CAAC/6I,IAAT,KAAkB,MAAtB,EAA8B;AACnC,WAAK7G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwtF,EAAhB,EAAoBxtF,CAAC,IAAI,CAAzB,EAA4B;AAC1BslJ,WAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;AACA+3D,eAAO,GAAGD,GAAG,GAAGV,GAAhB;AACAr+H,SAAC,CAAC++H,GAAD,CAAD,GAAS/+H,CAAC,CAAC++H,GAAG,GAAG,CAAP,CAAD,GAAaJ,EAAE,GAAGF,MAAL,GAAclB,YAAY,CAACwB,GAAD,CAAhD;AACA/+H,SAAC,CAACg/H,OAAD,CAAD,GAAah/H,CAAC,CAAC++H,GAAG,GAAGR,GAAP,CAAD,GAAeK,EAAE,GAAGH,MAAL,GAAclB,YAAY,CAACyB,OAAD,CAAtD;AACD;;AACD,WAAK94I,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGghF,EAAhB,EAAoBhhF,CAAC,IAAI,CAAzB,EAA4B;AAC1B8Z,SAAC,CAAC9Z,CAAD,CAAD,GAAO8Z,CAAC,CAACinE,EAAE,GAAG/gF,CAAN,CAAD,GAAY24I,EAAE,GAAGL,MAAL,GAAcjB,YAAY,CAACr3I,CAAD,CAA7C;AACA8Z,SAAC,CAACo+H,GAAG,GAAGn3D,EAAN,GAAW/gF,CAAZ,CAAD,GAAkB8Z,CAAC,CAACs+H,GAAG,GAAGr3D,EAAN,GAAW/gF,CAAZ,CAAD,GAAkB44I,EAAE,GAAGN,MAAL,GAAcjB,YAAY,CAACa,GAAG,GAAGn3D,EAAN,GAAW/gF,CAAZ,CAA9D;AACD;AACF;AACF,GA7D2C;AAAA,MA+D5C+4I,UAAU,GAAG,SAAbA,UAAa,CAASj/H,CAAT,EAAY;AACvB,QACEjU,QAAQ,GAAG0mB,KAAK,CAAC1mB,QADnB;AAAA,QAEEm6E,EAAE,GAAG,MAAMn6E,QAAN,GAAiByyI,MAFxB;AAAA,QAGEr4D,EAAE,GAAG,MAAMp6E,QAAN,GAAiB0yI,MAHxB;AAAA,QAIEhlJ,CAJF;AAAA,QAIKyM,CAJL;AAAA,QAIQ64I,GAJR;AAAA,QAIaG,IAJb;AAAA,QAImBC,YAJnB;AAAA,QAIiCC,aAJjC;AAAA,QAIgDC,WAJhD;AAAA,QAI6DC,YAJ7D;;AAMA,SAAK7lJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,WAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,YAAI,GAAGH,GAAG,GAAG74I,CAAb;AACAk5I,qBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,oBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,oBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,mBAAW,GAAGH,IAAI,GAAG,CAArB;;AACA,YAAIlB,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBhB,YAAE,CAACgB,IAAD,CAAF,GAAWl/H,CAAC,CAACk/H,IAAD,CAAD,GAAUh5D,EAAE,IAAIpe,CAAC,CAACq3E,YAAD,CAAD,GAAkBn/H,CAAC,CAACm/H,YAAD,CAAnB,GAAoCr3E,CAAC,CAACs3E,aAAD,CAAD,GAAmBp/H,CAAC,CAACo/H,aAAD,CAA5D,CAAZ,GAA2Fj5D,EAAE,IAAIz+C,CAAC,CAAC23G,WAAD,CAAD,GAAiBr/H,CAAC,CAACq/H,WAAD,CAAlB,GAAkC33G,CAAC,CAAC43G,YAAD,CAAD,GAAkBt/H,CAAC,CAACs/H,YAAD,CAAzD,CAAxG;AACD;AACF;AACF;;AACDZ,iBAAa,CAACR,EAAD,CAAb;;AAEA,SAAKzkJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,WAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,YAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,YAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBE,uBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,sBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,sBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,qBAAW,GAAGH,IAAI,GAAG,CAArB;AAEAl/H,WAAC,CAACk/H,IAAD,CAAD,GAAU,OAAOl/H,CAAC,CAACk/H,IAAD,CAAD,GAAUhB,EAAE,CAACgB,IAAD,CAAnB,IAA6B,MAAMh5D,EAAN,GAAWpe,CAAC,CAACo3E,IAAD,CAAZ,IAAsBhB,EAAE,CAACiB,YAAD,CAAF,GAAmBjB,EAAE,CAACkB,aAAD,CAA3C,CAA7B,GAA2F,MAAMj5D,EAAN,GAAWz+C,CAAC,CAACw3G,IAAD,CAAZ,IAAsBhB,EAAE,CAACmB,WAAD,CAAF,GAAkBnB,EAAE,CAACoB,YAAD,CAA1C,CAArG;AACD;AACF;AACF;;AACDZ,iBAAa,CAAC1+H,CAAD,CAAb;AACD,GApG2C;;AAsG9C,SAAO;AACLu/H,SAAK,EAAE,eAAS1E,UAAT,EAAqB76H,CAArB,EAAwBw/H,CAAxB,EAA2B;AAChC,UACEzzI,QAAQ,GAAG0mB,KAAK,CAAC1mB,QADnB;AAAA,UAEE0zI,EAAE,GAAG,OAAOjB,MAAM,GAAGA,MAAhB,CAFP;AAAA,UAGEkB,EAAE,GAAG,OAAOjB,MAAM,GAAGA,MAAhB,CAHP;AAAA,UAIEkB,WAAW,GAAG,MAAM5zI,QAJtB;AAAA,UAKE89E,GALF;AAAA,UAKO+1D,GALP;AAAA,UAKYC,IALZ;AAAA,UAKkBC,IALlB;AAAA,UAKwBC,IALxB;AAAA,UAK8BC,IAL9B;AAAA,UAME55I,CANF;AAAA,UAMK3M,CANL;AAAA,UAMQyM,CANR;AAAA,UAMW64I,GANX;AAAA,UAMgBG,IANhB;AAAA,UAMsBC,YANtB;AAAA,UAMoCC,aANpC;AAAA,UAMmDC,WANnD;AAAA,UAMgEC,YANhE;AAQAvnJ,+BAAM,CAACqC,IAAP,CAAY4lB,CAAZ,EAAek+H,EAAf;;AAEA,WAAK93I,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGk3I,eAAhB,EAAiCl3I,CAAC,IAAI,CAAtC,EAAyC;AACvC,aAAK3M,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,aAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,eAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,gBAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,gBAAIuB,KAAK,CAACq2I,EAAE,CAACoB,IAAD,CAAH,CAAT,EAAqB;AACnBE,2BAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,0BAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,0BAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,yBAAW,GAAGH,IAAI,GAAG,CAArB;AAEAU,iBAAG,GAAGnC,QAAQ,CAACyB,IAAD,CAAR,GAAiBzC,OAAO,CAACyC,IAAD,CAAxB,GAAiCS,WAAvC;AACA91D,iBAAG,GAAG0zD,YAAY,CAAC2B,IAAD,CAAlB;AACAW,kBAAI,GAAGJ,EAAE,IAAI51D,GAAG,GAAG0zD,YAAY,CAAC6B,aAAD,CAAtB,CAAT;AACAU,kBAAI,GAAGL,EAAE,IAAI51D,GAAG,GAAG0zD,YAAY,CAAC4B,YAAD,CAAtB,CAAT;AACAY,kBAAI,GAAGL,EAAE,IAAI71D,GAAG,GAAG0zD,YAAY,CAAC+B,YAAD,CAAtB,CAAT;AACAU,kBAAI,GAAGN,EAAE,IAAI71D,GAAG,GAAG0zD,YAAY,CAAC8B,WAAD,CAAtB,CAAT;AACAr/H,eAAC,CAACk/H,IAAD,CAAD,GAAU,CAAChB,EAAE,CAACgB,IAAD,CAAF,GAAWU,GAAX,GAAiBJ,CAAC,CAACN,IAAD,CAAlB,GAA2BW,IAAI,GAAG7/H,CAAC,CAACo/H,aAAD,CAAnC,GAAqDU,IAAI,GAAG9/H,CAAC,CAACm/H,YAAD,CAA7D,GAA8EY,IAAI,GAAG//H,CAAC,CAACs/H,YAAD,CAAtF,GAAuGU,IAAI,GAAGhgI,CAAC,CAACq/H,WAAD,CAAhH,KAAkIO,GAAG,GAAGC,IAAN,GAAaC,IAAb,GAAoBC,IAApB,GAA2BC,IAA7J,CAAV;AACD,aAbD,MAaO;AACLhgI,eAAC,CAACk/H,IAAD,CAAD,GAAUpB,EAAE,CAACoB,IAAD,CAAZ;AACD;AACF;AACF;;AACDR,qBAAa,CAAC1+H,CAAD,CAAb;AACD;;AACD,UAAI66H,UAAJ,EAAgB;AACd;AACAoE,kBAAU,CAACj/H,CAAD,CAAV;AACD;AACF;AAzCI,GAAP;AA2CD,CAjJM,C;;ACJP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIigI,UAAJ;AAEe;AACbC,iBAAe,EAAE,2BAAW;AAC1B,QAAI,CAACD,UAAL,EAAS;AACP,UAAIv+F,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAb;;AACA,UAAI;AACFq+F,kBAAE,GAAGv+F,MAAM,CAACI,UAAP,CAAkB,OAAlB,KAA8BJ,MAAM,CAACI,UAAP,CAAkB,oBAAlB,CAAnC;AACD,OAFD,CAEE,OAAOxpD,CAAP,EAAU,CAAE;;AACd,UAAI,CAAC2nJ,UAAL,EAAS;AACP,cAAM,IAAI3mJ,KAAJ,CAAU,0BAAV,CAAN;AACD;AACF;;AACD,WAAO2mJ,UAAP;AACD,GAZY;;AAcb,MAAIxhJ,KAAJ,GAAY;AACV,QAAI,CAACwhJ,UAAL,EAAS,OAAO,mBAAP;AACT,QAAIxhJ,KAAK,GAAGwhJ,UAAE,CAACE,QAAH,EAAZ;AACA,WAAO1hJ,KAAK,KAAKwhJ,UAAE,CAACG,QAAb,GAAwBznJ,SAAxB,GAAoC8F,KAA3C;AACD;;AAlBY,CAAf,E;;ACVE;AACF;AACA;;AAEA,IACA;AAGE;AACAwhJ,SALF;AAAA,IAOE;AACAI,QAAQ,GAAG,SAAXA,QAAW,CAASC,KAAT,EAAgB/rI,IAAhB,EAAsBiZ,QAAtB,EAAgC;AACzC,MAAIhwB,MAAJ;;AACA,SAAO,CAACA,MAAM,GAAG8iJ,KAAK,CAACnqB,IAAN,CAAW5hH,IAAX,CAAV,MAAgC,IAAvC,EAA6C;AAC3CiZ,YAAQ,CAAChwB,MAAD,CAAR;AACD;AACF,CAbH;AAAA,IAcElB,cAAO,GAAG,SAAVA,OAAU,CAAS4oC,GAAT,EAAc;AACtB,MAAIq7G,GAAG,GAAGvmJ,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+B+qC,GAA/B,CAAV;AACA,SAAOq7G,GAAG,KAAK,gBAAR,IAA4BA,GAAG,KAAK,uBAA3C;AACD,CAjBH;AAAA,IAkBEtnB,QAAQ,GAAG,SAAXA,QAAW,CAAS/zF,GAAT,EAAc;AACvB,MAAIq7G,GAAG,GAAGvmJ,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+B+qC,GAA/B,CAAV;AACA,SAAOq7G,GAAG,KAAK,iBAAR,IAA6BA,GAAG,KAAK,kBAA5C;AACD,CArBH;AAAA,IAsBE;AACAC,aAvBF,C,CAyBA;;;AACAA,aAAM,GAAG,gBAASC,YAAT,EAAuBC,cAAvB,EAAuC;AAC9C,MACA;AACEC,cAAY,GACZ;;;;;OAHF;AAAA,MASEC,cAAc,GACd;;OAVF;AAAA,MAcE;AACA;AACA;AACA;AACAC,KAAG,GAAG,SAANA,GAAM,CAASC,MAAT,EAAiBlnJ,MAAjB,EAAyB;AAC7B,QAAImnJ,QAAQ,GAAG,EAAf;AAAA,QACEp5I,KADF;AAEAA,SAAK,GAAG,2CAA2CwuH,IAA3C,CAAgDv8H,MAAhD,CAAR;AACAA,UAAM,GAAG+N,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAL,GAAWm5I,MAAX,GAAoBlnJ,MAAM,CAAC0xD,MAAP,CAAc3jD,KAAK,CAAC,CAAD,CAAL,CAASjO,MAAvB,CAAvB,GAAwDonJ,MAAM,GAAGlnJ,MAA/E;AACAymJ,YAAQ,CAAC,aAAD,EAAgBS,MAAhB,EAAwB,UAAStjJ,MAAT,EAAiB;AAC/C,UAAIujJ,QAAQ,CAACvjJ,MAAD,CAAR,KAAqB7E,SAAzB,EAAoC;AAClCiB,cAAM,GAAGA,MAAM,CAAC2L,OAAP,CAAe,IAAI6E,MAAJ,CAAW,QAAQ5M,MAAR,GAAiB,KAA5B,EAAmC,GAAnC,CAAf,EAAwD,MAAMA,MAA9D,CAAT;AACAujJ,gBAAQ,CAACvjJ,MAAD,CAAR,GAAmB,IAAnB;AACD;AACF,KALO,CAAR;AAMA,WAAO5D,MAAP;AACD,GA9BH;AAAA,MAgCEonJ,SAAS,GAAG,EAhCd;;AAkCAf,WAAE,GAAG9uH,WAAO,CAAC+uH,eAAR,EAAL;AAEAO,cAAY,GAAGI,GAAG,CAACF,YAAD,EAAeF,YAAf,CAAlB;AACAC,gBAAc,GAAGG,GAAG,CAACD,cAAD,EAAiBF,cAAjB,CAApB,CAtC8C,CAwC9C;;AACA,WAASO,aAAT,CAAuB3gJ,IAAvB,EAA6B1G,MAA7B,EAAqC;AACnC,QAAIsnJ,MAAM,GAAGjB,SAAE,CAACkB,YAAH,CAAgB7gJ,IAAhB,CAAb;AACA2/I,aAAE,CAACmB,YAAH,CAAgBF,MAAhB,EAAwBtnJ,MAAxB;AACAqmJ,aAAE,CAACoB,aAAH,CAAiBH,MAAjB;;AACA,QAAI,CAACjB,SAAE,CAACqB,kBAAH,CAAsBJ,MAAtB,EAA8BjB,SAAE,CAACsB,cAAjC,CAAL,EAAuD;AACrD,YAAM,IAAIjoJ,KAAJ,CAAU,6BAA6B2mJ,SAAE,CAACuB,gBAAH,CAAoBN,MAApB,CAA7B,GACd,aADc,GACEtnJ,MADZ,CAAN;AAED;;AACD,WAAOsnJ,MAAP;AACD;;AAED,OAAKO,OAAL,GAAexB,SAAE,CAACyB,aAAH,EAAf;AACAzB,WAAE,CAAC0B,YAAH,CAAgB,KAAKF,OAArB,EAA8BR,aAAa,CAAChB,SAAE,CAAC2B,aAAJ,EAAmBnB,YAAnB,CAA3C;AACAR,WAAE,CAAC0B,YAAH,CAAgB,KAAKF,OAArB,EAA8BR,aAAa,CAAChB,SAAE,CAAC4B,eAAJ,EAAqBnB,cAArB,CAA3C;AACAT,WAAE,CAAC6B,WAAH,CAAe,KAAKL,OAApB;;AACA,MAAI,CAACxB,SAAE,CAAC8B,mBAAH,CAAuB,KAAKN,OAA5B,EAAqCxB,SAAE,CAAC+B,WAAxC,CAAL,EAA2D;AACzD,UAAM,IAAI1oJ,KAAJ,CAAU,0BAA0B2mJ,SAAE,CAACgC,iBAAH,CAAqB,KAAKR,OAA1B,CAA1B,GACd,aADc,GACEhB,YADF,GACiB,MADjB,GAC0BC,cADpC,CAAN;AAED;;AACD,OAAKwB,UAAL,GAAkB,EAAlB;AACA,OAAKC,gBAAL,GAAwB,EAAxB,CA7D8C,CA+D9C;AACA;;AACA9B,UAAQ,CAAC,+CAAD,EAAkDI,YAAY,GAAGC,cAAjE,EAAiF,UAAS0B,MAAT,EAAiB;AACxGpB,aAAS,CAACoB,MAAM,CAAC,CAAD,CAAP,CAAT,GAAuB,CAAvB;AACD,GAFO,CAAR;AAGA,OAAKpB,SAAL,GAAiBA,SAAjB;AACD,CArED,C,CAuEA;AACA;;;AACAR,aAAM,CAACvmJ,SAAP,CAAiBooJ,QAAjB,GAA4B,UAASA,QAAT,EAAmB;AAC7C,MAAIhiJ,IAAJ,EAAU4vD,QAAV,EAAoBz2D,KAApB;AAEAymJ,WAAE,CAACqC,UAAH,CAAc,KAAKb,OAAnB;;AAEA,OAAKphJ,IAAL,IAAagiJ,QAAb,EAAuB;AACrB,QAAIA,QAAQ,CAACrlJ,cAAT,CAAwBqD,IAAxB,CAAJ,EAAmC;AACjC,UAAI,KAAK8hJ,gBAAL,CAAsB9hJ,IAAtB,MAAgC1H,SAApC,EAA+C;AAC7C,aAAKwpJ,gBAAL,CAAsB9hJ,IAAtB,IAA8B4/I,SAAE,CAACsC,kBAAH,CAAsB,KAAKd,OAA3B,EAAoCphJ,IAApC,CAA9B;AACD;;AACD4vD,cAAQ,GAAG,KAAKkyF,gBAAL,CAAsB9hJ,IAAtB,CAAX;;AACA,UAAI4vD,QAAQ,KAAK,IAAjB,EAAuB;AACrBzxD,yCAAO,CAACwrC,IAAR,CAAa,kBAAkB3pC,IAAlB,GAAyB,qDAAtC;AACA;AACD;;AACD7G,WAAK,GAAG6oJ,QAAQ,CAAChiJ,IAAD,CAAhB;;AACA,UAAI/D,cAAO,CAAC9C,KAAD,CAAX,EAAoB;AAClB,gBAAQA,KAAK,CAACE,MAAd;AACE,eAAK,CAAL;AACEumJ,qBAAE,CAACuC,UAAH,CAAcvyF,QAAd,EAAwB,IAAIn3D,YAAJ,CAAiBU,KAAjB,CAAxB;AACA;;AACF,eAAK,CAAL;AACEymJ,qBAAE,CAACwC,UAAH,CAAcxyF,QAAd,EAAwB,IAAIn3D,YAAJ,CAAiBU,KAAjB,CAAxB;AACA;;AACF,eAAK,CAAL;AACEymJ,qBAAE,CAACyC,UAAH,CAAczyF,QAAd,EAAwB,IAAIn3D,YAAJ,CAAiBU,KAAjB,CAAxB;AACA;;AACF,eAAK,CAAL;AACEymJ,qBAAE,CAAC0C,UAAH,CAAc1yF,QAAd,EAAwB,IAAIn3D,YAAJ,CAAiBU,KAAjB,CAAxB;AACA;AACA;AACA;;AACF,eAAK,CAAL;AACEymJ,qBAAE,CAAC2C,gBAAH,CAAoB3yF,QAApB,EAA8B,KAA9B,EAAqC,IAAIn3D,YAAJ,CAAiB,CACpDU,KAAK,CAAC,CAAD,CAD+C,EAC1CA,KAAK,CAAC,CAAD,CADqC,EAChCA,KAAK,CAAC,CAAD,CAD2B,EAEpDA,KAAK,CAAC,CAAD,CAF+C,EAE1CA,KAAK,CAAC,CAAD,CAFqC,EAEhCA,KAAK,CAAC,CAAD,CAF2B,EAGpDA,KAAK,CAAC,CAAD,CAH+C,EAG1CA,KAAK,CAAC,CAAD,CAHqC,EAGhCA,KAAK,CAAC,CAAD,CAH2B,CAAjB,CAArC;AAKA;;AACF,eAAK,EAAL;AACEymJ,qBAAE,CAAC4C,gBAAH,CAAoB5yF,QAApB,EAA8B,KAA9B,EAAqC,IAAIn3D,YAAJ,CAAiB,CACpDU,KAAK,CAAC,CAAD,CAD+C,EAC1CA,KAAK,CAAC,CAAD,CADqC,EAChCA,KAAK,CAAC,CAAD,CAD2B,EACtBA,KAAK,CAAC,EAAD,CADiB,EAEpDA,KAAK,CAAC,CAAD,CAF+C,EAE1CA,KAAK,CAAC,CAAD,CAFqC,EAEhCA,KAAK,CAAC,CAAD,CAF2B,EAEtBA,KAAK,CAAC,EAAD,CAFiB,EAGpDA,KAAK,CAAC,CAAD,CAH+C,EAG1CA,KAAK,CAAC,CAAD,CAHqC,EAGhCA,KAAK,CAAC,EAAD,CAH2B,EAGrBA,KAAK,CAAC,EAAD,CAHgB,EAIpDA,KAAK,CAAC,CAAD,CAJ+C,EAI1CA,KAAK,CAAC,CAAD,CAJqC,EAIhCA,KAAK,CAAC,EAAD,CAJ2B,EAIrBA,KAAK,CAAC,EAAD,CAJgB,CAAjB,CAArC;AAMA;;AACF;AACE,kBAAM,IAAIF,KAAJ,CAAU,8CAA8C+G,IAA9C,GAAqD,cAArD,GAAsE7G,KAAK,CAACE,MAAtF,CAAN;AA/BJ;AAiCD,OAlCD,MAkCO,IAAIu/H,QAAQ,CAACz/H,KAAD,CAAZ,EAAqB;AAC1B,SAAC,KAAKwnJ,SAAL,CAAe3gJ,IAAf,IAAuB4/I,SAAE,CAAC6C,SAA1B,GAAsC7C,SAAE,CAAC8C,SAA1C,EAAqD5oJ,IAArD,CAA0D8lJ,SAA1D,EAA8DhwF,QAA9D,EAAwEz2D,KAAxE;AACD,OAFM,MAEA;AACL,cAAM,IAAIF,KAAJ,CAAU,uCAAuC+G,IAAvC,GAA8C,qBAA9C,GAAsE7G,KAAhF,CAAN;AACD;AACF;AACF;;AAED,SAAO,IAAP;AACD,CA3DD,C,CA6DA;AACA;AACA;AACA;;;AACAgnJ,aAAM,CAACvmJ,SAAP,CAAiB+oJ,IAAjB,GAAwB,UAASC,IAAT,EAAe9uF,IAAf,EAAqB;AAC3C8rF,WAAE,CAACqC,UAAH,CAAc,KAAKb,OAAnB;AAEA,OAAKyB,WAAL,CAAiBD,IAAI,CAACE,aAAtB,EACEF,IAAI,CAACG,YAAL,CAAkBjvF,IAAI,KAAK8rF,SAAE,CAACoD,KAAZ,GAAoB,OAApB,GAA8B,WAAhD,CADF,EAEE3lJ,SAAS,CAAChE,MAAV,GAAmB,CAAnB,GAAuBumJ,SAAE,CAACqD,SAA1B,GAAsCnvF,IAFxC;AAGD,CAND,C,CAQA;AACA;AACA;AACA;AACA;AACA;;;AACAqsF,aAAM,CAACvmJ,SAAP,CAAiBipJ,WAAjB,GAA+B,UAASC,aAAT,EAAwBI,WAAxB,EAAqCpvF,IAArC,EAA2C;AACxE;AACA,MAAIz6D,MAAM,GAAG,CAAb;AAAA,MACE8pJ,SADF;AAAA,MACa3pJ,MADb;AAAA,MACqBo2D,QADrB;;AAGA,OAAKuzF,SAAL,IAAkBL,aAAlB,EAAiC;AAC/B,QAAIA,aAAa,CAACnmJ,cAAd,CAA6BwmJ,SAA7B,CAAJ,EAA6C;AAC3C3pJ,YAAM,GAAGspJ,aAAa,CAACK,SAAD,CAAtB;;AACA,UAAI,KAAKtB,UAAL,CAAgBsB,SAAhB,MAA+B7qJ,SAAnC,EAA8C;AAC5C,aAAKupJ,UAAL,CAAgBsB,SAAhB,IAA6BvD,SAAE,CAACwD,iBAAH,CAAqB,KAAKhC,OAA1B,EAAmC+B,SAAS,CAACj+I,OAAV,CAAkB,MAAlB,EAA0B,MAA1B,CAAnC,CAA7B;AACD;;AACD0qD,cAAQ,GAAG,KAAKiyF,UAAL,CAAgBsB,SAAhB,CAAX;;AACA,UAAIvzF,QAAQ,KAAK,CAAC,CAAd,IAAmB,CAACp2D,MAAM,CAACA,MAA/B,EAAuC;AACrC;AACD;;AACDomJ,eAAE,CAACyD,UAAH,CAAczD,SAAE,CAAC0D,YAAjB,EAA+B9pJ,MAAM,CAACA,MAAtC;AACAomJ,eAAE,CAAC2D,uBAAH,CAA2B3zF,QAA3B;AACAgwF,eAAE,CAAC4D,mBAAH,CAAuB5zF,QAAvB,EAAiCp2D,MAAM,CAACA,MAAP,CAAcilD,OAA/C,EAAwDmhG,SAAE,CAAC6D,KAA3D,EAAkE,KAAlE,EAAyE,CAAzE,EAA4E,CAA5E;AACApqJ,YAAM,GAAGG,MAAM,CAACA,MAAP,CAAcH,MAAd,GAAuBG,MAAM,CAACA,MAAP,CAAcilD,OAA9C;AACD;AACF,GApBuE,CAsBxE;;;AACA,OAAK0kG,SAAL,IAAkB,KAAKtB,UAAvB,EAAmC;AACjC,QAAI,KAAKA,UAAL,CAAgBllJ,cAAhB,CAA+BwmJ,SAA/B,CAAJ,EAA+C;AAC7C,UAAIL,aAAa,CAACK,SAAD,CAAb,KAA6B7qJ,SAAjC,EAA4C;AAC1CsnJ,iBAAE,CAAC8D,wBAAH,CAA4B,KAAK7B,UAAL,CAAgBsB,SAAhB,CAA5B;AACD;AACF;AACF,GA7BuE,CA+BxE;;;AACA,MAAI9pJ,MAAM,KAAK,CAAC6pJ,WAAD,IAAgBA,WAAW,CAAC1pJ,MAAjC,CAAV,EAAoD;AAClD,QAAI0pJ,WAAJ,EAAiB;AACftD,eAAE,CAACyD,UAAH,CAAczD,SAAE,CAAC+D,oBAAjB,EAAuCT,WAAW,CAAC1pJ,MAAnD;AACAomJ,eAAE,CAACgE,YAAH,CAAgB9vF,IAAhB,EAAsBovF,WAAW,CAAC1pJ,MAAZ,CAAmBH,MAAzC,EAAiDumJ,SAAE,CAACiE,cAApD,EAAoE,CAApE;AACD,KAHD,MAGO;AACLjE,eAAE,CAACkE,UAAH,CAAchwF,IAAd,EAAoB,CAApB,EAAuBz6D,MAAvB;AACD;AACF;AACF,CAxCD,C,CA0CA;;;AACe8mJ,wDAAf,E;;ACjOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA,IACA;AAGE;AACAP,UALF,EAOE;AACAj6B,eARF;;AAUAA,eAAO,GAAG,iBAASnhH,KAAT,EAAgBC,MAAhB,EAAwBkD,OAAxB,EAAiC;AACzCi4I,YAAE,GAAG9uH,WAAO,CAAC+uH,eAAR,EAAL;AACAl4I,SAAO,GAAGA,OAAO,IAAI,EAArB,CAFyC,CAGzC;;AACA,OAAK5C,EAAL,GAAU66I,UAAE,CAACmE,aAAH,EAAV;AACA,OAAKv/I,KAAL,GAAaA,KAAb;AACA,OAAKC,MAAL,GAAcA,MAAd;AACA,OAAKgX,MAAL,GAAc9T,OAAO,CAAC8T,MAAR,IAAkBmkI,UAAE,CAACoE,IAAnC;AACA,OAAK/jJ,IAAL,GAAY0H,OAAO,CAAC1H,IAAR,IAAgB2/I,UAAE,CAACqE,aAA/B,CARyC,CASzC;;AACA,OAAKC,QAAL,GAAgB,IAAhB,CAVyC,CAWzC;;AACA,OAAKC,GAAL,GAAW,IAAX,CAZyC,CAczC;;AACAvE,YAAE,CAACwE,WAAH,CAAexE,UAAE,CAACyE,UAAlB,EAA8B,KAAKt/I,EAAnC;AACA66I,YAAE,CAAC0E,aAAH,CAAiB1E,UAAE,CAACyE,UAApB,EAAgCzE,UAAE,CAAC2E,kBAAnC,EAAuD58I,OAAO,CAAC68I,UAAR,IAAsB78I,OAAO,CAACi6B,MAA9B,IAAwCg+G,UAAE,CAAC6E,MAAlG;AACA7E,YAAE,CAAC0E,aAAH,CAAiB1E,UAAE,CAACyE,UAApB,EAAgCzE,UAAE,CAAC8E,kBAAnC,EAAuD/8I,OAAO,CAACg9I,UAAR,IAAsBh9I,OAAO,CAACi6B,MAA9B,IAAwCg+G,UAAE,CAAC6E,MAAlG;AACA7E,YAAE,CAAC0E,aAAH,CAAiB1E,UAAE,CAACyE,UAApB,EAAgCzE,UAAE,CAACgF,cAAnC,EAAmDj9I,OAAO,CAACk9I,IAAR,IAAgBl9I,OAAO,CAACm9I,MAAxB,IAAkClF,UAAE,CAACmF,aAAxF;AACAnF,YAAE,CAAC0E,aAAH,CAAiB1E,UAAE,CAACyE,UAApB,EAAgCzE,UAAE,CAACoF,cAAnC,EAAmDr9I,OAAO,CAACk9I,IAAR,IAAgBl9I,OAAO,CAACs9I,MAAxB,IAAkCrF,UAAE,CAACmF,aAAxF;AACAnF,YAAE,CAACsF,UAAH,CAActF,UAAE,CAACyE,UAAjB,EAA6B,CAA7B,EAAgC,KAAK5oI,MAArC,EAA6CjX,KAA7C,EAAoDC,MAApD,EAA4D,CAA5D,EAA+D,KAAKgX,MAApE,EAA4E,KAAKxb,IAAjF,EAAuF,IAAvF;AACD,CArBD,C,CAuBA;AACA;;;AACA0lH,eAAO,CAAC/rH,SAAR,CAAkBurJ,iBAAlB,GAAsC,YAAW;AAC/C,MAAI,KAAKhB,GAAL,KAAa,IAAjB,EAAuB;AACrB;AACA,SAAKA,GAAL,GAAWvE,UAAE,CAACwF,iBAAH,EAAX;AACAxF,cAAE,CAACyF,eAAH,CAAmBzF,UAAE,CAAC0F,WAAtB,EAAmC,KAAKnB,GAAxC;AACAvE,cAAE,CAAC2F,oBAAH,CAAwB3F,UAAE,CAAC0F,WAA3B,EAAwC1F,UAAE,CAAC4F,iBAA3C,EAA8D5F,UAAE,CAACyE,UAAjE,EAA6E,KAAKt/I,EAAlF,EAAsF,CAAtF;AACA66I,cAAE,CAACnmC,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,KAAKj1G,KAAvB,EAA8B,KAAKC,MAAnC;AACD,GAND,MAMO;AACLm7I,cAAE,CAACyF,eAAH,CAAmBzF,UAAE,CAAC0F,WAAtB,EAAmC,KAAKnB,GAAxC;AACAvE,cAAE,CAACnmC,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,KAAKj1G,KAAvB,EAA8B,KAAKC,MAAnC;AACD;AACF,CAXD,C,CAaA;;;AACAkhH,eAAO,CAAC/rH,SAAR,CAAkBoiC,IAAlB,GAAyB,UAASr8B,IAAT,EAAe;AACtC,OAAKukJ,QAAL,GAAgBvkJ,IAAI,IAAI,CAAxB;AACAigJ,YAAE,CAAC6F,aAAH,CAAiB7F,UAAE,CAAC8F,QAAH,GAAc,KAAKxB,QAApC;AACAtE,YAAE,CAACwE,WAAH,CAAexE,UAAE,CAACyE,UAAlB,EAA8B,KAAKt/I,EAAnC;AACD,CAJD,C,CAMA;;;AACA4gH,eAAO,CAAC/rH,SAAR,CAAkB+rJ,MAAlB,GAA2B,UAAShmJ,IAAT,EAAe;AACxC,MAAI,KAAKukJ,QAAL,KAAkB,IAAtB,EAA4B;AAC1B;AACD;;AACDtE,YAAE,CAAC6F,aAAH,CAAiB7F,UAAE,CAAC8F,QAAH,GAAc,KAAKxB,QAApC;AACAtE,YAAE,CAACwE,WAAH,CAAexE,UAAE,CAACyE,UAAlB,EAA8B,IAA9B;AACA,OAAKH,QAAL,GAAgB,IAAhB;AACD,CAPD,C,CASA;AACA;;;AACAv+B,eAAO,CAAC/rH,SAAR,CAAkBgsJ,MAAlB,GAA2B,UAASz4H,QAAT,EAAmB;AAC5C,MAAI,KAAKg3H,GAAL,KAAa,IAAjB,EAAuB;AACrB,UAAM,IAAIlrJ,KAAJ,CAAU,mDAAV,CAAN;AACD;;AACD2mJ,YAAE,CAACyF,eAAH,CAAmBzF,UAAE,CAAC0F,WAAtB,EAAmC,KAAKnB,GAAxC;AACAvE,YAAE,CAACnmC,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,KAAKj1G,KAAvB,EAA8B,KAAKC,MAAnC;AAEA0oB,UAAQ;AAERyyH,YAAE,CAACyF,eAAH,CAAmBzF,UAAE,CAAC0F,WAAtB,EAAmC,IAAnC;AACD,CAVD,C,CAYA;AACA;AACA;AACA;;;AACA3/B,eAAO,CAAC/rH,SAAR,CAAkBisJ,QAAlB,GAA6B,UAASC,KAAT,EAAgB;AAC3C,MAAI99D,IAAJ,CAD2C,CAE3C;;AACAA,MAAI,GAAG89D,KAAK,CAAC/gJ,EAAb;AACA+gJ,OAAK,CAAC/gJ,EAAN,GAAW,KAAKA,EAAhB;AACA,OAAKA,EAAL,GAAUijF,IAAV,CAL2C,CAM3C;;AACAA,MAAI,GAAG89D,KAAK,CAAC5B,QAAb;AACA4B,OAAK,CAAC5B,QAAN,GAAiB,KAAKA,QAAtB;AACA,OAAKA,QAAL,GAAgBl8D,IAAhB,CAT2C,CAU3C;;AACAA,MAAI,GAAG89D,KAAK,CAAC3B,GAAb;AACA2B,OAAK,CAAC3B,GAAN,GAAY,KAAKA,GAAjB;AACA,OAAKA,GAAL,GAAWn8D,IAAX;AACD,CAdD,C,CAgBA;;;AACe29B,+DAAf,E;;AC9HC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA,IACA;AAGE;AACAi6B,OALF,EAOE;AACAmG,WARF,EASE;AACAC,SAVF,C,CAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAD,WAAM,GAAG,gBAAS92H,MAAT,EAAiBhvB,IAAjB,EAAuB;AAC9B2/I,SAAE,GAAG9uH,WAAO,CAAC+uH,eAAR,EAAL;AACA,OAAKrmJ,MAAL,GAAc,IAAd;AACA,OAAKy1B,MAAL,GAAcA,MAAd;AACA,OAAKhvB,IAAL,GAAYA,IAAZ;AACA,OAAK8e,IAAL,GAAY,EAAZ;AACD,CAND,C,CAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAgnI,WAAM,CAACnsJ,SAAP,CAAiBqsJ,OAAjB,GAA2B,UAAShmJ,IAAT,EAAe;AACxC,MAAI8e,IAAI,GAAG,EAAX;AAAA,MACE3lB,CADF;AAAA,MACK8sJ,KADL;AAAA,MACYznG,OADZ;;AAEA,OAAKrlD,CAAC,GAAG,CAAJ,EAAO8sJ,KAAK,GAAG,KAApB,EAA2B9sJ,CAAC,GAAG,KAAK2lB,IAAL,CAAU1lB,MAAzC,EAAiDD,CAAC,IAAI8sJ,KAAtD,EAA6D;AAC3DnnI,QAAI,GAAGvmB,KAAK,CAACoB,SAAN,CAAgBw1B,MAAhB,CAAuBz0B,KAAvB,CAA6BokB,IAA7B,EAAmC,KAAKA,IAAL,CAAU3kB,KAAV,CAAgBhB,CAAhB,EAAmBA,CAAC,GAAG8sJ,KAAvB,CAAnC,CAAP;AACD;;AACDznG,SAAO,GAAG,KAAK1/B,IAAL,CAAU1lB,MAAV,GAAmB0lB,IAAI,CAAC1lB,MAAL,GAAc,KAAK0lB,IAAL,CAAU1lB,MAA3C,GAAoD,CAA9D;;AACA,MAAIolD,OAAO,KAAKjkD,IAAI,CAAC4kB,KAAL,CAAWq/B,OAAX,CAAhB,EAAqC;AACnC,UAAM,IAAIxlD,KAAJ,CAAU,mEAAmEwlD,OAA7E,CAAN;AACD;;AACD,OAAKjlD,MAAL,GAAc,KAAKA,MAAL,IAAeomJ,OAAE,CAACuG,YAAH,EAA7B;AACA,OAAK3sJ,MAAL,CAAYH,MAAZ,GAAqB0lB,IAAI,CAAC1lB,MAA1B;AACA,OAAKG,MAAL,CAAYilD,OAAZ,GAAsBA,OAAtB;AACAmhG,SAAE,CAACyD,UAAH,CAAc,KAAKp0H,MAAnB,EAA2B,KAAKz1B,MAAhC;AACAomJ,SAAE,CAACwG,UAAH,CAAc,KAAKn3H,MAAnB,EAA2B,IAAI,KAAKhvB,IAAT,CAAc8e,IAAd,CAA3B,EAAgD9e,IAAI,IAAI2/I,OAAE,CAACyG,WAA3D;AACD,CAfD;;AAiBAL,SAAI,GAAG,cAASr+I,OAAT,EAAkB;AACvBi4I,SAAE,GAAG9uH,WAAO,CAAC+uH,eAAR,EAAL;AACAl4I,SAAO,GAAGA,OAAO,IAAI,EAArB;AACA,OAAKm7I,aAAL,GAAqB,EAArB;AACA,OAAKC,YAAL,GAAoB,EAApB;AACA,OAAKuD,eAAL,CAAqB,UAArB,EAAiC,WAAjC;;AACA,MAAI3+I,OAAO,CAACy1G,MAAZ,EAAoB;AAClB,SAAKkpC,eAAL,CAAqB,QAArB,EAA+B,aAA/B;AACD;;AACD,MAAI3+I,OAAO,CAAC4+I,OAAZ,EAAqB;AACnB,SAAKD,eAAL,CAAqB,SAArB,EAAgC,WAAhC;AACD;;AACD,MAAI3+I,OAAO,CAACs9G,MAAZ,EAAoB;AAClB,SAAKqhC,eAAL,CAAqB,QAArB,EAA+B,UAA/B;AACD;;AACD,MAAI3+I,OAAO,CAAC0X,KAAR,KAAkB/mB,SAAlB,IAA+BqP,OAAO,CAAC6+I,SAA3C,EAAsD;AACpD,SAAKC,cAAL,CAAoB,WAApB;AACD;;AACD,MAAI9+I,OAAO,CAAC0X,KAAZ,EAAmB;AACjB,SAAKonI,cAAL,CAAoB,OAApB;AACD;AACF,CArBD,C,CAuBA;AACA;;;AACAT,SAAI,CAACpsJ,SAAL,CAAe0sJ,eAAf,GAAiC,UAAStmJ,IAAT,EAAemjJ,SAAf,EAA0B;AACzD,MAAI3pJ,MAAM,GAAG,KAAKspJ,aAAL,CAAmBK,SAAnB,IAAgC,IAAI4C,WAAJ,CAAWnG,OAAE,CAAC0D,YAAd,EAA4B7qJ,YAA5B,CAA7C;AACAe,QAAM,CAACwG,IAAP,GAAcA,IAAd;AACA,OAAKA,IAAL,IAAa,EAAb;AACD,CAJD,C,CAMA;;;AACAgmJ,SAAI,CAACpsJ,SAAL,CAAe6sJ,cAAf,GAAgC,UAASzmJ,IAAT,EAAe;AAC7C,MAAIxG,MAAM,GAAG,KAAKupJ,YAAL,CAAkB/iJ,IAAlB,IAA0B,IAAI+lJ,WAAJ,CAAWnG,OAAE,CAAC+D,oBAAd,EAAoC7qJ,WAApC,CAAvC;AACA,OAAKkH,IAAL,IAAa,EAAb;AACD,CAHD,C,CAKA;AACA;AACA;;;AACAgmJ,SAAI,CAACpsJ,SAAL,CAAeqsJ,OAAf,GAAyB,YAAW;AAClC,MAAI9C,SAAJ,EAAenjJ,IAAf,EAAqBxG,MAArB;;AACA,OAAK2pJ,SAAL,IAAkB,KAAKL,aAAvB,EAAsC;AACpC,QAAI,KAAKA,aAAL,CAAmBnmJ,cAAnB,CAAkCwmJ,SAAlC,CAAJ,EAAkD;AAChD3pJ,YAAM,GAAG,KAAKspJ,aAAL,CAAmBK,SAAnB,CAAT;AACA3pJ,YAAM,CAACulB,IAAP,GAAc,KAAKvlB,MAAM,CAACwG,IAAZ,CAAd;AACAxG,YAAM,CAACysJ,OAAP;AACD;AACF;;AAED,OAAKjmJ,IAAL,IAAa,KAAK+iJ,YAAlB,EAAgC;AAC9B,QAAI,KAAKA,YAAL,CAAkBpmJ,cAAlB,CAAiCqD,IAAjC,CAAJ,EAA4C;AAC1CxG,YAAM,GAAG,KAAKupJ,YAAL,CAAkB/iJ,IAAlB,CAAT;AACAxG,YAAM,CAACulB,IAAP,GAAc,KAAK/e,IAAL,CAAd;AACAxG,YAAM,CAACysJ,OAAP;AACD;AACF;AACF,CAjBD,C,CAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAD,SAAI,CAACU,KAAL,GAAa,UAAS/+I,OAAT,EAAkB;AAC7B,MAAIi7I,IAAJ,EAAU+D,OAAV,EAAmBC,OAAnB,EAA4BrsJ,CAA5B,EAA+BuV,CAA/B,EAAkC6P,CAAlC,EAAqC6H,CAArC,EAAwCpuB,CAAxC;AACAuO,SAAO,GAAGA,OAAO,IAAI,EAArB;AACAi7I,MAAI,GAAG,IAAIoD,SAAJ,CAASr+I,OAAT,CAAP;AACAg/I,SAAO,GAAGh/I,OAAO,CAACg/I,OAAR,IAAmBh/I,OAAO,CAACstG,MAA3B,IAAqC,CAA/C;AACA2xC,SAAO,GAAGj/I,OAAO,CAACi/I,OAAR,IAAmBj/I,OAAO,CAACstG,MAA3B,IAAqC,CAA/C;;AAEA,OAAKnlG,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI82I,OAAjB,EAA0B92I,CAAC,IAAI,CAA/B,EAAkC;AAChC6P,KAAC,GAAG7P,CAAC,GAAG82I,OAAR;;AACA,SAAKrsJ,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIosJ,OAAjB,EAA0BpsJ,CAAC,IAAI,CAA/B,EAAkC;AAChCitB,OAAC,GAAGjtB,CAAC,GAAGosJ,OAAR;AACA/D,UAAI,CAAC7G,QAAL,CAAc//I,IAAd,CAAmB,CAAC,IAAIwrB,CAAJ,GAAQ,CAAT,EAAY,IAAI7H,CAAJ,GAAQ,CAApB,EAAuB,CAAvB,CAAnB;;AACA,UAAIijI,IAAI,CAACxlC,MAAT,EAAiB;AACfwlC,YAAI,CAACxlC,MAAL,CAAYphH,IAAZ,CAAiB,CAACwrB,CAAD,EAAI7H,CAAJ,CAAjB;AACD;;AACD,UAAIijI,IAAI,CAAC2D,OAAT,EAAkB;AAChB3D,YAAI,CAAC2D,OAAL,CAAavqJ,IAAb,CAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAlB;AACD;;AACD,UAAIzB,CAAC,GAAGosJ,OAAJ,IAAe72I,CAAC,GAAG82I,OAAvB,EAAgC;AAC9BxtJ,SAAC,GAAGmB,CAAC,GAAGuV,CAAC,IAAI62I,OAAO,GAAG,CAAd,CAAT;AACA/D,YAAI,CAAC4D,SAAL,CAAexqJ,IAAf,CAAoB,CAAC5C,CAAD,EAAIA,CAAC,GAAG,CAAR,EAAWA,CAAC,GAAGutJ,OAAJ,GAAc,CAAzB,CAApB;AACA/D,YAAI,CAAC4D,SAAL,CAAexqJ,IAAf,CAAoB,CAAC5C,CAAC,GAAGutJ,OAAJ,GAAc,CAAf,EAAkBvtJ,CAAC,GAAG,CAAtB,EAAyBA,CAAC,GAAGutJ,OAAJ,GAAc,CAAvC,CAApB;AACD;AACF;AACF;;AAED/D,MAAI,CAACqD,OAAL;AACA,SAAOrD,IAAP;AACD,CA5BD,C,CA8BA;;;AACeoD,kDAAf,E;;AC1KI;AACJ;AACA;AACA;AACA;AACA;;AAEA,IACA;AAME;AACApG,QARF;AAAA,IAUE;AACA;AACA;AACA;AACAzF,gBAdF;AAAA,IAeEC,iBAfF;AAAA,IAiBE;AACAyM,YAlBF;AAAA,IAmBE;AACAC,cApBF;AAAA,IAqBE;AACAC,YAtBF;AAAA,IAuBE;AACAL,WAxBF;AAAA,IA0BE;AACAM,YAAY,GAAG,KA3BjB;AAAA,IA6BE;AACAC,iBAAiB,GAAG,KA9BtB;AAAA,IAgCE;AACA;AACAC,cAlCF;AAAA,IAmCEC,YAnCF;AAAA,IAqCE;AACAC,mBAAmB,GACnB;;;;;MAvCF;AAAA,IA8CEC,sBAAsB,GACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA/CF;AAAA,IAkGEC,oBAAoB,GACpB;;;;;MAnGF;AAAA,IA0GE;AACAC,QAAQ,GAAG,yEA3Gb;AAAA,IA6GE;AACAC,aAAO,GAAG;AACR,kBAAgB;AACdzpJ,YAAQ,EAAE,IADI;AAEd0pJ,aAAS,EAAE;AAFG,GADR;AAKR,uBAAqB;AACnB1pJ,YAAQ,EAAE,IADS;AAEnB0pJ,aAAS,EAAE;AAFQ,GALb;AASR,oCAAkC;AAChC1pJ,YAAQ,EAAE,IADsB;AAEhC0pJ,aAAS,EAAE;AAFqB,GAT1B;AAaR,8BAA4B;AAC1B1pJ,YAAQ,EAAE,KADgB;AAE1B0pJ,aAAS,EAAE;AAFe;AAbpB,CA9GZ;AAAA,IAiIE;AACA;AACA;AACAC,eAAS,GAAG,SAAZA,SAAY,GAAW;AACrB;AACA9H,UAAE,GAAG9uH,WAAO,CAAC+uH,eAAR,EAAL;;AACA,MAAID,QAAJ,EAAQ;AACN4H,iBAAO,CAAC,cAAD,CAAP,CAAwBC,SAAxB,GAAoC,IAApC;AACD,GAFD,MAEO;AACLD,iBAAO,CAAC,cAAD,CAAP,CAAwBC,SAAxB,GAAoC,KAApC;AACA,UAAM,IAAIxuJ,KAAJ,CAAU,gCAAV,CAAN;AACD,GARoB,CAUrB;;;AACA,MAAI2mJ,QAAE,CAAC+H,YAAH,CAAgB,mBAAhB,CAAJ,EAA0C;AACxCH,iBAAO,CAAC,mBAAD,CAAP,CAA6BC,SAA7B,GAAyC,IAAzC;AACD,GAFD,MAEO;AACLD,iBAAO,CAAC,mBAAD,CAAP,CAA6BC,SAA7B,GAAyC,KAAzC;AACA,UAAM,IAAIxuJ,KAAJ,CAAU,4CAAV,CAAN;AACD,GAhBoB,CAkBrB;;;AACA,MAAI2mJ,QAAE,CAAC+H,YAAH,CAAgB,0BAAhB,CAAJ,EAAiD;AAC/CH,iBAAO,CAAC,0BAAD,CAAP,CAAoCC,SAApC,GAAgD,IAAhD;AACD,GAFD,MAEO;AACLD,iBAAO,CAAC,0BAAD,CAAP,CAAoCC,SAApC,GAAgD,KAAhD;AACAtpJ,WAAO,CAACwrC,IAAR,CAAa,sFAAb;AACD,GAxBoB,CA0BrB;;;AACAk9G,cAAY,GAAG,IAAIlhC,WAAJ,CAAY,CAAZ,EAAe,CAAf,EAAkB;AAC/B1lH,QAAI,EAAE2/I,QAAE,CAAC6D,KADsB;AAE/BhoI,UAAM,EAAEmkI,QAAE,CAACoE,IAFoB;AAG/BpiH,UAAM,EAAE4lH,aAAO,CAAC,0BAAD,CAAP,CAAoCC,SAApC,GAAgD7H,QAAE,CAAC6E,MAAnD,GAA4D7E,QAAE,CAACgI;AAHxC,GAAlB,CAAf;AAKAf,cAAY,CAAC1B,iBAAb;;AACA,MAAIvF,QAAE,CAACiI,sBAAH,CAA0BjI,QAAE,CAAC0F,WAA7B,MAA8C1F,QAAE,CAACkI,oBAArD,EAA2E;AACzEN,iBAAO,CAAC,gCAAD,CAAP,CAA0CC,SAA1C,GAAsD,IAAtD;AACD,GAFD,MAEO;AACL7H,YAAE,CAACyF,eAAH,CAAmBzF,QAAE,CAAC0F,WAAtB,EAAmC,IAAnC;AACAkC,iBAAO,CAAC,gCAAD,CAAP,CAA0CC,SAA1C,GAAsD,KAAtD;AACA,UAAM,IAAIxuJ,KAAJ,CAAU,yDAAV,CAAN;AACD;;AACD2mJ,UAAE,CAACyF,eAAH,CAAmBzF,QAAE,CAAC0F,WAAtB,EAAmC,IAAnC,EAxCqB,CA0CrB;;AACA1F,UAAE,CAAC/tF,OAAH,CAAW+tF,QAAE,CAACmI,UAAd;AACArB,aAAK,GAAGV,IAAI,CAACU,KAAL,EAAR;AACAQ,gBAAc,GAAG,IAAI/G,MAAJ,CAAWiH,mBAAX,EAAgCC,sBAAhC,CAAjB;AACAF,cAAY,GAAG,IAAIhH,MAAJ,CAAWiH,mBAAX,EAAgCE,oBAAhC,CAAf,CA9CqB,CA+CrB;;AACAL,mBAAiB,GAAG,IAApB;AACD,CArLH;AAAA,IAuLEe,YAAY,GAAG,SAAfA,YAAe,CAASC,CAAT,EAAYC,CAAZ,EAAeC,CAAf,EAAkBt7B,CAAlB,EAAqBu7B,OAArB,EAA8B;AAC3C,MAAIhvJ,CAAJ,EAAOivJ,EAAP,EAAWnuJ,GAAX;;AAEA,MAAI+tJ,CAAC,CAAC5uJ,MAAF,KAAa6uJ,CAAC,CAAC7uJ,MAAf,IAAyB4uJ,CAAC,CAAC5uJ,MAAF,KAAa8uJ,CAAC,CAAC9uJ,MAAxC,IAAkD4uJ,CAAC,CAAC5uJ,MAAF,KAAawzH,CAAC,CAACxzH,MAAjE,IACF+uJ,OAAO,CAAC/uJ,MAAR,KAAmB4uJ,CAAC,CAAC5uJ,MAAF,GAAW,CADhC,EACmC;AACjC,UAAM,IAAIJ,KAAJ,CAAU,mCAAV,CAAN;AACD;;AACD,OAAKG,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG+tJ,CAAC,CAAC5uJ,MAApB,EAA4BD,CAAC,GAAGc,GAAhC,EAAqCd,CAAC,IAAI,CAA1C,EAA6C;AAC3CivJ,MAAE,GAAGjvJ,CAAC,GAAG,CAAT;AACAgvJ,WAAO,CAACC,EAAD,CAAP,GAAcJ,CAAC,CAAC7uJ,CAAD,CAAf;AACAgvJ,WAAO,CAACC,EAAE,GAAG,CAAN,CAAP,GAAkBH,CAAC,CAAC9uJ,CAAD,CAAnB;AACAgvJ,WAAO,CAACC,EAAE,GAAG,CAAN,CAAP,GAAkBF,CAAC,CAAC/uJ,CAAD,CAAnB;AACAgvJ,WAAO,CAACC,EAAE,GAAG,CAAN,CAAP,GAAkBx7B,CAAC,CAACzzH,CAAD,CAAnB;AACD;AACF,CArMH,C,CAuMA;AACA;AACA;;;AACe;AACb;AACAknB,MAAI,EAAE,cAAS9b,KAAT,EAAgBC,MAAhB,EAAwB;AAC5B,QAAIm9B,MAAJ;;AAEA,QAAI,CAACqlH,iBAAL,EAAwB;AACtBS,qBAAS;AACV,KAL2B,CAM5B;;;AACAvN,oBAAU,GAAG31I,KAAb;AACA41I,qBAAW,GAAG31I,MAAd;AAEAm9B,UAAM,GAAG4lH,aAAO,CAAC,0BAAD,CAAP,CAAoCC,SAApC,GAAgD7H,QAAE,CAAC6E,MAAnD,GAA4D7E,QAAE,CAACgI,OAAxE,CAV4B,CAY5B;;AACAf,gBAAY,GAAG,IAAIlhC,WAAJ,CAAYw0B,gBAAZ,EAAwBC,iBAAxB,EAAqC;AAClDn6I,UAAI,EAAE2/I,QAAE,CAAC6D,KADyC;AAElDhoI,YAAM,EAAEmkI,QAAE,CAACoE,IAFuC;AAGlDpiH,YAAM,EAAEA;AAH0C,KAArC,CAAf;AAKAklH,kBAAc,GAAG,IAAInhC,WAAJ,CAAYw0B,gBAAZ,EAAwBC,iBAAxB,EAAqC;AACpDn6I,UAAI,EAAE2/I,QAAE,CAACqE,aAD2C;AAEpDxoI,YAAM,EAAEmkI,QAAE,CAACoE,IAFyC;AAGpDpiH,YAAM,EAAEA;AAH4C,KAArC,CAAjB;AAKAmlH,gBAAY,GAAG,IAAItuJ,YAAJ,CAAiB0hJ,gBAAU,GAAGC,iBAAb,GAA2B,CAA5C,CAAf;AACD,GA1BY;;AA4Bb,MAAIkO,YAAJ,GAAmB;AACjB,QAAI,CAACrB,iBAAL,EAAwB;AACtB,UAAI;AACF;AACA;AACAS,uBAAS;AACV,OAJD,CAIE,OAAOzvJ,CAAP,EAAU,CAAE;AACf;;AACD,WAAOuvJ,aAAP;AACD,GArCY;;AAuCb3H,iBAAe,EAAE,2BAAW;AAC1B,QAAID,QAAE,KAAKtnJ,SAAX,EAAsB;AACpBovJ,qBAAS;AACV;;AACD,WAAO9H,QAAP;AACD,GA5CY;AA8Cb;AACAmE,eAAa,EAAE,yBAAW;AACxB,QAAI,CAAC5J,gBAAD,IAAe,CAACC,iBAApB,EAAiC;AAC/B,aAAO,IAAInhJ,KAAJ,CAAUsuJ,QAAV,CAAP;AACD,KAHuB,CAIxB;AACA;;;AACA,WAAO,IAAI5hC,WAAJ,CAAYw0B,gBAAZ,EAAwBC,iBAAxB,EAAqC;AAC1Cn6I,UAAI,EAAE2/I,QAAE,CAAC6D,KADiC;AAE1ChoI,YAAM,EAAEmkI,QAAE,CAACoE,IAF+B;AAG1CpiH,YAAM,EAAE4lH,aAAO,CAAC,0BAAD,CAAP,CAAoCC,SAApC,GAAgD7H,QAAE,CAAC6E,MAAnD,GAA4D7E,QAAE,CAACgI;AAH7B,KAArC,CAAP;AAKD,GA1DY;AA4Db;AACA;AACA;AACAW,eAAa,EAAE,uBAASxpI,IAAT,EAAeypI,OAAf,EAAwBllI,MAAxB,EAAgC;AAC7C,QAAIm6F,IAAJ,EAAUrkH,CAAV,EAAac,GAAb,EAAkBmuJ,EAAlB;;AAEA,QAAItpI,IAAI,CAAC1lB,MAAL,KAAgB8gJ,gBAAU,GAAGC,iBAAjC,EAA8C;AAC5C,YAAM,IAAInhJ,KAAJ,CAAU,mCAAV,CAAN;AACD;;AAED,QAAIqqB,MAAM,KAAKhrB,SAAf,EAA0B;AACxBmlH,UAAI,GAAG,IAAIhlH,YAAJ,CAAiBsmB,IAAI,CAAC1lB,MAAL,GAAc,CAA/B,CAAP;AACD,KAFD,MAEO;AACLokH,UAAI,GAAGn6F,MAAP;AACD;;AAED,QAAIklI,OAAO,KAAKlwJ,SAAhB,EAA2B;AACzBkwJ,aAAO,GAAG,CAAV;AACD,KAf4C,CAiB7C;;;AACA,SAAKpvJ,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG6kB,IAAI,CAAC1lB,MAAvB,EAA+BD,CAAC,GAAGc,GAAnC,EAAwCd,CAAC,IAAI,CAA7C,EAAgD;AAC9CivJ,QAAE,GAAGjvJ,CAAC,GAAG,CAAT;AACAqkH,UAAI,CAAC4qC,EAAD,CAAJ,GAAW5qC,IAAI,CAAC4qC,EAAE,GAAG,CAAN,CAAJ,GAAe5qC,IAAI,CAAC4qC,EAAE,GAAG,CAAN,CAAJ,GAAe5qC,IAAI,CAAC4qC,EAAE,GAAG,CAAN,CAAJ,GAAe,CAAxD;AACA5qC,UAAI,CAAC4qC,EAAE,GAAGG,OAAN,CAAJ,GAAqBzpI,IAAI,CAAC3lB,CAAD,CAAzB;AACD;;AAED,WAAOqkH,IAAP;AACD,GAxFY;AA0Fb;AACAgrC,cAAY,EAAE,sBAASn+B,GAAT,EAAc9tH,KAAd,EAAqB;AACjC,QAAIihH,IAAI,GAAG,KAAK8qC,aAAL,CAAmB/rJ,KAAnB,EAA0B,CAA1B,EAA6BuqJ,YAA7B,CAAX,CADiC,CAEjC;;AACAnH,YAAE,CAACwE,WAAH,CAAexE,QAAE,CAACyE,UAAlB,EAA8B/5B,GAAG,CAACvlH,EAAlC;AACA66I,YAAE,CAACsF,UAAH,CAActF,QAAE,CAACyE,UAAjB,EAA6B,CAA7B,EAAgC/5B,GAAG,CAAC7uG,MAApC,EAA4C6uG,GAAG,CAAC9lH,KAAhD,EAAuD8lH,GAAG,CAAC7lH,MAA3D,EAAmE,CAAnE,EAAsE6lH,GAAG,CAAC7uG,MAA1E,EAAkF6uG,GAAG,CAACrqH,IAAtF,EAA4Fw9G,IAA5F;AACD,GAhGY;AAkGbirC,kBAAgB,EAAE,0BAASp+B,GAAT,EAAc29B,CAAd,EAAiBC,CAAjB,EAAoBC,CAApB,EAAuBt7B,CAAvB,EAA0B;AAC1Cm7B,gBAAY,CAACC,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUt7B,CAAV,EAAak6B,YAAb,CAAZ,CAD0C,CAE1C;;AACAnH,YAAE,CAACwE,WAAH,CAAexE,QAAE,CAACyE,UAAlB,EAA8B/5B,GAAG,CAACvlH,EAAlC;AACA66I,YAAE,CAACsF,UAAH,CAActF,QAAE,CAACyE,UAAjB,EAA6B,CAA7B,EAAgC/5B,GAAG,CAAC7uG,MAApC,EAA4C6uG,GAAG,CAAC9lH,KAAhD,EAAuD8lH,GAAG,CAAC7lH,MAA3D,EAAmE,CAAnE,EAAsE6lH,GAAG,CAAC7uG,MAA1E,EAAkF6uG,GAAG,CAACrqH,IAAtF,EAA4F8mJ,YAA5F;AACD,GAvGY;AAyGb;AACA;AACA4B,aAAW,EAAE,qBAASr+B,GAAT,EAAchnG,MAAd,EAAsBklI,OAAtB,EAA+B;AAC1C,QAAII,cAAJ;;AACA,QAAI,CAAChJ,QAAD,IAAOt1B,GAAG,CAAC9lH,KAAJ,KAAc21I,gBAArB,IAAmC7vB,GAAG,CAAC7lH,MAAJ,KAAe21I,iBAAtD,EAAmE;AACjE,aAAO,IAAInhJ,KAAJ,CAAUsuJ,QAAV,CAAP;AACD;;AACD,QAAIiB,OAAO,KAAKlwJ,SAAhB,EAA2B;AACzBkwJ,aAAO,GAAG,CAAV;AACD,KAPyC,CAQ1C;AACA;;;AACAI,kBAAc,GAAG,IAAI7vJ,UAAJ,CAAeuqB,MAAM,CAAC9pB,MAAtB,CAAjB;AAEA8wH,OAAG,CAACtuF,IAAJ;AACA8qH,kBAAc,CAAC3B,iBAAf;AACA+B,kBAAc,CAAClF,QAAf,CAAwB;AACtBwG,aAAO,EAAEA;AADa,KAAxB;AAGAtB,kBAAc,CAACvE,IAAf,CAAoB+D,WAApB,EAjB0C,CAkB1C;;AACA9G,YAAE,CAACiJ,UAAH,CAAc,CAAd,EAAiB,CAAjB,EAAoB/B,cAAc,CAACtiJ,KAAnC,EAA0CsiJ,cAAc,CAACriJ,MAAzD,EAAiEqiJ,cAAc,CAACrrI,MAAhF,EAAwFqrI,cAAc,CAAC7mJ,IAAvG,EAA6G2oJ,cAA7G;AACD,GA/HY;AAiIbE,aAAW,EAAE,qBAASC,OAAT,EAAkBC,OAAlB,EAA2B;AACtCD,WAAO,CAAC/sH,IAAR;AACAgtH,WAAO,CAAC7D,iBAAR;AACAgC,gBAAY,CAACxE,IAAb,CAAkB+D,WAAlB;AACD,GArIY;AAuIb;AACA;AACA;AACA;AACA;AACAuC,gBAAc,EAAE,wBAAS7H,OAAT,EAAkB8H,QAAlB,EAA4B5lI,MAA5B,EAAoC;AAClD,QAAIlqB,CAAJ,EAAOc,GAAP,CADkD,CAElD;;AACA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGgvJ,QAAQ,CAAC7vJ,MAA3B,EAAmCD,CAAC,GAAGc,GAAvC,EAA4Cd,CAAC,IAAI,CAAjD,EAAoD;AAClD8vJ,cAAQ,CAAC9vJ,CAAD,CAAR,CAAY4iC,IAAZ,CAAiB5iC,CAAjB;AACD,KALiD,CAMlD;;;AACAytJ,gBAAY,CAAC1B,iBAAb,GAPkD,CAQlD;;AACA/D,WAAO,CAACuB,IAAR,CAAa+D,WAAb,EATkD,CAUlD;;AACA,SAAKttJ,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGgvJ,QAAQ,CAAC7vJ,MAA3B,EAAmCD,CAAC,GAAGc,GAAvC,EAA4Cd,CAAC,IAAI,CAAjD,EAAoD;AAClD8vJ,cAAQ,CAAC9vJ,CAAD,CAAR,CAAYusJ,MAAZ,CAAmBvsJ,CAAnB;AACD;;AACDkqB,UAAM,CAACuiI,QAAP,CAAgBgB,YAAhB;AACD,GA3JY;AA6Jb;AACAsC,2BAAyB,EAAE,mCAAS7uJ,CAAT,EAAY;AACrC0sJ,gBAAY,GAAG1sJ,CAAf;AACD,GAhKY;AAkKb;AACA8uJ,WAAS,EAAE,qBAAW;AACpB,QAAIpC,YAAJ,EAAkB;AAChBpH,cAAE,CAACyJ,MAAH;AACD;AACF;AAvKY,CAAf,E;;ACjNe,iEAAoB,iBAAiB,qCAAqC,+CAA+C,GAAG,GAAG,E;;ACA/H,mJAAqG,6GAA6G,sBAAsB,mBAAmB,mBAAmB,6BAA6B,gEAAgE,mBAAmB,mBAAmB,mBAAmB,mBAAmB,uBAAuB,iBAAiB,6CAA6C,0GAA0G,kCAAkC,kCAAkC,yBAAyB,6YAA6Y,iDAAiD,2DAA2D,2DAA2D,2DAA2D,2DAA2D,qDAAqD,4BAA4B,+CAA+C,+CAA+C,+CAA+C,+CAA+C,kQAAkQ,OAAO,OAAO,qBAAqB,OAAO,KAAK,gCAAgC,4HAA4H,qBAAqB,OAAO,mCAAmC,qBAAqB,OAAO,6BAA6B,qBAAqB,OAAO,mCAAmC,qBAAqB,OAAO,KAAK,yBAAyB,GAAG,GAAG,E;;ACA90E,0JAAsG,sBAAsB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,wBAAwB,wBAAwB,uBAAuB,iBAAiB,6CAA6C,gCAAgC,gCAAgC,2BAA2B,yFAAyF,KAAK,mCAAmC,yFAAyF,KAAK,6BAA6B,yFAAyF,KAAK,mCAAmC,yFAAyF,KAAK,yBAAyB,GAAG,GAAG,E;;ACAl6B,qJAAsG,uBAAuB,iBAAiB,6CAA6C,sBAAsB,yBAAyB,GAAG,GAAG,E;;ACAhP,8JAAsG,8GAA8G,4FAA4F,sBAAsB,mBAAmB,mBAAmB,iEAAiE,mBAAmB,mBAAmB,mBAAmB,mBAAmB,uBAAuB,iBAAiB,6CAA6C,8GAA8G,2DAA2D,4BAA4B,oCAAoC,oCAAoC,mFAAmF,0DAA0D,0DAA0D,0DAA0D,8EAA8E,0DAA0D,0DAA0D,0DAA0D,8JAA8J,OAAO,KAAK,gCAAgC,4HAA4H,qBAAqB,OAAO,mCAAmC,qBAAqB,OAAO,6BAA6B,qBAAqB,OAAO,mCAAmC,qBAAqB,OAAO,KAAK,yBAAyB,GAAG,GAAG,E;;ACAr5D,8JAAsG,8GAA8G,4FAA4F,sBAAsB,mBAAmB,mBAAmB,iEAAiE,mBAAmB,mBAAmB,mBAAmB,mBAAmB,uBAAuB,iBAAiB,6CAA6C,8GAA8G,2DAA2D,4BAA4B,oCAAoC,oCAAoC,uFAAuF,2DAA2D,2DAA2D,2DAA2D,oEAAoE,gDAAgD,wKAAwK,OAAO,KAAK,gCAAgC,4HAA4H,qBAAqB,OAAO,mCAAmC,qBAAqB,OAAO,6BAA6B,qBAAqB,OAAO,mCAAmC,qBAAqB,OAAO,KAAK,yBAAyB,GAAG,GAAG,E;;ACA5yD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IACA;AACE;AACA;AAEA;AASAvM,gCAAgB,GAAG,EAdrB;AAgBO,IAAMwM,iCAAiB,GAAG,SAApBA,iBAAoB,CAASthJ,KAAT,EAAgB;AAC/C,MACA;AACA;AACA;AACEuhJ,gBAAc,GAAG,IAAIpJ,MAAJ,CAAWqJ,QAAX,EAAqBC,SAArB,CAJnB;AAAA,MAKE;AACAC,sBAAoB,GAAG,IAAIvJ,MAAJ,CAAWqJ,QAAX,EAAqBG,eAArB,CANzB;AAAA,MAOE;AACAC,uBAAqB,GAAG,IAAIzJ,MAAJ,CAAWqJ,QAAX,EAAqBK,gBAArB,CAR1B;AAAA,MASE;AACAC,iBAAe,GAAG,IAAI3J,MAAJ,CAAWqJ,QAAX,EAAqBO,UAArB,CAVpB;AAAA,MAWE;AACAC,0BAAwB,GAAG,IAAI7J,MAAJ,CAAWqJ,QAAX,EAAqBS,mBAArB,CAZ7B;AAAA,MAaE;AACAC,0BAAwB,GAAG,IAAI/J,MAAJ,CAAWqJ,QAAX,EAAqBW,mBAArB,CAd7B;AAAA,MAeE;AAEA;AACA/3H,OAAK,GAAGpqB,KAAK,CAACg1I,eAAN,EAlBV;AAAA,MAmBEp2D,EAAE,GAAGx0D,KAAK,CAAC+nH,UAnBb;AAAA,MAoBEtzD,EAAE,GAAGz0D,KAAK,CAACgoH,WApBb;AAAA,MAsBE1uI,QAAQ,GAAG0mB,KAAK,CAAC1mB,QAtBnB;AAAA,MAuBEsvI,QAAQ,GAAG5oH,KAAK,CAAC4oH,QAvBnB;AAAA,MAyBEoP,OAAO,GAAGh4H,KAAK,CAACioH,WAAN,GAAoBjoH,KAAK,CAAC+nH,UAzBtC;AAAA,MA0BEkQ,OAAO,GAAGj4H,KAAK,CAACkoH,YAAN,GAAqBloH,KAAK,CAACgoH,WA1BvC;AAAA,MA4BEkQ,gBAAgB,GAAGxN,gCA5BrB;AAAA,MA8BE;AACA;AACA;AACA;AACA;AACA;AACAyN,WAAS,GAAGviJ,KAAK,CAACwiJ,oBAAN,CAA2B,CAA3B,CApCd;AAAA,MAqCE;AACA;AACA;AACA;AACA;AACAC,WAAS,GAAGziJ,KAAK,CAACwiJ,oBAAN,CAA2B,CAA3B,CA1Cd;AAAA,MA2CE;AACA;AACA;AACA;AACA;AACAE,WAAS,GAAG1iJ,KAAK,CAACwiJ,oBAAN,CAA2B,CAA3B,CAhDd;AAAA,MAkDE;AACAG,kBAAgB,GAAG,CAACJ,SAAD,EAAYE,SAAZ,EAAuBC,SAAvB,CAnDrB;AAAA,MAoDEE,cAAc,GAAG,CAACL,SAAD,EAAYE,SAAZ,CApDnB;AAAA,MAqDEI,YAAY,GAAG,CAACN,SAAD,CArDjB;AAAA,MAsDEO,QAAQ,GAAG,CAAC,IAAIjkE,EAAL,EAAS,IAAID,EAAb,CAtDb;AAAA,MAwDEtmE,IAAI,GAAG,SAAPA,IAAO,GAAW;AAChB,QAAI0hI,QAAJ,CADgB,CAGhB;;AACAA,YAAQ,GAAG;AACT;AACAuI,eAAS,EAAE,CAFF;AAGTE,eAAS,EAAE,CAHF;AAIT;AACA3rI,UAAI,EAAEgsI,QALG;AAMTC,kBAAY,EAAE,GANL;AAOT3L,QAAE,EAAE,OAAOgL,OAAO,GAAGA,OAAjB,CAPK;AAQT/K,QAAE,EAAE,OAAOgL,OAAO,GAAGA,OAAjB,CARK;AASTW,kBAAY,EAAE,MAAMt/I;AATX,KAAX;AAWA69I,kBAAc,CAACvH,QAAf,CAAwBA,QAAxB,EAfgB,CAiBhB;;AACAA,YAAQ,GAAG;AACT;AACAuI,eAAS,EAAE,CAFF;AAGTE,eAAS,EAAE,CAHF;AAITC,eAAS,EAAE,CAJF;AAKT;AACA5rI,UAAI,EAAEgsI,QANG;AAOTC,kBAAY,EAAE,GAPL;AAQTllE,QAAE,EAAE,MAAMn6E,QAAN,GAAiB0+I,OARZ;AASTtkE,QAAE,EAAE,MAAMp6E,QAAN,GAAiB2+I;AATZ,KAAX;AAWAL,4BAAwB,CAAChI,QAAzB,CAAkCA,QAAlC;AACAkI,4BAAwB,CAAClI,QAAzB,CAAkCA,QAAlC;;AAEA,QAAIhH,QAAQ,CAAC/6I,IAAT,KAAkB,aAAtB,EAAqC;AACnC+hJ,cAAQ,GAAG;AACT;AACA+I,oBAAY,EAAE,GAFL;AAGTzM,UAAE,EAAEtD,QAAQ,CAACC,KAHJ;AAITsD,UAAE,EAAEvD,QAAQ,CAACE,KAJJ;AAKTsD,UAAE,EAAExD,QAAQ,CAAC/2I,IALJ;AAMTw6I,UAAE,EAAEzD,QAAQ,CAACx0I;AANJ,OAAX,CADmC,CASnC;AACA;;AACA+iJ,oBAAc,CAACvH,QAAf,CAAwBA,QAAxB;AACAgI,8BAAwB,CAAChI,QAAzB,CAAkCA,QAAlC;AACAkI,8BAAwB,CAAClI,QAAzB,CAAkCA,QAAlC;AACD,KAdD,MAcO,IAAIhH,QAAQ,CAAC/6I,IAAT,KAAkB,MAAtB,EAA8B;AACnC+hJ,cAAQ,GAAG;AACT;AACAuI,iBAAS,EAAE,CAFF;AAGT;AACAzrI,YAAI,EAAEgsI,QAJG;AAKTxM,UAAE,EAAEtD,QAAQ,CAACC,KALJ;AAMTsD,UAAE,EAAEvD,QAAQ,CAACE,KANJ;AAOTsD,UAAE,EAAExD,QAAQ,CAAC/2I,IAPJ;AAQTw6I,UAAE,EAAEzD,QAAQ,CAACx0I,KARJ;AAST4jJ,eAAO,EAAEA,OATA;AAUTC,eAAO,EAAEA;AAVA,OAAX,CADmC,CAanC;AACA;;AACAX,0BAAoB,CAAC1H,QAArB,CAA8BA,QAA9B;AACA4H,2BAAqB,CAAC5H,QAAtB,CAA+BA,QAA/B;AACD;AACF,GAxHH;AAAA,MA0HEpD,UAAU,GAAG,SAAbA,UAAa,GAAW;AACtB;AACAqM,SAAK,CAAChC,cAAN,CACEe,wBADF,EAEEW,gBAFF,EAGEJ,SAHF;;AAKA,QAAIvP,QAAQ,CAAC/6I,IAAT,KAAkB,MAAtB,EAA8B;AAC5B;AACA;AACA;AACA;AACAgrJ,WAAK,CAAChC,cAAN,CACEW,qBADF,EAEEiB,YAFF,EAGEN,SAHF;AAKD,KAjBqB,CAkBtB;;;AACAU,SAAK,CAAChC,cAAN,CACEiB,wBADF,EAEES,gBAFF,EAGEJ,SAHF;;AAKA,QAAIvP,QAAQ,CAAC/6I,IAAT,KAAkB,MAAtB,EAA8B;AAC5B;AACA;AACA;AACA;AACAgrJ,WAAK,CAAChC,cAAN,CACES,oBADF,EAEEmB,YAFF,EAGEN,SAHF;AAKD;AACF,GA7JH;AAAA,MA+JEW,eAAe,GAAG;AAChBhM,SAAK,EAAE,eAAS1E,UAAT,EAAqB;AAC1B,UAAIz0I,CAAJ,CAD0B,CAE1B;;AACAklJ,WAAK,CAAChC,cAAN,CACEa,eADF,EAEEe,YAFF,EAGEN,SAHF;;AAKA,WAAKxkJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGukJ,gBAAhB,EAAkCvkJ,CAAC,IAAI,CAAvC,EAA0C;AACxCklJ,aAAK,CAAChC,cAAN,CACEM,cADF,EAEEqB,cAFF,EAGEL,SAHF;;AAKA,YAAIvP,QAAQ,CAAC/6I,IAAT,KAAkB,MAAtB,EAA8B;AAC5B;AACA;AACA;AACA;AACAgrJ,eAAK,CAAChC,cAAN,CACES,oBADF,EAEEmB,YAFF,EAGEN,SAHF;AAKD;AACF;;AACD,UAAI/P,UAAJ,EAAgB;AACdoE,kBAAU;AACX;AACF;AA9Be,GA/JpB,CAD+C,CAgM/C;;;AACAt+H,MAAI;AACJ,SAAO4qI,eAAP;AACD,CAnMM,C;;ACxBP;AAEA,IAAIpO,6BAAgB,GAAG,CAAvB;AAAA,IAA0BqO,OAAO,GAAG,CAApC;AAAA,IAEEC,oBAAoB,GAAG,CAFzB;AAAA,IAGEC,uBAAuB,GAAG,CAH5B;AAKO,IAAMC,4BAAe,GAAG,SAAlBA,eAAkB,CAAStjJ,KAAT,EAAgB;AAC7C,MACA;AACEoqB,OAAK,GAAGpqB,KAAK,CAACg1I,eAAN,EAFV;AAAA,MAGEp2D,EAAE,GAAGx0D,KAAK,CAAC+nH,UAHb;AAAA,MAIEtzD,EAAE,GAAGz0D,KAAK,CAACgoH,WAJb;AAAA,MAME6C,eAAe,GAAGH,6BANpB;AAAA,MAOEyO,OAAO,GAAGJ,OAPZ;AAAA,MASE;AACAxrI,GAAC,GAAG3X,KAAK,CAACwjJ,mBAAN,EAVN;AAAA,MAWE7N,QAAQ,GAAG31I,KAAK,CAAC41I,gBAAN,EAXb;AAAA,MAYE6N,KAAK,GAAGzjJ,KAAK,CAAC0jJ,aAAN,EAZV;AAAA,MAaEC,KAAK,GAAG3jJ,KAAK,CAAC4jJ,aAAN,EAbV;AAAA,MAeE;AACAvzJ,YAAU,GAAG2P,KAAK,CAAC81I,YAAN,EAhBf;AAAA,MAiBE+N,EAAE,GAAGn0J,yBAAM,CAACQ,MAAP,CAAc0uF,EAAE,GAAGC,EAAnB,EAAuB,CAAvB,EAA0BxuF,UAA1B,CAjBP;AAAA,MAkBE6sI,EAAE,GAAGxtI,yBAAM,CAACQ,MAAP,CAAc0uF,EAAE,GAAGC,EAAnB,EAAuB,CAAvB,EAA0BxuF,UAA1B,CAlBP;AAAA,MAoBE;AACA0lJ,KAAG,GAAGn3D,EAAE,GAAG,CArBb;AAAA,MAsBEo3D,GAAG,GAAGn3D,EAAE,GAAG,CAtBb;AAAA,MAuBEo3D,GAAG,GAAGr3D,EAAE,GAAG,CAvBb;AAAA,MAwBEs3D,GAAG,GAAGr3D,EAAE,GAAG,CAxBb;AAAA,MA0BEs3D,MAAM,GAAG/rH,KAAK,CAACioH,WAAN,GAAoBjoH,KAAK,CAAC+nH,UA1BrC;AAAA,MA2BEiE,MAAM,GAAGhsH,KAAK,CAACkoH,YAAN,GAAqBloH,KAAK,CAACgoH,WA3BtC;AAAA,MA6BE0R,IAAI,GAAG,MAAM3N,MA7Bf;AAAA,MA8BE4N,IAAI,GAAG,MAAM3N,MA9Bf;AAAA,MA+BE4N,KAAK,GAAG,OAAO7N,MAAM,GAAGA,MAAhB,CA/BV;AAAA,MAgCE8N,KAAK,GAAG,OAAO7N,MAAM,GAAGA,MAAhB,CAhCV;AAAA,MAkCE;AACA;AACA;AAEA;AACAC,eAAa,GAAG,SAAhBA,aAAgB,CAAS/jJ,CAAT,EAAY0xE,CAAZ,EAAe;AAC7B,QAAIrR,UAAU,GAAGrgE,CAAC,KAAK,CAAvB;AAAA,QAA0B2+D,QAAQ,GAAG3+D,CAAC,KAAK,CAA3C;AAAA,QAA8C4xJ,KAAK,GAAGnO,GAAG,GAAGn3D,EAA5D;AAAA,QAAgEulE,KAAK,GAAGlO,GAAG,GAAGr3D,EAA9E;AAAA,QAAkFxtF,CAAlF;AAAA,QAAqFyM,CAArF;AAAA,QAAwF64I,GAAxF;AAAA,QAA6F0N,SAA7F;AAAA,QAAwGC,YAAxG;AAAA,QAAsHC,YAAtH;AAAA,QAAoIC,QAApI;;AAEA,SAAKnzJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAAEslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;AAAcwlE,eAAS,GAAG1N,GAAG,GAAG,CAAlB;AAC3C2N,kBAAY,GAAG3N,GAAG,GAAGV,GAArB;AACAsO,kBAAY,GAAG5N,GAAG,GAAGR,GAArB,CAF2B,CAG3B;;AACAlyE,OAAC,CAAC0yE,GAAD,CAAD,GAASzlF,QAAQ,GAAG,CAAC+S,CAAC,CAACogF,SAAD,CAAL,GAAmBpgF,CAAC,CAACogF,SAAD,CAArC,CAJ2B,CAK3B;;AACApgF,OAAC,CAACqgF,YAAD,CAAD,GAAkBpzF,QAAQ,GAAG,CAAC+S,CAAC,CAACsgF,YAAD,CAAL,GAAsBtgF,CAAC,CAACsgF,YAAD,CAAjD;AACD;;AACD,SAAKzmJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3B;AACA0mJ,cAAQ,GAAG3lE,EAAE,GAAG/gF,CAAhB;AACAmmE,OAAC,CAACnmE,CAAD,CAAD,GAAO80D,UAAU,GAAG,CAACqR,CAAC,CAACugF,QAAD,CAAL,GAAkBvgF,CAAC,CAACugF,QAAD,CAApC,CAH2B,CAI3B;;AACAvgF,OAAC,CAACkgF,KAAK,GAAGrmJ,CAAT,CAAD,GAAe80D,UAAU,GAAG,CAACqR,CAAC,CAACmgF,KAAK,GAAGtmJ,CAAT,CAAL,GAAmBmmE,CAAC,CAACmgF,KAAK,GAAGtmJ,CAAT,CAA7C;AACD,KAjB4B,CAmB7B;;;AACAmmE,KAAC,CAAC,CAAD,CAAD,GAAO,OAAOA,CAAC,CAAC4a,EAAD,CAAD,GAAQ5a,CAAC,CAAC,CAAD,CAAhB,CAAP,CApB6B,CAqB7B;;AACAA,KAAC,CAACkgF,KAAD,CAAD,GAAW,OAAOlgF,CAAC,CAACmgF,KAAD,CAAD,GAAWngF,CAAC,CAACkgF,KAAK,GAAG,CAAT,CAAnB,CAAX,CAtB6B,CAuB7B;;AACAlgF,KAAC,CAACgyE,GAAD,CAAD,GAAS,OAAOhyE,CAAC,CAAC4a,EAAE,GAAGo3D,GAAN,CAAD,GAAchyE,CAAC,CAACkyE,GAAD,CAAtB,CAAT,CAxB6B,CAyB7B;;AACAlyE,KAAC,CAACkgF,KAAK,GAAGlO,GAAT,CAAD,GAAiB,OAAOhyE,CAAC,CAACmgF,KAAK,GAAGnO,GAAT,CAAD,GAAiBhyE,CAAC,CAACkgF,KAAK,GAAGhO,GAAT,CAAzB,CAAjB;AACD,GAlEH;AAAA,MAoEEsO,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAS/kF,CAAT,EAAYpgC,CAAZ,EAAe;AACnC,QACEhpB,KAAK,GAAG,CADV;AAAA,QAEEouI,EAFF;AAAA,QAEMC,EAFN;AAAA,QAGEtzJ,CAHF;AAAA,QAGKyM,CAHL;AAAA,QAGQ64I,GAHR;AAAA,QAGaG,IAHb;AAAA,QAGmBC,YAHnB;AAAA,QAGiCC,aAHjC;AAAA,QAGgDC,WAHhD;AAAA,QAG6DC,YAH7D;;AAKA,SAAK7lJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,WAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,YAAI,GAAGH,GAAG,GAAG74I,CAAb;AACAk5I,qBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,oBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,oBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,mBAAW,GAAGH,IAAI,GAAG,CAArB;;AAEA,YAAI,CAAClB,QAAQ,CAACkB,IAAD,CAAb,EAAqB;AACnB4N,YAAE,GAAGhB,KAAK,CAAC5M,IAAD,CAAV;AACA6N,YAAE,GAAGf,KAAK,CAAC9M,IAAD,CAAV;AACAxgI,eAAK,GAAG,CAAR;;AACA,cAAIs/H,QAAQ,CAACoB,aAAD,CAAZ,EAA6B;AAAE1gI,iBAAK,IAAI,CAAT;AAC7BopD,aAAC,CAACo3E,IAAD,CAAD,GAAU4N,EAAE,GAAGhlF,CAAC,CAACs3E,aAAD,CAAhB;AACA13G,aAAC,CAACw3G,IAAD,CAAD,GAAU6N,EAAE,GAAGrlH,CAAC,CAAC03G,aAAD,CAAhB;AACD,WAHD,MAGO,IAAIpB,QAAQ,CAACmB,YAAD,CAAZ,EAA4B;AACjCzgI,iBAAK,IAAI,CAAT;AACAopD,aAAC,CAACo3E,IAAD,CAAD,GAAU4N,EAAE,GAAGhlF,CAAC,CAACq3E,YAAD,CAAhB;AACAz3G,aAAC,CAACw3G,IAAD,CAAD,GAAU6N,EAAE,GAAGrlH,CAAC,CAACy3G,YAAD,CAAhB;AACD;;AACD,cAAInB,QAAQ,CAACsB,YAAD,CAAZ,EAA4B;AAC1B5gI,iBAAK,IAAI,CAAT;AACAopD,aAAC,CAACo3E,IAAD,CAAD,GAAU4N,EAAE,GAAGhlF,CAAC,CAACw3E,YAAD,CAAhB;AACA53G,aAAC,CAACw3G,IAAD,CAAD,GAAU6N,EAAE,GAAGrlH,CAAC,CAAC43G,YAAD,CAAhB;AACD,WAJD,MAIO,IAAItB,QAAQ,CAACqB,WAAD,CAAZ,EAA2B;AAChC3gI,iBAAK,IAAI,CAAT;AACAopD,aAAC,CAACo3E,IAAD,CAAD,GAAU4N,EAAE,GAAGhlF,CAAC,CAACu3E,WAAD,CAAhB;AACA33G,aAAC,CAACw3G,IAAD,CAAD,GAAU6N,EAAE,GAAGrlH,CAAC,CAAC23G,WAAD,CAAhB;AACD;;AACD,cAAI3gI,KAAK,KAAK,CAAd,EAAiB;AACfopD,aAAC,CAACo3E,IAAD,CAAD,GAAU4N,EAAV;AACAplH,aAAC,CAACw3G,IAAD,CAAD,GAAU6N,EAAV;AACD;AACF;AACF;AACF;AACF,GA/GH;AAAA,MAiHE;AACA;AACAC,qBAAmB,GAAG,SAAtBA,mBAAsB,CAASpyJ,CAAT,EAAY;AAChC,QAAInB,CAAJ,EAAOyM,CAAP,EAAU64I,GAAV,EAAeG,IAAf,EAAqBC,YAArB,EAAmCC,aAAnC,EAAkDC,WAAlD,EAA+DC,YAA/D;;AAEA,SAAK7lJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,WAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,YAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,YAAI,CAAC83I,QAAQ,CAACkB,IAAD,CAAb,EAAqB;AACnBE,uBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,sBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,sBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,qBAAW,GAAGH,IAAI,GAAG,CAArB;;AAEA,cAAIlB,QAAQ,CAACoB,aAAD,CAAZ,EAA6B;AAC3BxkJ,aAAC,CAACskJ,IAAD,CAAD,GAAUtkJ,CAAC,CAACwkJ,aAAD,CAAX;AACD,WAFD,MAEO,IAAIpB,QAAQ,CAACmB,YAAD,CAAZ,EAA4B;AACjCvkJ,aAAC,CAACskJ,IAAD,CAAD,GAAUtkJ,CAAC,CAACukJ,YAAD,CAAX;AACD;;AACD,cAAInB,QAAQ,CAACsB,YAAD,CAAZ,EAA4B;AAC1B1kJ,aAAC,CAACskJ,IAAD,CAAD,GAAUtkJ,CAAC,CAAC0kJ,YAAD,CAAX;AACD,WAFD,MAEO,IAAItB,QAAQ,CAACqB,WAAD,CAAZ,EAA2B;AAChCzkJ,aAAC,CAACskJ,IAAD,CAAD,GAAUtkJ,CAAC,CAACykJ,WAAD,CAAX;AACD;AACF;AACF;AACF;AACF,GA7IH;AAAA,MA+IE4N,kBAAkB,GAAG,SAArBA,kBAAqB,CAASxzJ,CAAT,EAAYyM,CAAZ,EAAe;AAClC,QACEiiB,UAAU,GAAG,CADf;AAAA,QAEED,UAAU,GAAGg/D,EAFf;AAAA,QAGEg3D,EAAE,GAAG,CAHP;AAAA,QAIE93I,CAJF;AAAA,QAIK8mJ,UAJL,CADkC,CAOlC;;AACA,SAAK9mJ,CAAC,GAAGF,CAAC,GAAG,CAAb,EAAgBE,CAAC,GAAG,CAApB,EAAuBA,CAAC,IAAI,CAA5B,EAA+B;AAC7B8mJ,gBAAU,GAAGzzJ,CAAC,GAAGwtF,EAAJ,GAAS7gF,CAAtB;;AACA,UAAI,CAAC43I,QAAQ,CAACkP,UAAD,CAAb,EAA2B;AACzB/kI,kBAAU,GAAG/hB,CAAb;AACA;AACD;AACF;;AAED,SAAKA,CAAC,GAAGF,CAAC,GAAG,CAAb,EAAgBE,CAAC,GAAG8gF,EAApB,EAAwB9gF,CAAC,IAAI,CAA7B,EAAgC;AAC9B8mJ,gBAAU,GAAGzzJ,CAAC,GAAGwtF,EAAJ,GAAS7gF,CAAtB;;AACA,UAAI,CAAC43I,QAAQ,CAACkP,UAAD,CAAb,EAA2B;AACzBhlI,kBAAU,GAAG9hB,CAAb;AACA;AACD;AACF;;AAED,SAAKA,CAAC,GAAG+hB,UAAT,EAAqB/hB,CAAC,GAAG8hB,UAAzB,EAAqC9hB,CAAC,IAAI,CAA1C,EAA6C;AAC3C8mJ,gBAAU,GAAGzzJ,CAAC,GAAGwtF,EAAJ,GAAS7gF,CAAtB;AACA83I,QAAE,IAAIl+H,CAAC,CAACktI,UAAD,CAAP;AACD;;AACD,WAAOhP,EAAE,IAAIh2H,UAAU,GAAGC,UAAjB,CAAT;AACD,GA5KH;AAAA,MA8KEglI,aAAa,GAAG,SAAhBA,aAAgB,CAAS9gF,CAAT,EAAY;AAC1B,QACExsD,CAAC,GAAG+rI,OAAO,GAAGn5H,KAAK,CAAC1mB,QADtB;AAAA,QAEEpR,CAAC,GAAG83B,KAAK,CAAC0oH,gBAAN,GAAyB1oH,KAAK,CAAC1mB,QAFrC;AAAA,QAGEmyI,EAHF;AAAA,QAIEzkJ,CAJF;AAAA,QAIKyM,CAJL;AAAA,QAIQ64I,GAJR;AAAA,QAIaG,IAJb;;AAMA,YAAQzsH,KAAK,CAAC2oH,sBAAd;AACE,WAAKqQ,oBAAL;AACEvN,UAAE,GAAI,UAAS3kJ,KAAT,EAAgB;AACpB;AACA,cACEoC,GAAG,GAAG,CADR;AAAA,cAEEjC,MAAM,GAAGH,KAAK,CAACG,MAFjB;AAAA,cAGED,CAHF;;AAIA,eAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGC,MAAhB,EAAwBD,CAAC,IAAI,CAA7B,EAAgC;AAC9BkC,eAAG,IAAIpC,KAAK,CAACE,CAAD,CAAZ;AACD;;AACD,iBAAOkC,GAAG,GAAGjC,MAAb;AACD,SAVK,CAUJsmB,CAVI,CAAN,CADF,CAWS;;;AACP,aAAKvmB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,aAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,eAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,gBAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,gBAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClB7yE,eAAC,CAAC6yE,IAAD,CAAD,IAAW,CAACr/H,CAAC,GAAGllB,CAAL,IAAUqlB,CAAC,CAACk/H,IAAD,CAAX,GAAoBvkJ,CAAC,GAAGujJ,EAAnC;AACD;AACF;AACF;;AACD;;AACF,WAAKwN,uBAAL;AACE,aAAKjyJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,aAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,eAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,gBAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,gBAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBhB,gBAAE,GAAG+O,kBAAkB,CAACxzJ,CAAD,EAAIyM,CAAJ,CAAvB;AACAmmE,eAAC,CAAC6yE,IAAD,CAAD,IAAW,CAACr/H,CAAC,GAAGllB,CAAL,IAAUqlB,CAAC,CAACk/H,IAAD,CAAX,GAAoBvkJ,CAAC,GAAGujJ,EAAnC;AACD;AACF;AACF;;AACD;AAlCJ;AAoCD,GAzNH;AAAA,MA2NEkP,QAAQ,GAAG,SAAXA,QAAW,CAAStlF,CAAT,EAAYpgC,CAAZ,EAAe2lH,GAAf,EAAoBpnI,GAApB,EAAyB;AAClC,QACE4B,CAAC,GAAG,OAAOwkI,KAAK,GAAGC,KAAf,CADN;AAAA,QAEElmJ,CAFF;AAAA,QAEK3M,CAFL;AAAA,QAEQyM,CAFR;AAAA,QAEW64I,GAFX;AAAA,QAEgBG,IAFhB;AAAA,QAEsBC,YAFtB;AAAA,QAEoCC,aAFpC;AAAA,QAEmDC,WAFnD;AAAA,QAEgEC,YAFhE;;AAIA,SAAK7lJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,WAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,YAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,YAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBE,uBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,sBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,sBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,qBAAW,GAAGH,IAAI,GAAG,CAArB;AAEAj5H,aAAG,CAACi5H,IAAD,CAAH,GAAY,CAACp3E,CAAC,CAACq3E,YAAD,CAAD,GAAkBr3E,CAAC,CAACs3E,aAAD,CAApB,IAAuC+M,IAAvC,GAA8C,CAACzkH,CAAC,CAAC23G,WAAD,CAAD,GAAiB33G,CAAC,CAAC43G,YAAD,CAAnB,IAAqC8M,IAA/F;AACAiB,aAAG,CAACnO,IAAD,CAAH,GAAY,CAAZ;AACD;AACF;AACF;;AACDR,iBAAa,CAAC,CAAD,EAAIz4H,GAAJ,CAAb;AACAy4H,iBAAa,CAAC,CAAD,EAAI2O,GAAJ,CAAb;AACAL,uBAAmB,CAAC/mI,GAAD,CAAnB;AACA+mI,uBAAmB,CAACK,GAAD,CAAnB;;AAEA,SAAKjnJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGk3I,eAAhB,EAAiCl3I,CAAC,IAAI,CAAtC,EAAyC;AACvC,WAAK3M,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,WAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,aAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,cAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,cAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBE,yBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,wBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,wBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,uBAAW,GAAGH,IAAI,GAAG,CAArB;AAEAmO,eAAG,CAACnO,IAAD,CAAH,GAAYr3H,CAAC,IAAI,CAACwlI,GAAG,CAACjO,aAAD,CAAH,GAAqBiO,GAAG,CAAClO,YAAD,CAAzB,IAA2CkN,KAA3C,GAAmD,CAACgB,GAAG,CAAC/N,YAAD,CAAH,GAAoB+N,GAAG,CAAChO,WAAD,CAAxB,IAAyCiN,KAA5F,GAAoGrmI,GAAG,CAACi5H,IAAD,CAA3G,CAAb;AACD;AACF;AACF;AACF;;AAED,SAAKzlJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,WAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,YAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,YAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBE,uBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,sBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,sBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,qBAAW,GAAGH,IAAI,GAAG,CAArB;AAEAp3E,WAAC,CAACo3E,IAAD,CAAD,IAAW,CAACmO,GAAG,CAAClO,YAAD,CAAH,GAAoBkO,GAAG,CAACjO,aAAD,CAAxB,IAA2C+M,IAAtD;AACAzkH,WAAC,CAACw3G,IAAD,CAAD,IAAW,CAACmO,GAAG,CAAChO,WAAD,CAAH,GAAmBgO,GAAG,CAAC/N,YAAD,CAAvB,IAAyC8M,IAApD;AACD;AACF;AACF;;AACD1N,iBAAa,CAAC,CAAD,EAAI52E,CAAJ,CAAb;AACA42E,iBAAa,CAAC,CAAD,EAAIh3G,CAAJ,CAAb;AACD,GAtRH;AAAA,MAwRE4lH,OAAO,GAAG,SAAVA,OAAU,CAAS3yJ,CAAT,EAAY4yJ,EAAZ,EAAgBlhF,CAAhB,EAAmB;AAC3B,QACEtgE,QAAQ,GAAG0mB,KAAK,CAAC1mB,QADnB;AAAA,QAEEQ,SAAS,GAAGkmB,KAAK,CAACyoH,oBAFpB;AAAA,QAGEuE,EAAE,GAAG1zI,QAAQ,GAAGQ,SAAX,GAAuB8/I,KAH9B;AAAA,QAIE3M,EAAE,GAAG3zI,QAAQ,GAAGQ,SAAX,GAAuB+/I,KAJ9B;AAAA,QAKEkB,EAAE,GAAG,OAAO,IAAI,KAAK/N,EAAE,GAAGC,EAAV,CAAX,CALP;AAAA,QAMEt5I,CANF;AAAA,QAMK3M,CANL;AAAA,QAMQyM,CANR;AAAA,QAMW64I,GANX;AAAA,QAMgBG,IANhB;AAAA,QAMsBC,YANtB;AAAA,QAMoCC,aANpC;AAAA,QAMmDC,WANnD;AAAA,QAMgEC,YANhE;AAQAvnJ,6BAAM,CAACqC,IAAP,CAAYiyE,CAAZ,EAAekhF,EAAf;;AACA,SAAKnnJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGk3I,eAAhB,EAAiCl3I,CAAC,IAAI,CAAtC,EAAyC;AACvC,WAAK3M,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,WAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,aAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,cAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,cAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBE,yBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,wBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,wBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,uBAAW,GAAGH,IAAI,GAAG,CAArB;AAEA7yE,aAAC,CAAC6yE,IAAD,CAAD,GAAU,CAACqO,EAAE,CAACrO,IAAD,CAAF,GAAWO,EAAE,IAAIpzE,CAAC,CAAC+yE,aAAD,CAAD,GAAmB/yE,CAAC,CAAC8yE,YAAD,CAAxB,CAAb,GAAuDO,EAAE,IAAIrzE,CAAC,CAACizE,YAAD,CAAD,GAAkBjzE,CAAC,CAACgzE,WAAD,CAAvB,CAA1D,IAAmGmO,EAA7G;AACD;AACF;AACF;;AACD9O,mBAAa,CAAC/jJ,CAAD,EAAI0xE,CAAJ,CAAb;AACD;AACF,GAnTH;AAAA,MAqTE;AACA4yE,YAAU,GAAG,SAAbA,UAAa,CAAStkJ,CAAT,EAAY4yJ,EAAZ,EAAgBlhF,CAAhB,EAAmB;AAC9B,QACEtgE,QAAQ,GAAG0mB,KAAK,CAAC1mB,QADnB;AAAA,QAEEm6E,EAAE,GAAG,MAAMn6E,QAAN,GAAiByyI,MAFxB;AAAA,QAGEr4D,EAAE,GAAG,MAAMp6E,QAAN,GAAiB0yI,MAHxB;AAAA,QAIEhlJ,CAJF;AAAA,QAIKyM,CAJL;AAAA,QAIQ64I,GAJR;AAAA,QAIaG,IAJb;AAAA,QAImBC,YAJnB;AAAA,QAIiCC,aAJjC;AAAA,QAIgDC,WAJhD;AAAA,QAI6DC,YAJ7D;;AAMA,SAAK7lJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,WAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,YAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,YAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBE,uBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,sBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,sBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,qBAAW,GAAGH,IAAI,GAAG,CAArB;AAEA7yE,WAAC,CAAC6yE,IAAD,CAAD,GAAUqO,EAAE,CAACrO,IAAD,CAAF,GAAWh5D,EAAE,IAAIgmE,EAAE,CAAC/M,YAAD,CAAF,GAAmBoO,EAAE,CAACpO,YAAD,CAArB,GAAsC+M,EAAE,CAAC9M,aAAD,CAAF,GAAoBmO,EAAE,CAACnO,aAAD,CAAhE,CAAb,GAAgGj5D,EAAE,IAAIo/C,EAAE,CAAC8Z,WAAD,CAAF,GAAkBkO,EAAE,CAAClO,WAAD,CAApB,GAAoC9Z,EAAE,CAAC+Z,YAAD,CAAF,GAAmBiO,EAAE,CAACjO,YAAD,CAA7D,CAA5G;AACD;AACF;AACF;;AAEDZ,iBAAa,CAAC/jJ,CAAD,EAAI0xE,CAAJ,CAAb;;AAEA,SAAK5yE,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kJ,GAAhB,EAAqB3kJ,CAAC,IAAI,CAA1B,EAA6B;AAC3BslJ,SAAG,GAAGtlJ,CAAC,GAAGwtF,EAAV;;AACA,WAAK/gF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm4I,GAAhB,EAAqBn4I,CAAC,IAAI,CAA1B,EAA6B;AAC3Bg5I,YAAI,GAAGH,GAAG,GAAG74I,CAAb;;AACA,YAAI83I,QAAQ,CAACkB,IAAD,CAAZ,EAAoB;AAClBE,uBAAa,GAAGF,IAAI,GAAGj4D,EAAvB;AACAk4D,sBAAY,GAAGD,IAAI,GAAGj4D,EAAtB;AACAq4D,sBAAY,GAAGJ,IAAI,GAAG,CAAtB;AACAG,qBAAW,GAAGH,IAAI,GAAG,CAArB;AAEAqO,YAAE,CAACrO,IAAD,CAAF,GAAW,OAAOqO,EAAE,CAACrO,IAAD,CAAF,GAAW7yE,CAAC,CAAC6yE,IAAD,CAAnB,IAA6B,MAAMh5D,EAAN,GAAWgmE,EAAE,CAAChN,IAAD,CAAb,IAAuB7yE,CAAC,CAAC8yE,YAAD,CAAD,GAAkB9yE,CAAC,CAAC+yE,aAAD,CAA1C,CAA7B,GAA0F,MAAMj5D,EAAN,GAAWo/C,EAAE,CAAC2Z,IAAD,CAAb,IAAuB7yE,CAAC,CAACgzE,WAAD,CAAD,GAAiBhzE,CAAC,CAACizE,YAAD,CAAzC,CAArG;AACD;AACF;AACF;;AAEDvnJ,6BAAM,CAACqC,IAAP,CAAYmzJ,EAAZ,EAAgBlhF,CAAhB;AAEAqyE,iBAAa,CAAC/jJ,CAAD,EAAI0xE,CAAJ,CAAb;AACD,GAhWH;AAAA,MAkWEohF,MAAM,GAAG,SAATA,MAAS,CAAS9yJ,CAAT,EAAY4yJ,EAAZ,EAAgBlhF,CAAhB,EAAmB;AAC1B4yE,cAAU,CAACtkJ,CAAD,EAAI4yJ,EAAJ,EAAQlhF,CAAR,CAAV;AACD,GApWH;;AAsWA,SAAO;AACL;AACAkzE,SAAK,EAAE,eAASz3E,CAAT,EAAYpgC,CAAZ,EAAe;AACpB,UAAIjV,KAAK,CAAC0oH,gBAAN,KAA2B,CAA/B,EAAkC;AAChCgS,qBAAa,CAACzlH,CAAD,CAAb;AACD;;AACDmlH,yBAAmB,CAAC/kF,CAAD,EAAIpgC,CAAJ,CAAnB;;AACA,UAAIjV,KAAK,CAACyoH,oBAAN,GAA6B,CAAjC,EAAoC;AAClC;AACAoS,eAAO,CAAC,CAAD,EAAIpB,EAAJ,EAAQpkF,CAAR,CAAP;AACAwlF,eAAO,CAAC,CAAD,EAAI/nB,EAAJ,EAAQ79F,CAAR,CAAP;AACA0lH,gBAAQ,CAACtlF,CAAD,EAAIpgC,CAAJ,EAAOwkH,EAAP,EAAW3mB,EAAX,CAAR;AACAsnB,2BAAmB,CAAC/kF,CAAD,EAAIpgC,CAAJ,CAAnB;AACD;;AACD3vC,+BAAM,CAACqC,IAAP,CAAY0tE,CAAZ,EAAeokF,EAAf;AACAn0J,+BAAM,CAACqC,IAAP,CAAYstC,CAAZ,EAAe69F,EAAf;AACAkoB,YAAM,CAAC,CAAD,EAAIvB,EAAJ,EAAQpkF,CAAR,CAAN;AACA2lF,YAAM,CAAC,CAAD,EAAIloB,EAAJ,EAAQ79F,CAAR,CAAN;AACA0lH,cAAQ,CAACtlF,CAAD,EAAIpgC,CAAJ,EAAOwkH,EAAP,EAAW3mB,EAAX,CAAR;AACAsnB,yBAAmB,CAAC/kF,CAAD,EAAIpgC,CAAJ,CAAnB;AACD;AApBI,GAAP;AAsBD,CA7XM,C;;ACRQ,mFAAoB,iBAAiB,qCAAqC,+CAA+C,GAAG,GAAG,E;;ACA/H,uLAA6G,4FAA4F,sBAAsB,mBAAmB,mBAAmB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,wIAAwI,wCAAwC,kCAAkC,+DAA+D,yDAAyD,yDAAyD,yDAAyD,8NAA8N,KAAK,2BAA2B,GAAG,GAAG,E;;ACA7kC,uLAA6G,4FAA4F,sBAAsB,mBAAmB,mBAAmB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,wIAAwI,wCAAwC,kCAAkC,+DAA+D,yDAAyD,yDAAyD,yDAAyD,+NAA+N,KAAK,2BAA2B,GAAG,GAAG,E;;ACA9kC,oJAA2F,sBAAsB,uBAAuB,iBAAiB,6CAA6C,gCAAgC,gCAAgC,kIAAkI,2DAA2D,yDAAyD,uDAAuD,KAAK,0DAA0D,2DAA2D,yDAAyD,uDAAuD,KAAK,gEAAgE,2DAA2D,yDAAyD,uDAAuD,KAAK,0DAA0D,2DAA2D,yDAAyD,uDAAuD,KAAK,sEAAsE,yDAAyD,mDAAmD,KAAK,mDAAmD,yDAAyD,mDAAmD,KAAK,4CAA4C,yDAAyD,mDAAmD,KAAK,gDAAgD,yDAAyD,mDAAmD,KAAK,6BAA6B,GAAG,GAAG,E;;ACAx7D,sJAA2F,sBAAsB,uBAAuB,iBAAiB,6CAA6C,gCAAgC,gCAAgC,kIAAkI,2DAA2D,yDAAyD,uDAAuD,KAAK,0DAA0D,2DAA2D,yDAAyD,uDAAuD,KAAK,gEAAgE,2DAA2D,yDAAyD,uDAAuD,KAAK,0DAA0D,2DAA2D,yDAAyD,uDAAuD,KAAK,sEAAsE,qDAAqD,KAAK,mDAAmD,qDAAqD,KAAK,4CAA4C,qDAAqD,KAAK,gDAAgD,qDAAqD,KAAK,6BAA6B,GAAG,GAAG,E;;ACA5tD,0KAA6G,4FAA4F,sBAAsB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,wIAAwI,wCAAwC,kCAAkC,wDAAwD,uDAAuD,OAAO,4DAA4D,uDAAuD,OAAO,yDAAyD,uDAAuD,OAAO,4DAA4D,uDAAuD,OAAO,MAAM,2BAA2B,GAAG,GAAG,E;;ACAjkC,0KAA6G,4FAA4F,kHAAkH,sBAAsB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,sIAAsI,wCAAwC,kCAAkC,sBAAsB,wDAAwD,mBAAmB,8DAA8D,sFAAsF,OAAO,4DAA4D,mBAAmB,8DAA8D,sFAAsF,OAAO,yDAAyD,mBAAmB,8DAA8D,sFAAsF,OAAO,4DAA4D,mBAAmB,8DAA8D,sFAAsF,OAAO,0BAA0B,kDAAkD,OAAO,KAAK,6BAA6B,GAAG,GAAG,E;;ACA3tD,6IAA2F,uBAAuB,iBAAiB,6CAA6C,wBAAwB,yBAAyB,GAAG,GAAG,E;;ACAvO,mKAA6G,4FAA4F,sBAAsB,qBAAqB,qBAAqB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,wIAAwI,wCAAwC,kCAAkC,+DAA+D,yDAAyD,yDAAyD,yDAAyD,uCAAuC,yGAAyG,KAAK,2BAA2B,GAAG,GAAG,E;;ACAngC,mKAA6G,4FAA4F,sBAAsB,kBAAkB,sBAAsB,sBAAsB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,wIAAwI,wCAAwC,kCAAkC,+DAA+D,yDAAyD,yDAAyD,yDAAyD,iIAAiI,KAAK,2BAA2B,GAAG,GAAG,E;;ACAxgC,mKAA6G,4FAA4F,sBAAsB,qBAAqB,qBAAqB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,wIAAwI,wCAAwC,kCAAkC,+DAA+D,yDAAyD,yDAAyD,yDAAyD,uEAAuE,iEAAiE,KAAK,2BAA2B,GAAG,GAAG,E;;ACA3/B,4JAA6G,4FAA4F,sBAAsB,mBAAmB,mBAAmB,mBAAmB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,wIAAwI,wCAAwC,kCAAkC,+DAA+D,yDAAyD,yDAAyD,yDAAyD,gLAAgL,KAAK,2BAA2B,GAAG,GAAG,E;;ACAljC,4JAAsG,8GAA8G,4FAA4F,sBAAsB,kBAAkB,kBAAkB,uBAAuB,iBAAiB,6CAA6C,mDAAmD,wIAAwI,wCAAwC,kCAAkC,oDAAoD,gEAAgE,wBAAwB,gCAAgC,yJAAyJ,QAAQ,OAAO,wEAAwE,mDAAmD,uBAAuB,wBAAwB,SAAS,OAAO,gBAAgB,SAAS,OAAO,2BAA2B,yJAAyJ,QAAQ,OAAO,wEAAwE,mDAAmD,uBAAuB,wBAAwB,SAAS,OAAO,gBAAgB,SAAS,OAAO,qBAAqB,gFAAgF,KAAK,2BAA2B,GAAG,GAAG,E;;ACAxyD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IACA;AACE;AACA;AAEA;AAeAy1G,iCAAgB,GAAG,EApBrB;AAAA,IAqBEqO,wBAAO,GAAG,CArBZ;AAuBO,IAAMkC,mCAAkB,GAAG,SAArBA,kBAAqB,CAASrlJ,KAAT,EAAgB;AAChD,MACA;AACA;AACA;AACEgiJ,0BAAwB,GAAG,IAAI7J,MAAJ,CAAWqJ,0BAAX,EAAqBS,qCAArB,CAJ7B;AAAA,MAKEC,wBAAwB,GAAG,IAAI/J,MAAJ,CAAWqJ,0BAAX,EAAqBW,qCAArB,CAL7B;AAAA,MAMEmD,yBAAyB,GAAG,IAAInN,MAAJ,CAAWqJ,0BAAX,EAAqB+D,oBAArB,CAN9B;AAAA,MAOEC,2BAA2B,GAAG,IAAIrN,MAAJ,CAAWqJ,0BAAX,EAAqBiE,sBAArB,CAPhC;AAAA,MAQEC,6BAA6B,GAAG,IAAIvN,MAAJ,CAAWqJ,0BAAX,EAAqBmE,wBAArB,CARlC;AAAA,MASEC,6BAA6B,GAAG,IAAIzN,MAAJ,CAAWqJ,0BAAX,EAAqBqE,wBAArB,CATlC;AAAA,MAUEC,kBAAkB,GAAG,IAAI3N,MAAJ,CAAWqJ,0BAAX,EAAqBuE,aAArB,CAVvB;AAAA,MAWEC,sBAAsB,GAAG,IAAI7N,MAAJ,CAAWqJ,0BAAX,EAAqByE,iBAArB,CAX3B;AAAA,MAYEC,sBAAsB,GAAG,IAAI/N,MAAJ,CAAWqJ,0BAAX,EAAqB2E,iBAArB,CAZ3B;AAAA,MAaEC,sBAAsB,GAAG,IAAIjO,MAAJ,CAAWqJ,0BAAX,EAAqB6E,iBAArB,CAb3B;AAAA,MAcEC,eAAe,GAAG,IAAInO,MAAJ,CAAWqJ,0BAAX,EAAqB+E,UAArB,CAdpB;AAAA,MAeEC,sBAAsB,GAAG,IAAIrO,MAAJ,CAAWqJ,0BAAX,EAAqBiF,iBAArB,CAf3B;AAAA,MAgBE;AAEA;AACA;AACA;AACA;AACA;AACA;AACAlE,WAAS,GAAGviJ,KAAK,CAACwiJ,oBAAN,CAA2B,CAA3B,CAxBd;AAAA,MAyBE;AACA;AACA;AACA;AACA;AACAC,WAAS,GAAGziJ,KAAK,CAACwiJ,oBAAN,CAA2B,CAA3B,CA9Bd;AAAA,MA+BE;AACA;AACA;AACA;AACA;AACAE,WAAS,GAAG1iJ,KAAK,CAACwiJ,oBAAN,CAA2B,CAA3B,CApCd;AAAA,MAqCE;AACA;AACA;AACA;AACA;AACAkE,WAAS,GAAG1mJ,KAAK,CAACwiJ,oBAAN,CAA2B,CAA3B,CA1Cd;AAAA,MA4CE;AACAp4H,OAAK,GAAGpqB,KAAK,CAACg1I,eAAN,EA7CV;AAAA,MA8CEp2D,EAAE,GAAGx0D,KAAK,CAAC+nH,UA9Cb;AAAA,MA+CEtzD,EAAE,GAAGz0D,KAAK,CAACgoH,WA/Cb;AAAA,MAiDE1uI,QAAQ,GAAG0mB,KAAK,CAAC1mB,QAjDnB;AAAA,MAkDEovI,gBAAgB,GAAG1oH,KAAK,CAAC0oH,gBAlD3B;AAAA,MAmDE5uI,SAAS,GAAGkmB,KAAK,CAACyoH,oBAnDpB;AAAA,MAqDEuP,OAAO,GAAGh4H,KAAK,CAACioH,WAAN,GAAoBjoH,KAAK,CAAC+nH,UArDtC;AAAA,MAsDEkQ,OAAO,GAAGj4H,KAAK,CAACkoH,YAAN,GAAqBloH,KAAK,CAACgoH,WAtDvC;AAAA,MAwDEkQ,gBAAgB,GAAGxN,iCAxDrB;AAAA,MAyDEyO,OAAO,GAAGJ,wBAzDZ;AAAA,MA2DE;AACAW,MAAI,GAAG,MAAM1B,OA5Df;AAAA,MA6DE2B,IAAI,GAAG,MAAM1B,OA7Df;AAAA,MA8DE2B,KAAK,GAAG,OAAO5B,OAAO,GAAGA,OAAjB,CA9DV;AAAA,MA+DE6B,KAAK,GAAG,OAAO5B,OAAO,GAAGA,OAAjB,CA/DV;AAAA,MAgEE7iI,CAAC,GAAG,OAAOwkI,KAAK,GAAGC,KAAf,CAhEN;AAAA,MAkEE7M,EAAE,GAAG1zI,QAAQ,GAAGQ,SAAX,GAAuB8/I,KAlE9B;AAAA,MAmEE3M,EAAE,GAAG3zI,QAAQ,GAAGQ,SAAX,GAAuB+/I,KAnE9B;AAAA,MAoEEkB,EAAE,GAAG,OAAO,IAAI,KAAK/N,EAAE,GAAGC,EAAV,CAAX,CApEP;AAAA,MAsEE7/H,CAAC,GAAG+rI,OAAO,GAAG7/I,QAtEhB;AAAA,MAuEEpR,CAAC,GAAGwgJ,gBAAgB,GAAGpvI,QAvEzB;AAAA,MAyEEo/I,QAAQ,GAAG,CAAC,IAAIjkE,EAAL,EAAS,IAAID,EAAb,CAzEb;AAAA,MA2EE;AACA+nE,cAAY,GAAG,CAACjE,SAAD,CA5EjB;AAAA,MA6EEkE,cAAc,GAAG,CAACnE,SAAD,EAAYC,SAAZ,CA7EnB;AAAA,MA8EEC,gBAAgB,GAAG,CAACJ,SAAD,EAAYE,SAAZ,EAAuBC,SAAvB,CA9ErB;AAAA,MA+EEmE,gBAAgB,GAAG,CAACpE,SAAD,EAAYC,SAAZ,EAAuBgE,SAAvB,CA/ErB;AAAA,MAiFEpuI,IAAI,GAAG,SAAPA,IAAO,GAAW;AAChB,QAAI0hI,QAAJ,CADgB,CAGhB;;AACAA,YAAQ,GAAG;AACT;AACAyI,eAAS,EAAE,CAFF;AAGTC,eAAS,EAAE,CAHF;AAIT;AACA5rI,UAAI,EAAEgsI,QALG;AAMTjlE,QAAE,EAAE,MAAMn6E,QAAN,GAAiB0+I,OANZ;AAOTtkE,QAAE,EAAE,MAAMp6E,QAAN,GAAiB2+I;AAPZ,KAAX;AASAL,4BAAwB,CAAChI,QAAzB,CAAkCA,QAAlC;AACAkI,4BAAwB,CAAClI,QAAzB,CAAkCA,QAAlC,EAdgB,CAgBhB;;AACAA,YAAQ,GAAG;AACT;AACA0I,eAAS,EAAE,CAFF;AAGT;AACA5rI,UAAI,EAAEgsI;AAJG,KAAX;AAMAwC,6BAAyB,CAACtL,QAA1B,CAAmCA,QAAnC;AACAwL,+BAA2B,CAACxL,QAA5B,CAAqCA,QAArC,EAxBgB,CA0BhB;;AACAA,YAAQ,GAAG;AACT;AACAyI,eAAS,EAAE,CAFF;AAGTC,eAAS,EAAE,CAHF;AAIT;AACA5rI,UAAI,EAAEgsI;AALG,KAAX;AAOA4C,iCAA6B,CAAC1L,QAA9B,CAAuCA,QAAvC,EAlCgB,CAoChB;;AACAA,YAAQ,GAAG;AACT;AACAyI,eAAS,EAAE,CAFF;AAGTC,eAAS,EAAE,CAHF;AAITgE,eAAS,EAAE,CAJF;AAKT;AACA5vI,UAAI,EAAEgsI;AANG,KAAX;AAQA8C,iCAA6B,CAAC5L,QAA9B,CAAuCA,QAAvC,EA7CgB,CA+ChB;;AACAA,YAAQ,GAAG;AACT;AACAyI,eAAS,EAAE,CAFF;AAGTC,eAAS,EAAE,CAHF;AAIT;AACA5rI,UAAI,EAAEgsI,QALG;AAMTgB,UAAI,EAAEA,IANG;AAOTC,UAAI,EAAEA;AAPG,KAAX;AASAiC,0BAAsB,CAAChM,QAAvB,CAAgCA,QAAhC;AACAoM,0BAAsB,CAACpM,QAAvB,CAAgCA,QAAhC,EA1DgB,CA4DhB;;AACAA,YAAQ,GAAG;AACT;AACAyI,eAAS,EAAE,CAFF;AAGTC,eAAS,EAAE,CAHF;AAIT;AACA5rI,UAAI,EAAEgsI,QALG;AAMTtjI,OAAC,EAAEA,CANM;AAOTwkI,WAAK,EAAEA,KAPE;AAQTC,WAAK,EAAEA;AARE,KAAX;AAUAiC,0BAAsB,CAAClM,QAAvB,CAAgCA,QAAhC,EAvEgB,CAyEhB;;AACAA,YAAQ,GAAG;AACT;AACAyI,eAAS,EAAE,CAFF;AAGTC,eAAS,EAAE,CAHF;AAIT;AACA5rI,UAAI,EAAEgsI,QALG;AAMT1L,QAAE,EAAEA,EANK;AAOTC,QAAE,EAAEA,EAPK;AAQT8N,QAAE,EAAEA;AARK,KAAX;AAUAmB,mBAAe,CAACtM,QAAhB,CAAyBA,QAAzB,EApFgB,CAsFhB;;AACAA,YAAQ,GAAG;AACT;AACAuI,eAAS,EAAE,CAFF;AAGTE,eAAS,EAAE,CAHF;AAITC,eAAS,EAAE,CAJF;AAKT;AACA5rI,UAAI,EAAEgsI,QANG;AAOTtrI,OAAC,EAAEA,CAPM;AAQTllB,OAAC,EAAEA;AARM,KAAX;AAUAk0J,0BAAsB,CAACxM,QAAvB,CAAgCA,QAAhC;AACD,GAnLH;AAAA,MAqLE8K,aAAa,GAAG,SAAhBA,aAAgB,GAAW;AACzB7B,SAAK,CAAChC,cAAN,CACEuF,sBADF,EAEE7D,gBAFF,EAGED,SAHF;AAKD,GA3LH;AAAA,MA6LE9L,UAAU,GAAG,SAAbA,UAAa,GAAW;AACtB;AACAqM,SAAK,CAAChC,cAAN,CACEe,wBADF,EAEE4E,cAFF,EAGElE,SAHF,EAFsB,CAOtB;;AACAO,SAAK,CAAChC,cAAN,CACEqE,yBADF,EAEEqB,YAFF,EAGEjE,SAHF,EARsB,CAatB;;AACAO,SAAK,CAAChC,cAAN,CACEiB,wBADF,EAEE0E,cAFF,EAGElE,SAHF,EAdsB,CAmBtB;;AACAO,SAAK,CAAChC,cAAN,CACEqE,yBADF,EAEEqB,YAFF,EAGEjE,SAHF;AAKD,GAtNH;AAAA,MAwNEqC,QAAQ,GAAG,SAAXA,QAAW,GAAW;AACpB,QAAIhnJ,CAAJ,CADoB,CAEpB;;AACAklJ,SAAK,CAAChC,cAAN,CACE+E,sBADF,EAEEY,cAFF,EAGElE,SAHF,EAHoB,CAQpB;;AACAO,SAAK,CAAChC,cAAN,CACEuE,2BADF,EAEEmB,YAFF,EAGEjE,SAHF,EAToB,CAcpB;;AACAO,SAAK,CAAChC,cAAN,CACEyE,6BADF,EAEEkB,cAFF,EAGElE,SAHF,EAfoB,CAoBpB;;AACA,SAAK3kJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGukJ,gBAAhB,EAAkCvkJ,CAAC,IAAI,CAAvC,EAA0C;AACxC;AACAklJ,WAAK,CAAChC,cAAN,CACEiF,sBADF,EAEEU,cAFF,EAGElE,SAHF;AAKD,KA5BmB,CA6BpB;;;AACAO,SAAK,CAAChC,cAAN,CACEmF,sBADF,EAEEQ,cAFF,EAGElE,SAHF,EA9BoB,CAmCpB;;AACAO,SAAK,CAAChC,cAAN,CACEqE,yBADF,EAEEqB,YAFF,EAGEjE,SAHF;AAKD,GAjQH;AAAA,MAmQEuC,OAAO,GAAG,SAAVA,OAAU,GAAW;AACnB,QAAIlnJ,CAAJ,CADmB,CAEnB;;AACAklJ,SAAK,CAAChC,cAAN,CACE6E,kBADF,EAEEa,YAFF,EAGEjE,SAHF,EAHmB,CAQnB;;AACA,SAAK3kJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGukJ,gBAAhB,EAAkCvkJ,CAAC,IAAI,CAAvC,EAA0C;AACxC;AACAklJ,WAAK,CAAChC,cAAN,CACEqF,eADF,EAEEM,cAFF,EAGElE,SAHF,EAFwC,CAQxC;;AACAO,WAAK,CAAChC,cAAN,CACEqE,yBADF,EAEEqB,YAFF,EAGEjE,SAHF;AAKD;AACF,GA3RH;AAAA,MA6RE8B,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAW;AAC/BvB,SAAK,CAAChC,cAAN,CACE2E,6BADF,EAEEiB,gBAFF,EAGEnE,SAHF;AAKD,GAnSH;AAAA,MAqSEoE,YAAY,GAAG,SAAfA,YAAe,GAAW;AACxB7D,SAAK,CAAChC,cAAN,CACE6E,kBADF,EAEEa,YAFF,EAGEjE,SAHF;AAKD,GA3SH;AAAA,MA6SEqE,gBAAgB,GAAG;AACjB7P,SAAK,EAAE,iBAAW;AAChB,UAAIpE,gBAAgB,KAAK,CAAzB,EAA4B;AAC1BgS,qBAAa;AACd;;AACDN,yBAAmB;;AACnB,UAAItgJ,SAAS,GAAG,CAAhB,EAAmB;AACjB+gJ,eAAO;AACPF,gBAAQ;AACRP,2BAAmB;AACpB;;AACDsC,kBAAY;AACZlQ,gBAAU;AACVmO,cAAQ;AACRP,yBAAmB;AACpB;AAfgB,GA7SrB,CADgD,CAgUhD;;;AACAlsI,MAAI;AAEJ,SAAOyuI,gBAAP;AACD,CApUM,C;;ACvCP;AAEO,IAAMC,KAAK,GAAG,SAARA,KAAQ,CAASz0J,CAAT,EAAYuV,CAAZ,EAAe;AAClC,MAAI6P,CAAJ;AACAplB,GAAC,GAAGC,IAAI,CAAC2M,GAAL,CAAS5M,CAAT,CAAJ;AACAuV,GAAC,GAAGtV,IAAI,CAAC2M,GAAL,CAAS2I,CAAT,CAAJ;AACA6P,GAAC,GAAGnlB,IAAI,CAACE,GAAL,CAASH,CAAT,EAAYuV,CAAZ,CAAJ;AACAvV,GAAC,GAAGC,IAAI,CAACC,GAAL,CAASF,CAAT,EAAYuV,CAAZ,CAAJ;AACA,MAAIvV,CAAC,KAAK,CAAV,EAAa,OAAO,CAAP;AACbolB,GAAC,GAAGA,CAAC,GAAGplB,CAAR;AACA,SAAOA,CAAC,GAAGC,IAAI,CAAC2O,IAAL,CAAU,IAAIwW,CAAC,GAAGA,CAAlB,CAAX;AACD,CATM,C;;ACFP;AAEA;AACA;AACO,IAAMsvI,kBAAkB,GAAG,SAArBA,kBAAqB,CAASC,KAAT,EAAgBC,KAAhB,EAAuBC,KAAvB,EAA8BC,KAA9B,EAAqCC,KAArC,EAA4C;AAC5E,MAAI5wG,CAAC,GAAG,CAAR;AAAA,MAAWtlD,CAAX;AAAA,MAAcyM,CAAd;;AACA,OAAKzM,CAAC,GAAG,CAAJ,EAAOyM,CAAC,GAAGqpJ,KAAK,GAAG,CAAxB,EAA2B91J,CAAC,GAAG81J,KAA/B,EAAsCrpJ,CAAC,GAAGzM,CAAJ,EAAOA,CAAC,IAAI,CAAlD,EAAqD;AAAE,QAAMg2J,KAAK,CAACh2J,CAAD,CAAL,GAAWk2J,KAAZ,KAAwBF,KAAK,CAACvpJ,CAAD,CAAL,GAAWypJ,KAApC,IAAkDD,KAAK,GAAG,CAACF,KAAK,CAACtpJ,CAAD,CAAL,GAAWspJ,KAAK,CAAC/1J,CAAD,CAAjB,KAAyBk2J,KAAK,GAAGF,KAAK,CAACh2J,CAAD,CAAtC,KAA8Cg2J,KAAK,CAACvpJ,CAAD,CAAL,GAAWupJ,KAAK,CAACh2J,CAAD,CAA9D,IAAqE+1J,KAAK,CAAC/1J,CAAD,CAAxI,EAA8I;AAAIslD,OAAC,GAAG,CAACA,CAAL;AAAS;AACjN;;AACD,SAAO,CAAC,CAACA,CAAT;AACD,CALM,C,CAOP;AACA;AACA;AACA;;AACO,IAAM6wG,IAAI,GAAG,SAAPA,IAAO,CAAS38I,EAAT,EAAaC,EAAb,EAAiBC,EAAjB,EAAqBC,EAArB,EAAyB;AAC3C,OAAKH,EAAL,GAAUA,EAAV;AACA,OAAKC,EAAL,GAAUA,EAAV;AACA,OAAKC,EAAL,GAAUA,EAAV;AACA,OAAKC,EAAL,GAAUA,EAAV;AACD,CALM;;AAOPw8I,IAAI,CAAC31J,SAAL,CAAe41J,cAAf,GAAgC,UAAS78I,IAAT,EAAe;AAC7C,MAAIxV,MAAJ;AAAA,MACEq9C,EAAE,GAAG;AACHjgD,KAAC,EAAE,KAAKqY,EADL;AAEH9C,KAAC,EAAE,KAAK+C;AAFL,GADP;AAAA,MAKE4nC,EAAE,GAAG;AACHlgD,KAAC,EAAE,KAAKuY,EADL;AAEHhD,KAAC,EAAE,KAAKiD;AAFL,GALP;AAAA,MASEmlE,EAAE,GAAG;AACH39E,KAAC,EAAEoY,IAAI,CAACC,EADL;AAEH9C,KAAC,EAAE6C,IAAI,CAACE;AAFL,GATP;AAAA,MAaEiwH,EAAE,GAAG;AACHvoI,KAAC,EAAEoY,IAAI,CAACG,EADL;AAEHhD,KAAC,EAAE6C,IAAI,CAACI;AAFL,GAbP;AAAA,MAiBE08I,IAAI,GAAG,CAAC3sB,EAAE,CAACvoI,CAAH,GAAO29E,EAAE,CAAC39E,CAAX,KAAiBigD,EAAE,CAAC1qC,CAAH,GAAOooE,EAAE,CAACpoE,CAA3B,IAAgC,CAACgzH,EAAE,CAAChzH,CAAH,GAAOooE,EAAE,CAACpoE,CAAX,KAAiB0qC,EAAE,CAACjgD,CAAH,GAAO29E,EAAE,CAAC39E,CAA3B,CAjBzC;AAAA,MAkBEm1J,IAAI,GAAG,CAACj1G,EAAE,CAAClgD,CAAH,GAAOigD,EAAE,CAACjgD,CAAX,KAAiBigD,EAAE,CAAC1qC,CAAH,GAAOooE,EAAE,CAACpoE,CAA3B,IAAgC,CAAC2qC,EAAE,CAAC3qC,CAAH,GAAO0qC,EAAE,CAAC1qC,CAAX,KAAiB0qC,EAAE,CAACjgD,CAAH,GAAO29E,EAAE,CAAC39E,CAA3B,CAlBzC;AAAA,MAmBEo1J,GAAG,GAAG,CAAC7sB,EAAE,CAAChzH,CAAH,GAAOooE,EAAE,CAACpoE,CAAX,KAAiB2qC,EAAE,CAAClgD,CAAH,GAAOigD,EAAE,CAACjgD,CAA3B,IAAgC,CAACuoI,EAAE,CAACvoI,CAAH,GAAO29E,EAAE,CAAC39E,CAAX,KAAiBkgD,EAAE,CAAC3qC,CAAH,GAAO0qC,EAAE,CAAC1qC,CAA3B,CAnBxC;AAAA,MAoBE8/I,EApBF;AAAA,MAoBMC,EApBN;;AAsBA,MAAIF,GAAG,KAAK,CAAZ,EAAe;AACbC,MAAE,GAAGH,IAAI,GAAGE,GAAZ;AACAE,MAAE,GAAGH,IAAI,GAAGC,GAAZ;;AAEA,QAAI,KAAKC,EAAL,IAAWA,EAAE,IAAI,CAAjB,IAAsB,KAAKC,EAA3B,IAAiCA,EAAE,IAAI,CAA3C,EAA8C;AAC5C1yJ,YAAM,GAAG,IAAT;AACD,KAFD,MAEO;AACLA,YAAM,GAAG,KAAT;AACD;AACF,GATD,MASO;AACL,QAAIsyJ,IAAI,KAAK,CAAT,IAAcC,IAAI,KAAK,CAA3B,EAA8B;AAC5BvyJ,YAAM,GAAG,IAAT,CAD4B,CACb;AAChB,KAFD,MAEO;AACLA,YAAM,GAAG,KAAT,CADK,CACW;AACjB;AACF;;AACD,SAAOA,MAAP;AACD,CAxCD,C,CA0CA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM2yJ,OAAO,GAAG,SAAVA,OAAU,CAASzxI,KAAT,EAAgB0xI,QAAhB,EAA0BC,QAA1B,EAAoCz1J,CAApC,EAAuCuV,CAAvC,EAA0C;AAC/D,OAAKuO,KAAL,GAAaA,KAAb;AACA,OAAK29H,YAAL,GAAoB+T,QAApB;AACA,OAAK9T,YAAL,GAAoB+T,QAApB;AACA,OAAKD,QAAL,GAAgB,IAAIv3J,KAAJ,CAAU6lB,KAAV,CAAhB;AACA,OAAK2xI,QAAL,GAAgB,IAAIx3J,KAAJ,CAAU6lB,KAAV,CAAhB,CAL+D,CAM/D;;AACA,OAAK9jB,CAAL,GAASA,CAAC,IAAI,CAAd;AACA,OAAKuV,CAAL,GAASA,CAAC,IAAI,CAAd;AACD,CATM;AAWPnW,MAAM,CAAC6qC,cAAP,CAAsBsrH,OAAO,CAACl2J,SAA9B,EAAyC,GAAzC,EAA8C;AAC5CukB,KAAG,EAAE,eAAW;AACd,WAAO,KAAK2zE,EAAZ;AACD,GAH2C;AAI5Cn2F,KAAG,EAAE,aAAS0rC,CAAT,EAAY;AACf,QAAIjuC,CAAJ,EAAOc,GAAP;;AACA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG,KAAKmkB,KAAvB,EAA8BjlB,CAAC,GAAGc,GAAlC,EAAuCd,CAAC,EAAxC,EAA4C;AAC1C,WAAK22J,QAAL,CAAc32J,CAAd,IAAmB,KAAK4iJ,YAAL,CAAkB5iJ,CAAlB,IAAuBiuC,CAA1C;AACD;;AACD,SAAKyqD,EAAL,GAAUzqD,CAAV;AACD;AAV2C,CAA9C;AAaA1tC,MAAM,CAAC6qC,cAAP,CAAsBsrH,OAAO,CAACl2J,SAA9B,EAAyC,GAAzC,EAA8C;AAC5CukB,KAAG,EAAE,eAAW;AACd,WAAO,KAAK4zE,EAAZ;AACD,GAH2C;AAI5Cp2F,KAAG,EAAE,aAAS0rC,CAAT,EAAY;AACf,QAAIjuC,CAAJ,EAAOc,GAAP;;AACA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG,KAAKmkB,KAAvB,EAA8BjlB,CAAC,GAAGc,GAAlC,EAAuCd,CAAC,EAAxC,EAA4C;AAC1C,WAAK42J,QAAL,CAAc52J,CAAd,IAAmB,KAAK6iJ,YAAL,CAAkB7iJ,CAAlB,IAAuBiuC,CAA1C;AACD;;AACD,SAAK0qD,EAAL,GAAU1qD,CAAV;AACD;AAV2C,CAA9C;;AAaAyoH,OAAO,CAACl2J,SAAR,CAAkBq2J,UAAlB,GAA+B,YAAW;AACxC,SAAO,IAAP;AACD,CAFD,C,CAIA;AACA;;;AACAH,OAAO,CAACl2J,SAAR,CAAkBs2J,QAAlB,GAA6B,UAAS31J,CAAT,EAAYuV,CAAZ,EAAe;AAC1C,MACEigJ,QAAQ,GAAG,KAAKA,QADlB;AAAA,MAEEC,QAAQ,GAAG,KAAKA,QAFlB;AAAA,MAGE3xI,KAAK,GAAG,KAAKA,KAHf;AAAA,MAIEqgC,CAAC,GAAG,CAJN;AAAA,MAKEtlD,CALF;AAAA,MAKKyM,CALL;;AAOA,OAAKzM,CAAC,GAAG,CAAJ,EAAOyM,CAAC,GAAGwY,KAAK,GAAG,CAAxB,EAA2BjlB,CAAC,GAAGilB,KAA/B,EAAsCxY,CAAC,GAAGzM,CAAJ,EAAOA,CAAC,IAAI,CAAlD,EAAqD;AACnD,QAAM42J,QAAQ,CAAC52J,CAAD,CAAR,GAAc0W,CAAf,KAAuBkgJ,QAAQ,CAACnqJ,CAAD,CAAR,GAAciK,CAAtC,IACDvV,CAAC,GAAG,CAACw1J,QAAQ,CAAClqJ,CAAD,CAAR,GAAckqJ,QAAQ,CAAC32J,CAAD,CAAvB,KAA+B0W,CAAC,GAAGkgJ,QAAQ,CAAC52J,CAAD,CAA3C,KAAmD42J,QAAQ,CAACnqJ,CAAD,CAAR,GAAcmqJ,QAAQ,CAAC52J,CAAD,CAAzE,IAAgF22J,QAAQ,CAAC32J,CAAD,CAD/F,EACqG;AACnGslD,OAAC,GAAG,CAACA,CAAL;AACD;AACF,GAbyC,CAc1C;;;AACA,SAAO,CAAC,CAACA,CAAT;AACD,CAhBD,C,CAkBA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMyxG,SAAS,GAAG,SAAZA,SAAY,CAAS51J,CAAT,EAAYuV,CAAZ,EAAetL,KAAf,EAAsBC,MAAtB,EAA8B;AACrD,OAAKlK,CAAL,GAASA,CAAT;AACA,OAAKuV,CAAL,GAASA,CAAT;AACA,OAAKtL,KAAL,GAAaA,KAAb;AACA,OAAKC,MAAL,GAAcA,MAAd;AACA,OAAK2rJ,aAAL,GAAqB93J,SAArB;AACD,CANM;;AAQP63J,SAAS,CAACv2J,SAAV,CAAoBq2J,UAApB,GAAiC,YAAW;AAC1C,MACE11J,CADF,EACKuV,CADL,EACQ2X,CADR,EACW82B,CADX;;AAGA,MAAI,CAAC,KAAK6xG,aAAV,EAAyB;AACvB71J,KAAC,GAAG,KAAKA,CAAT;AACAuV,KAAC,GAAG,KAAKA,CAAT;AACA2X,KAAC,GAAG,KAAKjjB,KAAT;AACA+5C,KAAC,GAAG,KAAK95C,MAAT;AACA,SAAK2rJ,aAAL,GAAqB,IAAIN,OAAJ,CAAY,CAAZ,EAAe,CAACv1J,CAAD,EAAIA,CAAC,GAAGktB,CAAR,EAAWltB,CAAC,GAAGktB,CAAf,EAAkBltB,CAAlB,CAAf,EAAqC,CAACuV,CAAD,EAAIA,CAAJ,EAAOA,CAAC,GAAGyuC,CAAX,EAAczuC,CAAC,GAAGyuC,CAAlB,CAArC,CAArB;AACD;;AACD,SAAO,KAAK6xG,aAAZ;AACD,CAZD;;AAcAD,SAAS,CAACv2J,SAAV,CAAoBs2J,QAApB,GAA+B,UAAS31J,CAAT,EAAYuV,CAAZ,EAAe;AAC5C,SAAOvV,CAAC,IAAI,KAAKA,CAAV,IAAeA,CAAC,IAAI,KAAKA,CAAL,GAAS,KAAKiK,KAAlC,IACLsL,CAAC,IAAI,KAAKA,CADL,IACUA,CAAC,IAAI,KAAKA,CAAL,GAAS,KAAKrL,MADpC;AAED,CAHD,C,CAKA;;;AACA,IAAI4rJ,iBAAiB,GAAG,SAApBA,iBAAoB,CAAS91J,CAAT,EAAYuV,CAAZ,EAAewgJ,EAAf,EAAmBC,EAAnB,EAAuBC,QAAvB,EAAiC;AACvD,MACEzgJ,EAAE,GAAG,IAAIvX,KAAJ,CAAUg4J,QAAV,CADP;AAAA,MAEExgJ,EAAE,GAAG,IAAIxX,KAAJ,CAAUg4J,QAAV,CAFP;AAAA,MAGEh8D,KAAK,GAAG,IAAIh6F,IAAI,CAAC0O,EAAT,GAAcsnJ,QAHxB;AAAA,MAIE1nJ,KAJF;AAAA,MAIS1P,CAJT;;AAMA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGo3J,QAAhB,EAA0Bp3J,CAAC,IAAI,CAA/B,EAAkC;AAChC0P,SAAK,GAAG0rF,KAAK,GAAGp7F,CAAhB;AACA2W,MAAE,CAAC3W,CAAD,CAAF,GAAQmB,CAAC,GAAG+1J,EAAE,GAAG91J,IAAI,CAAC8O,GAAL,CAASR,KAAT,CAAjB;AACAkH,MAAE,CAAC5W,CAAD,CAAF,GAAQ0W,CAAC,GAAGygJ,EAAE,GAAG/1J,IAAI,CAAC6O,GAAL,CAASP,KAAT,CAAjB;AACD;;AACD,SAAO,IAAIgnJ,OAAJ,CAAYU,QAAZ,EAAsBzgJ,EAAtB,EAA0BC,EAA1B,CAAP;AACD,CAbD,C,CAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMygJ,OAAO,GAAG,SAAVA,OAAU,CAASl2J,CAAT,EAAYuV,CAAZ,EAAevX,CAAf,EAAkB+B,CAAlB,EAAqB;AAC1C,OAAKC,CAAL,GAASA,CAAT;AACA,OAAKuV,CAAL,GAASA,CAAT;AACA,OAAKvX,CAAL,GAASA,CAAT;AACA,OAAK+B,CAAL,GAASA,CAAT;AACA,OAAK81J,aAAL,GAAqB93J,SAArB;AACD,CANM;AAQPm4J,OAAO,CAAC72J,SAAR,CAAkB82J,gBAAlB,GAAqC,EAArC;;AAEAD,OAAO,CAAC72J,SAAR,CAAkBq2J,UAAlB,GAA+B,YAAW;AACxC,MAAI,CAAC,KAAKG,aAAV,EAAyB;AACvB,SAAKA,aAAL,GAAqBC,iBAAiB,CAAC,KAAK91J,CAAN,EAAS,KAAKuV,CAAd,EAAiB,KAAKvX,CAAL,GAAS,GAA1B,EAA+B,KAAK+B,CAAL,GAAS,GAAxC,EAA6C,KAAKo2J,gBAAlD,CAAtC;AACD;;AACD,SAAO,KAAKN,aAAZ;AACD,CALD;;AAOAK,OAAO,CAAC72J,SAAR,CAAkBs2J,QAAlB,GAA6B,UAAS31J,CAAT,EAAYuV,CAAZ,EAAe;AAC1C,MACEc,EAAE,GAAGrW,CAAC,GAAG,KAAKA,CADhB;AAAA,MAEEsW,EAAE,GAAGf,CAAC,GAAG,KAAKA,CAFhB;AAAA,MAGEwgJ,EAAE,GAAG,KAAK/3J,CAAL,GAAS,GAHhB;AAAA,MAIEg4J,EAAE,GAAG,KAAKj2J,CAAL,GAAS,GAJhB;AAMA,SAAOsW,EAAE,GAAGA,EAAL,IAAW0/I,EAAE,GAAGA,EAAhB,IAAsBz/I,EAAE,GAAGA,EAAL,IAAW0/I,EAAE,GAAGA,EAAhB,CAAtB,IAA6C,CAApD;AACD,CARD,C,CAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMI,IAAI,GAAG,SAAPA,IAAO,CAASp2J,CAAT,EAAYuV,CAAZ,EAAe+rI,KAAf,EAAsBC,KAAtB,EAA6B;AAC/C,OAAKvhJ,CAAL,GAASA,CAAT;AACA,OAAKuV,CAAL,GAASA,CAAT;AACA,OAAK+rI,KAAL,GAAaA,KAAb;AACA,OAAKC,KAAL,GAAaA,KAAb;AACA,OAAKsU,aAAL,GAAqB93J,SAArB;AACD,CANM;AAQPq4J,IAAI,CAAC/2J,SAAL,CAAe82J,gBAAf,GAAkC,EAAlC,C,CAEA;;AACAC,IAAI,CAAC/2J,SAAL,CAAeq2J,UAAf,GAA4B,YAAW;AACrC,MAAI,CAAC,KAAKG,aAAV,EAAyB;AACvB,SAAKA,aAAL,GAAqBC,iBAAiB,CAAC,KAAK91J,CAAN,EAAS,KAAKuV,CAAd,EAAiB,KAAKgsI,KAAL,GAAa,GAA9B,EAAmC,KAAKA,KAAL,GAAa,GAAhD,EAAqD,KAAK4U,gBAA1D,CAAtC;AACD;;AACD,SAAO,KAAKN,aAAZ;AACD,CALD;;AAOAO,IAAI,CAAC/2J,SAAL,CAAes2J,QAAf,GAA0B,UAAS31J,CAAT,EAAYuV,CAAZ,EAAe;AACvC,MACEc,EAAE,GAAGrW,CAAC,GAAG,KAAKA,CADhB;AAAA,MAEEsW,EAAE,GAAGf,CAAC,GAAG,KAAKA,CAFhB;AAAA,MAGE8gJ,QAAQ,GAAG,KAAK9U,KAAL,GAAa,GAH1B;AAAA,MAIE+U,QAAQ,GAAG,KAAK/U,KAAL,GAAa,GAJ1B;AAAA,MAKEgV,QAAQ,GAAG,KAAKjV,KAAL,GAAa,GAL1B;AAAA,MAMEkV,QAAQ,GAAG,KAAKlV,KAAL,GAAa,GAN1B;AAQA,SAAQjrI,EAAE,GAAGA,EAAL,IAAWggJ,QAAQ,GAAGA,QAAtB,IAAkC//I,EAAE,GAAGA,EAAL,IAAWggJ,QAAQ,GAAGA,QAAtB,CAAlC,IAAqE,CAAtE,IACJjgJ,EAAE,GAAGA,EAAL,IAAWkgJ,QAAQ,GAAGA,QAAtB,IAAkCjgJ,EAAE,GAAGA,EAAL,IAAWkgJ,QAAQ,GAAGA,QAAtB,CAAlC,IAAqE,CADxE;AAED,CAXD,C;;AClPA;AACA;CAGA;AACA;AACA;;AACO,IAAMC,MAAM,GAAG,SAATA,MAAS,CAASz2J,CAAT,EAAYuV,CAAZ,EAAe0tC,MAAf,EAAuBkB,CAAvB,EAA0BlrC,KAA1B,EAAiC;AACrD,OAAKjZ,CAAL,GAASA,CAAT;AACA,OAAKuV,CAAL,GAASA,CAAT;AACA,OAAK0tC,MAAL,GAAcA,MAAd;AACA,OAAKkB,CAAL,GAASA,CAAT;;AAEA,MAAIlrC,KAAK,KAAKlb,SAAd,EAAyB;AAAE,SAAKyX,EAAL,GAAUvV,IAAI,CAAC8O,GAAL,CAASkK,KAAT,IAAkBkrC,CAA5B;AAA+B,SAAK1uC,EAAL,GAAUxV,IAAI,CAAC6O,GAAL,CAASmK,KAAT,IAAkBkrC,CAA5B;AACzD;AACF,CARM;;AAUPsyG,MAAM,CAACp3J,SAAP,CAAiBq3J,WAAjB,GAA+B,UAASpnI,IAAT,EAAeC,IAAf,EAAqBC,IAArB,EAA2BC,IAA3B,EAAiC;AAC9D,SAAO,KAAKzvB,CAAL,IAAUsvB,IAAV,IAAkB,KAAKtvB,CAAL,IAAUuvB,IAA5B,IAAoC,KAAKha,CAAL,IAAUia,IAA9C,IAAsD,KAAKja,CAAL,IAAUka,IAAvE;AACD,CAFD;;AAIAgnI,MAAM,CAACp3J,SAAP,CAAiBs3J,IAAjB,GAAwB,UAASrzG,EAAT,EAAa;AACnC,OAAKtjD,CAAL,IAAU,KAAKwV,EAAL,GAAU8tC,EAApB;AACA,OAAK/tC,CAAL,IAAU,KAAKE,EAAL,GAAU6tC,EAApB;AACD,CAHD;;AAKAmzG,MAAM,CAACp3J,SAAP,CAAiBu3J,eAAjB,GAAmC,UAASx+I,IAAT,EAAey+I,SAAf,EAA0B;AAC3D,MAAIx+I,EAAE,GAAG,KAAKrY,CAAd;AAAA,MACEsY,EAAE,GAAG,KAAK/C,CADZ;AAAA,MAEEgD,EAAE,GAAG,KAAKvY,CAAL,GAAS,KAAKwV,EAAL,GAAUqhJ,SAF1B;AAAA,MAGEr+I,EAAE,GAAG,KAAKjD,CAAL,GAAS,KAAKE,EAAL,GAAUohJ,SAH1B;AAAA,MAIEC,WAAW,GAAG,IAAI9B,IAAJ,CAAS38I,EAAT,EAAaC,EAAb,EAAiBC,EAAjB,EAAqBC,EAArB,CAJhB;AAAA,MAKEhD,EAAE,GAAG,KAAKA,EALZ;AAAA,MAMEC,EAAE,GAAG,KAAKA,EANZ;AAAA,MAOEshJ,GAPF;AAAA,MAOOjoJ,GAPP;AAAA,MAOYC,GAPZ;AAAA,MAOiBm+D,CAPjB;AAAA,MAOoBhgD,CAPpB;;AASA,MAAI4pI,WAAW,CAAC7B,cAAZ,CAA2B78I,IAA3B,CAAJ,EAAsC;AACpCC,MAAE,GAAGD,IAAI,CAACC,EAAV;AACAC,MAAE,GAAGF,IAAI,CAACE,EAAV;AACAC,MAAE,GAAGH,IAAI,CAACG,EAAV;AACAC,MAAE,GAAGJ,IAAI,CAACI,EAAV;AACAu+I,OAAG,GAAG,MAAMtC,KAAK,CAACp8I,EAAE,GAAGE,EAAN,EAAUD,EAAE,GAAGE,EAAf,CAAjB;AACA1J,OAAG,GAAG,CAAC0J,EAAE,GAAGF,EAAN,IAAYy+I,GAAlB;AACAhoJ,OAAG,GAAG,CAACwJ,EAAE,GAAGF,EAAN,IAAY0+I,GAAlB,CAPoC,CAQpC;;AACA7pF,KAAC,GAAG13D,EAAE,GAAGzG,GAAL,GAAW0G,EAAE,GAAG3G,GAApB,CAToC,CAUpC;;AACAoe,KAAC,GAAGzX,EAAE,GAAG1G,GAAL,GAAWyG,EAAE,GAAG1G,GAApB,CAXoC,CAYpC;;AACA,SAAK0G,EAAL,GAAU03D,CAAC,GAAGn+D,GAAJ,GAAUme,CAAC,GAAGpe,GAAxB;AACA,SAAK2G,EAAL,GAAUy3D,CAAC,GAAGp+D,GAAJ,GAAUoe,CAAC,GAAGne,GAAxB;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD,CA5BD;;AA8BA0nJ,MAAM,CAACp3J,SAAP,CAAiB23J,oBAAjB,GAAwC,UAASC,SAAT,EAAoBJ,SAApB,EAA+B;AACrE,MACEz9I,EAAE,GAAG69I,SAAS,CAACj3J,CADjB;AAAA,MAEEqZ,EAAE,GAAG49I,SAAS,CAAC1hJ,CAFjB;AAAA,MAGE8C,EAAE,GAAG4+I,SAAS,CAACj3J,CAAV,GAAci3J,SAAS,CAAChtJ,KAH/B;AAAA,MAIEqO,EAAE,GAAG2+I,SAAS,CAAC1hJ,CAAV,GAAc0hJ,SAAS,CAAC/sJ,MAJ/B;AAAA,MAKEkwC,EALF;AAAA,MAKMC,EALN;AAOAD,IAAE,GAAG,KAAK5kC,EAAL,GAAUqhJ,SAAf;;AACA,MAAI,KAAK72J,CAAL,GAASo6C,EAAT,GAAchhC,EAAlB,EAAsB;AACpB,SAAK5D,EAAL,GAAU,CAACvV,IAAI,CAAC2M,GAAL,CAAS,KAAK4I,EAAd,CAAX;AACD,GAFD,MAEO,IAAI,KAAKxV,CAAL,GAASo6C,EAAT,GAAc/hC,EAAlB,EAAsB;AAC3B,SAAK7C,EAAL,GAAUvV,IAAI,CAAC2M,GAAL,CAAS,KAAK4I,EAAd,CAAV;AACD;;AACD6kC,IAAE,GAAG,KAAK5kC,EAAL,GAAUohJ,SAAf;;AACA,MAAI,KAAKthJ,CAAL,GAAS8kC,EAAT,GAAchhC,EAAlB,EAAsB;AACpB,SAAK5D,EAAL,GAAU,CAACxV,IAAI,CAAC2M,GAAL,CAAS,KAAK6I,EAAd,CAAX;AACD,GAFD,MAEO,IAAI,KAAKF,CAAL,GAAS8kC,EAAT,GAAc/hC,EAAlB,EAAsB;AAC3B,SAAK7C,EAAL,GAAUxV,IAAI,CAAC2M,GAAL,CAAS,KAAK6I,EAAd,CAAV;AACD;AACF,CApBD;;AAsBAghJ,MAAM,CAACp3J,SAAP,CAAiB63J,kBAAjB,GAAsC,UAASC,OAAT,EAAkBN,SAAlB,EAA6B;AACjE,MACEz+I,IAAI,GAAG,IAAI48I,IAAJ,EADT;AAAA,MACqB;AACnBn2J,GAFF;AAAA,MAEKc,GAFL;;AAIA,OAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGw3J,OAAO,CAACrzI,KAAR,GAAgB,CAAlC,EAAqCjlB,CAAC,GAAGc,GAAzC,EAA8Cd,CAAC,IAAI,CAAnD,EAAsD;AACpDuZ,QAAI,CAACC,EAAL,GAAU8+I,OAAO,CAAC3B,QAAR,CAAiB32J,CAAjB,CAAV;AACAuZ,QAAI,CAACE,EAAL,GAAU6+I,OAAO,CAAC1B,QAAR,CAAiB52J,CAAjB,CAAV;AACAuZ,QAAI,CAACG,EAAL,GAAU4+I,OAAO,CAAC3B,QAAR,CAAiB32J,CAAC,GAAG,CAArB,CAAV;AACAuZ,QAAI,CAACI,EAAL,GAAU2+I,OAAO,CAAC1B,QAAR,CAAiB52J,CAAC,GAAG,CAArB,CAAV;;AACA,QAAI,KAAK+3J,eAAL,CAAqBx+I,IAArB,EAA2By+I,SAA3B,CAAJ,EAA2C;AACzC;AACD;AACF;;AACDz+I,MAAI,CAACC,EAAL,GAAU8+I,OAAO,CAAC3B,QAAR,CAAiB2B,OAAO,CAACrzI,KAAR,GAAgB,CAAjC,CAAV;AACA1L,MAAI,CAACE,EAAL,GAAU6+I,OAAO,CAAC1B,QAAR,CAAiB0B,OAAO,CAACrzI,KAAR,GAAgB,CAAjC,CAAV;AACA1L,MAAI,CAACG,EAAL,GAAU4+I,OAAO,CAAC3B,QAAR,CAAiB,CAAjB,CAAV;AACAp9I,MAAI,CAACI,EAAL,GAAU2+I,OAAO,CAAC1B,QAAR,CAAiB,CAAjB,CAAV;AACA,OAAKmB,eAAL,CAAqBx+I,IAArB,EAA2By+I,SAA3B;AACD,CAnBD;;AAqBAJ,MAAM,CAACp3J,SAAP,CAAiB+3J,OAAjB,GAA2B,UAASv/I,KAAT,EAAgBg/I,SAAhB,EAA2B;AACpD;AACA,MAAI,CAACh/I,KAAK,CAAC89I,QAAN,CAAe,KAAK31J,CAApB,EAAuB,KAAKuV,CAA5B,CAAL,EAAqC;AACnC,WAAO,KAAP;AACD;;AAED,MAAIsC,KAAK,YAAY+9I,SAArB,EAAgC;AAC9B;AACA;AACA,SAAKoB,oBAAL,CAA0Bn/I,KAA1B,EAAiCg/I,SAAjC;AACD,GAJD,MAIO;AACL;AACA;AACA,SAAKK,kBAAL,CAAwBr/I,KAAK,CAAC69I,UAAN,EAAxB,EAA4CmB,SAA5C;AACD;;AACD,SAAO,IAAP;AACD,CAhBD,C;;ACnGC;AAEM,IAAMQ,wBAAa,GAAG,SAAhBA,aAAgB,CAAS5pJ,KAAT,EAAgB;AAAE,MAC7C;AACEoqB,OAAK,GAAGpqB,KAAK,CAACg1I,eAAN,EAFmC;AAAA,MAI3C;AACAmC,GAAC,GAAGn3I,KAAK,CAAC6pJ,aAAN,EALuC;AAAA,MAM3CC,KAAK,GAAG9pJ,KAAK,CAAC+pJ,aAAN,EANmC;AAAA,MAO3Cx7I,OAAO,GAAGvO,KAAK,CAACgqJ,eAAN,EAPiC;AAAA,MAS3C;AACAC,IAAE,GAAG7/H,KAAK,CAACioH,WAVgC;AAAA,MAW3C6X,EAAE,GAAG9/H,KAAK,CAACkoH,YAXgC;AAAA,MAa3C1zD,EAAE,GAAGx0D,KAAK,CAAC+nH,UAbgC;AAAA,MAc3CtzD,EAAE,GAAGz0D,KAAK,CAACgoH,WAdgC;AAAA,MAe3C2D,GAAG,GAAGn3D,EAAE,GAAG,CAfgC;AAAA,MAgB3Co3D,GAAG,GAAGn3D,EAAE,GAAG,CAhBgC;AAAA,MAkB3CujE,OAAO,GAAGh4H,KAAK,CAACioH,WAAN,GAAoBjoH,KAAK,CAAC+nH,UAlBO;AAAA,MAmB3CkQ,OAAO,GAAGj4H,KAAK,CAACkoH,YAAN,GAAqBloH,KAAK,CAACgoH,WAnBM;AAAA,MAqB3C;AACA;AACA;AAEA+X,UAAQ,GAAG,SAAXA,QAAW,GAAW;AACpB,WAAO33J,IAAI,CAAC0O,EAAL,GAAUkpB,KAAK,CAACgpH,SAAvB;AACD,GA3B0C;AAAA,MA6B3C;AACAgX,qBAAmB,GAAG,SAAtBA,mBAAsB,GAAW;AAC/B,QAAIh5J,CAAC,GAAG,CAAR;;AACA,WAAOA,CAAC,GAAGmd,OAAO,CAACld,MAAnB,EAA2B;AAAE,UAAIkd,OAAO,CAACnd,CAAD,CAAP,KAAed,SAAnB,EAA8B;AAAIie,eAAO,CAACmwC,MAAR,CAAettD,CAAf,EAAkB,CAAlB;AAAuB,OAAzD,MAA+D;AACxFA,SAAC,IAAI,CAAL;AACD;AACF;AACF,GApC0C;AAAA,MAsC3CilJ,aAAa,GAAG,SAAhBA,aAAgB,GAAW;AACzB,QAAIjlJ,CAAJ,EAAOc,GAAP;;AACA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGqc,OAAO,CAACld,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,IAAI,CAAhD,EAAmD;AACjD,UAAI,CAACmd,OAAO,CAACnd,CAAD,CAAP,CAAW63J,WAAX,CAAuB,CAAvB,EAA0BgB,EAA1B,EAA8B,CAA9B,EAAiCC,EAAjC,CAAL,EAA2C;AACzC37I,eAAO,CAACnd,CAAD,CAAP,GAAad,SAAb;AACD;AACF;;AACD85J,uBAAmB;AACpB,GA9C0C;AAAA,MAgD3CnB,WAAW,GAAG,SAAdA,WAAc,CAAS12J,CAAT,EAAYuV,CAAZ,EAAe;AAC3B,QAAI1W,CAAJ,EAAOc,GAAP;;AACA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG43J,KAAK,CAACz4J,MAAxB,EAAgCD,CAAC,GAAGc,GAApC,EAAyCd,CAAC,IAAI,CAA9C,EAAiD;AAC/C,UAAI04J,KAAK,CAAC14J,CAAD,CAAL,CAAS82J,QAAT,CAAkB31J,CAAlB,EAAqBuV,CAArB,CAAJ,EAA6B;AAC3B,eAAO,IAAP;AACD;AACF;;AACD,WAAO,KAAP;AACD,GAxD0C;AAAA,MA0D3CuiJ,YAAY,GAAG,SAAfA,YAAe,CAAS19G,EAAT,EAAaC,EAAb,EAAiB;AAC9B,QACEwmG,SAAS,GAAG+W,QAAQ,EADtB;AAAA,QAEEG,SAAS,GAAGlgI,KAAK,CAACipH,mBAFpB;AAAA,QAGEkX,SAAS,GAAGngI,KAAK,CAACmpH,eAHpB;AAAA,QAIEp9F,CAAC,GAAG3jD,IAAI,CAACwqC,KAAL,CAAWitH,EAAE,GAAGt9G,EAAhB,CAJN;AAAA,QAKEptB,CAAC,GAAG/sB,IAAI,CAACwqC,KAAL,CAAWktH,EAAE,GAAGt9G,EAAhB,CALN;AAAA,QAMEr6C,CANF;AAAA,QAMKuV,CANL;AAAA,QAMQ1W,CANR;;AAOA,QAAIgiJ,SAAS,IAAI,CAAb,IAAkBA,SAAS,GAAG,MAAM5gJ,IAAI,CAAC0O,EAA7C,EAAiD;AAC/C4G,OAAC,GAAG,CAAJ;;AACA,WAAK1W,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+kD,CAAjB,EAAoB/kD,CAAC,IAAI,CAAzB,EAA4B;AAC1BmB,SAAC,GAAGo6C,EAAE,GAAGv7C,CAAT;;AACA,YAAI,CAAC63J,WAAW,CAAC12J,CAAD,EAAIuV,CAAJ,CAAhB,EAAwB;AACtByG,iBAAO,CAACva,IAAR,CAAa,IAAIg1J,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBwiJ,SAAjB,EAA4BC,SAA5B,EAAuCnX,SAAvC,CAAb;AACD;AACF;;AACD7gJ,OAAC,GAAG,CAAJ;;AACA,WAAKnB,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAImuB,CAAjB,EAAoBnuB,CAAC,IAAI,CAAzB,EAA4B;AAC1B0W,SAAC,GAAG8kC,EAAE,GAAGx7C,CAAT;;AACA,YAAI,CAAC63J,WAAW,CAAC12J,CAAD,EAAIuV,CAAJ,CAAhB,EAAwB;AACtByG,iBAAO,CAACva,IAAR,CAAa,IAAIg1J,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBwiJ,SAAjB,EAA4BC,SAA5B,EAAuCnX,SAAvC,CAAb;AACD;AACF;AACF,KAfD,MAeO,IAAIA,SAAS,GAAG,CAAZ,IAAiBA,SAAS,IAAI,CAAC,GAAD,GAAO5gJ,IAAI,CAAC0O,EAA9C,EAAkD;AACvD4G,OAAC,GAAGoiJ,EAAJ;;AACA,WAAK94J,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+kD,CAAjB,EAAoB/kD,CAAC,IAAI,CAAzB,EAA4B;AAC1BmB,SAAC,GAAGo6C,EAAE,GAAGv7C,CAAT;;AACA,YAAI,CAAC63J,WAAW,CAAC12J,CAAD,EAAIuV,CAAJ,CAAhB,EAAwB;AACtByG,iBAAO,CAACva,IAAR,CAAa,IAAIg1J,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBwiJ,SAAjB,EAA4BC,SAA5B,EAAuCnX,SAAvC,CAAb;AACD;AACF;;AACD7gJ,OAAC,GAAG,CAAJ;;AACA,WAAKnB,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAImuB,CAAjB,EAAoBnuB,CAAC,IAAI,CAAzB,EAA4B;AAC1B0W,SAAC,GAAGoiJ,EAAE,GAAGt9G,EAAE,GAAGx7C,CAAd;;AACA,YAAI,CAAC63J,WAAW,CAAC12J,CAAD,EAAIuV,CAAJ,CAAhB,EAAwB;AACtByG,iBAAO,CAACva,IAAR,CAAa,IAAIg1J,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBwiJ,SAAjB,EAA4BC,SAA5B,EAAuCnX,SAAvC,CAAb;AACD;AACF;AACF,KAfM,MAeA,IAAIA,SAAS,GAAG5gJ,IAAI,CAAC0O,EAAL,GAAU,KAAtB,IAA+BkyI,SAAS,IAAI,MAAM5gJ,IAAI,CAAC0O,EAA3D,EAA+D;AACpE4G,OAAC,GAAG,CAAJ;;AACA,WAAK1W,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+kD,CAAjB,EAAoB/kD,CAAC,IAAI,CAAzB,EAA4B;AAC1BmB,SAAC,GAAG03J,EAAE,GAAGt9G,EAAE,GAAGv7C,CAAd;;AACA,YAAI,CAAC63J,WAAW,CAAC12J,CAAD,EAAIuV,CAAJ,CAAhB,EAAwB;AACtByG,iBAAO,CAACva,IAAR,CAAa,IAAIg1J,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBwiJ,SAAjB,EAA4BC,SAA5B,EAAuCnX,SAAvC,CAAb;AACD;AACF;;AACD7gJ,OAAC,GAAG03J,EAAJ;;AACA,WAAK74J,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAImuB,CAAjB,EAAoBnuB,CAAC,IAAI,CAAzB,EAA4B;AAC1B0W,SAAC,GAAG8kC,EAAE,GAAGx7C,CAAT;;AACA,YAAI,CAAC63J,WAAW,CAAC12J,CAAD,EAAIuV,CAAJ,CAAhB,EAAwB;AACtByG,iBAAO,CAACva,IAAR,CAAa,IAAIg1J,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBwiJ,SAAjB,EAA4BC,SAA5B,EAAuCnX,SAAvC,CAAb;AACD;AACF;AACF,KAfM,MAeA,IAAIA,SAAS,IAAI,CAAC5gJ,IAAI,CAAC0O,EAAnB,IAAyBkyI,SAAS,GAAG,CAAC,GAAD,GAAO5gJ,IAAI,CAAC0O,EAArD,EAAyD;AAC9D4G,OAAC,GAAGoiJ,EAAJ;;AACA,WAAK94J,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+kD,CAAjB,EAAoB/kD,CAAC,IAAI,CAAzB,EAA4B;AAC1BmB,SAAC,GAAG03J,EAAE,GAAGt9G,EAAE,GAAGv7C,CAAd;;AACA,YAAI,CAAC63J,WAAW,CAAC12J,CAAD,EAAIuV,CAAJ,CAAhB,EAAwB;AACtByG,iBAAO,CAACva,IAAR,CAAa,IAAIg1J,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBwiJ,SAAjB,EAA4BC,SAA5B,EAAuCnX,SAAvC,CAAb;AACD;AACF;;AACD7gJ,OAAC,GAAG03J,EAAJ;;AACA,WAAK74J,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAImuB,CAAjB,EAAoBnuB,CAAC,IAAI,CAAzB,EAA4B;AAC1B0W,SAAC,GAAGoiJ,EAAE,GAAGt9G,EAAE,GAAGx7C,CAAd;;AACA,YAAI,CAAC63J,WAAW,CAAC12J,CAAD,EAAIuV,CAAJ,CAAhB,EAAwB;AACtByG,iBAAO,CAACva,IAAR,CAAa,IAAIg1J,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBwiJ,SAAjB,EAA4BC,SAA5B,EAAuCnX,SAAvC,CAAb;AACD;AACF;AACF;AACF,GA/H0C;;AAiI7C,SAAO;AACL8D,SAAK,EAAE,iBAAW;AAChB,UACExzI,QAAQ,GAAG0mB,KAAK,CAAC1mB,QADnB;AAAA,UAEE8vI,wBAAwB,GAAGppH,KAAK,CAACopH,wBAFnC;AAAA,UAIE1gI,MAAM,GAAG,OAAOpP,QAAQ,GAAG8vI,wBAAlB,CAJX;AAAA,UAKE1/I,GAAG,GAAG,MAAMsuJ,OALd;AAAA,UAMEoI,GAAG,GAAG,MAAMnI,OANd;AAAA,UAOErzI,MAPF;AAAA,UAOU4kI,IAPV;AAAA,UAOgBrhJ,CAPhB;AAAA,UAOmBuV,CAPnB;AAAA,UAQE1W,CARF;AAAA,UAQKyM,CARL;AAAA,UAQQ4sJ,WARR;AAAA,UAQqBC,SARrB;;AAUA,WAAKt5J,CAAC,GAAG,CAAJ,EAAOq5J,WAAW,GAAGl8I,OAAO,CAACld,MAAlC,EAA0CD,CAAC,GAAGq5J,WAA9C,EAA2Dr5J,CAAC,IAAI,CAAhE,EAAmE;AACjE4d,cAAM,GAAGT,OAAO,CAACnd,CAAD,CAAhB;AACA4d,cAAM,CAACk6I,IAAP,CAAYxlJ,QAAZ;;AAEA,aAAK7F,CAAC,GAAG,CAAJ,EAAO6sJ,SAAS,GAAGZ,KAAK,CAACz4J,MAA9B,EAAsCwM,CAAC,GAAG6sJ,SAA1C,EAAqD7sJ,CAAC,IAAI,CAA1D,EAA6D;AAC3D+1I,cAAI,GAAGkW,KAAK,CAACjsJ,CAAD,CAAZ;;AACA,cAAI+1I,IAAI,CAAC+V,OAAL,CAAa36I,MAAb,EAAqBtL,QAArB,CAAJ,EAAoC;AAClC;AACD,WAFD,MAEO,IAAIkwI,IAAI,CAAC+W,MAAL,CAAY37I,MAAZ,CAAJ,EAAyB;AAC9Bzc,aAAC,GAAGC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASF,IAAI,CAAC4kB,KAAL,CAAWpI,MAAM,CAACzc,CAAP,GAAWuB,GAAtB,CAAT,EAAqCiiJ,GAArC,CAAT,EAAoD,CAApD,CAAJ;AACAjuI,aAAC,GAAGtV,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASF,IAAI,CAAC4kB,KAAL,CAAWpI,MAAM,CAAClH,CAAP,GAAW0iJ,GAAtB,CAAT,EAAqCxU,GAArC,CAAT,EAAoD,CAApD,CAAJ;AACAmB,aAAC,CAAC5kJ,CAAC,GAAGssF,EAAJ,GAAS/2E,CAAV,CAAD,GAAgBkH,MAAM,CAACwmC,MAAP,GAAgB1iC,MAAhC,CAH8B,CAI9B;;AACAvE,mBAAO,CAACnd,CAAD,CAAP,GAAad,SAAb;AACA;AACD;AACF;AACF,OA5Be,CA6BhB;;;AACA85J,yBAAmB,GA9BH,CA+BhB;;AACA/T,mBAAa;AACd,KAlCI;AAoCLuU,WAAO,EAAE,mBAAW;AAClB,UAAIhX,IAAJ,EAAUxiJ,CAAV,EAAac,GAAb;;AACA,WAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG43J,KAAK,CAACz4J,MAAxB,EAAgCD,CAAC,GAAGc,GAApC,EAAyCd,CAAC,IAAI,CAA9C,EAAiD;AAC/CwiJ,YAAI,GAAGkW,KAAK,CAAC14J,CAAD,CAAZ;;AACA,YAAIwiJ,IAAI,CAACY,UAAL,GAAkB,CAAtB,EAAyB;AACvBZ,cAAI,CAACgX,OAAL,CAAa5qJ,KAAb;AACD;AACF;AACF,KA5CI;AA8CL6qJ,YAAQ,EAAE,oBAAW;AACnB,UACEzX,SAAS,GAAG+W,QAAQ,EADtB;AAAA,UAEE3qI,CAFF;AAAA,UAEKk3B,CAFL;AAAA,UAEQD,OAFR;;AAIA,UAAI28F,SAAS,GAAG,CAAhB,EAAmB;AACjB;AACD;;AACD5zH,OAAC,GAAGhtB,IAAI,CAAC2M,GAAL,CAAS3M,IAAI,CAAC6O,GAAL,CAAS+xI,SAAT,CAAT,CAAJ;AACA18F,OAAC,GAAGlkD,IAAI,CAAC2M,GAAL,CAAS3M,IAAI,CAAC8O,GAAL,CAAS8xI,SAAT,CAAT,CAAJ;AACA38F,aAAO,GAAGj3B,CAAC,GAAG0qI,EAAJ,GAASxzG,CAAC,GAAGuzG,EAAb,GAAkBC,EAAE,GAAGxzG,CAAvB,GAA2BuzG,EAAE,GAAGzqI,CAA1C;AACAi3B,aAAO,IAAIrsB,KAAK,CAACkpH,eAAjB;AACA+W,kBAAY,CAAC5zG,OAAO,GAAGj3B,CAAX,EAAci3B,OAAO,GAAGC,CAAxB,CAAZ;AACD;AA3DI,GAAP;AA6DD,CA9LM,C;;ACFP;AACA;AACA;AACA;AAEA,IAAI;AACFo0G,gBAAgB,GAAG,GADrB;AAAA,IAEEC,4BAA4B,GAAG,EAFjC;AAAA,IAGEC,iBAAiB,GAAG,GAHtB;AAAA,IAIEC,KAAK,GAAGz4J,IAAI,CAAC6O,GAAL,CAAS7O,IAAI,CAAC0O,EAAL,GAAU,CAAnB,CAJV;AAAA,IAKEgqJ,KAAK,GAAG14J,IAAI,CAAC8O,GAAL,CAAS9O,IAAI,CAAC0O,EAAL,GAAU,CAAnB,CALV;AAAA,IAMEiqJ,KAAK,GAAG34J,IAAI,CAAC6O,GAAL,CAAS7O,IAAI,CAAC0O,EAAL,GAAU,CAAnB,CANV;AAAA,IAOEkqJ,KAAK,GAAG54J,IAAI,CAAC8O,GAAL,CAAS9O,IAAI,CAAC0O,EAAL,GAAU,CAAnB,CAPV,C,CASE;;AACK,IAAMmqJ,SAAI,GAAG,SAAPA,IAAO,CAAS1rJ,OAAT,EAAkB;AACpC,MAAIo0I,QAAJ,EAAc19H,KAAd,EAAqBjlB,CAArB;AACA,OAAK8oD,QAAL,GAAgBv6C,OAAhB,CAFoC,CAIpC;;AACA,MAAIA,OAAO,CAACk1E,SAAR,KAAsB,WAA1B,EAAuC;AAAE,SAAKzqE,KAAL,GAAa,IAAI+9I,SAAJ,CAAcxoJ,OAAO,CAACpN,CAAtB,EAAyBoN,OAAO,CAACmI,CAAjC,EAAoCnI,OAAO,CAACnD,KAA5C,EAAmDmD,OAAO,CAAClD,MAA3D,CAAb;AACxC,GADD,MACO,IAAIkD,OAAO,CAACk1E,SAAR,KAAsB,SAA1B,EAAqC;AAC1C,SAAKzqE,KAAL,GAAa,IAAIq+I,OAAJ,CAAY9oJ,OAAO,CAACpN,CAApB,EAAuBoN,OAAO,CAACmI,CAA/B,EAAkCnI,OAAO,CAACpP,CAA1C,EAA6CoP,OAAO,CAACrN,CAArD,CAAb;AACD,GAFM,MAEA,IAAIqN,OAAO,CAACk1E,SAAR,KAAsB,MAA1B,EAAkC;AACvC,SAAKzqE,KAAL,GAAa,IAAIu+I,IAAJ,CAAShpJ,OAAO,CAACpN,CAAjB,EAAoBoN,OAAO,CAACmI,CAA5B,EAA+BnI,OAAO,CAACk0I,KAAvC,EAA8Cl0I,OAAO,CAACm0I,KAAtD,CAAb;AACD,GAFM,MAEA,IAAIn0I,OAAO,CAACk1E,SAAR,KAAsB,SAA1B,EAAqC;AAC1Ck/D,YAAQ,GAAGp0I,OAAO,CAACo0I,QAAR,CAAiBt0I,KAAjB,CAAuB,IAAvB,CAAX;AACA,SAAKsoJ,QAAL,GAAgB,EAAhB;AACA,SAAKC,QAAL,GAAgB,EAAhB;;AACA,SAAK52J,CAAC,GAAG,CAAJ,EAAOilB,KAAK,GAAG09H,QAAQ,CAAC1iJ,MAAT,GAAkB,GAAtC,EAA2CD,CAAC,GAAGilB,KAA/C,EAAsDjlB,CAAC,IAAI,CAA3D,EAA8D;AAC5D,WAAK22J,QAAL,CAAc32J,CAAd,IAAmB0B,MAAM,CAACihJ,QAAQ,CAAC,IAAI3iJ,CAAL,CAAT,CAAzB;AACA,WAAK42J,QAAL,CAAc52J,CAAd,IAAmB0B,MAAM,CAACihJ,QAAQ,CAAC,IAAI3iJ,CAAJ,GAAQ,CAAT,CAAT,CAAzB;AACD;;AACD,SAAKgZ,KAAL,GAAa,IAAI09I,OAAJ,CAAYzxI,KAAZ,EAAmB,KAAK0xI,QAAxB,EAAkC,KAAKC,QAAvC,EAAiDroJ,OAAO,CAACpN,CAAzD,EAA4DoN,OAAO,CAACmI,CAApE,CAAb;AACD,GATM,MASA;AACL,UAAM,IAAI7W,KAAJ,CAAU,2CAAV,CAAN;AACD;AACF,CAtBM;AAwBPU,MAAM,CAAC6qC,cAAP,CAAsB6uH,SAAI,CAACz5J,SAA3B,EAAsC,WAAtC,EAAmD;AACjDukB,KAAG,EAAE,eAAW;AACd,WAAO,KAAK+jC,QAAL,CAAc26B,SAArB;AACD;AAHgD,CAAnD;AAMA,CAAC,GAAD,EAAM,GAAN,EAAW,OAAX,EAAoB,QAApB,EAA8B,OAA9B,EAAuC,OAAvC,EAAgD,GAAhD,EAAqD,GAArD,EAA0D,cAA1D,EAA0E,cAA1E,EAA0FtnE,OAA1F,CAAkG,UAASC,GAAT,EAAc;AAC9G7b,QAAM,CAAC6qC,cAAP,CAAsB6uH,SAAI,CAACz5J,SAA3B,EAAsC4b,GAAtC,EAA2C;AACzC2I,OAAG,EAAE,eAAW;AACd,aAAO,KAAK/L,KAAL,CAAWoD,GAAX,CAAP;AACD,KAHwC;AAIzC7Z,OAAG,EAAE,aAAS0rC,CAAT,EAAY;AACf,WAAKj1B,KAAL,CAAWoD,GAAX,IAAkB6xB,CAAlB;AACA,WAAK+oH,aAAL,GAAqB93J,SAArB;AACD;AAPwC,GAA3C;AASD,CAVD;AAYAqB,MAAM,CAAC6qC,cAAP,CAAsB6uH,SAAI,CAACz5J,SAA3B,EAAsC,UAAtC,EAAkD;AAChDukB,KAAG,EAAE,eAAW;AACd,QAAI,KAAK0+D,SAAL,KAAmB,SAAvB,EAAkC,OAAOvkF,SAAP;AAClC,QAAIiC,CAAC,GAAG,KAAK6X,KAAL,CAAW4pI,YAAnB;AAAA,QACElsI,CAAC,GAAG,KAAKsC,KAAL,CAAW6pI,YADjB;AAAA,QAEErzI,CAAC,GAAG,EAFN;AAAA,QAGExP,CAHF;AAAA,QAGKc,GAHL;;AAIA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGK,CAAC,CAAClB,MAApB,EAA4BD,CAAC,GAAGc,GAAhC,EAAqCd,CAAC,EAAtC,EAA0C;AACxCwP,OAAC,CAAC5M,IAAF,CAAOzB,CAAC,CAACnB,CAAD,CAAR;AACAwP,OAAC,CAAC5M,IAAF,CAAO8T,CAAC,CAAC1W,CAAD,CAAR;AACD;;AACD,WAAOwP,CAAC,CAACoQ,IAAF,CAAO,IAAP,CAAP;AACD;AAZ+C,CAAlD;AAeA,CAAC,sBAAD,EAAyB,eAAzB,EAA0C,SAA1C,EAAqD,aAArD,EAAoE,sBAApE,EAA4F,OAA5F,EAAqG,YAArG,EAAmH,YAAnH,EACE,cADF,EACkB,YADlB,EACgC,YADhC,EAC8C,YAD9C,EAEE,SAFF,EAEa,QAFb,EAEuB,OAFvB,EAEgC,SAFhC,EAE2C,OAF3C,EAEoD,WAFpD,EAGEzD,OAHF,CAGU,UAASC,GAAT,EAAc;AACtB7b,QAAM,CAAC6qC,cAAP,CAAsB6uH,SAAI,CAACz5J,SAA3B,EAAsC4b,GAAtC,EAA2C;AACzC2I,OAAG,EAAE,eAAW;AACd,aAAO,KAAK+jC,QAAL,CAAc1sC,GAAd,CAAP;AACD,KAHwC;AAIzC7Z,OAAG,EAAE,aAAS0rC,CAAT,EAAY;AACf,WAAK6a,QAAL,CAAc1sC,GAAd,IAAqB6xB,CAArB;AACD;AANwC,GAA3C;AAQD,CAZD;;AAcAgsH,SAAI,CAACz5J,SAAL,CAAem4B,QAAf,GAA0B,YAAW;AACnC,MAAI5W,KAAK,GAAG,KAAKA,KAAjB;AAAA,MACEqM,CADF;;AAGA,WAAS8rI,WAAT,CAAqBn6J,KAArB,EAA4B2nB,MAA5B,EAAoC;AAClC,QAAIyyI,QAAJ;;AACA,QAAIp6J,KAAK,IAAI,GAAb,EAAkB;AAChBo6J,cAAQ,GAAGp6J,KAAK,CAACylD,OAAN,EAAX;AACD,KAFD,MAEO,IAAIzlD,KAAK,IAAI,EAAb,EAAiB;AACtBo6J,cAAQ,GAAGp6J,KAAK,CAACylD,OAAN,CAAc,CAAd,CAAX;AACD,KAFM,MAEA;AACL20G,cAAQ,GAAGp6J,KAAK,CAACylD,OAAN,CAAc,CAAd,CAAX;AACD;;AACD,WAAO20G,QAAQ,GAAGzyI,MAAlB;AACD;;AAED,MAAI3F,KAAK,KAAK,cAAd,EAA8B;AAC5BqM,KAAC,GAAG8rI,WAAW,CAAC,KAAKhiG,WAAN,EAAmB,QAAnB,CAAf;AACD,GAFD,MAEO,IAAIn2C,KAAK,KAAK,UAAd,EAA0B;AAC/BqM,KAAC,GAAG8rI,WAAW,CAAC,KAAKlX,OAAN,EAAe,WAAf,CAAf;AACD,GAFM,MAEA,IAAIjhI,KAAK,KAAK,gBAAd,EAAgC;AACrCqM,KAAC,GAAG8rI,WAAW,CAAC,KAAKnX,aAAN,EAAqB,kBAArB,CAAf;AACD,GAFM,MAEA,IAAIhhI,KAAK,KAAK,uBAAd,EAAuC;AAC5CqM,KAAC,GAAG8rI,WAAW,CAAC,KAAKpX,oBAAN,EAA4B,iBAA5B,CAAf;AACD,GAFM,MAEA,IAAI/gI,KAAK,KAAK,gBAAd,EAAgC;AACrCqM,KAAC,GAAG8rI,WAAW,CAAC,KAAK5W,KAAN,EAAa,UAAb,CAAf;AACD,GAFM,MAEA,IAAIvhI,KAAK,KAAK,OAAd,EAAuB;AAC5B,QAAI,KAAK0hE,SAAL,KAAmB,WAAvB,EAAoC;AAClCr1D,OAAC,GAAG8rI,WAAW,CAAC,KAAK9uJ,KAAL,GAAa,KAAKC,MAAnB,EAA2B,QAA3B,CAAf;AACD,KAFD,MAEO,IAAI,KAAKo4E,SAAL,KAAmB,SAAvB,EAAkC;AACvCr1D,OAAC,GAAG8rI,WAAW,CAAC,KAAK/6J,CAAL,GAAS,KAAK+B,CAAd,GAAkB,IAAlB,GAAyBE,IAAI,CAAC0O,EAA/B,EAAmC,QAAnC,CAAf;AACD;AACF,GANM,MAMA,IAAIiS,KAAK,KAAK,QAAd,EAAwB;AAC7B,QAAI,KAAK0hE,SAAL,KAAmB,WAAvB,EAAoC;AAClCr1D,OAAC,GAAG8rI,WAAW,CAAC,KAAK9uJ,KAAN,EAAa,IAAb,CAAf;AACD,KAFD,MAEO,IAAI,KAAKq4E,SAAL,KAAmB,SAAvB,EAAkC;AACvCr1D,OAAC,GAAG8rI,WAAW,CAAC,KAAK/6J,CAAN,EAAS,IAAT,CAAf;AACD;AACF,GANM,MAMA,IAAI4iB,KAAK,KAAK,SAAd,EAAyB;AAC9B,QAAI,KAAK0hE,SAAL,KAAmB,WAAvB,EAAoC;AAClCr1D,OAAC,GAAG8rI,WAAW,CAAC,KAAK7uJ,MAAN,EAAc,IAAd,CAAf;AACD,KAFD,MAEO,IAAI,KAAKo4E,SAAL,KAAmB,SAAvB,EAAkC;AACvCr1D,OAAC,GAAG8rI,WAAW,CAAC,KAAKh5J,CAAN,EAAS,IAAT,CAAf;AACD;AACF,GANM,MAMA;AACLktB,KAAC,GAAGrM,KAAJ;AACD;;AACD,SAAOqM,CAAP;AACD,CAhDD,C,CAkDA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA6rI,SAAI,CAACz5J,SAAL,CAAe45J,YAAf,GAA8B,UAAS5sE,EAAT,EAAaC,EAAb,EAAiBorE,EAAjB,EAAqBC,EAArB,EAAyB;AACrD,MACEnU,GAAG,GAAGn3D,EAAE,GAAG,CADb;AAAA,MAEEo3D,GAAG,GAAGn3D,EAAE,GAAG,CAFb;AAAA,MAGElyC,EAAE,GAAGiyC,EAAE,GAAGqrE,EAHZ;AAAA,MAIEr9G,EAAE,GAAGiyC,EAAE,GAAGqrE,EAJZ;AAAA,MAMEuB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAASpoE,IAAT,EAAe;AAChC,QAAIjyF,CAAJ;AAAA,QAAOyM,CAAP;AAAA,QAAU6tJ,EAAV;AAAA,QAAcC,EAAd;AAAA,QAAkBC,KAAlB;AAAA,QAAyBC,KAAzB;AAAA,QAAgC/3J,GAAhC;AAAA,QAAqC+qD,OAAO,GAAG,EAA/C;AAEA6sG,MAAE,GAAGl5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACg+C,IAAL,CAAU6yC,IAAI,CAAC9wF,CAAL,GAASo6C,EAAnB,CAAT,EAAiC,CAAjC,CAAT,EAA8CopG,GAA9C,CAAL;AACA4V,MAAE,GAAGn5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACg+C,IAAL,CAAU6yC,IAAI,CAACv7E,CAAL,GAAS8kC,EAAnB,CAAT,EAAiC,CAAjC,CAAT,EAA8CopG,GAA9C,CAAL;AACA4V,SAAK,GAAGp5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACwqC,KAAL,CAAW,CAACqmD,IAAI,CAAC9wF,CAAL,GAAS8wF,IAAI,CAAC7mF,KAAf,IAAwBmwC,EAAnC,CAAT,EAAiD,CAAjD,CAAT,EAA8DopG,GAA9D,CAAR;AACA8V,SAAK,GAAGr5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACwqC,KAAL,CAAW,CAACqmD,IAAI,CAACv7E,CAAL,GAASu7E,IAAI,CAAC5mF,MAAf,IAAyBmwC,EAApC,CAAT,EAAkD,CAAlD,CAAT,EAA+DopG,GAA/D,CAAR;AACAn3F,WAAO,GAAG,IAAIruD,KAAJ,CAAU,CAACo7J,KAAK,GAAGF,EAAR,GAAa,CAAd,KAAoBG,KAAK,GAAGF,EAAR,GAAa,CAAjC,CAAV,CAAV;AACA73J,OAAG,GAAG,CAAN;;AACA,SAAK1C,CAAC,GAAGs6J,EAAT,EAAat6J,CAAC,IAAIw6J,KAAlB,EAAyBx6J,CAAC,IAAI,CAA9B,EAAiC;AAAE,WAAKyM,CAAC,GAAG8tJ,EAAT,EAAa9tJ,CAAC,IAAIguJ,KAAlB,EAAyBhuJ,CAAC,IAAI,CAA9B,EAAiC;AAAIghD,eAAO,CAAC/qD,GAAG,IAAI,CAAR,CAAP,GAAoB1C,CAAC,GAAGytF,EAAJ,GAAShhF,CAA7B;AAAiC;AACxG;;AACD,WAAOghD,OAAP;AACD,GAlBH;AAAA,MAoBEitG,cAAc,GAAG,SAAjBA,cAAiB,CAASC,OAAT,EAAkB;AACjC,QACEnjJ,EAAE,GAAGmjJ,OAAO,CAACx5J,CAAR,GAAYo6C,EADnB;AAAA,QAEE9jC,EAAE,GAAGkjJ,OAAO,CAACjkJ,CAAR,GAAY8kC,EAFnB;AAAA,QAGE07G,EAAE,GAAGyD,OAAO,CAACx7J,CAAR,GAAY,GAAZ,GAAkBo8C,EAHzB;AAAA,QAIE47G,EAAE,GAAGwD,OAAO,CAACz5J,CAAR,GAAY,GAAZ,GAAkBs6C,EAJzB;AAAA,QAKEo/G,EALF;AAAA,QAKM56J,CALN;AAAA,QAKSs6J,EALT;AAAA,QAKaE,KALb;AAAA,QAKoB/tJ,CALpB;AAAA,QAKuB8tJ,EALvB;AAAA,QAK2BE,KAL3B;AAAA,QAME/3J,GANF;AAAA,QAMO+qD,OAAO,GAAG,EANjB;AAQA6sG,MAAE,GAAGl5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACg+C,IAAL,CAAU5nC,EAAE,GAAG0/I,EAAf,CAAT,EAA6B,CAA7B,CAAT,EAA0CvS,GAA1C,CAAL;AACA6V,SAAK,GAAGp5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACwqC,KAAL,CAAWp0B,EAAE,GAAG0/I,EAAhB,CAAT,EAA8B,CAA9B,CAAT,EAA2CvS,GAA3C,CAAR;AACAl3F,WAAO,GAAG,EAAV;AACA/qD,OAAG,GAAG,CAAN;;AACA,SAAK1C,CAAC,GAAGs6J,EAAT,EAAat6J,CAAC,IAAIw6J,KAAlB,EAAyBx6J,CAAC,IAAI,CAA9B,EAAiC;AAC/B;AACA;AACA46J,QAAE,GAAGx5J,IAAI,CAAC2O,IAAL,CAAU,IAAI,CAAC/P,CAAC,GAAGwX,EAAL,KAAYxX,CAAC,GAAGwX,EAAhB,KAAuB0/I,EAAE,GAAGA,EAA5B,CAAd,CAAL;AACAqD,QAAE,GAAGn5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACg+C,IAAL,CAAU3nC,EAAE,GAAG0/I,EAAE,GAAGyD,EAApB,CAAT,EAAkC,CAAlC,CAAT,EAA+ChW,GAA/C,CAAL;AACA6V,WAAK,GAAGr5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACwqC,KAAL,CAAWn0B,EAAE,GAAG0/I,EAAE,GAAGyD,EAArB,CAAT,EAAmC,CAAnC,CAAT,EAAgDhW,GAAhD,CAAR;;AACA,WAAKn4I,CAAC,GAAG8tJ,EAAT,EAAa9tJ,CAAC,IAAIguJ,KAAlB,EAAyBhuJ,CAAC,IAAI,CAA9B,EAAiC;AAC/BghD,eAAO,CAAC/qD,GAAG,IAAI,CAAR,CAAP,GAAoB1C,CAAC,GAAGytF,EAAJ,GAAShhF,CAA7B;AACD;AACF;;AACD,WAAOghD,OAAP;AACD,GA5CH;AAAA,MA8CEotG,WAAW,GAAG,SAAdA,WAAc,CAASC,IAAT,EAAe;AAC3B,QACEtjJ,EAAE,GAAGsjJ,IAAI,CAAC35J,CAAL,GAASo6C,EADhB;AAAA,QAEE9jC,EAAE,GAAGqjJ,IAAI,CAACpkJ,CAAL,GAAS8kC,EAFhB;AAAA,QAGE07G,EAAE,GAAG4D,IAAI,CAACpY,KAAL,GAAa,GAAb,GAAmBnnG,EAH1B;AAAA,QAIE47G,EAAE,GAAG2D,IAAI,CAACpY,KAAL,GAAa,GAAb,GAAmBlnG,EAJ1B;AAAA,QAKEk8G,QAAQ,GAAGoD,IAAI,CAACrY,KAAL,GAAa,GAAb,GAAmBlnG,EALhC;AAAA,QAMEo8G,QAAQ,GAAGmD,IAAI,CAACrY,KAAL,GAAa,GAAb,GAAmBjnG,EANhC;AAAA,QAOEx7C,CAPF;AAAA,QAOKs6J,EAPL;AAAA,QAOSE,KAPT;AAAA,QAOgB/tJ,CAPhB;AAAA,QAOmB8tJ,EAPnB;AAAA,QAOuBQ,EAPvB;AAAA,QAO2BC,EAP3B;AAAA,QAO+BP,KAP/B;AAAA,QAOsCG,EAPtC;AAAA,QAQEl4J,GARF;AAAA,QAQO+qD,OAAO,GAAG,EARjB;AAUA6sG,MAAE,GAAGl5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACg+C,IAAL,CAAU5nC,EAAE,GAAG0/I,EAAf,CAAT,EAA6B,CAA7B,CAAT,EAA0CvS,GAA1C,CAAL;AACA6V,SAAK,GAAGp5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACwqC,KAAL,CAAWp0B,EAAE,GAAG0/I,EAAhB,CAAT,EAA8B,CAA9B,CAAT,EAA2CvS,GAA3C,CAAR;;AAEA,SAAK3kJ,CAAC,GAAGs6J,EAAT,EAAat6J,CAAC,IAAIw6J,KAAlB,EAAyBx6J,CAAC,IAAI,CAA9B,EAAiC;AAC/B;AACA;AACA46J,QAAE,GAAGx5J,IAAI,CAAC2O,IAAL,CAAU,IAAI,CAAC/P,CAAC,GAAGwX,EAAL,KAAYxX,CAAC,GAAGwX,EAAhB,KAAuB0/I,EAAE,GAAGA,EAA5B,CAAd,CAAL;AACAqD,QAAE,GAAGn5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACg+C,IAAL,CAAU3nC,EAAE,GAAG0/I,EAAE,GAAGyD,EAApB,CAAT,EAAkC,CAAlC,CAAT,EAA+ChW,GAA/C,CAAL;AACA6V,WAAK,GAAGr5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACwqC,KAAL,CAAWn0B,EAAE,GAAG0/I,EAAE,GAAGyD,EAArB,CAAT,EAAmC,CAAnC,CAAT,EAAgDhW,GAAhD,CAAR;;AAEA,UAAIxjJ,IAAI,CAAC2M,GAAL,CAAS/N,CAAC,GAAGwX,EAAb,IAAmBkgJ,QAAvB,EAAiC;AAC/B;AACAkD,UAAE,GAAGx5J,IAAI,CAAC2O,IAAL,CAAU,IAAI,CAAC/P,CAAC,GAAGwX,EAAL,KAAYxX,CAAC,GAAGwX,EAAhB,KAAuBkgJ,QAAQ,GAAGA,QAAlC,CAAd,CAAL;AACAqD,UAAE,GAAG35J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACg+C,IAAL,CAAU3nC,EAAE,GAAGkgJ,QAAQ,GAAGiD,EAA1B,CAAT,EAAwC,CAAxC,CAAT,EAAqDhW,GAArD,CAAL;AACAoW,UAAE,GAAG55J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACwqC,KAAL,CAAWn0B,EAAE,GAAGkgJ,QAAQ,GAAGiD,EAA3B,CAAT,EAAyC,CAAzC,CAAT,EAAsDhW,GAAtD,CAAL;;AACA,aAAKn4I,CAAC,GAAG8tJ,EAAT,EAAa9tJ,CAAC,IAAIsuJ,EAAlB,EAAsBtuJ,CAAC,IAAI,CAA3B,EAA8B;AAC5BghD,iBAAO,CAAC/qD,GAAG,IAAI,CAAR,CAAP,GAAoB1C,CAAC,GAAGytF,EAAJ,GAAShhF,CAA7B;AACD;;AACD,aAAKA,CAAC,GAAGuuJ,EAAT,EAAavuJ,CAAC,IAAIguJ,KAAlB,EAAyBhuJ,CAAC,IAAI,CAA9B,EAAiC;AAC/BghD,iBAAO,CAAC/qD,GAAG,IAAI,CAAR,CAAP,GAAoB1C,CAAC,GAAGytF,EAAJ,GAAShhF,CAA7B;AACD;AACF,OAXD,MAWO;AACL;AACA,aAAKA,CAAC,GAAG8tJ,EAAT,EAAa9tJ,CAAC,IAAIguJ,KAAlB,EAAyBhuJ,CAAC,IAAI,CAA9B,EAAiC;AAC/BghD,iBAAO,CAAC/qD,GAAG,IAAI,CAAR,CAAP,GAAoB1C,CAAC,GAAGytF,EAAJ,GAAShhF,CAA7B;AACD;AACF;AACF;;AACD,WAAOghD,OAAP;AACD,GAtFH;AAAA,MAwFEwtG,cAAc,GAAG,SAAjBA,cAAiB,CAAS3C,OAAT,EAAkB;AACjC,QACErzI,KAAK,GAAGqzI,OAAO,CAAC3B,QAAR,CAAiB12J,MAD3B;AAAA,QAEE02J,QAAQ,GAAG,IAAIv3J,KAAJ,CAAU6lB,KAAV,CAFb;AAAA,QAGE2xI,QAAQ,GAAG,IAAIx3J,KAAJ,CAAU6lB,KAAV,CAHb;AAAA,QAIEi2I,KAAK,GAAGx5J,MAAM,CAACG,SAJjB;AAAA,QAKEs5J,KAAK,GAAGz5J,MAAM,CAACC,SALjB;AAAA,QAMEy5J,KAAK,GAAG15J,MAAM,CAACG,SANjB;AAAA,QAOEw5J,KAAK,GAAG35J,MAAM,CAACC,SAPjB;AAAA,QAQE3B,CARF;AAAA,QAQKs6J,EARL;AAAA,QAQSE,KART;AAAA,QAQgB/tJ,CARhB;AAAA,QAQmB8tJ,EARnB;AAAA,QAQuBE,KARvB;AAAA,QASE/3J,GATF;AAAA,QASO+qD,OAAO,GAAG,EATjB;;AAWA,SAAKztD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGilB,KAAhB,EAAuBjlB,CAAC,IAAI,CAA5B,EAA+B;AAC7B22J,cAAQ,CAAC32J,CAAD,CAAR,GAAcs4J,OAAO,CAAC3B,QAAR,CAAiB32J,CAAjB,IAAsBu7C,EAApC;AACAq7G,cAAQ,CAAC52J,CAAD,CAAR,GAAcs4J,OAAO,CAAC1B,QAAR,CAAiB52J,CAAjB,IAAsBw7C,EAApC;;AACA,UAAIm7G,QAAQ,CAAC32J,CAAD,CAAR,GAAck7J,KAAlB,EAAyB;AACvBA,aAAK,GAAGvE,QAAQ,CAAC32J,CAAD,CAAhB;AACD;;AACD,UAAI22J,QAAQ,CAAC32J,CAAD,CAAR,GAAcm7J,KAAlB,EAAyB;AACvBA,aAAK,GAAGxE,QAAQ,CAAC32J,CAAD,CAAhB;AACD;;AACD,UAAI42J,QAAQ,CAAC52J,CAAD,CAAR,GAAco7J,KAAlB,EAAyB;AACvBA,aAAK,GAAGxE,QAAQ,CAAC52J,CAAD,CAAhB;AACD;;AACD,UAAI42J,QAAQ,CAAC52J,CAAD,CAAR,GAAcq7J,KAAlB,EAAyB;AACvBA,aAAK,GAAGzE,QAAQ,CAAC52J,CAAD,CAAhB;AACD;AACF;;AAEDs6J,MAAE,GAAGl5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAAC4kB,KAAL,CAAWk1I,KAAX,CAAT,EAA4B,CAA5B,CAAT,EAAyCvW,GAAzC,CAAL;AACA4V,MAAE,GAAGn5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAAC4kB,KAAL,CAAWo1I,KAAX,CAAT,EAA4B,CAA5B,CAAT,EAAyCxW,GAAzC,CAAL;AACA4V,SAAK,GAAGp5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAAC4kB,KAAL,CAAWm1I,KAAX,CAAT,EAA4B,CAA5B,CAAT,EAAyCxW,GAAzC,CAAR;AACA8V,SAAK,GAAGr5J,IAAI,CAACE,GAAL,CAASF,IAAI,CAACC,GAAL,CAASD,IAAI,CAAC4kB,KAAL,CAAWq1I,KAAX,CAAT,EAA4B,CAA5B,CAAT,EAAyCzW,GAAzC,CAAR;AACAn3F,WAAO,GAAG,EAAV;AACA/qD,OAAG,GAAG,CAAN;;AACA,SAAK1C,CAAC,GAAGs6J,EAAT,EAAat6J,CAAC,IAAIw6J,KAAlB,EAAyBx6J,CAAC,IAAI,CAA9B,EAAiC;AAC/B,WAAKyM,CAAC,GAAG8tJ,EAAT,EAAa9tJ,CAAC,IAAIguJ,KAAlB,EAAyBhuJ,CAAC,IAAI,CAA9B,EAAiC;AAC/B,YAAIopJ,kBAAkB,CAAC5wI,KAAD,EAAQ0xI,QAAR,EAAkBC,QAAlB,EAA4B52J,CAA5B,EAA+ByM,CAA/B,CAAtB,EAAyD;AACvDghD,iBAAO,CAAC/qD,GAAG,IAAI,CAAR,CAAP,GAAoB1C,CAAC,GAAGytF,EAAJ,GAAShhF,CAA7B;AACD;AACF;AACF;;AACD,WAAOghD,OAAP;AACD,GAnIH;;AAqIA,MAAI,KAAKg2B,SAAL,KAAmB,WAAvB,EAAoC;AAClC,WAAO42E,gBAAgB,CAAC,KAAKrhJ,KAAN,CAAvB;AACD;;AACD,MAAI,KAAKyqE,SAAL,KAAmB,SAAvB,EAAkC;AAChC,WAAOi3E,cAAc,CAAC,KAAK1hJ,KAAN,CAArB;AACD;;AACD,MAAI,KAAKyqE,SAAL,KAAmB,MAAvB,EAA+B;AAC7B,WAAOo3E,WAAW,CAAC,KAAK7hJ,KAAN,CAAlB;AACD;;AACD,MAAI,KAAKyqE,SAAL,KAAmB,SAAvB,EAAkC;AAChC,WAAOw3E,cAAc,CAAC,KAAKjiJ,KAAN,CAArB;AACD;;AACD,QAAM,IAAInZ,KAAJ,CAAU,sBAAV,CAAN;AACD,CAnJD,C,CAqJA;;;AACAo6J,SAAI,CAACz5J,SAAL,CAAes2J,QAAf,GAA0B,UAAS31J,CAAT,EAAYuV,CAAZ,EAAe;AACvC,SAAO,KAAKsC,KAAL,CAAW89I,QAAX,CAAoB31J,CAApB,EAAuBuV,CAAvB,CAAP;AACD,CAFD,C,CAIA;;;AACAujJ,SAAI,CAACz5J,SAAL,CAAe+3J,OAAf,GAAyB,UAASl8I,CAAT,EAAY27I,SAAZ,EAAuB;AAC9C;AACA,MAAI52J,IAAI,CAAC2M,GAAL,CAAS,KAAKm1I,UAAL,GAAkB,CAA3B,IAAgC,KAApC,EAA2C;AACzC,WAAO7mI,CAAC,CAACk8I,OAAF,CAAU,KAAKv/I,KAAf,EAAsBg/I,SAAtB,CAAP;AACD,GAJ6C,CAK9C;;;AACA,SAAO,KAAP;AACD,CAPD,C,CASA;;;AACAiC,SAAI,CAACz5J,SAAL,CAAe+4J,MAAf,GAAwB,UAASl9I,CAAT,EAAY;AAClC;AACA,MAAIjb,IAAI,CAAC2M,GAAL,CAAS,KAAKo1I,UAAL,GAAkB,CAA3B,IAAgC,KAApC,EAA2C;AACzC,WAAO,KAAKnqI,KAAL,CAAW89I,QAAX,CAAoBz6I,CAAC,CAAClb,CAAtB,EAAyBkb,CAAC,CAAC3F,CAA3B,CAAP;AACD,GAJiC,CAKlC;;;AACA,SAAO,KAAP;AACD,CAPD;;AASAujJ,SAAI,CAACz5J,SAAL,CAAe86J,aAAf,GAA+B,UAASpjG,WAAT,EAAsB;AACnD,MAAIqjG,EAAJ;;AACA,MAAI,KAAKnY,UAAL,KAAoB,CAAxB,EAA2B;AACzB,WAAO,CAAP;AACD;;AACDmY,IAAE,GAAG,MAAMrjG,WAAX;AACAqjG,IAAE,IAAIA,EAAN;AACA,SAAO,KAAKnY,UAAL,GAAkBplI,mBAAS,CAAC8I,eAA5B,GAA8C8yI,iBAA9C,GAAkE2B,EAAlE,GAAuEA,EAA9E;AACD,CARD,C,CAUA;;;AACAtB,SAAI,CAACz5J,SAAL,CAAeg5J,OAAf,GAAyB,UAAS5qJ,KAAT,EAAgB;AACvC,MACA;AACE4sJ,MAAI,GAAG,KAAKxiJ,KAAL,CAAW69I,UAAX,EAFT;AAAA,MAGEt9I,IAAI,GAAG,IAAI48I,IAAJ,EAHT;AAAA,MAIEn2J,CAJF;AAAA,MAIKc,GAJL;;AAMA,MAAI,KAAKsiJ,UAAL,KAAoB,CAAxB,EAA2B;AACzB;AACD,GATsC,CAUvC;;;AACA,OAAKpjJ,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG06J,IAAI,CAACv2I,KAAL,GAAa,CAA/B,EAAkCjlB,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,IAAI,CAAhD,EAAmD;AACjDuZ,QAAI,CAACC,EAAL,GAAUgiJ,IAAI,CAAC7E,QAAL,CAAc32J,CAAd,CAAV;AACAuZ,QAAI,CAACE,EAAL,GAAU+hJ,IAAI,CAAC5E,QAAL,CAAc52J,CAAd,CAAV;AACAuZ,QAAI,CAACG,EAAL,GAAU8hJ,IAAI,CAAC7E,QAAL,CAAc32J,CAAC,GAAG,CAAlB,CAAV;AACAuZ,QAAI,CAACI,EAAL,GAAU6hJ,IAAI,CAAC5E,QAAL,CAAc52J,CAAC,GAAG,CAAlB,CAAV;AACA,SAAKy7J,eAAL,CAAqB7sJ,KAArB,EAA4B2K,IAA5B;AACD;;AACDA,MAAI,CAACC,EAAL,GAAUgiJ,IAAI,CAAC7E,QAAL,CAAc6E,IAAI,CAACv2I,KAAL,GAAa,CAA3B,CAAV;AACA1L,MAAI,CAACE,EAAL,GAAU+hJ,IAAI,CAAC5E,QAAL,CAAc4E,IAAI,CAACv2I,KAAL,GAAa,CAA3B,CAAV;AACA1L,MAAI,CAACG,EAAL,GAAU8hJ,IAAI,CAAC7E,QAAL,CAAc,CAAd,CAAV;AACAp9I,MAAI,CAACI,EAAL,GAAU6hJ,IAAI,CAAC5E,QAAL,CAAc,CAAd,CAAV;AACA,OAAK6E,eAAL,CAAqB7sJ,KAArB,EAA4B2K,IAA5B;AACD,CAvBD,C,CAyBA;;;AACA0gJ,SAAI,CAACz5J,SAAL,CAAei7J,eAAf,GAAiC,UAAS7sJ,KAAT,EAAgB2K,IAAhB,EAAsB;AACrD,MAAIhL,OAAJ,EAAatO,MAAb,EAAqBiQ,GAArB,EAA0BD,GAA1B,EAA+Bke,CAA/B,EAAkChtB,CAAlC,EAAqCuV,CAArC,EAAwC2F,CAAxC,EAA2C0J,CAA3C,EAA8CpP,EAA9C,EAAkDC,EAAlD,EAAsD8kJ,GAAtD,EAA2DC,GAA3D,EAAgEC,IAAhE,EAAsEC,EAAtE,EACE77J,CADF,EACK2M,CADL;;AAGA,MAAI,KAAKy2I,UAAL,KAAoB,CAAxB,EAA2B;AACzB;AACD;;AACD70I,SAAO,GAAGK,KAAK,CAACg1I,eAAN,EAAV;AACA3jJ,QAAM,GAAG21J,KAAK,CAACr8I,IAAI,CAACC,EAAL,GAAUD,IAAI,CAACG,EAAhB,EAAoBH,IAAI,CAACE,EAAL,GAAUF,IAAI,CAACI,EAAnC,CAAd;AACAzJ,KAAG,GAAG,CAACqJ,IAAI,CAACG,EAAL,GAAUH,IAAI,CAACC,EAAhB,IAAsBvZ,MAA5B;AACAgQ,KAAG,GAAG,CAACsJ,IAAI,CAACI,EAAL,GAAUJ,IAAI,CAACE,EAAhB,IAAsBxZ,MAA5B;AACAkuB,GAAC,GAAG/sB,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAAC4kB,KAAL,CAAW/lB,MAAM,GAAGy5J,gBAApB,CAAZ,CAAJ;AACA/iJ,IAAE,GAAGpI,OAAO,CAAC4zI,eAAR,GAA0BlyI,GAA/B;AACA2G,IAAE,GAAG,CAACrI,OAAO,CAAC4zI,eAAT,GAA2BjyI,GAAhC;;AACA,MAAIie,CAAC,KAAK,CAAV,EAAa;AACXpI,KAAC,GAAG,MAAM9lB,MAAV;AACAkB,KAAC,GAAGoY,IAAI,CAACC,EAAL,GAAUuM,CAAC,GAAG7V,GAAlB;AACAwG,KAAC,GAAG6C,IAAI,CAACE,EAAL,GAAUsM,CAAC,GAAG9V,GAAlB;AACA8V,KAAC,GAAGnX,KAAK,CAACktJ,uBAAN,CAA8B36J,CAA9B,EAAiCuV,CAAjC,CAAJ;;AACA,QAAIqP,CAAC,GAAG4zI,4BAAR,EAAsC;AACpC5zI,OAAC,GAAGnX,KAAK,CAACmtJ,gBAAN,CAAuB56J,CAAvB,EAA0BuV,CAA1B,CAAJ;AACA2F,OAAC,GAAG,IAAIu7I,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiB,KAAK4kJ,aAAL,CAAmBv1I,CAAnB,CAAjB,EAAwCxX,OAAO,CAAC4zI,eAAhD,CAAJ;AACA9lI,OAAC,CAAC1F,EAAF,GAAOA,EAAP;AACA0F,OAAC,CAACzF,EAAF,GAAOA,EAAP;AACAhI,WAAK,CAACotJ,SAAN,CAAgB3/I,CAAhB;;AACA,UAAI,CAAC,KAAKgnI,oBAAV,EAAgC;AAC9Bz0I,aAAK,CAACqtJ,gBAAN,CAAuB96J,CAAvB,EAA0BuV,CAA1B,EAA6BqP,CAAC,GAAG1J,CAAC,CAAC+nC,MAAF,GAAW,KAAK2+F,aAAjD;AACD;AACF;AACF,GAfD,MAeO;AACL2Y,OAAG,GAAG,IAAIt8J,KAAJ,CAAU,CAAV,CAAN;AACAu8J,OAAG,GAAG,IAAIv8J,KAAJ,CAAU,CAAV,CAAN;AACAs8J,OAAG,CAAC,CAAD,CAAH,GAAS/kJ,EAAE,GAAGmjJ,KAAL,GAAaljJ,EAAE,GAAGijJ,KAA3B;AACA8B,OAAG,CAAC,CAAD,CAAH,GAAShlJ,EAAE,GAAGkjJ,KAAL,GAAajjJ,EAAE,GAAGkjJ,KAA3B;AACA4B,OAAG,CAAC,CAAD,CAAH,GAAS9kJ,EAAE,GAAGijJ,KAAL,GAAaljJ,EAAE,GAAGmjJ,KAA3B;AACA6B,OAAG,CAAC,CAAD,CAAH,GAAS/kJ,EAAE,GAAGkjJ,KAAL,GAAanjJ,EAAE,GAAGkjJ,KAA3B;AACA6B,OAAG,CAAC,CAAD,CAAH,GAAS/kJ,EAAE,GAAGqjJ,KAAL,GAAapjJ,EAAE,GAAGmjJ,KAA3B;AACA4B,OAAG,CAAC,CAAD,CAAH,GAAShlJ,EAAE,GAAGojJ,KAAL,GAAanjJ,EAAE,GAAGojJ,KAA3B;AACA0B,OAAG,CAAC,CAAD,CAAH,GAAS9kJ,EAAE,GAAGmjJ,KAAL,GAAapjJ,EAAE,GAAGqjJ,KAA3B;AACA2B,OAAG,CAAC,CAAD,CAAH,GAAS/kJ,EAAE,GAAGojJ,KAAL,GAAarjJ,EAAE,GAAGojJ,KAA3B;AACA6B,QAAI,GAAG,IAAIF,GAAG,CAACz7J,MAAf;;AACA,SAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmuB,CAAhB,EAAmBnuB,CAAC,IAAI,CAAxB,EAA2B;AACzB+lB,OAAC,GAAG,CAAC/lB,CAAC,GAAG,GAAL,IAAY05J,gBAAhB;AACAv4J,OAAC,GAAGoY,IAAI,CAACC,EAAL,GAAUuM,CAAC,GAAG7V,GAAlB;AACAwG,OAAC,GAAG6C,IAAI,CAACE,EAAL,GAAUsM,CAAC,GAAG9V,GAAlB;AACA8V,OAAC,GAAGnX,KAAK,CAACktJ,uBAAN,CAA8B36J,CAA9B,EAAiCuV,CAAjC,CAAJ;AACAmlJ,QAAE,GAAG,KAAKP,aAAL,CAAmBv1I,CAAnB,IAAwB61I,IAA7B;;AACA,UAAI71I,CAAC,GAAG4zI,4BAAR,EAAsC;AACpCt9I,SAAC,GAAG,IAAIu7I,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBmlJ,EAAjB,EAAqBttJ,OAAO,CAAC4zI,eAA7B,CAAJ;AACA9lI,SAAC,CAAC1F,EAAF,GAAOA,EAAP;AACA0F,SAAC,CAACzF,EAAF,GAAOA,EAAP;AACAhI,aAAK,CAACotJ,SAAN,CAAgB3/I,CAAhB;;AACA,aAAK1P,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGivJ,IAAI,GAAG,CAAvB,EAA0BjvJ,CAAC,IAAI,CAA/B,EAAkC;AAChC0P,WAAC,GAAG,IAAIu7I,MAAJ,CAAWz2J,CAAX,EAAcuV,CAAd,EAAiBmlJ,EAAjB,EAAqBttJ,OAAO,CAAC4zI,eAA7B,CAAJ;AACA9lI,WAAC,CAAC1F,EAAF,GAAO+kJ,GAAG,CAAC/uJ,CAAD,CAAV;AACA0P,WAAC,CAACzF,EAAF,GAAO+kJ,GAAG,CAAChvJ,CAAD,CAAV;AACAiC,eAAK,CAACotJ,SAAN,CAAgB3/I,CAAhB;AACD;;AACD,YAAI,CAAC,KAAKgnI,oBAAV,EAAgC;AAC9Bz0I,eAAK,CAACstJ,0BAAN,CAAiC/6J,CAAjC,EAAoCuV,CAApC,EAAuC,CAACmlJ,EAAD,GAAMD,IAAN,GAAa,KAAK7Y,aAAzD;AACD;AACF;AACF;AACF;AACF,CAhED,C;;ACjWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI9jJ,qBAAU,GAAI,YAAW;AAAI,MAAI;AAC/B,QAAII,YAAJ;AACD,GAF4B,CAE3B,OAAOR,CAAP,EAAU;AACV,WAAO,SAAP;AACD;;AACD,SAAO,cAAP;AACD,CANe,EAAlB,C,CAQA;AACA;AACA;;;AACO,IAAMs9J,wBAAa,GAAG,SAAhBA,aAAgB,CAASh1D,GAAT,EAAci1D,QAAd,EAAwB;AACnD,MACA;AACE5uE,IAAE,GAAG2Z,GAAG,CAAC45C,UAFX;AAAA,MAGEtzD,EAAE,GAAG0Z,GAAG,CAAC65C,WAHX;AAAA,MAIEqb,UAAU,GAAG7uE,EAAE,GAAGC,EAJpB;AAAA,MAME;AACAujE,SAAO,GAAG7pD,GAAG,CAAC85C,WAAJ,GAAkBzzD,EAP9B;AAAA,MAQEyjE,OAAO,GAAG9pD,GAAG,CAAC+5C,YAAJ,GAAmBzzD,EAR/B;AAAA,MAUE;AACA6uE,aAAW,GAAG,CAXhB;AAAA,MAaE;AACA;AACAC,YAfF;AAAA,MAgBEC,WAhBF;AAAA,MAiBEC,UAjBF;AAAA,MAmBE;AACA3K,iBApBF;AAAA,MAqBE6D,gBArBF;AAAA,MAuBE;AACA+G,WAxBF;AAAA,MAyBEC,cAzBF;AAAA,MA2BE;AACAC,cAAY,GAAG,KA5BjB;AAAA,MA6BE;AACAC,aA9BF;AAAA,MAgCE;AACA;AACA;AACA;AACAC,MAAI,GAAG;AACLnuH,SAAK,EAAE,iBAAW,CAAE,CADf;AAELjC,QAAI,EAAE,gBAAW,CAAE,CAFd;AAGLqwH,YAAQ,EAAE,oBAAW,CAAE,CAHlB;AAILC,aAAS,EAAE,qBAAW,CAAE,CAJnB;AAKLC,WAAO,EAAE,mBAAW,CAAE;AALjB,GApCT;AAAA,MA4CE;AACA;AACA;AACA;AACA12I,GAAC,GAAGjoB,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0Bl1D,GAAG,CAACk6C,sBAA9B,EAAsDpiJ,qBAAtD,CAhDN;AAAA,MAiDE;AACAolJ,IAAE,GAAG/lJ,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0BpsH,GAA1B,EAA+BhxC,qBAA/B,CAlDP;AAAA,MAmDE;AACAovE,GAAC,GAAG/vE,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0B,CAA1B,EAA6Bp9J,qBAA7B,CApDN;AAAA,MAqDE;AACAgvC,GAAC,GAAG3vC,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0B,CAA1B,EAA6Bp9J,qBAA7B,CAtDN;AAAA,MAuDE;AACA8mJ,GAAC,GAAGznJ,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0B,CAA1B,EAA6Bp9J,qBAA7B,CAxDN;AAAA,MAyDE;AACAozJ,OAAK,GAAG/zJ,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0B,CAA1B,EAA6Bp9J,qBAA7B,CA1DV;AAAA,MA2DEszJ,KAAK,GAAGj0J,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0B,CAA1B,EAA6Bp9J,qBAA7B,CA3DV;AAAA,MA4DE;AACA6kJ,cAAY,GAAGxlJ,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0Bl1D,GAAG,CAACm6C,uBAA9B,EAAuDriJ,qBAAvD,CA7DjB;AAAA,MA8DE;AACA+kJ,UAAQ,GAAG1lJ,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0Bl1D,GAAG,CAACo6C,wBAA9B,EAAwDtiJ,qBAAxD,CA/Db;AAAA,MAgEE;AACA+jJ,SAAO,GAAG1kJ,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0Bl1D,GAAG,CAACq6C,kBAA9B,EAAkDviJ,qBAAlD,CAjEZ;AAAA,MAkEE;AACAslJ,UAAQ,GAAGjmJ,yBAAM,CAACQ,MAAP,CAAcu9J,UAAd,EAA0B,IAA1B,EAAgCp9J,qBAAhC,CAnEb;AAAA,MAoEE;AACAke,SAAO,GAAG,EArEZ;AAAA,MAuEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA20G,SAAO,GAAG,EA9FZ;AAAA,MAgGE;AACA4mC,OAAK,GAAI,YAAW;AAClB,QAAI30J,MAAM,GAAG,EAAb;AAAA,QAAiB/D,CAAjB;AAAA,QAAoBc,GAApB;;AAEA,QAAIs7J,QAAJ,EAAc;AACZ,UAAI,CAAC99J,yBAAM,CAACuE,OAAP,CAAeu5J,QAAf,CAAL,EAA+B;AAAEA,gBAAQ,GAAG,CAACA,QAAD,CAAX;AAChC;;AACDr4J,YAAM,GAAG,IAAI3E,KAAJ,CAAUg9J,QAAQ,CAACn8J,MAAnB,CAAT;;AACA,WAAKD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGs7J,QAAQ,CAACn8J,MAA3B,EAAmCD,CAAC,GAAGc,GAAvC,EAA4Cd,CAAC,IAAI,CAAjD,EAAoD;AAAE+D,cAAM,CAAC/D,CAAD,CAAN,GAAY,IAAIi6J,SAAJ,CAASmC,QAAQ,CAACp8J,CAAD,CAAjB,CAAZ;AACrD;AACF;;AACD,WAAO+D,MAAP;AACD,GAXQ,EAjGX;AAAA,MA8GE;AACA;AACA;AACAm5J,WAAS,GAAG,SAAZA,SAAY,GAAW;AACrBN,gBAAY,GAAG,KAAf,CADqB,CAGrB;;AACA,QAAI,OAAOn+J,MAAP,KAAkB,WAAtB,EAAmC;AACjC,YAAM,IAAIoB,KAAJ,CAAU,iEAAV,CAAN;AACD,KANoB,CAOrB;AACA;;;AACAgyJ,SAAK,CAAC3qI,IAAN,CAAWumE,EAAX,EAAeD,EAAf,EATqB,CAWrB;;AACAskC,WAAO,CAAC,CAAD,CAAP,GAAa+/B,KAAK,CAAClH,aAAN,EAAb;AACA74B,WAAO,CAAC,CAAD,CAAP,GAAa+/B,KAAK,CAAClH,aAAN,EAAb;AACA74B,WAAO,CAAC,CAAD,CAAP,GAAa+/B,KAAK,CAAClH,aAAN,EAAb;AACA74B,WAAO,CAAC,CAAD,CAAP,GAAa+/B,KAAK,CAAClH,aAAN,EAAb,CAfqB,CAiBrB;;AACAwS,qBAAiB,GAlBI,CAoBrB;AACA;;AACArL,mBAAe,GAAG5B,iCAAiB,CAACkN,UAAD,CAAnC,CAtBqB,CAuBrB;;AACAzH,oBAAgB,GAAG1B,mCAAkB,CAACmJ,UAAD,CAArC;AAEAR,gBAAY,GAAG,IAAf;AACD,GA5IH;AAAA,MA8IEO,iBAAiB,GAAG,SAApBA,iBAAoB,GAAW;AAC7B;AACA;AACA;AACA;AACA;AACAtL,SAAK,CAACvC,gBAAN,CAAuBx9B,OAAO,CAAC,CAAD,CAA9B,EAAmCvrG,CAAnC,EAAsCA,CAAtC,EAAyC89H,EAAzC,EAA6CP,YAA7C,EAN6B,CAO7B;AACA;AACA;AACA;AACA;;AACA+N,SAAK,CAACvC,gBAAN,CAAuBx9B,OAAO,CAAC,CAAD,CAA9B,EAAmCi0B,CAAnC,EAAsC/B,QAAtC,EAAgDhB,OAAhD,EAAyDuB,QAAzD,EAZ6B,CAa7B;AACA;AACA;AACA;AACA;;AACAsN,SAAK,CAACvC,gBAAN,CAAuBx9B,OAAO,CAAC,CAAD,CAA9B,EAAmCzjD,CAAnC,EAAsCpgC,CAAtC,EAAyCogC,CAAzC,EAA4CpgC,CAA5C,EAlB6B,CAmB7B;AACA;AACA;AACA;AACA;;AACA4jH,SAAK,CAACvC,gBAAN,CAAuBx9B,OAAO,CAAC,CAAD,CAA9B,EAAmCugC,KAAnC,EAA0CE,KAA1C,EAAiDF,KAAjD,EAAwDE,KAAxD;AACD,GAvKH;AAAA,MAyKE8K,sBAAsB,GAAG,SAAzBA,sBAAyB,GAAW;AAClCX,aAAS,GAAI,YAAW;AACtB,UAAI18J,CAAJ,EAAOc,GAAP;;AACA,UAAIqmG,GAAG,CAAC46C,KAAR,EAAe;AAAE,eAAO,IAAP;AAChB;;AACD,WAAK/hJ,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG43J,KAAK,CAACz4J,MAAxB,EAAgCD,CAAC,GAAGc,GAApC,EAAyCd,CAAC,IAAI,CAA9C,EAAiD;AAAE,YAAI04J,KAAK,CAAC14J,CAAD,CAAL,CAASojJ,UAAT,GAAsB,CAA1B,EAA6B;AAAI,iBAAO,IAAP;AAAc;AACjG;;AACD,aAAO,KAAP;AACD,KAPY,EAAb;;AASAuZ,kBAAc,GAAI,YAAW;AAC3B,UAAI38J,CAAJ,EAAOc,GAAP;;AACA,WAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG43J,KAAK,CAACz4J,MAAxB,EAAgCD,CAAC,GAAGc,GAApC,EAAyCd,CAAC,IAAI,CAA9C,EAAiD;AAC/C,YAAI04J,KAAK,CAAC14J,CAAD,CAAL,CAASsjJ,KAAT,GAAiB,CAArB,EAAwB;AACtB,iBAAO,IAAP;AACD;AACF;;AACD,aAAO,KAAP;AACD,KARiB,EAAlB;AASD,GA5LH;AAAA,MA8LEga,SAAS,GAAG,SAAZA,SAAY,CAAS9a,IAAT,EAAe+a,UAAf,EAA2B;AACrC,QACE1E,EAAE,GAAG1xD,GAAG,CAAC85C,WADX;AAAA,QAEE6X,EAAE,GAAG3xD,GAAG,CAAC+5C,YAFX;AAAA,QAGEzzF,OAHF;AAAA,QAGW/qD,GAHX;AAAA,QAIEkJ,EAJF;AAAA,QAIM9K,GAJN;AAMA2sD,WAAO,GAAG+0F,IAAI,CAAC4X,YAAL,CAAkB5sE,EAAlB,EAAsBC,EAAtB,EAA0BorE,EAA1B,EAA8BC,EAA9B,CAAV;;AACA,SAAKltJ,EAAE,GAAG,CAAL,EAAQ9K,GAAG,GAAG2sD,OAAO,CAACxtD,MAA3B,EAAmC2L,EAAE,GAAG9K,GAAxC,EAA6C8K,EAAE,IAAI,CAAnD,EAAsD;AACpDlJ,SAAG,GAAG+qD,OAAO,CAAC7hD,EAAD,CAAb;;AAEA,UAAI,CAAC2xJ,UAAL,EAAiB;AACfh3I,SAAC,CAAC7jB,GAAD,CAAD,GAAS8/I,IAAI,CAACtqF,WAAd;AACD;;AACDqsF,cAAQ,CAAC7hJ,GAAD,CAAR,GAAgB,KAAhB;AACAohJ,kBAAY,CAACphJ,GAAD,CAAZ,GAAoB8/I,IAAI,CAACM,oBAAzB;AACAkB,cAAQ,CAACthJ,GAAD,CAAR,GAAgB8/I,IAAI,CAACO,aAArB;AACAC,aAAO,CAACtgJ,GAAD,CAAP,GAAe8/I,IAAI,CAACQ,OAApB;;AAEA,UAAIR,IAAI,CAACe,UAAL,KAAoB,CAAxB,EAA2B;AACzB8O,aAAK,CAAC3vJ,GAAD,CAAL,GAAa8/I,IAAI,CAACe,UAAL,GAAkBniJ,IAAI,CAAC8O,GAAL,CAASsyI,IAAI,CAACgB,UAAd,CAA/B;AACA+O,aAAK,CAAC7vJ,GAAD,CAAL,GAAa8/I,IAAI,CAACe,UAAL,GAAkBniJ,IAAI,CAAC6O,GAAL,CAASuyI,IAAI,CAACgB,UAAd,CAA/B;AACD;;AAED,UAAIhB,IAAI,CAACa,oBAAT,EAA+B;AAC7BgB,UAAE,CAAC3hJ,GAAD,CAAF,GAAU8/I,IAAI,CAACtqF,WAAf;AACD;AACF;AACF,GA1NH;AAAA,MA4NEslG,WAAW,GAAG,SAAdA,WAAc,CAASC,mBAAT,EAA8B;AAC1C,QAAI,CAACA,mBAAL,EAA0B;AACxBn/J,+BAAM,CAACU,IAAP,CAAYunB,CAAZ,EAAe4gF,GAAG,CAACk6C,sBAAnB;AACA/iJ,+BAAM,CAACU,IAAP,CAAYqvE,CAAZ,EAAe,CAAf;AACA/vE,+BAAM,CAACU,IAAP,CAAYivC,CAAZ,EAAe,CAAf;AACD;;AACD3vC,6BAAM,CAACU,IAAP,CAAYqlJ,EAAZ,EAAgBp0G,GAAhB;AACA3xC,6BAAM,CAACU,IAAP,CAAY+mJ,CAAZ,EAAe,CAAf;AACAznJ,6BAAM,CAACU,IAAP,CAAYqzJ,KAAZ,EAAmB,CAAnB;AACA/zJ,6BAAM,CAACU,IAAP,CAAYuzJ,KAAZ,EAAmB,CAAnB;AACAj0J,6BAAM,CAACU,IAAP,CAAY8kJ,YAAZ,EAA0B38C,GAAG,CAACm6C,uBAA9B;AACAhjJ,6BAAM,CAACU,IAAP,CAAYglJ,QAAZ,EAAsB78C,GAAG,CAACo6C,wBAA1B;AACAjjJ,6BAAM,CAACU,IAAP,CAAYgkJ,OAAZ,EAAqB77C,GAAG,CAACq6C,kBAAzB;AACAljJ,6BAAM,CAACU,IAAP,CAAYulJ,QAAZ,EAAsB,IAAtB;AACD,GA1OH;AAAA,MA4OEmZ,uBAAuB,GAAG,SAA1BA,uBAA0B,CAASH,UAAT,EAAqB;AAC7C,QAAI,CAAC7E,KAAD,IAAUA,KAAK,CAACz4J,MAAN,KAAiB,CAA/B,EAAkC;AAClC,QAAID,CAAJ,CAF6C,CAG7C;;AACA,SAAKA,CAAC,GAAG04J,KAAK,CAACz4J,MAAN,GAAe,CAAxB,EAA2BD,CAAC,IAAI,CAAhC,EAAmCA,CAAC,IAAI,CAAxC,EAA2C;AACzCs9J,eAAS,CAAC5E,KAAK,CAAC14J,CAAD,CAAN,EAAWu9J,UAAX,CAAT;AACD;AACF,GAnPH;AAAA,MAqPEI,iBAAiB,GAAG,SAApBA,iBAAoB,GAAW;AAC7B,QAAInb,IAAJ,EAAUrhJ,CAAV,EAAauV,CAAb,EAAgB1W,CAAhB,EAAmB49J,GAAnB,EAAwBnxJ,CAAxB,EAA2BE,CAA3B,EAA8B7L,GAA9B,EAAmCmkB,KAAnC;;AACA,SAAKjlB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwtF,EAAhB,EAAoBxtF,CAAC,IAAI,CAAzB,EAA4B;AAC1BmB,OAAC,GAAGnB,CAAC,GAAGgxJ,OAAR;AACA4M,SAAG,GAAG59J,CAAC,GAAGytF,EAAV;;AACA,WAAKhhF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGghF,EAAhB,EAAoBhhF,CAAC,IAAI,CAAzB,EAA4B;AAC1BiK,SAAC,GAAGjK,CAAC,GAAGwkJ,OAAR;AACAlL,SAAC,CAAC6X,GAAG,GAAGnxJ,CAAP,CAAD,GAAa,CAAb;AACAwY,aAAK,GAAG,CAAR;;AACA,YAAI03I,cAAJ,EAAoB;AAClB,eAAKhwJ,CAAC,GAAG,CAAJ,EAAO7L,GAAG,GAAG43J,KAAK,CAACz4J,MAAxB,EAAgC0M,CAAC,GAAG7L,GAApC,EAAyC6L,CAAC,IAAI,CAA9C,EAAiD;AAC/C61I,gBAAI,GAAGkW,KAAK,CAAC/rJ,CAAD,CAAZ;;AACA,gBAAI61I,IAAI,CAACxpI,KAAL,CAAW89I,QAAX,CAAoB31J,CAApB,EAAuBuV,CAAvB,CAAJ,EAA+B;AAC7BqvI,eAAC,CAAC6X,GAAG,GAAGnxJ,CAAP,CAAD,IAAc+1I,IAAI,CAACc,KAAnB;AACAr+H,mBAAK;AACN;AACF;;AACD,cAAIA,KAAK,GAAG,CAAZ,EAAe8gI,CAAC,CAAC6X,GAAG,GAAGnxJ,CAAP,CAAD,IAAcwY,KAAd;AAChB;AACF;AACF;AACF,GA1QH;AAAA,MA4QE44I,eAAc,GAAG,SAAjBA,cAAiB,CAAS79J,CAAT,EAAYyM,CAAZ,EAAe;AAC9B,QAAIqxJ,KAAK,GAAG,CAACzvF,CAAC,CAACruE,CAAC,GAAGytF,EAAJ,GAAShhF,CAAT,GAAa,CAAd,CAAD,GAAoB4hE,CAAC,CAACruE,CAAC,GAAGytF,EAAJ,GAAShhF,CAAT,GAAa,CAAd,CAAtB,IAA0CukJ,OAAtD;AAAA,QACE+M,KAAK,GAAG,CAAC9vH,CAAC,CAAC,CAACjuC,CAAC,GAAG,CAAL,IAAUytF,EAAV,GAAehhF,CAAhB,CAAD,GAAsBwhC,CAAC,CAAC,CAACjuC,CAAC,GAAG,CAAL,IAAUytF,EAAV,GAAehhF,CAAhB,CAAxB,IAA8CwkJ,OADxD;AAEA,WAAO,OAAO6M,KAAK,GAAGC,KAAf,CAAP;AACD,GAhRH;AAAA,MAkRE;AACA;AACA;AACAX,YAAU,GAAG;AACX;AACA;AACA;AACAY,YAAQ,EAAE,oBAAW;AACnBlB,UAAI,CAACnuH,KAAL,CAAW,iBAAX;;AACA,UAAIiuH,YAAJ,EAAkB;AAChB;AACA,YAAIz1D,GAAG,CAACi6C,UAAR,EAAoB;AAClB0b,cAAI,CAACnuH,KAAL,CAAW,kBAAX;AACAgnH,0BAAgB,CAAC7P,KAAjB;AACAgX,cAAI,CAACpwH,IAAL,CAAU,kBAAV;AACD;;AACDowH,YAAI,CAACnuH,KAAL,CAAW,iBAAX;AACAmjH,uBAAe,CAAChM,KAAhB,CAAsB3+C,GAAG,CAACi6C,UAA1B;AACA0b,YAAI,CAACpwH,IAAL,CAAU,iBAAV;AACD,OAVD,MAUO;AACL;AACA,YAAIgwH,SAAJ,EAAe;AACbI,cAAI,CAACnuH,KAAL,CAAW,gBAAX;;AACA,cAAI2tH,WAAW,GAAGn1D,GAAG,CAACi7C,wBAAlB,KAA+C,CAAnD,EAAsD;AACpDub,6BAAiB;;AACjB,gBAAIx2D,GAAG,CAAC46C,KAAR,EAAe;AACb0a,wBAAU,CAAChD,QAAX;AACD;;AACDgD,sBAAU,CAACjD,OAAX;AACD;;AACDiD,oBAAU,CAAC3W,KAAX;AACAgX,cAAI,CAACpwH,IAAL,CAAU,gBAAV;AACD;;AACD,YAAIy6D,GAAG,CAACi6C,UAAR,EAAoB;AAClB0b,cAAI,CAACnuH,KAAL,CAAW,kBAAX;AACA6tH,qBAAW,CAAC1W,KAAZ,CAAkBz3E,CAAlB,EAAqBpgC,CAArB;AACA6uH,cAAI,CAACpwH,IAAL,CAAU,kBAAV;AACD;;AACDowH,YAAI,CAACnuH,KAAL,CAAW,iBAAX;AACA4tH,kBAAU,CAACzW,KAAX,CAAiB3+C,GAAG,CAACi6C,UAArB,EAAiC76H,CAAjC,EAAoCw/H,CAApC;AACA+W,YAAI,CAACpwH,IAAL,CAAU,iBAAV;AACD;;AACD4vH,iBAAW,IAAI,CAAf;AACAQ,UAAI,CAACpwH,IAAL,CAAU,iBAAV;AACD,KAzCU;AA2CX;AACA;AACA;AACAuxH,uBAAmB,EAAE,6BAASC,UAAT,EAAqB;AACxCpB,UAAI,GAAGoB,UAAP;AACD,KAhDU;AAkDX9zJ,SAAK,EAAE,iBAAW;AAChBkyJ,iBAAW,GAAG,CAAd;AACAkB,iBAAW;AACXH,4BAAsB;AACtBK,6BAAuB;AACvBC,uBAAiB;;AACjB,UAAIf,YAAJ,EAAkB;AAChBO,yBAAiB;AAClB;AACF,KA3DU;AA6DXgB,gBAAY,EAAE,sBAAS3b,IAAT,EAAe4b,WAAf,EAA4B;AACxC;AACA;AACA;AACA;AACAZ,iBAAW,CAAC,IAAD,CAAX;AACAH,4BAAsB;AACtBK,6BAAuB,CAAC,IAAD,CAAvB;AACAC,uBAAiB;;AAEjB,UAAIS,WAAW,KAAK,aAApB,EAAmC;AACjCd,iBAAS,CAAC9a,IAAD,CAAT;AACD;AACF,KA1EU;AA4EX6b,WAAO,EAAE,iBAASrlI,KAAT,EAAgB;AACvB,UAAIwpH,IAAI,GAAG,IAAIyX,SAAJ,CAASjhI,KAAT,CAAX;AACA0/H,WAAK,CAAC91J,IAAN,CAAW4/I,IAAX;AACA8a,eAAS,CAAC9a,IAAD,CAAT;AACD,KAhFU;AAkFX8b,cAAU,EAAE,oBAASt+J,CAAT,EAAY;AACtB04J,WAAK,CAACprG,MAAN,CAAattD,CAAb,EAAgB,CAAhB;AACAo9J,gBAAU,CAACe,YAAX;AACD,KArFU;AAuFXI,YAAQ,EAAE,kBAAStwH,CAAT,EAAY;AACpB,UAAI2uH,YAAY,KAAK3uH,CAArB,EAAwB;;AACxB,UAAI,CAACmvH,UAAU,CAACoB,iBAAX,EAAL,EAAqC;AACnC;AACA5B,oBAAY,GAAG,KAAf;AACA;AACD;;AAED,UAAI3uH,CAAJ,EAAO;AACL;AACA;AACAivH,iBAAS;AACV,OAJD,MAIO;AACL;AACAE,kBAAU,CAACqB,eAAX;AACArB,kBAAU,CAACsB,YAAX;AACA9B,oBAAY,GAAG,KAAf;AACD;AACF,KAzGU;AA2GX+B,iBAAa,EAAE,yBAAW;AACxB,aAAO/B,YAAP;AACD,KA7GU;AA+GX4B,qBAAiB,EAAE,6BAAW;AAC5B,aAAO,CAAC9B,SAAR;AACD,KAjHU;AAmHXkC,iBAAa,EAAE,yBAAW;AACxB,aAAO/B,WAAP;AACD,KArHU;AAuHX4B,mBAAe,EAAE,2BAAW;AAC1B,UAAI7B,YAAJ,EAAkB;AAChB/K,aAAK,CAACtC,WAAN,CAAkBz9B,OAAO,CAAC,CAAD,CAAzB,EAA8BvrG,CAA9B;AACD;AACF,KA3HU;AA6HXm4I,gBAAY,EAAE,wBAAW;AACvB,UAAI9B,YAAJ,EAAkB;AAChB/K,aAAK,CAACtC,WAAN,CAAkBz9B,OAAO,CAAC,CAAD,CAAzB,EAA8BzjD,CAA9B,EAAiC,CAAjC;AACAwjF,aAAK,CAACtC,WAAN,CAAkBz9B,OAAO,CAAC,CAAD,CAAzB,EAA8B7jF,CAA9B,EAAiC,CAAjC;AACD;AACF,KAlIU;AAoIX4wH,kBAAc,EAAE,0BAAW;AACzB,aAAOvC,WAAP;AACD,KAtIU;AAuIX;AACA1Y,mBAAe,EAAE,2BAAW;AAC1B,aAAOz8C,GAAP;AACD,KA1IU;AA4IX;AACA40D,oBAAgB,EAAE,0BAAS56J,CAAT,EAAYuV,CAAZ,EAAe;AAC/B,UACE1W,CAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASksF,EAAE,GAAG,CAAd,EAAiBpsF,IAAI,CAAC4kB,KAAL,CAAW7kB,CAAC,GAAG6vJ,OAAf,CAAjB,CAAT,EAAoD,CAApD,CADN;AAAA,UAEEvkJ,CAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASmsF,EAAE,GAAG,CAAd,EAAiBrsF,IAAI,CAAC4kB,KAAL,CAAWtP,CAAC,GAAGu6I,OAAf,CAAjB,CAAT,EAAoD,CAApD,CAFN;AAIA,aAAO1qI,CAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAR;AACD,KAnJU;AAqJXwvJ,oBAAgB,EAAE,0BAAS96J,CAAT,EAAYuV,CAAZ,EAAewhD,WAAf,EAA4B;AAC5C,UACEl4D,CAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASksF,EAAE,GAAG,CAAd,EAAiBpsF,IAAI,CAAC4kB,KAAL,CAAW7kB,CAAC,GAAG6vJ,OAAf,CAAjB,CAAT,EAAoD,CAApD,CADN;AAAA,UAEEvkJ,CAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASmsF,EAAE,GAAG,CAAd,EAAiBrsF,IAAI,CAAC4kB,KAAL,CAAWtP,CAAC,GAAGu6I,OAAf,CAAjB,CAAT,EAAoD,CAApD,CAFN;AAIA1qI,OAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAD,GAAgByrD,WAAhB;AACD,KA3JU;AA6JX4jG,2BAAuB,EAAE,iCAAS36J,CAAT,EAAYuV,CAAZ,EAAe;AACtC,UACEk4E,IAAI,GAAG,CADT;AAAA,UAEE+1D,GAAG,GAAGn3D,EAAE,GAAG,CAFb;AAAA,UAGEo3D,GAAG,GAAGn3D,EAAE,GAAG,CAHb;AAAA,UAIE6sE,EAAE,GAAGl5J,IAAI,CAAC4kB,KAAL,CAAW7kB,CAAC,GAAG6vJ,OAAf,CAJP;AAAA,UAKEuJ,EAAE,GAAGn5J,IAAI,CAAC4kB,KAAL,CAAWtP,CAAC,GAAGu6I,OAAf,CALP;AAAA,UAMEjxJ,CANF;AAAA,UAMKyM,CANL;AAQAzM,OAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAd,CAAT,EAA4B,CAA5B,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAd,CAAT,EAA4B,CAA5B,CAAJ;AACA3rE,UAAI,IAAIroE,CAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAT;AACAzM,OAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAE,GAAG,CAAnB,CAAT,EAAgC,CAAhC,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAd,CAAT,EAA4B,CAA5B,CAAJ;AACA3rE,UAAI,IAAIroE,CAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAT;AACAzM,OAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAE,GAAG,CAAnB,CAAT,EAAgC,CAAhC,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAd,CAAT,EAA4B,CAA5B,CAAJ;AACA3rE,UAAI,IAAIroE,CAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAT;AACAzM,OAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAd,CAAT,EAA4B,CAA5B,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAE,GAAG,CAAnB,CAAT,EAAgC,CAAhC,CAAJ;AACA3rE,UAAI,IAAIroE,CAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAT;AACAzM,OAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAd,CAAT,EAA4B,CAA5B,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAE,GAAG,CAAnB,CAAT,EAAgC,CAAhC,CAAJ;AACA3rE,UAAI,IAAIroE,CAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAT;AACA,aAAOmiF,IAAI,GAAG,GAAd;AACD,KAtLU;AAwLX;AACAstE,8BAA0B,EAAE,oCAAS/6J,CAAT,EAAYuV,CAAZ,EAAeooJ,SAAf,EAA0B;AACpD,UACEna,GAAG,GAAGn3D,EAAE,GAAG,CADb;AAAA,UAEEo3D,GAAG,GAAGn3D,EAAE,GAAG,CAFb;AAAA,UAGE6sE,EAAE,GAAGl5J,IAAI,CAAC4kB,KAAL,CAAW7kB,CAAC,GAAG6vJ,OAAf,CAHP;AAAA,UAIEuJ,EAAE,GAAGn5J,IAAI,CAAC4kB,KAAL,CAAWtP,CAAC,GAAGu6I,OAAf,CAJP;AAAA,UAKEjxJ,CALF;AAAA,UAKKyM,CALL;AAOAqyJ,eAAS,IAAI,GAAb;AACA9+J,OAAC,GAAGoB,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAd,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAd,CAAJ;;AACA,UAAIv6J,CAAC,IAAI,CAAL,IAAUyM,CAAC,IAAI,CAAnB,EAAsB;AACpB8Z,SAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAD,IAAiBqyJ,SAAjB;AACD;;AACD9+J,OAAC,GAAGoB,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAE,GAAG,CAAnB,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAd,CAAJ;;AACA,UAAIv6J,CAAC,IAAI,CAAL,IAAUyM,CAAC,IAAI,CAAnB,EAAsB;AACpB8Z,SAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAD,IAAiBqyJ,SAAjB;AACD;;AACD9+J,OAAC,GAAGoB,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAE,GAAG,CAAnB,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAd,CAAJ;;AACA,UAAIv6J,CAAC,IAAI,CAAL,IAAUyM,CAAC,IAAI,CAAnB,EAAsB;AACpB8Z,SAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAD,IAAiBqyJ,SAAjB;AACD;;AACD9+J,OAAC,GAAGoB,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAd,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAE,GAAG,CAAnB,CAAJ;;AACA,UAAIv6J,CAAC,IAAI,CAAL,IAAUyM,CAAC,IAAI,CAAnB,EAAsB;AACpB8Z,SAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAD,IAAiBqyJ,SAAjB;AACD;;AACD9+J,OAAC,GAAGoB,IAAI,CAACE,GAAL,CAASqjJ,GAAT,EAAc2V,EAAd,CAAJ;AACA7tJ,OAAC,GAAGrL,IAAI,CAACE,GAAL,CAASsjJ,GAAT,EAAc2V,EAAE,GAAG,CAAnB,CAAJ;;AACA,UAAIv6J,CAAC,IAAI,CAAL,IAAUyM,CAAC,IAAI,CAAnB,EAAsB;AACpB8Z,SAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAD,IAAiBqyJ,SAAjB;AACD;AACF,KA3NU;AA6NXjB,kBAAc,EAAE,wBAAS18J,CAAT,EAAYuV,CAAZ,EAAe;AAC7B,UAAI1W,CAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASksF,EAAE,GAAG,CAAd,EAAiBpsF,IAAI,CAAC4kB,KAAL,CAAW7kB,CAAC,GAAG6vJ,OAAf,CAAjB,CAAT,EAAoD,CAApD,CAAR;AAAA,UACEvkJ,CAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASmsF,EAAE,GAAG,CAAd,EAAiBrsF,IAAI,CAAC4kB,KAAL,CAAWtP,CAAC,GAAGu6I,OAAf,CAAjB,CAAT,EAAoD,CAApD,CADN;AAEA,aAAO4M,eAAc,CAAC79J,CAAD,EAAIyM,CAAJ,CAArB;AACD,KAjOU;AAmOXsyJ,yBAAqB,EAAE,+BAAS59J,CAAT,EAAYuV,CAAZ,EAAe;AACpC,UAAI1W,CAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASksF,EAAE,GAAG,CAAd,EAAiBpsF,IAAI,CAAC4kB,KAAL,CAAW7kB,CAAC,GAAG6vJ,OAAf,CAAjB,CAAT,EAAoD,CAApD,CAAR;AAAA,UACEvkJ,CAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASmsF,EAAE,GAAG,CAAd,EAAiBrsF,IAAI,CAAC4kB,KAAL,CAAWtP,CAAC,GAAGu6I,OAAf,CAAjB,CAAT,EAAoD,CAApD,CADN;AAAA,UAEE+N,GAAG,GAAGnB,eAAc,CAAC79J,CAAD,EAAIyM,CAAJ,CAFtB;;AAGAuyJ,SAAG,IAAInB,eAAc,CAAC79J,CAAC,GAAG,CAAL,EAAQyM,CAAR,CAArB;AACAuyJ,SAAG,IAAInB,eAAc,CAAC79J,CAAC,GAAG,CAAL,EAAQyM,CAAR,CAArB;AACAuyJ,SAAG,IAAInB,eAAc,CAAC79J,CAAD,EAAIyM,CAAC,GAAG,CAAR,CAArB;AACAuyJ,SAAG,IAAInB,eAAc,CAAC79J,CAAD,EAAIyM,CAAC,GAAG,CAAR,CAArB;AACAuyJ,SAAG,IAAInB,eAAc,CAAC79J,CAAC,GAAG,CAAL,EAAQyM,CAAC,GAAG,CAAZ,CAArB;AACAuyJ,SAAG,IAAInB,eAAc,CAAC79J,CAAC,GAAG,CAAL,EAAQyM,CAAC,GAAG,CAAZ,CAArB;AACAuyJ,SAAG,IAAInB,eAAc,CAAC79J,CAAC,GAAG,CAAL,EAAQyM,CAAC,GAAG,CAAZ,CAArB;AACAuyJ,SAAG,IAAInB,eAAc,CAAC79J,CAAC,GAAG,CAAL,EAAQyM,CAAC,GAAG,CAAZ,CAArB;AACA,aAAOuyJ,GAAG,GAAG,CAAb;AACD,KAhPU;AAkPXC,cAAU,EAAE,oBAAS99J,CAAT,EAAYuV,CAAZ,EAAe;AACzB,UACE1W,CAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASksF,EAAE,GAAG,CAAd,EAAiBpsF,IAAI,CAAC4kB,KAAL,CAAW7kB,CAAC,GAAG6vJ,OAAf,CAAjB,CAAT,EAAoD,CAApD,CADN;AAAA,UAEEvkJ,CAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASmsF,EAAE,GAAG,CAAd,EAAiBrsF,IAAI,CAAC4kB,KAAL,CAAWtP,CAAC,GAAGu6I,OAAf,CAAjB,CAAT,EAAoD,CAApD,CAFN;AAIA,aAAO2E,KAAK,CAACvnF,CAAC,CAACruE,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAF,EAAgBwhC,CAAC,CAACjuC,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAjB,CAAZ;AACD,KAxPU;AA0PXyyJ,iBAAa,EAAE,uBAAS/9J,CAAT,EAAYuV,CAAZ,EAAe;AAC5B,UACE1W,CAAC,GAAGoB,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASksF,EAAE,GAAG,CAAd,EAAiBpsF,IAAI,CAAC4kB,KAAL,CAAW7kB,CAAC,GAAG6vJ,OAAf,CAAjB,CAAT,EAAoD,CAApD,CADN;AAAA,UAEEvkJ,CAAC,GAAGrL,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASmsF,EAAE,GAAG,CAAd,EAAiBrsF,IAAI,CAAC4kB,KAAL,CAAWtP,CAAC,GAAGu6I,OAAf,CAAjB,CAAT,EAAoD,CAApD,CAFN;AAAA,UAGE5iE,EAAE,GAAGy1D,YAAY,CAAC9jJ,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAZ,IAA4B8Z,CAAC,CAAC,CAACvmB,CAAC,GAAG,CAAL,IAAUytF,EAAV,GAAehhF,CAAhB,CAAD,GAAsB8Z,CAAC,CAAC,CAACvmB,CAAC,GAAG,CAAL,IAAUytF,EAAV,GAAehhF,CAAhB,CAAnD,KAA0E,IAAIukJ,OAA9E,CAHP;AAAA,UAIE1iE,EAAE,GAAGw1D,YAAY,CAAC9jJ,CAAC,GAAGytF,EAAJ,GAAShhF,CAAV,CAAZ,IAA4B8Z,CAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAT,GAAa,CAAd,CAAD,GAAoB8Z,CAAC,CAACvmB,CAAC,GAAGytF,EAAJ,GAAShhF,CAAT,GAAa,CAAd,CAAjD,KAAsE,IAAIwkJ,OAA1E,CAJP;AAKA,aAAO,CAAC5iE,EAAD,EAAKC,EAAL,CAAP;AACD,KAjQU;AAmQX0tE,aAAS,EAAE,mBAASp+I,MAAT,EAAiB;AAC1BT,aAAO,CAACva,IAAR,CAAagb,MAAb;AACD,KArQU;AAuQX2iC,gBAAY,EAAE,sBAAS3iC,MAAT,EAAiB;AAC7B,UAAIlb,GAAG,GAAGya,OAAO,CAACuC,OAAR,CAAgB9B,MAAhB,CAAV;;AACA,UAAIlb,GAAG,KAAK,CAAC,CAAb,EAAgB;AACdya,eAAO,CAACmwC,MAAR,CAAe5qD,GAAf,EAAoB,CAApB;AACD;AACF,KA5QU;AA8QX;AACAgiJ,gBAAY,EAAE,wBAAW;AACvB;AACA,aAAOzlJ,qBAAP;AACD,KAlRU;AAmRXkgK,uBAAmB,EAAE,+BAAW;AAC9B,aAAOrC,IAAP;AACD,KArRU;AAsRX;AACA1K,uBAAmB,EAAE,+BAAW;AAC9B,aAAO7rI,CAAP;AACD,KAzRU;AA0RX49H,qBAAiB,EAAE,6BAAW;AAC5B,aAAO91E,CAAP;AACD,KA5RU;AA6RX+1E,qBAAiB,EAAE,6BAAW;AAC5B,aAAOn2G,CAAP;AACD,KA/RU;AAgSXqkH,iBAAa,EAAE,yBAAW;AACxB,aAAOD,KAAP;AACD,KAlSU;AAmSXG,iBAAa,EAAE,yBAAW;AACxB,aAAOD,KAAP;AACD,KArSU;AAsSXjO,+BAA2B,EAAE,uCAAW;AACtC,aAAOD,EAAP;AACD,KAxSU;AAySXoU,iBAAa,EAAE,yBAAW;AACxB,aAAO1S,CAAP;AACD,KA3SU;AA4SXhC,wBAAoB,EAAE,gCAAW;AAC/B,aAAOD,YAAP;AACD,KA9SU;AA+SXG,oBAAgB,EAAE,4BAAW;AAC3B,aAAOD,QAAP;AACD,KAjTU;AAkTXE,mBAAe,EAAE,2BAAW;AAC1B,aAAOlB,OAAP;AACD,KApTU;AAqTXwB,oBAAgB,EAAE,4BAAW;AAC3B,aAAOD,QAAP;AACD,KAvTU;AAwTXqU,mBAAe,EAAE,2BAAW;AAC1B,aAAOz7I,OAAP;AACD,KA1TU;AA2TXw7I,iBAAa,EAAE,yBAAW;AACxB,aAAOD,KAAP;AACD,KA7TU;AA8TX;AACA0G,yBAAqB,EAAE,iCAAW;AAChC,aAAOttC,OAAO,CAAC,CAAD,CAAd;AACD,KAjUU;AAkUXutC,sBAAkB,EAAE,8BAAW;AAC7B,aAAOvtC,OAAO,CAAC,CAAD,CAAd;AACD,KApUU;AAqUXs/B,wBAAoB,EAAE,8BAASzlJ,EAAT,EAAa;AACjC,aAAOmmH,OAAO,CAACnmH,EAAD,CAAd;AACD;AAvUU,GArRf,CADmD,CAgmBnD;AACA;AACA;;;AACA0xJ,wBAAsB;AACtBK,yBAAuB;AACvBC,mBAAiB,GArmBkC,CAumBnD;;AACApB,YAAU,GAAG5Y,0BAAc,CAACyZ,UAAD,CAA3B;AACAZ,aAAW,GAAGtK,4BAAe,CAACkL,UAAD,CAA7B;AACAX,YAAU,GAAGjE,wBAAa,CAAC4E,UAAD,CAA1B,CA1mBmD,CA4mBnD;;AACA,SAAOA,UAAP;AACD,CA9mBM,C;;ACrBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIptF,gCAAe,GAAG;AAClBjyD,OAAK,EAAE;AACL9O,QAAI,EAAE;AACJrI,UAAI,EAAE,QADF;AAEJgoE,gBAAU,EAAE,SAFR;AAGJC,YAAM,EAAE;AAHJ,KADD;AAML3W,eAAW,EAAE;AACXtxD,UAAI,EAAE,gBADK;AAEXgoE,gBAAU,EAAE,iBAFD;AAGXC,YAAM,EAAE;AAHG,KANR;AAWL5uE,UAAM,EAAE;AACN2G,UAAI,EAAE,OADA;AAENgoE,gBAAU,EAAE,QAFN;AAGNC,YAAM,EAAE;AAHF,KAXH;AAgBL0wB,YAAQ,EAAE;AACR34F,UAAI,EAAE,kBADE;AAERgoE,gBAAU,EAAE,mBAFJ;AAGRC,YAAM,EAAE;AAHA;AAhBL;AADW,CAAtB;AAAA,IAyBEywF,kBAAkB,GAAG,CAzBvB;AA4Be,SAASC,OAAT,CAAiB7rF,iBAAjB,EAAoC;AACjD,MAAI9kE,KAAJ;AAAA,MACE4wJ,SADF;AAAA,MAEEnrI,SAAS,GAAG,kBAAmB,EAAEirI,kBAFnC;AAAA,MAIEjvD,eAAe,GAAG,IAAIt8B,eAAJ,CAAoB;AACpCjwE,YAAQ,EAAEA,iBAD0B;AAEpCksE,mBAAe,EAAEA,gCAFmB;AAGpC0D,qBAAiB,EAAEA,iBAHiB;AAIpCD,WAAO,EAAE;AACPqtE,eAAS,EAAE,mBAAS7yG,CAAT,EAAY;AACrB,YAAIuxH,SAAJ,EAAe;AACbC,yBAAe,CAACxxH,CAAD,CAAf;AACD;;AACDyxH,sBAAc,GAAG9wJ,KAAK,CAACwb,UAAN,CAAiB+2H,eAAlC;AACD,OANM;AAOPA,qBAAe,EAAE,yBAASlzG,CAAT,EAAY;AAC3B,YAAIuxH,SAAJ,EAAeG,OAAO;AACtBD,sBAAc,GAAGh+J,MAAM,CAACusC,CAAD,CAAvB,CAF2B,CAEC;AAC7B;AAVM;AAJ2B,GAApB,CAJpB;AAAA,MAqBE8hC,eAAe,GAAGsgC,eAAe,CAACtgC,eArBpC;AAAA,MAsBEx6C,QAAQ,GAAG86E,eAAe,CAACl8B,eAtB7B;AAAA,MAwBEurF,cAAc,GAAG,CAxBnB;AAAA,MA0BE;AACA;AACA5kB,SAAO,GAAG,EA5BZ;AAAA,MA6BE8kB,WAAW,GAAG,EA7BhB;AAAA,MA+BE98D,SAAS,GAAG;AACV41D,SAAK,EAAE,EADG;AAEV5d,WAAO,EAAE;AAFC,GA/Bd;AAAA,MAoCE+kB,oBAAoB,GAAI,YAAW;AACjC,aAASC,WAAT,CAAqBC,OAArB,EAA8B;AAC5Bx/J,YAAM,CAAC6qC,cAAP,CAAsB,IAAtB,EAA4B,UAA5B,EAAwC;AACtCqhC,kBAAU,EAAE,KAD0B;AAEtC1nD,WAAG,EAAE,eAAW;AACd,iBAAOg7I,OAAP;AACD;AAJqC,OAAxC;AAMD;;AACDx/J,UAAM,CAAC2b,IAAP,CAAYpY,iBAAQ,CAAC0+I,IAArB,EAA2BrmI,OAA3B,CAAmC,UAASC,GAAT,EAAc;AAC/C7b,YAAM,CAAC6qC,cAAP,CAAsB00H,WAAW,CAACt/J,SAAlC,EAA6C4b,GAA7C,EAAkD;AAChDqwD,kBAAU,EAAE,IADoC;AAEhD1nD,WAAG,EAAE,eAAW;AACd,iBAAO,KAAKi7I,QAAL,CAAc5jJ,GAAd,CAAP;AACD,SAJ+C;AAKhD7Z,WAAG,EAAE,aAAS0rC,CAAT,EAAY;AACf,cAAIgyH,QAAQ,GAAGrxJ,KAAK,CAACwb,UAAN,CAAiB02H,SAAhC,CADe,CAEf;;AACAlyI,eAAK,CAACwb,UAAN,CAAiB02H,SAAjB,GAA6B,KAA7B;AAEA/wE,yBAAe,CAAC5C,yBAAhB,GALe,CAOf;;AACA,eAAK6yF,QAAL,CAAc5jJ,GAAd,IAAqBsa,4BAAS,CAAClzB,sBAAV,CAAiCM,iBAAQ,CAAC0+I,IAAT,CAAcpmI,GAAd,CAAjC,EAAqDA,GAArD,EAA0D6xB,CAA1D,CAArB;;AAEA,cAAIr/B,KAAK,CAACk6B,SAAN,EAAJ,EAAuB;AACrB;AACA02H,qBAAS,CAACp1J,KAAV;AACD,WAHD,MAGO;AACL;AACAo1J,qBAAS,CAACrB,YAAV,CAAuB,KAAK6B,QAA5B,EAAsC5jJ,GAAtC;AACD;;AAED2zD,yBAAe,CAAC3C,0BAAhB,GAlBe,CAoBf;AACA;;AACAx+D,eAAK,CAACwb,UAAN,CAAiB02H,SAAjB,GAA6Bmf,QAA7B;AACA1qI,kBAAQ,CAAC4oI,YAAT;AACD;AA7B+C,OAAlD;AA+BD,KAhCD;;AAiCA2B,eAAW,CAACt/J,SAAZ,CAAsB0/J,YAAtB,GAAqC,YAAW;AAC9C,aAAO,KAAKF,QAAL,CAAcrnI,QAAd,EAAP;AACD,KAFD;;AAIA,WAAO,YAAW;AAChB,UAAIwnI,QAAQ,GAAGX,SAAS,CAAC7G,aAAV,EAAf;AAAA,UACEyH,SAAS,GAAGt9D,SAAS,CAAC41D,KADxB;AAAA,UAEE14J,CAFF;AAAA,UAEKc,GAFL;AAGAs/J,eAAS,CAACngK,MAAV,GAAmB,CAAnB;;AACA,WAAKD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGq/J,QAAQ,CAAClgK,MAA3B,EAAmCD,CAAC,GAAGc,GAAvC,EAA4Cd,CAAC,EAA7C,EAAiD;AAC/CogK,iBAAS,CAACx9J,IAAV,CAAe,IAAIk9J,WAAJ,CAAgBK,QAAQ,CAACngK,CAAD,CAAxB,CAAf;AACD;AACF,KARD;AASD,GAvDuB,EApC1B;AAAA,MA6FEqgK,qBAAqB,GAAI,YAAW;AAClC,aAASC,aAAT,CAAuBC,MAAvB,EAA+B;AAC7BhgK,YAAM,CAAC6qC,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;AACrCqhC,kBAAU,EAAE,KADyB;AAErC1nD,WAAG,EAAE,eAAW;AACd,iBAAOw7I,MAAP;AACD;AAJoC,OAAvC;AAMD;;AACD,QAAIC,UAAU,GAAG;AACfr/J,OAAC,EAAE,WAAS8sC,CAAT,EAAY;AACb,eAAO7sC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAASsN,KAAK,CAACwb,UAAN,CAAiB62H,WAA1B,EAAuChzG,CAAvC,CAAZ,CAAP;AACD,OAHc;AAIfv3B,OAAC,EAAE,WAASu3B,CAAT,EAAY;AACb,eAAO7sC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAASsN,KAAK,CAACwb,UAAN,CAAiB82H,YAA1B,EAAwCjzG,CAAxC,CAAZ,CAAP;AACD;AANc,KAAjB;AAQA1tC,UAAM,CAAC2b,IAAP,CAAYpY,iBAAQ,CAACywI,MAArB,EAA6Bp4H,OAA7B,CAAqC,UAASC,GAAT,EAAc;AACjD7b,YAAM,CAAC6qC,cAAP,CAAsBk1H,aAAa,CAAC9/J,SAApC,EAA+C4b,GAA/C,EAAoD;AAClDqwD,kBAAU,EAAE,IADsC;AAElD1nD,WAAG,EAAE,eAAW;AACd,iBAAO,KAAK07I,OAAL,CAAarkJ,GAAb,CAAP;AACD,SAJiD;AAKlD7Z,WAAG,EAAE,aAAS0rC,CAAT,EAAY;AACf8hC,yBAAe,CAAC5C,yBAAhB;AACAl/B,WAAC,GAAGuyH,UAAU,CAACpkJ,GAAD,CAAV,GAAkBokJ,UAAU,CAACpkJ,GAAD,CAAV,CAAgB6xB,CAAhB,CAAlB,GAAuCA,CAA3C;AACA,eAAKwyH,OAAL,CAAarkJ,GAAb,IAAoBsa,4BAAS,CAAClzB,sBAAV,CAAiCM,iBAAQ,CAACywI,MAAT,CAAgBn4H,GAAhB,CAAjC,EAAuDA,GAAvD,EAA4D6xB,CAA5D,CAApB;AACA8hC,yBAAe,CAAC3C,0BAAhB;AACA73C,kBAAQ,CAACmrI,cAAT;AACD;AAXiD,OAApD;AAaD,KAdD;AAgBA,WAAO,YAAW;AAChB,UAAIC,WAAW,GAAG79D,SAAS,CAACg4C,OAA5B;AAAA,UACE96I,CADF;AAAA,UACKc,GADL;AAEA6/J,iBAAW,CAAC1gK,MAAZ,GAAqB,CAArB;;AACA,WAAKD,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGg6I,OAAO,CAAC76I,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,EAA5C,EAAgD;AAC9C2gK,mBAAW,CAAC/9J,IAAZ,CAAiB,IAAI09J,aAAJ,CAAkBxlB,OAAO,CAAC96I,CAAD,CAAzB,CAAjB;AACD;AACF,KAPD;AAQD,GAzCwB,EA7F3B;;AAwIA,WAASy/J,eAAT,CAAyBxxH,CAAzB,EAA4B;AAC1B,QAAI;AACFuxH,eAAS,CAACjB,QAAV,CAAmBtwH,CAAnB;AACD,KAFD,CAEE,OAAOpvC,CAAP,EAAU;AACVkG,uCAAO,CAACwrC,IAAR,CAAa,sEAAb;AACAxrC,uCAAO,CAACwrC,IAAR,CAAa1xC,CAAC,CAACoE,OAAf;AACD;AACF;;AAED,WAAS08J,OAAT,GAAmB;AACjBH,aAAS,CAACf,eAAV;AACAe,aAAS,CAACd,YAAV;AACD;;AAED,WAASkC,WAAT,GAAuB;AACrB,QAAIr6I,CAAC,GAAG3X,KAAK,CAACwjJ,mBAAN,EAAR;AAAA,QACEpyJ,CADF;AAAA,QACKc,GADL;;AAGA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGylB,CAAC,CAACtmB,MAApB,EAA4BD,CAAC,GAAGc,GAAhC,EAAqCd,CAAC,EAAtC,EAA0C;AACxC,UAAIgO,KAAK,CAACuY,CAAC,CAACvmB,CAAD,CAAF,CAAL,IAAeoB,IAAI,CAAC2M,GAAL,CAASwY,CAAC,CAACvmB,CAAD,CAAV,IAAiB,IAApC,EAA0C;AACxC4O,aAAK,CAAC89B,IAAN;AACA8yH,iBAAS,CAACp1J,KAAV;AACA,eAAO,IAAP;AACD;AACF;;AACD,WAAO,KAAP;AACD;;AAED,WAASy2J,aAAT,CAAuBC,UAAvB,EAAmC;AACjC,QAAI/8J,MAAM,GAAG,EAAb;AACA+8J,cAAU,CAAC3kJ,OAAX,CAAmB,UAAS8xB,CAAT,EAAY;AAC7BlqC,YAAM,CAACnB,IAAP,CAAY8zB,4BAAS,CAACryB,oBAAV,CAA+BP,iBAAQ,CAAC0+I,IAAxC,EAA8Cv0G,CAA9C,CAAZ;AACD,KAFD;AAGA,WAAOlqC,MAAP;AACD;;AAED,WAASg9J,aAAT,CAAuBC,WAAvB,EAAoC;AAClC,QAAIC,WAAW,GAAG;AACdnzI,iBAAW,EAAE,uBAAW;AACtB,eAAOlf,KAAK,CAACmtJ,gBAAN,CAAuB,KAAK56J,CAA5B,EAA+B,KAAKuV,CAApC,CAAP;AACD,OAHa;AAIdwqJ,gBAAU,EAAE,sBAAW;AACrB,eAAO,KAAKC,IAAZ;AACD,OANa;AAOdC,cAAQ,EAAE,oBAAW;AACnB,YAAIC,IAAI,GAAGzyJ,KAAK,CAACswJ,aAAN,CAAoB,KAAK/9J,CAAzB,EAA4B,KAAKuV,CAAjC,CAAX;AACA,eAAO2qJ,IAAI,CAAC,CAAD,CAAJ,GAAU,KAAKC,IAAf,GAAsBD,IAAI,CAAC,CAAD,CAAJ,GAAU,KAAKE,IAA5C;AACD;AAVa,KAAlB;AAAA,QAYEC,gBAAgB,GAAG;AACjB1zI,iBAAW,EAAE;AACX/L,aAAK,EAAE,aADI;AAEXlQ,gBAAQ,EAAE,aAFC;AAGXwQ,cAAM,EAAE;AAHG,OADI;AAMjB6+I,gBAAU,EAAE,EANK;AAOjBE,cAAQ,EAAE;AACRr/I,aAAK,EAAE,WADC;AAERgI,gBAAQ,EAAE,uBAFF;AAGRC,sBAAc,EAAE,wBAHR;AAIRC,wBAAgB,EAAE,MAJV;AAKR5H,cAAM,EAAE;AALA;AAPO,KAZrB;AA4BAy4H,WAAO,GAAG,EAAV;AACAkmB,eAAW,CAAC7kJ,OAAZ,CAAoB,UAASiS,CAAT,EAAY1rB,GAAZ,EAAiB;AACnC0rB,OAAC,GAAGsI,4BAAS,CAACryB,oBAAV,CAA+BP,iBAAQ,CAACywI,MAAxC,EAAgDnmH,CAAhD,CAAJ;;AACA,UAAIA,CAAC,CAACvnB,IAAF,KAAW,YAAf,EAA6B;AAC3BunB,SAAC,CAAC+yI,IAAF,GAAS,CAAT;AACAvB,mBAAW,CAACh9J,IAAZ,CAAiBwrB,CAAjB;AACD;;AACD,UAAIA,CAAC,CAACvnB,IAAF,KAAW,UAAf,EAA2B;AACzBunB,SAAC,CAAChU,KAAF,GAAUgU,CAAC,CAAChU,KAAF,IAAW,CAArB;AACAgU,SAAC,CAACkzI,IAAF,GAASlgK,IAAI,CAAC6O,GAAL,CAAS,CAACme,CAAC,CAAChU,KAAH,GAAWhZ,IAAI,CAAC0O,EAAhB,GAAqB,GAA9B,CAAT;AACAse,SAAC,CAACmzI,IAAF,GAASngK,IAAI,CAAC8O,GAAL,CAASke,CAAC,CAAChU,KAAF,GAAUhZ,IAAI,CAAC0O,EAAf,GAAoB,GAA7B,CAAT;AACD;;AACDvP,YAAM,CAAC6qC,cAAP,CAAsBhd,CAAtB,EAAyB,OAAzB,EAAkC;AAChCq+C,kBAAU,EAAE,IADoB;AAEhC1nD,WAAG,EAAEk8I,WAAW,CAAC7yI,CAAC,CAACvnB,IAAH;AAFgB,OAAlC;AAIAi0I,aAAO,CAACl4I,IAAR,CAAawrB,CAAb;AAEAxf,WAAK,CAAC6iE,YAAN,CAAmB,YAAY/uE,GAA/B,EAAoC8+J,gBAAgB,CAACpzI,CAAC,CAACvnB,IAAH,CAApD,EAA8D,YAAW;AACvE,eAAOunB,CAAC,CAACruB,KAAT;AACD,OAFD;AAGD,KApBD;AAqBD;;AAED,WAAS0hK,iBAAT,GAA6B;AAC3B,QAAItiK,CAAJ,EAAOa,CAAP,EAAUc,GAAV;;AACA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG8+J,WAAW,CAAC3/J,MAA9B,EAAsCD,CAAC,GAAGc,GAA1C,EAA+Cd,CAAC,EAAhD,EAAoD;AAClDb,OAAC,GAAGygK,WAAW,CAAC5/J,CAAD,CAAf;AACAb,OAAC,CAACgiK,IAAF,IAAUvyJ,KAAK,CAACqwJ,UAAN,CAAiB9/J,CAAC,CAACgC,CAAnB,EAAsBhC,CAAC,CAACuX,CAAxB,KAA8B9H,KAAK,CAACivJ,cAAN,CAAqB1+J,CAAC,CAACgC,CAAvB,EAA0BhC,CAAC,CAACuX,CAA5B,IAAiC,CAAjC,GAAqC,CAAC,CAAtC,GAA0C,CAAxE,IACR9H,KAAK,CAACwb,UAAN,CAAiB9X,QADT,GACoB,GAD9B;AAEAnT,OAAC,CAACgiK,IAAF,GAAShiK,CAAC,CAACgiK,IAAF,GAAS,GAAlB;AACD;AACF;;AAEDvyJ,OAAK,GAAG;AACNylB,aAAS,EAAEA,SADL;AAGN8a,QAAI,EAAE,gBAAW;AACf,UAAInvC,CAAJ,EAAOc,GAAP,EAAY4gK,QAAZ;AAEA95F,wBAAW,CAACE,UAAZ,CAAuB,QAAvB;;AACA,WAAK9nE,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAG8N,KAAK,CAACwb,UAAN,CAAiBrX,gBAAnC,EAAqD/S,CAAC,GAAGc,GAAzD,EAA8Dd,CAAC,EAA/D,EAAmE;AACjEw/J,iBAAS,CAACxB,QAAV;AACD;;AACDp2F,wBAAW,CAACK,UAAZ,CAAuB,QAAvB;;AAEA,UAAIu3F,SAAS,CAACb,aAAV,EAAJ,EAA+B;AAC7B,YAAIe,cAAc,GAAG,CAArB,EAAwB;AACtBA,wBAAc;AACf,SAFD,MAEO;AACLC,iBAAO;AACPD,wBAAc,GAAGh+J,MAAM,CAACkN,KAAK,CAACwb,UAAN,CAAiB+2H,eAAlB,CAAvB,CAFK,CAEsD;;AAC3DugB,kBAAQ,GAAGd,WAAW,EAAtB;AACD;AACF,OARD,MAQO;AACLc,gBAAQ,GAAGd,WAAW,EAAtB;AACD;;AACDa,uBAAiB;AACjB7yJ,WAAK,CAACujE,yBAAN;AACA58C,cAAQ,CAAC4Z,IAAT;;AAEA,UAAIuyH,QAAJ,EAAc;AACZ58J,+CAAK,CAAC,+EACJ,+FADG,CAAL;AAED;AACF,KA/BK;AAiCN25J,mBAAe,EAAE,2BAAW;AAC1B1uF,qBAAe,CAAC5C,yBAAhB;AACAqyF,eAAS,CAACf,eAAV;AACA1uF,qBAAe,CAAC3C,0BAAhB;AACD,KArCK;AAsCNsxF,gBAAY,EAAE,wBAAW;AACvB3uF,qBAAe,CAAC5C,yBAAhB;AACAqyF,eAAS,CAACd,YAAV;AACA3uF,qBAAe,CAAC3C,0BAAhB;AACD,KA1CK;AA4CNixF,WAAO,EAAE,iBAASrlI,KAAT,EAAgB;AACvB,UAAIinI,QAAQ,GAAGrxJ,KAAK,CAACwb,UAAN,CAAiB02H,SAAhC,CADuB,CAGvB;;AACAlyI,WAAK,CAACwb,UAAN,CAAiB02H,SAAjB,GAA6B,KAA7B;AAEA9nH,WAAK,GAAGtC,4BAAS,CAACryB,oBAAV,CAA+BP,iBAAQ,CAAC0+I,IAAxC,EAA8CxpH,KAA9C,CAAR;AAEA+2C,qBAAe,CAAC5C,yBAAhB;AAEAqyF,eAAS,CAACnB,OAAV,CAAkBrlI,KAAlB;AACA6mI,0BAAoB;AAEpB9vF,qBAAe,CAAC3C,0BAAhB,GAbuB,CAevB;AACA;;AACAx+D,WAAK,CAACwb,UAAN,CAAiB02H,SAAjB,GAA6Bmf,QAA7B;AACA1qI,cAAQ,CAAC4oI,YAAT;AACD,KA/DK;AAiENG,cAAU,EAAE,oBAASt+J,CAAT,EAAY;AACtB,UAAIigK,QAAQ,GAAGrxJ,KAAK,CAACwb,UAAN,CAAiB02H,SAAhC,CADsB,CAGtB;;AACAlyI,WAAK,CAACwb,UAAN,CAAiB02H,SAAjB,GAA6B,KAA7B;AAEA/wE,qBAAe,CAAC5C,yBAAhB;AAEAqyF,eAAS,CAAClB,UAAV,CAAqBt+J,CAArB;AACA6/J,0BAAoB;AAEpB9vF,qBAAe,CAAC3C,0BAAhB,GAXsB,CAatB;AACA;;AACAx+D,WAAK,CAACwb,UAAN,CAAiB02H,SAAjB,GAA6Bmf,QAA7B;AACA1qI,cAAQ,CAAC4oI,YAAT;AACD,KAlFK;AAoFN;AACA;AACA/zJ,SAAK,EAAE,iBAAW;AAChBmrB,cAAQ,CAAC4zC,SAAT;AACA4G,qBAAe,CAAC5C,yBAAhB;AAEAv+D,WAAK,CAAC89B,IAAN;AACA8yH,eAAS,CAACp1J,KAAV;AAEA,UAAIsuJ,KAAJ,CAPgB,CAQhB;;AACA,UAAIhlF,iBAAiB,CAACiuF,SAAlB,IAA+BjuF,iBAAiB,CAACiuF,SAAlB,CAA4Bnf,IAA/D,EAAqE;AACnEkW,aAAK,GAAGmI,aAAa,CAACntF,iBAAiB,CAACiuF,SAAlB,CAA4Bnf,IAA7B,CAArB;AACD;;AACDgd,eAAS,GAAGrD,wBAAa,CAACvtJ,KAAK,CAACwb,UAAP,EAAmBsuI,KAAnB,CAAzB;AACA+G,qBAAe,CAAC7wJ,KAAK,CAACwb,UAAN,CAAiB02H,SAAlB,CAAf;;AACA,UAAIptE,iBAAiB,CAAConE,OAAtB,EAA+B;AAC7BimB,qBAAa,CAACrtF,iBAAiB,CAAConE,OAAnB,CAAb;AACD;;AACD+kB,0BAAoB;AACpBQ,2BAAqB;AAErBtwF,qBAAe,CAAC3C,0BAAhB;AACAx+D,WAAK,CAACwjE,wBAAN;AACA78C,cAAQ,CAACnrB,KAAT;AACAmrB,cAAQ,CAACgkF,YAAT;AACD,KA9GK;AAgHN3hF,eAAW,EAAE,uBAAW;AACtB,aAAO4nI,SAAS,CAACX,cAAV,EAAP;AACD,KAlHK;AAmHN7vH,aAAS,EAAE,qBAAW;AACpB,aAAO,IAAP;AACD,KArHK;AAsHNE,YAAQ,EAAE,kBAASruC,GAAT,EAAc;AACtB,aAAO2+J,SAAS,CAACX,cAAV,EAAP;AACD,KAxHK;AAyHN9vH,eAAW,EAAE,qBAASluC,GAAT,EAAc;AACzB,UAAI,CAACoD,SAAS,CAAChE,MAAf,EAAuB;AACrBY,WAAG,GAAG,CAAN;AACD;;AACD,UAAI,CAAC,KAAKioC,SAAL,EAAL,EAAuB;AACrB,aAAK4D,IAAL;AACD;;AACD,UAAI1sC,CAAC,GAAG,CAAC,CAAT;;AACA,aAAO,EAAEA,CAAF,GAAMa,GAAb,EAAkB;AAChB+N,aAAK,CAACugC,IAAN;AACD;;AACD,aAAOqwH,SAAS,CAACX,cAAV,EAAP;AACD,KArIK;AAsINzvH,WAAO,EAAE,mBAAW;AAClB,aAAOxgC,KAAK,CAACwb,UAAN,CAAiB9X,QAAjB,GAA4BktJ,SAAS,CAACX,cAAV,EAAnC;AACD,KAxIK;AAyINF,iBAAa,EAAE,yBAAW;AACxB,aAAOa,SAAS,CAACb,aAAV,EAAP;AACD,KA3IK;AA4INH,qBAAiB,EAAE,6BAAW;AAC5B,aAAOgB,SAAS,CAAChB,iBAAV,EAAP;AACD,KA9IK;AA+INI,iBAAa,EAAE,yBAAW;AACxB,aAAOY,SAAS,CAACZ,aAAV,EAAP;AACD,KAjJK;AAkJNC,kBAAc,EAAE,0BAAW;AACzB,aAAOW,SAAS,CAACX,cAAV,EAAP;AACD,KApJK;AAqJN9C,oBAAgB,EAAE,0BAAS56J,CAAT,EAAYuV,CAAZ,EAAe;AAC/B,aAAO8oJ,SAAS,CAACzD,gBAAV,CAA2B56J,CAA3B,EAA8BuV,CAA9B,CAAP;AACD,KAvJK;AAwJNolJ,2BAAuB,EAAE,iCAAS36J,CAAT,EAAYuV,CAAZ,EAAe;AACtC,aAAO8oJ,SAAS,CAAC1D,uBAAV,CAAkC36J,CAAlC,EAAqCuV,CAArC,CAAP;AACD,KA1JK;AA2JNmnJ,kBAAc,EAAE,wBAAS18J,CAAT,EAAYuV,CAAZ,EAAe;AAC7B,aAAO8oJ,SAAS,CAAC3B,cAAV,CAAyB18J,CAAzB,EAA4BuV,CAA5B,CAAP;AACD,KA7JK;AA8JNwoJ,iBAAa,EAAE,uBAAS/9J,CAAT,EAAYuV,CAAZ,EAAe;AAC5B,aAAO8oJ,SAAS,CAACN,aAAV,CAAwB/9J,CAAxB,EAA2BuV,CAA3B,CAAP;AACD,KAhKK;AAiKNqoJ,yBAAqB,EAAE,+BAAS59J,CAAT,EAAYuV,CAAZ,EAAe;AACpC,aAAO8oJ,SAAS,CAACT,qBAAV,CAAgC59J,CAAhC,EAAmCuV,CAAnC,CAAP;AACD,KAnKK;AAoKNuoJ,cAAU,EAAE,oBAAS99J,CAAT,EAAYuV,CAAZ,EAAe;AACzB,aAAO8oJ,SAAS,CAACP,UAAV,CAAqB99J,CAArB,EAAwBuV,CAAxB,CAAP;AACD,KAtKK;AAuKN07I,uBAAmB,EAAE,+BAAW;AAC9B,aAAOoN,SAAS,CAACpN,mBAAV,EAAP;AACD,KAzKK;AA0KNgN,yBAAqB,EAAE,iCAAW;AAChC,aAAOI,SAAS,CAACJ,qBAAV,EAAP;AACD,KA5KK;AA6KNjb,qBAAiB,EAAE,6BAAW;AAC5B,aAAOqb,SAAS,CAACrb,iBAAV,EAAP;AACD,KA/KK;AAgLNC,qBAAiB,EAAE,6BAAW;AAC5B,aAAOob,SAAS,CAACpb,iBAAV,EAAP;AACD,KAlLK;AAmLNib,sBAAkB,EAAE,8BAAW;AAC7B,aAAOG,SAAS,CAACH,kBAAV,EAAP;AACD,KArLK;AAsLNzG,mBAAe,EAAE,2BAAW;AAC1B,aAAO4G,SAAS,CAAC5G,eAAV,EAAP;AACD,KAxLK;AA0LND,iBAAa,EAAE,yBAAW;AACxB,aAAO71D,SAAS,CAAC41D,KAAjB;AACD,KA5LK;AA8LNkJ,mBAAe,EAAE,2BAAW;AAC1B,aAAO9+D,SAAS,CAACg4C,OAAjB;AACD,KAhMK;AAkMNr2I,aAAS,EAAE,qBAAW;AACpB,UAAIu0G,QAAQ,GAAG,EAAf;AAAA,UACEE,aAAa,GAAGnpC,eAAe,CAACnC,SADlC;AAGAorC,cAAQ,GAAGv0G,mBAAS,CAACX,iBAAQ,CAAC2N,cAAV,EAA0BynG,aAA1B,CAApB;AACAF,cAAQ,CAACvlG,WAAT,GAAuBhP,mBAAS,CAACX,iBAAQ,CAAC2P,WAAV,EAAuBylG,aAAvB,CAAhC;AAEAF,cAAQ,CAAC2oD,SAAT,GAAqB;AACnBnf,YAAI,EAAE;AADa,OAArB;AAGA1/C,eAAS,CAAC41D,KAAV,CAAgBv8I,OAAhB,CAAwB,UAASE,CAAT,EAAY;AAClC28F,gBAAQ,CAAC2oD,SAAT,CAAmBnf,IAAnB,CAAwB5/I,IAAxB,CAA6B6B,mBAAS,CAACX,iBAAQ,CAAC0+I,IAAV,EAAgBnmI,CAAhB,CAAtC;AACD,OAFD;AAIA28F,cAAQ,CAAC8hC,OAAT,GAAmB,EAAnB;AACAh4C,eAAS,CAACg4C,OAAV,CAAkB3+H,OAAlB,CAA0B,UAASiS,CAAT,EAAY;AACpC4qF,gBAAQ,CAAC8hC,OAAT,CAAiBl4I,IAAjB,CAAsB6B,mBAAS,CAACX,iBAAQ,CAACywI,MAAV,EAAkBnmH,CAAlB,CAA/B;AACD,OAFD;AAIA,aAAO4qF,QAAP;AACD;AAtNK,GAAR;;AAyNC,eAAW;AACV,QAAI0/C,KAAJ;AAEAroD,mBAAe,CAACz6E,OAAhB,CAAwBhnB,KAAxB;AACA2mB,YAAQ,CAACQ,aAAT,CAAuB,MAAvB,EAA+B,cAA/B,EAA+C,gBAA/C,EAJU,CAMV;;AACA,QAAI29C,iBAAiB,CAACiuF,SAAlB,IAA+BjuF,iBAAiB,CAACiuF,SAAlB,CAA4Bnf,IAA/D,EAAqE;AACnEkW,WAAK,GAAGmI,aAAa,CAACntF,iBAAiB,CAACiuF,SAAlB,CAA4Bnf,IAA7B,CAArB;AACD;;AAEDgd,aAAS,GAAGrD,wBAAa,CAACvtJ,KAAK,CAACwb,UAAP,EAAmBsuI,KAAnB,CAAzB;AACA+G,mBAAe,CAAC7wJ,KAAK,CAACwb,UAAN,CAAiB02H,SAAlB,CAAf;;AAEA,QAAIptE,iBAAiB,CAAConE,OAAtB,EAA+B;AAC7BimB,mBAAa,CAACrtF,iBAAiB,CAAConE,OAAnB,CAAb;AACD;;AAED+kB,wBAAoB;AACpBQ,yBAAqB,GAnBX,CAqBV;AACA;AACA;AAEA;;AACAzxJ,SAAK,CAAC0O,EAAN,CAAS,YAAT,EAAuBs8F,mBAAvB;AACAhrG,SAAK,CAAC0O,EAAN,CAAS,YAAT,EAAuBs8F,mBAAvB;;AAEA,aAASA,mBAAT,GAA+B;AAC7B7pC,qBAAe,CAAC5C,yBAAhB;AACA4C,qBAAe,CAAC3C,0BAAhB;AACD,KAhCS,CAkCV;AACA;;;AACAx+D,SAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B,EAA3B,EAA+B,YAAW;AACxC,aAAO,CAAP;AACD,KAFD;AAGA7iE,SAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B,EAA3B,EAA+B,YAAW;AACxC,aAAO,CAAP;AACD,KAFD;AAGA7iE,SAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B,EAA3B,EAA+B,YAAW;AACxC,aAAO7iE,KAAK,CAACwb,UAAN,CAAiB62H,WAAxB;AACD,KAFD;AAGAryI,SAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B,EAA3B,EAA+B,YAAW;AACxC,aAAO7iE,KAAK,CAACwb,UAAN,CAAiB82H,YAAxB;AACD,KAFD;AAIAtyI,SAAK,CAAC6iE,YAAN,CAAmB,MAAnB,EAA2B;AACzB1vD,WAAK,EAAE,MADkB;AAEzBlQ,cAAQ,EAAE,MAFe;AAGzBwQ,YAAM,EAAE;AAHiB,KAA3B,EAIG,YAAW;AACZ,aAAOzT,KAAK,CAACwgC,OAAN,EAAP;AACD,KAND;AAQAxgC,SAAK,CAAC6iE,YAAN,CAAmB,aAAnB,EAAkC;AAChC1vD,WAAK,EAAE;AADyB,KAAlC,EAEI,YAAW;AACb,UAAI6wD,CAAC,GAAGtwD,EAAE,CAACD,MAAH,CAAU,KAAV,CAAR;AACA,aAAO,YAAW;AAChB,YAAIpT,IAAI,GAAGL,KAAK,CAACwgC,OAAN,EAAX;AAAA,YACEyyH,OADF;AAAA,YACWC,OADX;AAAA,YACoBC,KADpB;AAAA,YAC2BC,IAD3B;AAEA/yJ,YAAI,GAAG7N,IAAI,CAACwqC,KAAL,CAAW38B,IAAX,CAAP;AACA4yJ,eAAO,GAAG5yJ,IAAI,GAAG,EAAjB;AACAA,YAAI,GAAG7N,IAAI,CAACwqC,KAAL,CAAW38B,IAAI,GAAG,EAAlB,CAAP;AACA6yJ,eAAO,GAAG7yJ,IAAI,GAAG,EAAjB;AACAA,YAAI,GAAG7N,IAAI,CAACwqC,KAAL,CAAW38B,IAAI,GAAG,EAAlB,CAAP;AACA8yJ,aAAK,GAAG9yJ,IAAI,GAAG,EAAf;AACAA,YAAI,GAAG7N,IAAI,CAACwqC,KAAL,CAAW38B,IAAI,GAAG,EAAlB,CAAP;AACA+yJ,YAAI,GAAG/yJ,IAAP;AACA,eAAO+yJ,IAAI,GAAG,GAAP,GAAapvF,CAAC,CAACmvF,KAAD,CAAd,GAAwB,GAAxB,GAA8BnvF,CAAC,CAACkvF,OAAD,CAA/B,GAA2C,GAA3C,GAAiDlvF,CAAC,CAACivF,OAAD,CAAzD;AACD,OAZD;AAaD,KAfG,EAFJ;;AAmBC,iBAAW;AACV,UAAIh5H,SAAS,GAAG,KAAhB;AACAj6B,WAAK,CAAC0O,EAAN,CAAS,yBAAT,EAAoC,YAAW;AAC7CurB,iBAAS,GAAG,IAAZ;AACD,OAFD;AAGAj6B,WAAK,CAAC0O,EAAN,CAAS,0BAAT,EAAqC,YAAW;AAC9CurB,iBAAS,GAAG,KAAZ;AACD,OAFD;AAGAj6B,WAAK,CAAC6iE,YAAN,CAAmB,WAAnB,EAAgC;AAC9B1vD,aAAK,EAAE;AADuB,OAAhC,EAEG,YAAW;AACZ,eAAO8mB,SAAP;AACD,OAJD;AAKD,KAbA,GAAD;AAcD,GA1FA,GAAD;;AA4FA,SAAOj6B,KAAP;AACD;AAAA,C;;ACxkBD;AAGA;AACe;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAqzJ,UAAQ,EAAE,kBAAS98G,CAAT,EAAY/2B,CAAZ,EAAe6f,CAAf,EAAkB;AAC1B,QAAIz+B,CAAJ,EAAO4W,CAAP,EAAUllB,CAAV,EACElB,CADF,EAEE4yE,CAFF,EAEKv2D,CAFL,EAEQ0pI,CAFR,EAEWx/H,CAFX,CAD0B,CAK1B;;AACA4+B,KAAC,GAAG/jD,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,GAAT,EAAc6jD,CAAd,CAAZ,CAAJ;AACA/2B,KAAC,GAAGhtB,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,GAAT,EAAc8sB,CAAd,CAAZ,CAAJ;AACA6f,KAAC,GAAG7sC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,GAAT,EAAc2sC,CAAd,CAAZ,CAAJ,CAR0B,CAU1B;AACA;AACA;AACA;;AACA7f,KAAC,IAAI,GAAL;AACA6f,KAAC,IAAI,GAAL;;AAEA,QAAI7f,CAAC,KAAK,CAAV,EAAa;AACX;AACA5e,OAAC,GAAG4W,CAAC,GAAGllB,CAAC,GAAG+sC,CAAZ;AACA,aAAO,CAAC7sC,IAAI,CAAC4kB,KAAL,CAAWxW,CAAC,GAAG,GAAf,CAAD,EAAsBpO,IAAI,CAAC4kB,KAAL,CAAWI,CAAC,GAAG,GAAf,CAAtB,EAA2ChlB,IAAI,CAAC4kB,KAAL,CAAW9kB,CAAC,GAAG,GAAf,CAA3C,CAAP;AACD;;AAEDikD,KAAC,IAAI,EAAL,CAvB0B,CAuBjB;;AACTnlD,KAAC,GAAGoB,IAAI,CAACwqC,KAAL,CAAWuZ,CAAX,CAAJ;AACAytB,KAAC,GAAGztB,CAAC,GAAGnlD,CAAR,CAzB0B,CAyBf;;AACXqc,KAAC,GAAG4xB,CAAC,IAAI,IAAI7f,CAAR,CAAL;AACA23H,KAAC,GAAG93G,CAAC,IAAI,IAAI7f,CAAC,GAAGwkD,CAAZ,CAAL;AACArsD,KAAC,GAAG0nB,CAAC,IAAI,IAAI7f,CAAC,IAAI,IAAIwkD,CAAR,CAAT,CAAL;;AAEA,YAAQ5yE,CAAR;AACE,WAAK,CAAL;AACEwP,SAAC,GAAGy+B,CAAJ;AACA7nB,SAAC,GAAGG,CAAJ;AACArlB,SAAC,GAAGmb,CAAJ;AACA;;AAEF,WAAK,CAAL;AACE7M,SAAC,GAAGu2I,CAAJ;AACA3/H,SAAC,GAAG6nB,CAAJ;AACA/sC,SAAC,GAAGmb,CAAJ;AACA;;AAEF,WAAK,CAAL;AACE7M,SAAC,GAAG6M,CAAJ;AACA+J,SAAC,GAAG6nB,CAAJ;AACA/sC,SAAC,GAAGqlB,CAAJ;AACA;;AAEF,WAAK,CAAL;AACE/W,SAAC,GAAG6M,CAAJ;AACA+J,SAAC,GAAG2/H,CAAJ;AACA7kJ,SAAC,GAAG+sC,CAAJ;AACA;;AAEF,WAAK,CAAL;AACEz+B,SAAC,GAAG+W,CAAJ;AACAH,SAAC,GAAG/J,CAAJ;AACAnb,SAAC,GAAG+sC,CAAJ;AACA;;AAEF;AAAS;AACPz+B,SAAC,GAAGy+B,CAAJ;AACA7nB,SAAC,GAAG/J,CAAJ;AACAnb,SAAC,GAAG6kJ,CAAJ;AAlCJ;;AAqCA,WAAO,CAAC3kJ,IAAI,CAAC4kB,KAAL,CAAWxW,CAAC,GAAG,GAAf,CAAD,EAAsBpO,IAAI,CAAC4kB,KAAL,CAAWI,CAAC,GAAG,GAAf,CAAtB,EAA2ChlB,IAAI,CAAC4kB,KAAL,CAAW9kB,CAAC,GAAG,GAAf,CAA3C,CAAP;AACD;AA7EY,CAAf,E;;ACJA;AACA;AAEA,IACA;AAGE;AACAghK,aALF,EAME;AACAC,YAPF,C,CASA;;AACAD,aAAa,GAAG,EAAhB;AACAA,aAAa,CAAC,GAAD,CAAb,GAAqBA,aAAa,CAAC,SAAD,CAAb,GAA2B,CAC9C,CAAC,CAAD,EAAI,CAAJ,EAAO,GAAP,CAD8C,EAE9C,CAAC,EAAD,EAAK,EAAL,EAAS,GAAT,CAF8C,EAG9C,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,CAH8C,EAI9C,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,CAJ8C,EAK9C,CAAC,GAAD,EAAM,GAAN,EAAW,EAAX,CAL8C,EAM9C,CAAC,GAAD,EAAM,GAAN,EAAW,EAAX,CAN8C,EAO9C,CAAC,GAAD,EAAM,GAAN,EAAW,EAAX,CAP8C,EAQ9C,CAAC,GAAD,EAAM,EAAN,EAAU,EAAV,CAR8C,EAS9C,CAAC,GAAD,EAAM,EAAN,EAAU,GAAV,CAT8C,EAU9C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAV8C,EAW9C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAX8C,CAAhD;AAaAA,aAAa,CAAC,GAAD,CAAb,GAAqBA,aAAa,CAAC,MAAD,CAAb,GAAwB,CAC3C,CAAC,EAAD,EAAK,EAAL,EAAS,GAAT,CAD2C,EAE3C,CAAC,EAAD,EAAK,EAAL,EAAS,GAAT,CAF2C,EAG3C,CAAC,GAAD,EAAM,EAAN,EAAU,GAAV,CAH2C,EAI3C,CAAC,GAAD,EAAM,EAAN,EAAU,GAAV,CAJ2C,EAK3C,CAAC,GAAD,EAAM,EAAN,EAAU,EAAV,CAL2C,EAM3C,CAAC,GAAD,EAAM,GAAN,EAAW,EAAX,CAN2C,EAO3C,CAAC,GAAD,EAAM,GAAN,EAAW,EAAX,CAP2C,EAQ3C,CAAC,GAAD,EAAM,GAAN,EAAW,EAAX,CAR2C,EAS3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAT2C,EAU3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAV2C,EAW3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAX2C,CAA7C;AAaAA,aAAa,CAAC,GAAD,CAAb,GAAqBA,aAAa,CAAC,MAAD,CAAb,GAAwB,CAC3C,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,CAD2C,EAE3C,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,CAF2C,EAG3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAH2C,EAI3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAJ2C,EAK3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAL2C,EAM3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAN2C,EAO3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAP2C,EAQ3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAR2C,EAS3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAT2C,EAU3C,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAV2C,CAA7C;;AAYAA,aAAa,CAAC,GAAD,CAAb,GAAqBA,aAAa,CAAC,UAAD,CAAb,GAA6B,YAAW;AAC3D,MAAID,QAAQ,GAAGG,OAAY,CAACH,QAA5B;AAAA,MACEhiK,MAAM,GAAG,GADX;AAAA,MAEEolB,GAAG,GAAG,IAAIjmB,KAAJ,CAAUa,MAAV,CAFR;AAAA,MAGED,CAHF;;AAKA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGC,MAAhB,EAAwBD,CAAC,IAAI,CAA7B,EAAgC;AAC9BqlB,OAAG,CAACrlB,CAAD,CAAH,GAASoiK,OAAY,CAACH,QAAb,CAAsBhiK,MAAM,GAAG,CAAT,GAAaD,CAAnC,EAAsC,GAAtC,EAA2C,EAA3C,CAAT;AACD;;AACD,SAAOqlB,GAAP;AACD,CAViD,EAAlD;;AAYA88I,YAAY,GAAG,sBAASE,gBAAT,EAA2B;AACxC,MAAIA,gBAAgB,KAAKnjK,SAArB,IAAkCmjK,gBAAgB,KAAK,SAA3D,EAAsE;AACpEA,oBAAgB,GAAG,SAAnB;AACD;;AACD,OAAKA,gBAAL,GAAwBA,gBAAxB;AACD,CALD;;AAOAF,YAAY,CAAC3hK,SAAb,CAAuB8hK,WAAvB,GAAqC,YAAW;AAC9C,MAAIJ,aAAa,CAAC,KAAKG,gBAAN,CAAb,KAAyCnjK,SAA7C,EAAwD;AACtD,WAAOgjK,aAAa,CAAC,KAAKG,gBAAN,CAApB;AACD;AACF,CAJD,C,CAMA;;;AACeF,oEAAf,E;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe,SAASI,WAAT,CAAqBC,OAArB,EAA8B;AAC3C,MAAIC,UAAU,GAAG,uBAAjB;AAAA,MAEEC,eAFF;AAAA,MAGEC,UAHF;AAAA,MAKEC,SALF;AAAA,MAMEC,WANF;AAAA,MAQEC,OARF;AAAA,MASE/hB,UATF;AAAA,MAUEC,WAVF;AAAA,MAWE+hB,QAAQ,GAAG,CAXb;AAAA,MAYEC,QAAQ,GAAG,EAZb;AAAA,MAcE;AACA;AACA;AACAC,iBAAe,GAAG,SAAlBA,eAAkB,GAAW;AAC3BP,mBAAe,GAAG99J,CAAC,CAAC,YAAD,CAAnB;AACA89J,mBAAe,CAACrjJ,IAAhB,CAAqB,IAArB,EAA2BmjJ,OAAO,IAAIC,UAAtC;AACAE,cAAU,GAAGD,eAAe,CAAC,CAAD,CAAf,CAAmBr6G,UAAnB,CAA8B,IAA9B,CAAb;AACD,GArBH;AAAA,MAuBE;AACA;AACA;AACA66G,cAAY,GAAG;AACb;AACAC,iBAAa,EAAE,yBAAW;AACxB,UAAIpmJ,KAAJ,EAAWqmJ,OAAX,EAAoB36J,GAApB,EAAyB46J,MAAzB,EAAiCC,MAAjC,EACEC,UADF,EACc59I,IADd,EAEE3lB,CAFF,EAEKyM,CAFL,EAEQmxJ,GAFR,EAEa4F,SAFb,EAEwBC,UAFxB;;AAIA,UAAI,CAACX,OAAL,EAAc;AACZ,cAAM,IAAIjjK,KAAJ,CAAU,yCAAV,CAAN;AACD;;AAED8iK,gBAAU,CAACr4G,SAAX,CAAqB,CAArB,EAAwB,CAAxB,EAA2By2F,UAA3B,EAAuCC,WAAvC,EATwB,CAUxB;;AACA2hB,gBAAU,CAACz4G,SAAX,GAAuB,YAAvB;AAEAntC,WAAK,GAAG8lJ,WAAW,GAAGzhK,IAAI,CAACC,GAAL,CAAS,CAAT,EAAY2hK,QAAQ,GAAGD,QAAvB,CAAtB;AACAQ,gBAAU,GAAGZ,UAAU,CAACe,YAAX,CAAwB,CAAxB,EAA2B,CAA3B,EAA8B3iB,UAA9B,EAA0CC,WAA1C,CAAb;AACAr7H,UAAI,GAAG49I,UAAU,CAAC59I,IAAlB;AAEA69I,eAAS,GAAG,CAAZ;AACAC,gBAAU,GAAG,IAAI1iB,UAAjB;;AACA,WAAK/gJ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+gJ,UAAhB,EAA4B/gJ,CAAC,IAAI,CAAjC,EAAoC;AAClC49J,WAAG,GAAG59J,CAAC,GAAGghJ,WAAV;AACAwiB,iBAAS,GAAG,IAAIxjK,CAAhB;;AACA,aAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu0I,WAAhB,EAA6Bv0I,CAAC,IAAI,CAAlC,EAAqC;AACnChE,aAAG,GAAGsU,KAAK,IAAI+lJ,OAAO,CAAClF,GAAG,GAAGnxJ,CAAP,CAAP,GAAmBs2J,QAAvB,CAAX;AACAK,iBAAO,GAAGhiK,IAAI,CAACwqC,KAAL,CAAWnjC,GAAX,CAAV,CAFmC,CAGnC;;AACAA,aAAG,IAAI26J,OAAP;;AACA,cAAIA,OAAO,GAAG,CAAd,EAAiB;AACfA,mBAAO,GAAG,CAAV;AACA36J,eAAG,GAAG,CAAN;AACD,WAHD,MAGO,IAAI26J,OAAO,GAAGP,WAAW,GAAG,CAA5B,EAA+B;AACpCO,mBAAO,GAAGP,WAAW,GAAG,CAAxB;AACAp6J,eAAG,GAAG,CAAN;AACD;;AACD46J,gBAAM,GAAGT,SAAS,CAACQ,OAAD,CAAlB;AACAE,gBAAM,GAAGV,SAAS,CAACQ,OAAO,GAAG,CAAX,CAAlB;AACAz9I,cAAI,CAAC69I,SAAD,CAAJ,GAAkBH,MAAM,CAAC,CAAD,CAAN,IAAa,IAAI56J,GAAjB,IAAwB66J,MAAM,CAAC,CAAD,CAAN,GAAY76J,GAAtD;AACAkd,cAAI,CAAC69I,SAAS,GAAG,CAAb,CAAJ,GAAsBH,MAAM,CAAC,CAAD,CAAN,IAAa,IAAI56J,GAAjB,IAAwB66J,MAAM,CAAC,CAAD,CAAN,GAAY76J,GAA1D;AACAkd,cAAI,CAAC69I,SAAS,GAAG,CAAb,CAAJ,GAAsBH,MAAM,CAAC,CAAD,CAAN,IAAa,IAAI56J,GAAjB,IAAwB66J,MAAM,CAAC,CAAD,CAAN,GAAY76J,GAA1D;AACAkd,cAAI,CAAC69I,SAAS,GAAG,CAAb,CAAJ,GAAsB,GAAtB;AACAA,mBAAS,IAAIC,UAAb;AACD;AACF;;AACDd,gBAAU,CAACgB,YAAX,CAAwBJ,UAAxB,EAAoC,CAApC,EAAuC,CAAvC;AACD,KA9CY;AAgDb;AACAK,eAAW,EAAE,qBAASC,WAAT,EAAsBC,cAAtB,EAAsCC,eAAtC,EAAuD;AAClE,UAAID,cAAc,GAAGC,eAAjB,KAAqCF,WAAW,CAAC5jK,MAArD,EAA6D;AAC3D,cAAM,IAAIJ,KAAJ,CAAU,iDAAV,CAAN;AACD;;AACDijK,aAAO,GAAGe,WAAV;AACA9iB,gBAAU,GAAG+iB,cAAb;AACA9iB,iBAAW,GAAG+iB,eAAd;AACA,WAAKC,aAAL,CAAmBjjB,UAAnB,EAA+BC,WAA/B;AACD,KAzDY;AA2DbijB,kBAAc,EAAE,0BAAW;AACzB,aAAOvB,eAAP;AACD,KA7DY;AA+DbxzJ,UAAM,EAAE,kBAAW,CACjB;AACA;AACA;AACA;AACD,KApEY;AAsEb80J,iBAAa,EAAE,uBAAS31I,CAAT,EAAY82B,CAAZ,EAAe;AAC5Bu9G,qBAAe,CAACrjJ,IAAhB,CAAqB,OAArB,EAA8BgP,CAA9B;AACAq0I,qBAAe,CAACrjJ,IAAhB,CAAqB,QAArB,EAA+B8lC,CAA/B;AACD,KAzEY;AA2Eb++G,qBAAiB,EAAE,2BAASj2H,CAAT,EAAY;AAC7B80H,cAAQ,GAAG90H,CAAX;AACD,KA7EY;AA8Ebk2H,qBAAiB,EAAE,2BAASl2H,CAAT,EAAY;AAC7B+0H,cAAQ,GAAG/0H,CAAX;AACD,KAhFY;AAiFbm2H,mBAAe,EAAE,yBAASz4J,EAAT,EAAa;AAC5Bi3J,eAAS,GAAG,IAAIT,mBAAJ,CAAiBx2J,EAAjB,EAAqB22J,WAArB,EAAZ;AACAO,iBAAW,GAAGD,SAAS,CAAC3iK,MAAV,GAAmB,CAAjC;AACD;AApFY,GA1BjB,CAD2C,CAiH3C;AACA;;;AACAijK,cAAY,CAACkB,eAAb,CAA6B,SAA7B;AAEAnB,iBAAe;AAEf,SAAOC,YAAP;AACD;AAAA,C;;ACnIc,oFAAoB,iBAAiB,2BAA2B,2CAA2C,GAAG,GAAG,E;;ACAjH,gJAA2F,gCAAgC,2BAA2B,yBAAyB,uBAAuB,iBAAiB,iDAAiD,0EAA0E,kEAAkE,GAAG,GAAG,E;;ACAza;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe,SAASmB,gBAAT,CAA0B7B,OAA1B,EAAmC;AAChD,MACA;AACEhc,IAAE,GAAG9uH,WAAO,CAAC+uH,eAAR,EAFP;AAAA,MAGE;AACA6d,gBAAc,GAAG,IAAIvd,MAAJ,CAAWqJ,2BAAX,EAAqBmU,gBAArB,CAJnB;AAAA,MAKE;AACAjX,OAAK,GAAGV,IAAI,CAACU,KAAL,CAAW;AACjBtpC,UAAM,EAAE;AADS,GAAX,CANV;AAAA,MASE;AACAwgD,aAVF;AAAA,MAYE/B,UAAU,GAAG,6BAZf;AAAA,MAcEC,eAdF;AAAA,MAeE+B,YAfF;AAAA,MAgBEC,aAhBF;AAAA,MAkBEC,WAlBF;AAAA,MAmBE5B,QAAQ,GAAG,CAnBb;AAAA,MAoBEC,QAAQ,GAAG,EApBb;AAAA,MAsBE;AACA;AACA;AACAC,iBAAe,GAAG,SAAlBA,eAAkB,GAAW;AAC3BP,mBAAe,GAAG99J,CAAC,CAAC4hJ,EAAE,CAACv+F,MAAJ,CAAnB;AACAy6G,mBAAe,CAACrjJ,IAAhB,CAAqB,IAArB,EAA2BmjJ,OAAO,IAAIC,UAAtC;AACD,GA5BH;AAAA,MA8BE;AACA;AACAmC,mBAAiB,GAAG,SAApBA,iBAAoB,GAAW;AAC7B;AACApe,MAAE,CAACyF,eAAH,CAAmBzF,EAAE,CAAC0F,WAAtB,EAAmC,IAAnC,EAF6B,CAG7B;;AACA1F,MAAE,CAACnmC,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkBokD,YAAlB,EAAgCC,aAAhC;AACD,GArCH;AAAA,MAuCE;AACA;AACA;AACAxB,cAAY,GAAG;AACb;AACAC,iBAAa,EAAE,yBAAW;AAExB,UAAI,CAACwB,WAAL,EAAkB;AAChB,cAAM,IAAI9kK,KAAJ,CAAU,iDAAV,CAAN;AACD;;AAED+kK,uBAAiB;AAEjBpe,QAAE,CAACh3F,KAAH,CAASg3F,EAAE,CAACqe,gBAAZ;AACAF,iBAAW,CAAC/hI,IAAZ,CAAiB,CAAjB;AACA4hI,iBAAW,CAAC5hI,IAAZ,CAAiB,CAAjB;AACA0hI,oBAAc,CAAC/a,IAAf,CAAoB+D,KAApB;AACAkX,iBAAW,CAACjY,MAAZ,CAAmB,CAAnB;AACAoY,iBAAW,CAACpY,MAAZ,CAAmB,CAAnB;AACD,KAhBY;AAkBbr9I,UAAM,EAAE,kBAAW;AACjBu1J,kBAAY,GAAG/B,eAAe,CAACt3J,KAAhB,EAAf;AACAs5J,mBAAa,GAAGhC,eAAe,CAACr3J,MAAhB,EAAhB;AACAq3J,qBAAe,CAACrjJ,IAAhB,CAAqB,OAArB,EAA8BolJ,YAA9B;AACA/B,qBAAe,CAACrjJ,IAAhB,CAAqB,QAArB,EAA+BqlJ,aAA/B;AACD,KAvBY;AAyBb;AACAI,sBAAkB,EAAE,4BAASC,eAAT,EAA0B;AAC5CJ,iBAAW,GAAGI,eAAd;AACD,KA5BY;AA8Bbd,kBAAc,EAAE,0BAAW;AACzB,aAAOvB,eAAP;AACD,KAhCY;AAkCbwB,qBAAiB,EAAE,2BAASj2H,CAAT,EAAY;AAC7B80H,cAAQ,GAAG90H,CAAX;AACAq2H,oBAAc,CAAC1b,QAAf,CAAwB;AACtBma,gBAAQ,EAAEA;AADY,OAAxB;AAGD,KAvCY;AAwCboB,qBAAiB,EAAE,2BAASl2H,CAAT,EAAY;AAC7B+0H,cAAQ,GAAG/0H,CAAX;AACAq2H,oBAAc,CAAC1b,QAAf,CAAwB;AACtBoa,gBAAQ,EAAEA;AADY,OAAxB;AAGD,KA7CY;AA8CboB,mBAAe,EAAE,yBAASz4J,EAAT,EAAa;AAC5B,UAAIi3J,SAAJ,EAAe9hK,GAAf,EAAoBkkK,QAApB,EAA8BhlK,CAA9B,EAAiCivJ,EAAjC;AACA2T,eAAS,GAAG,IAAIT,mBAAJ,CAAiBx2J,EAAjB,EAAqB22J,WAArB,EAAZ;AACAxhK,SAAG,GAAG8hK,SAAS,CAAC3iK,MAAhB;AACA+kK,cAAQ,GAAG,IAAIrlK,UAAJ,CAAemB,GAAG,GAAG,CAArB,CAAX;;AACA,WAAKd,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGc,GAAhB,EAAqBd,CAAC,IAAI,CAA1B,EAA6B;AAC3BivJ,UAAE,GAAGjvJ,CAAC,GAAG,CAAT;AACAglK,gBAAQ,CAAC/V,EAAD,CAAR,GAAe2T,SAAS,CAAC5iK,CAAD,CAAT,CAAa,CAAb,CAAf;AACAglK,gBAAQ,CAAC/V,EAAE,GAAG,CAAN,CAAR,GAAmB2T,SAAS,CAAC5iK,CAAD,CAAT,CAAa,CAAb,CAAnB;AACAglK,gBAAQ,CAAC/V,EAAE,GAAG,CAAN,CAAR,GAAmB2T,SAAS,CAAC5iK,CAAD,CAAT,CAAa,CAAb,CAAnB;AACAglK,gBAAQ,CAAC/V,EAAE,GAAG,CAAN,CAAR,GAAmB,GAAnB;AACD;;AACDuV,iBAAW,GAAG,IAAIj4C,WAAJ,CAAYzrH,GAAZ,EAAiB,CAAjB,EAAoB;AAChC+F,YAAI,EAAE2/I,EAAE,CAACqE,aADuB;AAEhCxoI,cAAM,EAAEmkI,EAAE,CAACoE,IAFqB;AAGhCpiH,cAAM,EAAEg+G,EAAE,CAAC6E;AAHqB,OAApB,CAAd;AAKA7E,QAAE,CAACwE,WAAH,CAAexE,EAAE,CAACyE,UAAlB,EAA8BuZ,WAAW,CAAC74J,EAA1C;AACA66I,QAAE,CAACsF,UAAH,CAActF,EAAE,CAACyE,UAAjB,EAA6B,CAA7B,EAAgCuZ,WAAW,CAACniJ,MAA5C,EAAoDvhB,GAApD,EAAyD,CAAzD,EAA4D,CAA5D,EAA+D0jK,WAAW,CAACniJ,MAA3E,EAAmFmiJ,WAAW,CAAC39J,IAA/F,EAAqGm+J,QAArG;AACD;AAjEY,GA1CjB,CADgD,CA+GhD;AACA;;;AACA9B,cAAY,CAACkB,eAAb,CAA6B,SAA7B,EAjHgD,CAkHhD;;AACAE,gBAAc,CAAC1b,QAAf,CAAwB;AACtB;AACA+b,eAAW,EAAE,CAFS;AAGtBH,eAAW,EAAE,CAHS;AAItB;AACAzB,YAAQ,EAAEA,QALY;AAMtBC,YAAQ,EAAEA;AANY,GAAxB,EAnHgD,CA2HhD;;AACA1V,OAAK,CAACtpC,MAAN,GAAe,CACb,CAAC,CAAD,EAAI,CAAJ,CADa,EAEb,CAAC,CAAD,EAAI,CAAJ,CAFa,EAGb,CAAC,CAAD,EAAI,CAAJ,CAHa,EAIb,CAAC,CAAD,EAAI,CAAJ,CAJa,CAAf,CA5HgD,CAkIhD;;AACAspC,OAAK,CAACT,OAAN;AAEAoW,iBAAe;AAEf,SAAOC,YAAP;AACD;AAAA,C;;ACvJD;AACA;AACA;AACA;AAEA;AACA;AAEA,IACA;AAIE+B,SAAS,GAAG,4FALd;AAOe,SAASC,eAAT,CAAyB1C,OAAzB,EAAkC5zJ,KAAlC,EAAyC;AACtD,MAAI6zJ,UAAU,GAAG,kBAAjB;AAAA,MACE1tH,IADF;AAAA,MAEEowH,WAFF;AAAA,MAGEC,eAHF;AAAA,MAIEC,OAJF;AAAA,MAKEC,cALF;AAAA,MAMElyH,SANF;AAAA,MAOEmyH,gBAPF;AAAA,MAQEC,iBARF;AAAA,MASEC,0BAA0B,GAAG;AAC3BhvI,YAAQ,EAAE,oBAAW;AACnB,aAAO7nB,KAAP;AACD,KAH0B;AAI3BkuB,mBAAe,EAAE,2BAAW;AAC1B,aAAO,YAAW,CAAE,CAApB;AACD,KAN0B;AAO3B8C,mBAAe,EAAE,2BAAW;AAC1B,aAAO,YAAW,CAAE,CAApB;AACD;AAT0B,GAT/B,CADsD,CAsBtD;AACA;AACA;;AAEA,WAASqjI,eAAT,GAA2B;AACzB,QAAIyC,SAAJ;AAEA3wH,QAAI,GAAGnwC,CAAC,CAAC,SAAD,CAAR;AACAmwC,QAAI,CAAC11B,IAAL,CAAU,IAAV,EAAgBmjJ,OAAO,IAAIC,UAA3B;AACA2C,mBAAe,GAAGxgK,CAAC,CAAC,4BAAD,CAAnB;AACAwgK,mBAAe,CAACv5J,QAAhB,CAAyBkpC,IAAzB;AACAswH,WAAO,GAAGzgK,CAAC,CAAC,SAAD,CAAX;AACAygK,WAAO,CAACx5J,QAAR,CAAiBu5J,eAAjB;AAEAM,aAAS,GAAG9gK,CAAC,CAAC,0EAAD,CAAb;AACA8gK,aAAS,CAACpoJ,EAAV,CAAa,OAAb,EAAsBm+C,IAAtB;AACAiqG,aAAS,CAAC75J,QAAV,CAAmBu5J,eAAnB;AAEAhyH,aAAS,CAACvnC,QAAV,CAAmBu5J,eAAnB;AAEAD,eAAW,GAAGvgK,CAAC,CAAC,wEAAD,CAAf;AACAugK,eAAW,CAAC7nJ,EAAZ,CAAe,OAAf,EAAwBk+C,IAAxB;AACA2pG,eAAW,CAACt5J,QAAZ,CAAqBkpC,IAArB;AAEAqwH,mBAAe,CAAC3pG,IAAhB;AACD;;AAED,WAASD,IAAT,GAAgB;AACd2pG,eAAW,CAAC1pG,IAAZ;AACA2pG,mBAAe,CAACzjG,MAAhB;AACD;;AAED,WAASlG,IAAT,GAAgB;AACd0pG,eAAW,CAACxjG,MAAZ;AACAyjG,mBAAe,CAACxjG,OAAhB;AACD;;AAED,WAAStzD,UAAT,GAAsB;AACpB;AACA;AACA;AACAg3J,kBAAc,GAAG,IAAIpyH,kBAAJ,CAAuB;AACtC,cAAQ,UAD8B;AAEtC,YAAM,uBAFgC;AAGtC,cAAQ,kCAH8B;AAItC,kBAAY;AAJ0B,KAAvB,EAKduyH,0BALc,CAAjB;AAMAryH,aAAS,GAAGkyH,cAAc,CAACx4J,gBAAf,EAAZ;AACAm2J,mBAAe;AAChB,GAvEqD,CAyEtD;AACA;AACA;;;AACAuC,mBAAiB,GAAG;AAClB90H,aAAS,EAAE,mBAAS9hC,KAAT,EAAgB;AACzB22J,sBAAgB,GAAG32J,KAAnB;;AACA62J,gCAA0B,CAAChvI,QAA3B,GAAsC,YAAW;AAC/C,eAAO7nB,KAAP;AACD,OAFD;;AAGA02J,oBAAc,CAACxrI,mBAAf,CAAmC2rI,0BAAnC;AACD,KAPiB;AASlB9hJ,UAAM,EAAE,kBAAW;AACjB,UAAIgiJ,eAAe,GAAGJ,gBAAgB,CAAC/G,iBAAjB,EAAtB;AAAA,UACEpQ,OAAO,GAAGyD,KAAK,CAAC3C,YADlB;AAAA,UAEE0W,gBAAgB,GAAG,IAFrB;AAAA,UAGEC,gBAAgB,GAAG,IAHrB;AAAA,UAIEC,SAAS,GAAGP,gBAAgB,CAACn7I,UAAjB,CAA4B02H,SAA5B,IAAyC,CAACykB,gBAAgB,CAAC5G,aAAjB,EAJxD;AAAA,UAKElyI,OALF;AAOA44I,aAAO,CAAC//I,KAAR;AAEA/kB,YAAM,CAAC2b,IAAP,CAAYkyI,OAAZ,EAAqBjyI,OAArB,CAA6B,UAASvV,IAAT,EAAe;AAC1C,YAAIgsE,CAAC,GAAGw7E,OAAO,CAACxnJ,IAAD,CAAf;;AACA,YAAIgsE,CAAC,CAACjuE,QAAF,IAAc,CAACiuE,CAAC,CAACy7E,SAArB,EAAgC;AAC9BuX,0BAAgB,GAAG,KAAnB;AACD;;AACD,YAAI,CAAChzF,CAAC,CAACjuE,QAAH,IAAe,CAACiuE,CAAC,CAACy7E,SAAtB,EAAiC;AAC/BwX,0BAAgB,GAAG,KAAnB;AACD;AACF,OARD,EAViB,CAoBjB;;AACA,UAAID,gBAAgB,IAAIC,gBAAxB,EAA0C;AACxCR,eAAO,CAACx4J,MAAR,CAAe,gHAAf;AACD,OAFD,MAEO,IAAI+4J,gBAAJ,EAAsB;AAC3BP,eAAO,CAACx4J,MAAR,CAAe,yGACb,0CADF;AAEAtM,cAAM,CAAC2b,IAAP,CAAYkyI,OAAZ,EAAqBjyI,OAArB,CAA6B,UAASvV,IAAT,EAAe;AAC1C,cAAIgsE,CAAC,GAAGw7E,OAAO,CAACxnJ,IAAD,CAAf;AAAA,cACEm/J,SADF;;AAEA,cAAI,CAACnzF,CAAC,CAACjuE,QAAP,EAAiB;AACfohK,qBAAS,GAAGnzF,CAAC,CAACy7E,SAAF,GAAc,oDAAd,GAAqE,sDAAjF;AACAgX,mBAAO,CAACx4J,MAAR,CAAe,0BAA0Bk5J,SAA1B,GAAsC,GAAtC,GAA4Cn/J,IAA5C,GAAmD,MAAlE;AACD;AACF,SAPD;AAQAy+J,eAAO,CAACx4J,MAAR,CAAe,iDAAf;AACD,OAZM,MAYA,IAAIuhJ,OAAO,CAAC,OAAD,CAAX,EAAsB;AAC3BiX,eAAO,CAACx4J,MAAR,CAAe,mHAAf;AACAtM,cAAM,CAAC2b,IAAP,CAAYkyI,OAAZ,EAAqBjyI,OAArB,CAA6B,UAASvV,IAAT,EAAe;AAC1C,cAAIgsE,CAAC,GAAGw7E,OAAO,CAACxnJ,IAAD,CAAf;AAAA,cACEm/J,SADF;;AAEA,cAAInzF,CAAC,CAACjuE,QAAN,EAAgB;AACdohK,qBAAS,GAAGnzF,CAAC,CAACy7E,SAAF,GAAc,oDAAd,GAAqE,sDAAjF;AACAgX,mBAAO,CAACx4J,MAAR,CAAe,0BAA0Bk5J,SAA1B,GAAsC,GAAtC,GAA4Cn/J,IAA5C,GAAmD,MAAlE;AACD;AACF,SAPD;AAQAy+J,eAAO,CAACx4J,MAAR,CAAeo4J,SAAf;AACD,OAXM,MAWA;AACLI,eAAO,CAACx4J,MAAR,CAAe,yEAAf;AACAw4J,eAAO,CAACx4J,MAAR,CAAeo4J,SAAf;AACD,OAjDgB,CAmDjB;;;AACA,UAAIU,eAAJ,EAAqB;AACnBl5I,eAAO,GAAG,2FAAV;;AACA,YAAI84I,gBAAgB,CAAC5G,aAAjB,EAAJ,EAAsC;AACpClyI,iBAAO,IAAI,+CAAX;AACD,SAFD,MAEO;AACLA,iBAAO,IAAI,gDAAX;;AACA,cAAIq5I,SAAJ,EAAe;AACbr5I,mBAAO,IAAI,4GAAX;AACD,WAFD,MAEO,IAAIm5I,gBAAJ,EAAsB;AAC3Bn5I,mBAAO,IAAI,oCAAX;AACD;AACF;;AACD44I,eAAO,CAACx4J,MAAR,CAAe,QAAQ4f,OAAR,GAAkB,MAAjC;AACD,OAbD,MAaO;AACL44I,eAAO,CAACx4J,MAAR,CAAe,kGACb,4CADF;AAED,OApEgB,CAsEjB;;;AACA,UAAI,CAAC+4J,gBAAD,IAAqB,CAACD,eAAtB,IAAyCG,SAA7C,EAAwD;AACtD;AACA1yH,iBAAS,CAACqoB,IAAV;AACD,OAHD,MAGO;AACLroB,iBAAS,CAACooB,IAAV;AACD,OA5EgB,CA8EjB;;;AACA,UAAIsqG,SAAJ,EAAe;AACbr5I,eAAO,GAAG,8BAAV;AACA04I,mBAAW,CAAC30J,WAAZ,CAAwB,OAAxB;AACA20J,mBAAW,CAACj4J,QAAZ,CAAqB,KAArB;AACD,OAJD,MAIO,IAAI,CAAC04J,gBAAD,IAAqB,CAACD,eAA1B,EAA2C;AAChDl5I,eAAO,GAAG,oBAAV;AACA04I,mBAAW,CAAC30J,WAAZ,CAAwB,OAAxB;AACA20J,mBAAW,CAACj4J,QAAZ,CAAqB,KAArB;AACD,OAJM,MAIA,IAAI,CAACq4J,gBAAgB,CAAC5G,aAAjB,EAAL,EAAuC;AAC5ClyI,eAAO,GAAG,gCAAV;AACA04I,mBAAW,CAAC30J,WAAZ,CAAwB,OAAxB;AACA20J,mBAAW,CAAC30J,WAAZ,CAAwB,KAAxB;AACD,OAJM,MAIA;AACLic,eAAO,GAAG,6BAAV;AACA04I,mBAAW,CAAC30J,WAAZ,CAAwB,KAAxB;AACA20J,mBAAW,CAACj4J,QAAZ,CAAqB,OAArB;AACD;;AACDuf,aAAO,IAAI,kCAAX;AACA04I,iBAAW,CAAC9lJ,IAAZ,CAAiB,OAAjB,EAA0BoN,OAA1B;;AAEA,UAAIq5I,SAAJ,EAAe;AACb;AACA;AACAtqG,YAAI;AACL;AACF,KAjHiB;AAmHlByoG,kBAAc,EAAE,0BAAW;AACzB,aAAOlvH,IAAP;AACD;AArHiB,GAApB,CA5EsD,CAoMtD;;AACAzmC,YAAU;AAEV,SAAOk3J,iBAAP;AACD;AAAA,C;;ACvND;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe,SAASQ,aAAT,CAAuBxD,OAAvB,EAAgC;AAC7C,MAAIC,UAAU,GAAG,yBAAjB;AAAA,MACEwD,YAAY,GAAG,GADjB;AAAA,MAEEC,eAAe,GAAG,CAFpB;AAAA,MAGEC,QAAQ,GAAG/kK,IAAI,CAAC8O,GAAL,CAAS,WAAT,CAHb;AAAA,MAIEk2J,QAAQ,GAAGhlK,IAAI,CAAC6O,GAAL,CAAS,WAAT,CAJb;AAAA,MAKEo2J,QAAQ,GAAG,CALb;AAAA,MAMEC,WAAW,GAAG,kBANhB;AAAA,MAQEC,iBARF;AAAA,MASE5D,UATF;AAAA,MAUE8B,YAVF;AAAA,MAWEC,aAXF;AAAA,MAaE8B,WAbF;AAAA,MAcEC,WAdF;AAAA,MAeE1lB,UAfF;AAAA,MAgBEC,WAhBF;AAAA,MAiBE37F,OAjBF;AAAA,MAmBEt6B,OAAO,GAAG,IAnBZ;AAAA,MAqBE;AACA;AACA;AACAk4I,iBAAe,GAAG,SAAlBA,eAAkB,GAAW;AAC3BsD,qBAAiB,GAAG3hK,CAAC,CAAC,YAAD,CAArB;AACA2hK,qBAAiB,CAAClnJ,IAAlB,CAAuB,IAAvB,EAA6BmjJ,OAAO,IAAIC,UAAxC;AACAE,cAAU,GAAG4D,iBAAiB,CAAC,CAAD,CAAjB,CAAqBl+G,UAArB,CAAgC,IAAhC,CAAb;AACD,GA5BH;AAAA,MA8BE;AACAq+G,YAAU,GAAG,SAAbA,UAAa,CAASvlK,CAAT,EAAYuV,CAAZ,EAAeC,EAAf,EAAmBC,EAAnB,EAAuB;AAClC,QAAIpH,CAAC,GAAG,MAAMpO,IAAI,CAAC2O,IAAL,CAAU4G,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAAd;AAAA,QACE+vJ,MAAM,GAAGhwJ,EAAE,GAAGnH,CADhB;AAAA,QAEEo3J,MAAM,GAAGhwJ,EAAE,GAAGpH,CAFhB;AAAA,QAGEgK,EAAE,GAAGrY,CAAC,GAAGwlK,MAAM,GAAGT,eAAb,GAA+BvvJ,EAAE,GAAGsvJ,YAH3C;AAAA,QAIExsJ,EAAE,GAAG/C,CAAC,GAAGkwJ,MAAM,GAAGV,eAAb,GAA+BtvJ,EAAE,GAAGqvJ,YAJ3C;AAAA,QAKEY,KAAK,GAAGR,QAAQ,IAAIM,MAAM,GAAGR,QAAT,GAAoBS,MAAM,GAAGR,QAAjC,CALlB;AAAA,QAMEU,KAAK,GAAGT,QAAQ,IAAIO,MAAM,GAAGT,QAAT,GAAoBQ,MAAM,GAAGP,QAAjC,CANlB;AAQAzD,cAAU,CAAChyC,SAAX;AACAgyC,cAAU,CAACzzC,MAAX,CAAkB/tH,CAAlB,EAAqBuV,CAArB;AACAisJ,cAAU,CAACxzC,MAAX,CAAkB31G,EAAlB,EAAsBC,EAAtB;AAEAkpJ,cAAU,CAACxzC,MAAX,CAAkB31G,EAAE,GAAGqtJ,KAAvB,EAA8BptJ,EAAE,GAAGqtJ,KAAnC;AACAnE,cAAU,CAACzzC,MAAX,CAAkB11G,EAAlB,EAAsBC,EAAtB;AAEAotJ,SAAK,GAAGR,QAAQ,IAAIM,MAAM,GAAGR,QAAT,GAAoBS,MAAM,GAAGR,QAAjC,CAAhB;AACAU,SAAK,GAAGT,QAAQ,IAAIO,MAAM,GAAGT,QAAT,GAAoBQ,MAAM,GAAGP,QAAjC,CAAhB;AACAzD,cAAU,CAACxzC,MAAX,CAAkB31G,EAAE,GAAGqtJ,KAAvB,EAA8BptJ,EAAE,GAAGqtJ,KAAnC;AAEAnE,cAAU,CAACthD,MAAX;AACD,GApDH;AAAA,MAsDE;AACA;AACA;AACA0lD,gBAAc,GAAG;AACf;AACAC,mBAAe,EAAE,2BAAW;AAC1B,UAAI,CAACj8I,OAAL,EAAc;AAEd,UAAIwwB,EAAJ,EAAQC,EAAR,EAAYjhC,EAAZ,EAAgBC,EAAhB,EAAoBysJ,GAApB,EAAyBC,GAAzB,EACElnK,CADF,EACKyM,CADL,EACQmxJ,GADR,EACauJ,IADb;;AAGA,UAAI,CAACX,WAAD,IAAgB,CAACC,WAArB,EAAkC;AAChC,cAAM,IAAI5mK,KAAJ,CAAU,6CAAV,CAAN;AACD;;AAED07C,QAAE,GAAGkpH,YAAY,GAAG1jB,UAApB;AACAvlG,QAAE,GAAGkpH,aAAa,GAAG1jB,WAArB;AAEA2hB,gBAAU,CAACr4G,SAAX,CAAqB,CAArB,EAAwB,CAAxB,EAA2Bm6G,YAA3B,EAAyCC,aAAzC;AACA/B,gBAAU,CAACpwC,WAAX,GAAyB+zC,WAAzB;AACA3D,gBAAU,CAACnyI,SAAX,GAAuB,CAAvB;;AAEA,WAAKxwB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+gJ,UAAU,GAAG,CAA7B,EAAgC/gJ,CAAC,IAAIqlD,OAArC,EAA8C;AAC5Cu4G,WAAG,GAAG59J,CAAC,GAAGghJ,WAAV;AACAzmI,UAAE,GAAG,CAACva,CAAC,GAAG,GAAL,IAAYu7C,EAAjB,CAF4C,CAEvB;;AACrB,aAAK9uC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu0I,WAAW,GAAG,CAA9B,EAAiCv0I,CAAC,IAAI44C,OAAtC,EAA+C;AAC7C8hH,cAAI,GAAGvJ,GAAG,GAAGnxJ,CAAb;AACA+N,YAAE,GAAG,CAAC/N,CAAC,GAAG,GAAL,IAAY+uC,EAAjB,CAF6C,CAExB;;AACrByrH,aAAG,GAAGT,WAAW,CAACW,IAAD,CAAjB;AACAD,aAAG,GAAGT,WAAW,CAACU,IAAD,CAAjB;;AACA,cAAIF,GAAG,GAAGA,GAAN,GAAYC,GAAG,GAAGA,GAAlB,GAAwB,KAA5B,EAAmC;AACjCR,sBAAU,CAACnsJ,EAAD,EAAKC,EAAL,EAASysJ,GAAT,EAAcC,GAAd,CAAV;AACD;AACF;AACF;AACF,KAhCc;AAkCf13G,SAAK,EAAE,iBAAW;AAChBmzG,gBAAU,CAACr4G,SAAX,CAAqB,CAArB,EAAwB,CAAxB,EAA2Bm6G,YAA3B,EAAyCC,aAAzC;AACD,KApCc;;AAsCf,QAAI35I,OAAJ,GAAc;AACZ,aAAOA,OAAP;AACD,KAxCc;;AAyCf,QAAIA,OAAJ,CAAYkjB,CAAZ,EAAe;AACbljB,aAAO,GAAGkjB,CAAV,CADa,CAEb;;AACA,UAAI,CAACljB,OAAL,EAAcg8I,cAAc,CAACv3G,KAAf;AACf,KA7Cc;;AA+Cf;AACA43G,iBAAa,EAAE,uBAASC,eAAT,EAA0BC,eAA1B,EAA2CxD,cAA3C,EAA2DC,eAA3D,EAA4EwD,cAA5E,EAA4F;AACzG,UAAIzD,cAAc,GAAGC,eAAjB,KAAqCsD,eAAe,CAACpnK,MAAzD,EAAiE;AAC/D,cAAM,IAAIJ,KAAJ,CAAU,kEAAV,CAAN;AACD;;AACD,UAAIikK,cAAc,GAAGC,eAAjB,KAAqCuD,eAAe,CAACrnK,MAAzD,EAAiE;AAC/D,cAAM,IAAIJ,KAAJ,CAAU,kEAAV,CAAN;AACD;;AACD2mK,iBAAW,GAAGa,eAAd;AACAZ,iBAAW,GAAGa,eAAd;AACAvmB,gBAAU,GAAG+iB,cAAb;AACA9iB,iBAAW,GAAG+iB,eAAd;AACA1+G,aAAO,GAAGjkD,IAAI,CAAC4kB,KAAL,CAAW89I,cAAc,GAAGyD,cAA5B,CAAV;AACD,KA5Dc;AA8DftD,kBAAc,EAAE,0BAAW;AACzB,aAAOsC,iBAAP;AACD,KAhEc;AAkEfr3J,UAAM,EAAE,kBAAW;AACjBu1J,kBAAY,GAAG8B,iBAAiB,CAACn7J,KAAlB,EAAf;AACAs5J,mBAAa,GAAG6B,iBAAiB,CAACl7J,MAAlB,EAAhB;AACAk7J,uBAAiB,CAAClnJ,IAAlB,CAAuB,OAAvB,EAAgColJ,YAAhC;AACA8B,uBAAiB,CAAClnJ,IAAlB,CAAuB,QAAvB,EAAiCqlJ,aAAjC;AACD;AAvEc,GAzDnB,CAD6C,CAoI7C;;;AACAzB,iBAAe;AAEf,SAAO8D,cAAP;AACD;AAAA,C;;ACnJc,kIAAiF,oCAAoC,4BAA4B,6BAA6B,qBAAqB,iBAAiB,yGAAyG,mBAAmB,gCAAgC,oIAAoI,aAAa,KAAK,oHAAoH,mIAAmI,KAAK,OAAO,8MAA8M,4DAA4D,2FAA2F,mDAAmD,wBAAwB,uBAAuB,OAAO,wLAAwL,gDAAgD,+CAA+C,wEAAwE,KAAK,GAAG,GAAG,E;;ACAjkD,qEAAoB,iBAAiB,yBAAyB,GAAG,GAAG,E;;ACAnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe,SAASS,kBAAT,CAA4BhF,OAA5B,EAAqC;AAClD,MACA;AACEhc,IAAE,GAAG9uH,WAAO,CAAC+uH,eAAR,EAFP;AAAA,MAGE;AACA6d,gBAAc,GAAG,IAAIvd,MAAJ,CAAW0gB,YAAX,EAAyBC,YAAzB,CAJnB;AAAA,MAKE;AACAC,QAAM,GAAG,IAAI/a,IAAJ,CAAS;AAChB5oC,UAAM,EAAE,IADQ;AAEhB/9F,SAAK,EAAE;AAFS,GAAT,CANX;AAAA,MAWEw8I,UAAU,GAAG,+BAXf;AAAA,MAYEwD,YAAY,GAAG,GAZjB;AAAA,MAaEC,eAAe,GAAG,CAbpB;AAAA,MAcEI,WAAW,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAdhB;AAAA,MAgBEC,iBAhBF;AAAA,MAiBE9B,YAjBF;AAAA,MAkBEC,aAlBF;AAAA,MAoBEkD,aApBF;AAAA,MAqBE7mB,UArBF;AAAA,MAsBEC,WAtBF;AAAA,MAuBE37F,OAvBF;AAAA,MAyBEt6B,OAAO,GAAG,IAzBZ;AAAA,MA2BE;AACA;AACA;AACA88I,cAAY,GAAG,SAAfA,YAAe,GAAW;AACxB,QAAI7nK,CAAJ;AAAA,QAAOyM,CAAP;AAAA,QAAU/J,GAAV;AAAA,QAAesiE,MAAf;AAAA,QAAuB8iG,KAAvB;AAAA,QACEC,GAAG,GAAG,MAAMhnB,UADd;AAAA,QAEEinB,GAAG,GAAG,MAAMhnB,WAFd;AAAA,QAGEinB,GAAG,GAAG,MAAMlnB,UAHd;AAAA,QAIEmnB,GAAG,GAAG,MAAMlnB,WAJd;AAMA2mB,UAAM,CAACza,eAAP,CAAuB,SAAvB,EAAkC,QAAlC;AACAya,UAAM,CAAChlB,QAAP,GAAkB,EAAlB;AACAglB,UAAM,CAACQ,OAAP,GAAiB,EAAjB;AACAR,UAAM,CAAC3jD,MAAP,GAAgB,EAAhB;AACA2jD,UAAM,CAAC1hJ,KAAP,GAAe,EAAf;AAEAvjB,OAAG,GAAG,CAAN;;AACA,SAAK1C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+gJ,UAAU,GAAG,CAA7B,EAAgC/gJ,CAAC,IAAIqlD,OAArC,EAA8C;AAC5C,WAAK54C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu0I,WAAW,GAAG,CAA9B,EAAiCv0I,CAAC,IAAI44C,OAAtC,EAA+C;AAC7C;AACA;AACAsiH,cAAM,CAAChlB,QAAP,CAAgB//I,IAAhB,CAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAArB,EAAgC,CAAC,IAAD,EAAO,CAAP,EAAU,CAAV,CAAhC,EAA8C,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAA9C,EAA0D,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAT,CAA1D,EAH6C,CAI7C;;AACAoiE,cAAM,GAAG,CAAC,CAAC,GAAD,GAAO,CAAChlE,CAAC,GAAG,GAAL,IAAY+nK,GAApB,EAAyB,MAAM,CAACt7J,CAAC,GAAG,GAAL,IAAYu7J,GAA3C,EAAgD,CAAhD,CAAT;AACAL,cAAM,CAACQ,OAAP,CAAevlK,IAAf,CAAoBoiE,MAApB,EAA4BA,MAA5B,EAAoCA,MAApC,EAA4CA,MAA5C,EAN6C,CAO7C;;AACA8iG,aAAK,GAAG,CAAC,CAACr7J,CAAC,GAAG,GAAL,IAAYy7J,GAAb,EAAkB,CAACloK,CAAC,GAAG,GAAL,IAAYioK,GAA9B,CAAR;AACAN,cAAM,CAAC3jD,MAAP,CAAcphH,IAAd,CAAmBklK,KAAnB,EAA0BA,KAA1B,EAAiCA,KAAjC,EAAwCA,KAAxC,EAT6C,CAU7C;;AACAH,cAAM,CAAC1hJ,KAAP,CAAarjB,IAAb,CAAkB,CAACF,GAAD,EAAMA,GAAG,GAAG,CAAZ,CAAlB,EAAkC,CAACA,GAAG,GAAG,CAAP,EAAUA,GAAG,GAAG,CAAhB,CAAlC,EAAsD,CAACA,GAAG,GAAG,CAAP,EAAUA,GAAG,GAAG,CAAhB,CAAtD;AACAA,WAAG,IAAI,CAAP;AACD;AACF,KA7BuB,CA8BxB;;;AACAilK,UAAM,CAAC9a,OAAP;AACD,GA9DH;AAAA,MAgEEoW,eAAe,GAAG,SAAlBA,eAAkB,GAAW;AAC3BsD,qBAAiB,GAAG3hK,CAAC,CAAC4hJ,EAAE,CAACv+F,MAAJ,CAArB;AACAs+G,qBAAiB,CAAClnJ,IAAlB,CAAuB,IAAvB,EAA6BmjJ,OAAO,IAAIC,UAAxC;AACD,GAnEH;AAAA,MAqEE;AACA;AACAmC,mBAAiB,GAAG,SAApBA,iBAAoB,GAAW;AAC7B;AACApe,MAAE,CAACyF,eAAH,CAAmBzF,EAAE,CAAC0F,WAAtB,EAAmC,IAAnC,EAF6B,CAG7B;;AACA1F,MAAE,CAACnmC,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkBokD,YAAlB,EAAgCC,aAAhC;AACD,GA5EH;AAAA,MA8EE;AACA;AACA;AACAqC,gBAAc,GAAG;AACf;AACAC,mBAAe,EAAE,2BAAW;AAC1B,UAAI,CAACj8I,OAAL,EAAc;;AAEd,UAAI,CAAC68I,aAAL,EAAoB;AAClB,cAAM,IAAI/nK,KAAJ,CAAU,mDAAV,CAAN;AACD;;AAED+kK,uBAAiB;AAEjBgD,mBAAa,CAAChlI,IAAd,CAAmB,CAAnB;AACA0hI,oBAAc,CAAC/a,IAAf,CAAoBoe,MAApB,EAA4BnhB,EAAE,CAACoD,KAA/B;AACAge,mBAAa,CAACrb,MAAd,CAAqB,CAArB;AACD,KAdc;;AAgBf,QAAIxhI,OAAJ,GAAc;AACZ,aAAOA,OAAP;AACD,KAlBc;;AAmBf,QAAIA,OAAJ,CAAYkjB,CAAZ,EAAe;AACbljB,aAAO,GAAGkjB,CAAV;AACD,KArBc;;AAuBf/+B,UAAM,EAAE,kBAAW;AACjBu1J,kBAAY,GAAG8B,iBAAiB,CAACn7J,KAAlB,EAAf;AACAs5J,mBAAa,GAAG6B,iBAAiB,CAACl7J,MAAlB,EAAhB;AACAk7J,uBAAiB,CAAClnJ,IAAlB,CAAuB,OAAvB,EAAgColJ,YAAhC;AACA8B,uBAAiB,CAAClnJ,IAAlB,CAAuB,QAAvB,EAAiCqlJ,aAAjC,EAJiB,CAKjB;;AACAJ,oBAAc,CAAC1b,QAAf,CAAwB;AACtB7rI,aAAK,EAAE,CAAC,MAAM0nJ,YAAP,EAAqB,MAAMC,aAA3B;AADe,OAAxB;AAGD,KAhCc;AAkCf;AACA0D,wBAAoB,EAAE,8BAASC,iBAAT,EAA4BvE,cAA5B,EAA4CC,eAA5C,EAA6DwD,cAA7D,EAA6E;AACjGK,mBAAa,GAAGS,iBAAhB;AACAtnB,gBAAU,GAAG+iB,cAAb;AACA9iB,iBAAW,GAAG+iB,eAAd;AACA1+G,aAAO,GAAGjkD,IAAI,CAAC4kB,KAAL,CAAW+6H,UAAU,GAAGwmB,cAAxB,CAAV;AAEAM,kBAAY;AACb,KA1Cc;AA4Cf5D,kBAAc,EAAE,0BAAW;AACzB,aAAOsC,iBAAP;AACD;AA9Cc,GAjFnB,CADkD,CAmIlD;AACA;;;AACAjC,gBAAc,CAAC1b,QAAf,CAAwB;AACtB;AACAgf,iBAAa,EAAE,CAFO;AAGtB;AACAU,eAAW,EAAEpC,eAJS;AAKtBqC,gBAAY,EAAEtC,YALQ;AAMtB5vJ,SAAK,EAAEiwJ;AANe,GAAxB;AASArD,iBAAe;AAEf,SAAO8D,cAAP;AACD;AAAA,C;;AC7JD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe,SAASyB,WAAT,CAAqBhG,OAArB,EAA8B;AAC3C,MAAIC,UAAU,GAAG,uBAAjB;AAAA,MACEgG,aAAa,GAAG,uBADlB;AAAA,MAGEC,aAAa,GAAG,EAHlB;AAAA,MAKEC,eALF;AAAA,MAMEhG,UANF;AAAA,MAOE8B,YAPF;AAAA,MAQEC,aARF;AAAA,MAUEvnJ,OAVF;AAAA,MAWEyrJ,OAXF;AAAA,MAYEC,OAZF;AAAA,MAaEC,WAbF;AAAA,MAcEC,YAdF;AAAA,MAgBE;AACA;AACA;AACA9F,iBAAe,GAAG,SAAlBA,eAAkB,GAAW;AAC3B0F,mBAAe,GAAG/jK,CAAC,CAAC,YAAD,CAAnB;AACA+jK,mBAAe,CAACtpJ,IAAhB,CAAqB,IAArB,EAA2BmjJ,OAAO,IAAIC,UAAtC;AACAkG,mBAAe,CAACz7J,QAAhB,CAAyBu7J,aAAzB;AAEA9F,cAAU,GAAGgG,eAAe,CAAC,CAAD,CAAf,CAAmBtgH,UAAnB,CAA8B,IAA9B,CAAb;AACD,GAzBH;AAAA,MA2BE2gH,cAAc,GAAG,SAAjBA,cAAiB,GAAW;AAC1BrG,cAAU,CAACpwC,WAAX,GAAyB,uBAAzB;AACAowC,cAAU,CAACnyI,SAAX,GAAuB,GAAvB;AACD,GA9BH;AAAA,MAgCE;AACA;AACA;AACAy4I,cAAY,GAAG;AACb;AACAC,iBAAa,EAAE,yBAAW;AACxB,UAAItrJ,MAAJ,EAAYurJ,EAAZ,EAAgBC,EAAhB,EAAoB55J,CAApB,EACExP,CADF,EACKc,GADL;;AAGA,UAAI,CAACqc,OAAL,EAAc;AACZ,cAAM,IAAItd,KAAJ,CAAU,kDAAV,CAAN;AACD;;AAED8iK,gBAAU,CAACr4G,SAAX,CAAqB,CAArB,EAAwB,CAAxB,EAA2Bm6G,YAA3B,EAAyCC,aAAzC;;AACA,WAAK1kK,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGqc,OAAO,CAACld,MAA1B,EAAkCD,CAAC,GAAGc,GAAtC,EAA2Cd,CAAC,IAAI,CAAhD,EAAmD;AACjD4d,cAAM,GAAGT,OAAO,CAACnd,CAAD,CAAhB;AAEAmpK,UAAE,GAAGvrJ,MAAM,CAACzc,CAAP,GAAWynK,OAAhB;AACAQ,UAAE,GAAGxrJ,MAAM,CAAClH,CAAP,GAAWmyJ,OAAhB;AACAr5J,SAAC,GAAG,IAAIpO,IAAI,CAAC2O,IAAL,CAAU6N,MAAM,CAACjH,EAAP,GAAYiH,MAAM,CAACjH,EAAnB,GAAwBiH,MAAM,CAAChH,EAAP,GAAYgH,MAAM,CAAChH,EAArD,CAAR;AAEA+rJ,kBAAU,CAAChyC,SAAX;AACAgyC,kBAAU,CAACzzC,MAAX,CAAkBi6C,EAAlB,EAAsBC,EAAtB;AACAzG,kBAAU,CAACxzC,MAAX,CAAkBg6C,EAAE,GAAGT,aAAa,GAAG9qJ,MAAM,CAACjH,EAAvB,GAA4BnH,CAAnD,EAAsD45J,EAAE,GAAGV,aAAa,GAAG9qJ,MAAM,CAAChH,EAAvB,GAA4BpH,CAAvF;AACAmzJ,kBAAU,CAACthD,MAAX;AACD;AACF,KAvBY;AAyBb;AACAgoD,oBAAgB,EAAE,0BAASC,WAAT,EAAsBC,eAAtB,EAAuCC,gBAAvC,EAAyD;AACzErsJ,aAAO,GAAGmsJ,WAAV;AACAR,iBAAW,GAAGS,eAAd;AACAR,kBAAY,GAAGS,gBAAf;AACAZ,aAAO,GAAGnE,YAAY,GAAGqE,WAAzB;AACAD,aAAO,GAAGnE,aAAa,GAAGqE,YAA1B;AACD,KAhCY;AAkCb9E,kBAAc,EAAE,0BAAW;AACzB,aAAO0E,eAAP;AACD,KApCY;AAsCbz5J,UAAM,EAAE,kBAAW;AACjBu1J,kBAAY,GAAGkE,eAAe,CAACv9J,KAAhB,EAAf;AACAs5J,mBAAa,GAAGiE,eAAe,CAACt9J,MAAhB,EAAhB;AACAu9J,aAAO,GAAGnE,YAAY,GAAGqE,WAAzB;AACAD,aAAO,GAAGnE,aAAa,GAAGqE,YAA1B;AACAJ,qBAAe,CAACtpJ,IAAhB,CAAqB,OAArB,EAA8BolJ,YAA9B;AACAkE,qBAAe,CAACtpJ,IAAhB,CAAqB,QAArB,EAA+BqlJ,aAA/B;AACAsE,oBAAc;AACf;AA9CY,GAnCjB,CAD2C,CAqF3C;;;AACA/F,iBAAe;AACf+F,gBAAc;AAEd,SAAOC,YAAP;AACD;AAAA,C;;ACnGD;AACA;AACA,IAAIQ,YAAY,GAAG,CAAnB;AAAA,IACEC,aAAa,GAAG,CADlB;AAGe,SAASC,SAAT,CAAmBpqD,YAAnB,EAAiCn5F,CAAjC,EAAoC;AACjD,MAAI5H,GAAJ;AAAA,MACEk6I,KADF;AAAA,MAGElyC,IAAI,GAAGjH,YAAY,CAACiB,QAHtB;AAAA,MAIEiG,OAAO,GAAGlH,YAAY,CAACkB,WAJzB;AAAA,MAMEmpD,SAAS,GAAG;AACV,YAAQ,cAAS7jJ,CAAT,EAAY;AAClB,aAAOA,CAAC,CAAC09D,SAAF,KAAgB,WAAhB,GAA8B,IAA9B,GAAqC,IAA5C;AACD,KAHS;AAIV,eAAW,iBAAS19D,CAAT,EAAY;AACrB,aAAOA,CAAC,CAAC09D,SAAF,KAAgB,SAAhB,GAA4B,IAA5B,GAAmC,IAA1C;AACD,KANS;AAOV,YAAQ,cAAS19D,CAAT,EAAY;AAClB,aAAOA,CAAC,CAAC09D,SAAF,KAAgB,SAAhB,IAA6B19D,CAAC,CAAC09D,SAAF,KAAgB,MAA7C,GAAsD,IAAtD,GAA6D,IAApE;AACD;AATS,GANd;AAAA,MAkBEomF,YAAY,GAAGvnJ,EAAE,CAACiB,GAAH,CAAOumJ,GAAP,GACdC,WADc,CACF,UAAShkJ,CAAT,EAAY;AACvB,WAAOygG,IAAI,CAACzgG,CAAC,CAAC08H,KAAF,GAAU,GAAX,CAAX;AACD,GAHc,EAIdunB,WAJc,CAIF,UAASjkJ,CAAT,EAAY;AACvB,WAAOygG,IAAI,CAACzgG,CAAC,CAAC28H,KAAF,GAAU,GAAX,CAAX;AACD,GANc,EAOdunB,UAPc,CAOH,CAPG,EAQdC,QARc,CAQL9oK,IAAI,CAAC0O,EAAL,GAAU,CARL,CAlBjB;AAAA,MA4BEqzG,YAAY,GAAI,YAAW;AACzB,QAAIhiH,CAAJ,EAAOuV,CAAP,EAAU7I,IAAV,EAAgBH,IAAhB,EAAsBI,IAAtB,EAA4BF,IAA5B,EAAkCo7G,IAAlC;AACA,WAAO1mG,EAAE,CAAC8gG,QAAH,CAAYrpE,IAAZ,GACJirB,MADI,CACG,UAASj/C,CAAT,EAAY;AAClB,aAAO;AACL5kB,SAAC,EAAEqlH,IAAI,CAACzgG,CAAC,CAAC5kB,CAAH,CADF;AAELuV,SAAC,EAAE+vG,OAAO,CAAC1gG,CAAC,CAACrP,CAAH;AAFL,OAAP;AAID,KANI,EAOJ4G,EAPI,CAOD,WAPC,EAOY,UAASyI,CAAT,EAAY;AAC3B,UAAI8rE,EAAJ,EAAQC,EAAR;;AACA,UAAI/rE,CAAC,CAAC1O,SAAN,EAAiB;AACflW,SAAC,GAAGuV,CAAC,GAAG,IAAR;AACAm7E,UAAE,GAAG20B,IAAI,CAACriG,KAAL,EAAL;AACA2tE,UAAE,GAAG20B,OAAO,CAACtiG,KAAR,EAAL;AACAtW,YAAI,GAAGzM,IAAI,CAACE,GAAL,CAASuwF,EAAE,CAAC,CAAD,CAAX,EAAgBA,EAAE,CAAC,CAAD,CAAlB,CAAP;AACAnkF,YAAI,GAAGtM,IAAI,CAACC,GAAL,CAASwwF,EAAE,CAAC,CAAD,CAAX,EAAgBA,EAAE,CAAC,CAAD,CAAlB,CAAP;AACA/jF,YAAI,GAAG1M,IAAI,CAACE,GAAL,CAASwwF,EAAE,CAAC,CAAD,CAAX,EAAgBA,EAAE,CAAC,CAAD,CAAlB,CAAP;AACAlkF,YAAI,GAAGxM,IAAI,CAACC,GAAL,CAASywF,EAAE,CAAC,CAAD,CAAX,EAAgBA,EAAE,CAAC,CAAD,CAAlB,CAAP;AACAk3B,YAAI,GAAG,KAAKznG,OAAL,EAAP;AACAynG,YAAI,CAACzuG,EAAL,GAAUyuG,IAAI,CAAC7nH,CAAL,GAAS,EAAnB;AACA6nH,YAAI,CAACxuG,EAAL,GAAUwuG,IAAI,CAACtyG,CAAL,GAAS,EAAnB;AACAsyG,YAAI,CAACxvG,EAAL,GAAUwvG,IAAI,CAAC7nH,CAAL,GAAS6nH,IAAI,CAAC59G,KAAd,GAAsB,EAAhC;AACA49G,YAAI,CAACvvG,EAAL,GAAUuvG,IAAI,CAACtyG,CAAL,GAASsyG,IAAI,CAAC39G,MAAd,GAAuB,EAAjC;AACAiX,UAAE,CAACM,MAAH,CAAU,IAAV,EAAgB+K,KAAhB,CAAsB,SAAtB,EAAiC,GAAjC;AACD;AACF,KAxBI,EAyBJrQ,EAzBI,CAyBD,MAzBC,EAyBO,UAASyI,CAAT,EAAY;AACtB,UAAIA,CAAC,CAAC1O,SAAN,EAAiB;AACflW,SAAC,GAAGmhB,EAAE,CAACrC,KAAH,CAAS9e,CAAb;AACAuV,SAAC,GAAG4L,EAAE,CAACrC,KAAH,CAASvJ,CAAb;AACAvV,SAAC,IAAIC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAY2nH,IAAI,CAACzuG,EAAL,GAAUpZ,CAAV,GAAcuM,IAA1B,IAAkCtM,IAAI,CAACE,GAAL,CAAS,CAAT,EAAY0nH,IAAI,CAACxvG,EAAL,GAAUrY,CAAV,GAAc0M,IAA1B,CAAvC;AACA6I,SAAC,IAAItV,IAAI,CAACC,GAAL,CAAS,CAAT,EAAY2nH,IAAI,CAACxuG,EAAL,GAAU9D,CAAV,GAAc9I,IAA1B,IAAkCxM,IAAI,CAACE,GAAL,CAAS,CAAT,EAAY0nH,IAAI,CAACvvG,EAAL,GAAU/C,CAAV,GAAc5I,IAA1B,CAAvC;AACAwU,UAAE,CAACM,MAAH,CAAU,IAAV,EAAgBvD,IAAhB,CAAqB,WAArB,EAAkC,eAAele,CAAf,GAAmB,GAAnB,GAAyBuV,CAAzB,GAA6B,GAA/D;AACD;AACF,KAjCI,EAkCJ4G,EAlCI,CAkCD,SAlCC,EAkCU,UAASyI,CAAT,EAAY;AACzB,UAAIA,CAAC,CAAC1O,SAAN,EAAiB;AACfiL,UAAE,CAACM,MAAH,CAAU,IAAV,EAAgB+K,KAAhB,CAAsB,SAAtB,EAAiC,CAAjC;;AACA,YAAIxsB,CAAC,KAAK,IAAV,EAAgB;AAAE;AAChB4kB,WAAC,CAAC5kB,CAAF,GAAMqlH,IAAI,CAAClD,MAAL,CAAYniH,CAAZ,CAAN;AACA4kB,WAAC,CAACrP,CAAF,GAAM+vG,OAAO,CAACnD,MAAR,CAAe5sG,CAAf,CAAN;AACD;AACF;AACF,KA1CI,CAAP;AA2CD,GA7Ce,EA5BlB;;AA2EA,WAASirG,SAAT,CAAmB57F,CAAnB,EAAsB;AACpB,WAAO,eAAeygG,IAAI,CAACzgG,CAAC,CAAC5kB,CAAF,IAAO,CAAR,CAAnB,GAAgC,GAAhC,GAAsCslH,OAAO,CAAC1gG,CAAC,CAACrP,CAAF,IAAO,CAAR,CAA7C,GAA0D,GAAjE;AACD;;AAED,WAAStL,KAAT,CAAe2a,CAAf,EAAkB;AAChB,WAAOygG,IAAI,CAACzgG,CAAC,CAAC3a,KAAH,CAAJ,GAAgBs+J,aAAvB;AACD;;AAED,WAASr+J,MAAT,CAAgB0a,CAAhB,EAAmB;AACjB,WAAOygG,IAAI,CAACzgG,CAAC,CAAC1a,MAAH,CAAJ,GAAiBq+J,aAAxB;AACD;;AAED,WAAS73E,EAAT,CAAY9rE,CAAZ,EAAe;AACb,WAAOygG,IAAI,CAACzgG,CAAC,CAAC5mB,CAAF,GAAM,GAAP,CAAX;AACD;;AAED,WAAS2yF,EAAT,CAAY/rE,CAAZ,EAAe;AACb,WAAOygG,IAAI,CAACzgG,CAAC,CAAC7kB,CAAF,GAAM,GAAP,CAAX;AACD;;AAED,WAAS4d,UAAT,CAAoBiH,CAApB,EAAuB;AACrB,WAAOA,CAAC,CAAC7O,OAAF,GAAY,SAAZ,GAAwB,QAA/B;AACD;;AAED,WAASizJ,WAAT,CAAqBpkJ,CAArB,EAAwB;AACtB,WAAOA,CAAC,CAAC+rG,OAAF,GAAY,iBAAZ,GAAgC,MAAvC;AACD;;AAED,WAAS/vG,KAAT,CAAegE,CAAf,EAAkB;AAChB,WAAOA,CAAC,CAACm6I,YAAF,EAAP;AACD;;AAED,WAAS3kH,EAAT,GAAc;AACZ,WAAO,CAAC,KAAKh6B,OAAL,GAAenW,KAAhB,GAAwB,CAA/B;AACD;;AAED,WAASpM,IAAT,CAAc+mB,CAAd,EAAiB;AACf,QAAI,CAACA,CAAC,CAAC09H,MAAP,EAAe,OAAO,kBAAP;AACf,QAAIptI,KAAJ;;AACA,QAAI0P,CAAC,CAAC1P,KAAF,KAAY,MAAhB,EAAwB;AACtB,UAAI0P,CAAC,CAACu9H,KAAF,GAAU,CAAd,EAAiB;AACfjtI,aAAK,GAAG,SAAR;AACD,OAFD,MAEO,IAAI0P,CAAC,CAACu9H,KAAF,GAAU,CAAd,EAAiB;AACtBjtI,aAAK,GAAG,SAAR;AACD,OAFM,MAEA,IAAI0P,CAAC,CAACs9H,oBAAN,EAA4B;AACjC;AACAhtI,aAAK,GAAG,kBAAR;AACD,OAHM,MAGA;AACLA,aAAK,GAAG,MAAR;AACD;AACF,KAXD,MAWO;AACL;AACAA,WAAK,GAAG0P,CAAC,CAAC1P,KAAV,CAFK,CAGL;;AACA,UAAI,CAACrI,KAAK,CAACw9B,QAAQ,CAACn1B,KAAD,EAAQ,EAAR,CAAT,CAAV,EAAiC;AAC/B,eAAOA,KAAK,CAACpW,MAAN,GAAe,CAAtB,EAAyB;AACvBoW,eAAK,GAAG,MAAMA,KAAd;AACD;;AACDA,aAAK,GAAG,MAAMA,KAAd;AACD;AACF;;AACD,WAAOA,KAAP;AACD;;AAED,WAAS+zJ,eAAT,CAAyBrkJ,CAAzB,EAA4B;AAC1B,QAAI8T,GAAG,GAAG,EAAV;AAAA,QACE14B,CAAC,GAAG4kB,CAAC,CAAC68H,YADR;AAAA,QAEElsI,CAAC,GAAGqP,CAAC,CAAC88H,YAFR;AAAA,QAGE7iJ,CAHF;AAAA,QAGKc,GAHL;;AAIA,SAAKd,CAAC,GAAG,CAAJ,EAAOc,GAAG,GAAGK,CAAC,CAAClB,MAApB,EAA4BD,CAAC,GAAGc,GAAhC,EAAqCd,CAAC,EAAtC,EAA0C;AACxC65B,SAAG,CAACj3B,IAAJ,CAAS4jH,IAAI,CAACrlH,CAAC,CAACnB,CAAD,CAAF,CAAb;AACA65B,SAAG,CAACj3B,IAAJ,CAAS6jH,OAAO,CAAC/vG,CAAC,CAAC1W,CAAD,CAAF,CAAhB;AACD;;AACD,WAAO,MAAM65B,GAAG,CAACja,IAAJ,CAAS,GAAT,CAAN,GAAsB,GAA7B;AACD;;AAED,WAASyqJ,QAAT,CAAkBtkJ,CAAlB,EAAqB;AACnB,YAAQA,CAAC,CAAC09D,SAAV;AACE,WAAK,SAAL;AACE,eAAO2mF,eAAe,CAACrkJ,CAAD,CAAtB;;AACF,WAAK,MAAL;AACE,eAAO8jJ,YAAY,CAAC9jJ,CAAD,CAAnB;AAJJ;AAMD;;AAED,WAAS8Y,MAAT,CAAgB9Y,CAAhB,EAAmB;AACjB,QAAIqI,CAAC,GAAGrI,CAAC,CAAC09D,SAAV;AACA,WAAOr1D,CAAC,KAAK,WAAN,IAAqBA,CAAC,KAAK,SAA3B,GAAuC,KAAKk5G,UAAL,CAAgBgjC,iBAAhB,CAAkC/oJ,OAAlC,GAA4CnW,KAA5C,GAAoD,CAA3F,GAA+F,CAAtG;AACD;;AAED,WAASwzB,MAAT,CAAgB7Y,CAAhB,EAAmB;AACjB,QAAIqI,CAAC,GAAGrI,CAAC,CAAC09D,SAAV;AACA,WAAOr1D,CAAC,KAAK,WAAN,IAAqBA,CAAC,KAAK,SAA3B,GAAuC,KAAKk5G,UAAL,CAAgBgjC,iBAAhB,CAAkC/oJ,OAAlC,GAA4ClW,MAA5C,GAAqD,CAA5F,GAAgG,CAAvG;AACD;;AAED,WAASk/J,gBAAT,GAA4B;AAC1B,QAAIluJ,CAAC,GAAG+J,CAAC,CAACvZ,MAAF,CAAS,MAAT,EAAiBA,MAAjB,CAAwB,SAAxB,EACLwS,IADK,CACA,IADA,EACM,WADN,EAELA,IAFK,CAEA,cAFA,EAEgB,gBAFhB,EAGLA,IAHK,CAGA,GAHA,EAGK,CAHL,EAILA,IAJK,CAIA,GAJA,EAIK,CAJL,EAKLA,IALK,CAKA,OALA,EAKS,OALT,EAMLA,IANK,CAMA,QANA,EAMU,OANV,EAOLA,IAPK,CAOA,SAPA,EAOW,WAPX,CAAR;AAQAhD,KAAC,CAACxP,MAAF,CAAS,MAAT,EACGwS,IADH,CACQ,OADR,EACiB,yBADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,uCAFb;AAGAhD,KAAC,CAACxP,MAAF,CAAS,MAAT,EACGwS,IADH,CACQ,OADR,EACiB,kBADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,uCAFb;AAGD;;AAED,WAASmrJ,WAAT,CAAqBxxJ,KAArB,EAA4B6M,KAA5B,EAAmCf,MAAnC,EAA2C;AACzCe,SAAK,GAAGA,KAAK,CAACjD,MAAN,CAAagnJ,SAAS,CAAC5wJ,KAAD,CAAtB,CAAR;AACA6M,SAAK,CAAChZ,MAAN,CAAamM,KAAb,EACGqG,IADH,CACQ,OADR,EACiB,gBADjB;AAEAwG,SAAK,CAAChZ,MAAN,CAAamM,KAAb,EACGqG,IADH,CACQ,OADR,EACiB,wBADjB,EAEGA,IAFH,CAEQ,MAFR,EAEgB8qJ,WAFhB,EAJyC,CAQzC;;AACArlJ,UAAM,CAAClC,MAAP,CAAc,iBAAd;AACAkC,UAAM,CAAClC,MAAP,CAAc,yBAAd;;AAEA,YAAQ5J,KAAR;AACE,WAAK,MAAL;AACE8L,cAAM,CAACT,SAAP,CAAiB,MAAjB,EACGhF,IADH,CACQ,GADR,EACaoqJ,YADb,EAEGpqJ,IAFH,CAEQ,GAFR,EAEaoqJ,YAFb,EAGGpqJ,IAHH,CAGQ,OAHR,EAGiBjU,KAHjB,EAIGiU,IAJH,CAIQ,QAJR,EAIkBhU,MAJlB;AAKA;;AACF,WAAK,SAAL;AACEyZ,cAAM,CAACT,SAAP,CAAiB,SAAjB,EACGhF,IADH,CACQ,IADR,EACcwyE,EADd,EAEGxyE,IAFH,CAEQ,IAFR,EAEcyyE,EAFd;AAGA;;AACF,WAAK,MAAL;AACEhtE,cAAM,CAACT,SAAP,CAAiB,MAAjB,EACGhF,IADH,CACQ,GADR,EACagrJ,QADb;AAEA;AAhBJ;AAkBD;;AAED,WAASvmJ,YAAT,CAAsB+B,KAAtB,EAA6Bf,MAA7B,EAAqC;AACnCe,SAAK,CAAChZ,MAAN,CAAa,MAAb,EACGwS,IADH,CACQ,OADR,EACiB,uBADjB,EAEGA,IAFH,CAEQ,IAFR,EAEc,OAFd;AAGAwG,SAAK,CAAChZ,MAAN,CAAa,MAAb,EACGwS,IADH,CACQ,OADR,EACiB,gBADjB,EAEGA,IAFH,CAEQ,IAFR,EAEc,OAFd,EAJmC,CAQnC;;AACAyF,UAAM,CAAClC,MAAP,CAAc,iBAAd;AACAkC,UAAM,CAAClC,MAAP,CAAc,wBAAd;AACAkC,UAAM,CAACT,SAAP,CAAiB,yCAAjB,EACGvJ,IADH,CACQiH,KADR,EAEG1C,IAFH,CAEQ,IAFR,EAEck8B,EAFd,EAGGl8B,IAHH,CAGQ,GAHR,EAGawf,MAHb,EAIGxf,IAJH,CAIQ,GAJR,EAIauf,MAJb;AAKD,GA5OgD,CA8OjD;;;AACApgB,KAAG,GAAG;AACJisJ,eAAW,EAAE,uBAAW;AACtB,UAAI,CAAC/R,KAAL,EAAY;AAEZ,UAAIlW,IAAJ,EAAUkoB,SAAV;AAEAloB,UAAI,GAAGp8H,CAAC,CAAC/B,SAAF,CAAY,WAAZ,EAAyBsB,IAAzB,CAA8B+yI,KAA9B,CAAP;AACAgS,eAAS,GAAGloB,IAAI,CAAC38H,KAAL,GAAahZ,MAAb,CAAoB,GAApB,EACV;AACA;AAFU,OAGTwS,IAHS,CAGJ,OAHI,EAGK,eAHL,CAAZ;AAKAmrJ,iBAAW,CAAC,MAAD,EAASE,SAAT,EAAoBloB,IAApB,CAAX;AACAgoB,iBAAW,CAAC,SAAD,EAAYE,SAAZ,EAAuBloB,IAAvB,CAAX;AACAgoB,iBAAW,CAAC,MAAD,EAASE,SAAT,EAAoBloB,IAApB,CAAX;AACA1+H,kBAAY,CAAC4mJ,SAAD,EAAYloB,IAAZ,CAAZ;AAEAkoB,eAAS,CAAChqK,IAAV,CAAeyiH,YAAf;AAEAq/B,UAAI,CACDnjI,IADH,CACQ,WADR,EACqBsiG,SADrB;AAEA6gC,UAAI,CAAC5/H,MAAL,CAAY,iBAAZ,EACGvD,IADH,CACQ,MADR,EACgBrgB,IADhB,EAEG2uB,KAFH,CAES,YAFT,EAEuB7O,UAFvB;AAIA0jI,UAAI,CAAC18H,IAAL,GAAYrjB,MAAZ;AACD,KA1BG;AA4BJkoK,kBAAc,EAAE,wBAASC,QAAT,EAAmB;AACjClS,WAAK,GAAGkS,QAAR;AACD;AA9BG,GAAN;;AAiCC,eAAW;AACVL,oBAAgB;AACjB,GAFA,GAAD;;AAIA,SAAO/rJ,GAAP;AACD;AAAA,C;;AC1RD,IAAIqsJ,IAAI,GAAG,CAAX;AAAA,IACEC,IAAI,GAAG,CADT;AAGe,SAASC,WAAT,CAAqBxrD,YAArB,EAAmCn5F,CAAnC,EAAsC;AACnD,MAAI5H,GAAJ;AAAA,MAEEgoG,IAAI,GAAGjH,YAAY,CAACiB,QAFtB;AAAA,MAGEiG,OAAO,GAAGlH,YAAY,CAACkB,WAHzB;AAAA,MAKEq6B,OALF;AAAA,MAOEkwB,OAPF;AAAA,MAOW;AACTC,cARF;AAAA,MAQgB;AACdC,eAAa,GAAG5oJ,EAAE,CAACvF,KAAH,CAASsG,MAAT,GAAkBe,KAAlB,CAAwB,IAAxB,EAA8BF,MAA9B,CAAqC,CAAC,CAAD,EAAI,EAAJ,CAArC,EAA8CC,KAA9C,CAAoD,CAAC2mJ,IAAD,EAAO,CAAP,CAApD,CATlB;AAAA,MAWEK,QAXF;AAAA,MAWY;AAEVC,iBAbF;AAAA,MAamB;AAEjBjoD,cAAY,GAAG7gG,EAAE,CAAC8gG,QAAH,CAAYrpE,IAAZ,GACdirB,MADc,CACP,UAASj/C,CAAT,EAAY;AAClB,WAAO;AACL5kB,OAAC,EAAEqlH,IAAI,CAACzgG,CAAC,CAAC5kB,CAAH,CADF;AAELuV,OAAC,EAAE+vG,OAAO,CAAC1gG,CAAC,CAACrP,CAAH;AAFL,KAAP;AAID,GANc,EAOd4G,EAPc,CAOX,MAPW,EAOH,UAASyI,CAAT,EAAY;AACtBA,KAAC,CAAC5kB,CAAF,GAAMqlH,IAAI,CAAClD,MAAL,CAAYhhG,EAAE,CAACrC,KAAH,CAAS9e,CAArB,CAAN;AACA4kB,KAAC,CAACrP,CAAF,GAAM+vG,OAAO,CAACnD,MAAR,CAAehhG,EAAE,CAACrC,KAAH,CAASvJ,CAAxB,CAAN;AACD,GAVc,CAfjB;;AA2BA,WAAS20J,EAAT,CAAY5iK,GAAZ,EAAiB;AACf,WAAOA,GAAG,GAAG,GAAb;AACD;;AAED,WAASk5G,SAAT,CAAmB57F,CAAnB,EAAsB;AACpB,WAAO,eAAeygG,IAAI,CAACzgG,CAAC,CAAC5kB,CAAH,CAAnB,GAA2B,GAA3B,GAAiCslH,OAAO,CAAC1gG,CAAC,CAACrP,CAAH,CAAxC,GAAgD,GAAvD;AACD;;AAED,WAAS40J,OAAT,GAAmB;AACjB,WAAO,CAAC,KAAK/pJ,OAAL,GAAenW,KAAhB,GAAwB,CAA/B;AACD;;AAED,WAASgtD,SAAT,CAAmBryC,CAAnB,EAAsB;AACpB,WAAOA,CAAC,CAAChE,KAAT;AACD;;AAED,WAASwpJ,WAAT,CAAqBxlJ,CAArB,EAAwB;AACtB,WAAOA,CAAC,CAAChmB,KAAF,CAAQylD,OAAR,CAAgB,CAAhB,IAAqB,KAA5B;AACD;;AAED,WAASgmH,QAAT,CAAkBzlJ,CAAlB,EAAqB;AACnB,WAAOslJ,EAAE,CAACH,aAAa,CAACnlJ,CAAC,CAAChmB,KAAH,CAAd,CAAT;AACD;;AAED,WAAS0rK,kBAAT,CAA4B1lJ,CAA5B,EAA+B;AAC7B,WAAO,YAAYA,CAAC,CAAChmB,KAAd,GAAsB,GAA7B;AACD;;AAED,WAAS2rK,mBAAT,CAA6B3lJ,CAA7B,EAAgC;AAC9B,WAAOA,CAAC,CAAChmB,KAAF,CAAQylD,OAAR,CAAgB,CAAhB,IAAqB,OAA5B;AACD;;AAED,WAASmmH,WAAT,CAAqB5lJ,CAArB,EAAwB;AACtB,WAAO,YAAYA,CAAC,CAAC3L,KAAd,GAAsB,GAA7B;AACD;;AAED,WAASwxJ,cAAT,CAAwBxlJ,CAAxB,EAA2B;AACzBA,KAAC,GAAGA,CAAC,CAACvZ,MAAF,CAAS,GAAT,EAAcwS,IAAd,CAAmB,OAAnB,EAA4B,qBAA5B,CAAJ;AACA+G,KAAC,CAACvZ,MAAF,CAAS,MAAT,EACGwS,IADH,CACQ,IADR,EACc,CADd,EAEGA,IAFH,CAEQ,IAFR,EAEc,OAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc,CAHd,EAIGA,IAJH,CAIQ,IAJR,EAIc,MAJd;AAKA+G,KAAC,CAACvZ,MAAF,CAAS,MAAT,EACGwS,IADH,CACQ,IADR,EACc,OADd,EAEGA,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc,MAHd,EAIGA,IAJH,CAIQ,IAJR,EAIc,CAJd;AAKA+G,KAAC,CAACvZ,MAAF,CAAS,QAAT,EACGwS,IADH,CACQ,GADR,EACa,MADb;AAED;;AAED,WAASwsJ,aAAT,CAAuBhmJ,KAAvB,EAA8Bf,MAA9B,EAAsC;AACpCe,SAAK,CAAChZ,MAAN,CAAa,MAAb,EAAqBwS,IAArB,CAA0B,OAA1B,EAAmC,2BAAnC;AACAwG,SAAK,CAAChZ,MAAN,CAAa,MAAb,EAAqBwS,IAArB,CAA0B,OAA1B,EAAmC,oBAAnC;AACAwG,SAAK,CAAChZ,MAAN,CAAa,MAAb,EAAqBwS,IAArB,CAA0B,OAA1B,EAAmC,yBAAnC;AACAwG,SAAK,CAAChZ,MAAN,CAAa,MAAb,EAAqBwS,IAArB,CAA0B,OAA1B,EAAmC,kBAAnC,EAJoC,CAMpC;AACA;AACA;AACA;;AACAyF,UAAM,CAAClC,MAAP,CAAc,mBAAd;AACAkC,UAAM,CAAClC,MAAP,CAAc,0BAAd;AACAkC,UAAM,CAAClC,MAAP,CAAc,qBAAd;AACAkC,UAAM,CAAClC,MAAP,CAAc,4BAAd;AACD;;AAED,WAASkpJ,kBAAT,CAA4BnmJ,IAA5B,EAAkC;AAChC,QAAIb,MAAM,GAAGsB,CAAC,CAAC/B,SAAF,CAAY,yBAAZ,EAAuCsB,IAAvC,CAA4CA,IAAI,CAAC6iB,MAAL,CAAY,UAASziB,CAAT,EAAY;AAC7E,aAAOA,CAAC,CAAClf,IAAF,KAAW,aAAlB;AACD,KAFsD,CAA5C,CAAb;AAAA,QAGEgf,KAAK,GAAGf,MAAM,CAACe,KAAP,GAAehZ,MAAf,CAAsB,GAAtB,EACPwS,IADO,CACF,OADE,EACO,+BADP,EAEP3e,IAFO,CAEFyiH,YAFE,CAHV;AAMA0oD,iBAAa,CAAChmJ,KAAD,EAAQf,MAAR,CAAb,CAPgC,CAShC;AACA;AACA;;AACAe,SAAK,CAAChZ,MAAN,CAAa,MAAb,EAAqBwS,IAArB,CAA0B,OAA1B,EAAmC,sBAAnC;AACAwG,SAAK,CAAChZ,MAAN,CAAa,MAAb,EAAqBwS,IAArB,CAA0B,OAA1B,EAAmC,4BAAnC;AACAwG,SAAK,CAACnlB,IAAN,CAAWkrK,cAAX;AAEA9mJ,UAAM,CAACzF,IAAP,CAAY,WAAZ,EAAyBsiG,SAAzB;AACA78F,UAAM,CAAClC,MAAP,CAAc,uBAAd,EACGvD,IADH,CACQ,GADR,EACagsJ,EAAE,CAAC,CAAC,GAAD,GAAOR,IAAR,CADf,EAEGxrJ,IAFH,CAEQ,GAFR,EAEagsJ,EAAE,CAAC,CAAC,GAAD,GAAOP,IAAR,CAFf,EAGGzrJ,IAHH,CAGQ,OAHR,EAGiBgsJ,EAAE,CAACR,IAAD,CAHnB,EAIGxrJ,IAJH,CAIQ,QAJR,EAIkBgsJ,EAAE,CAACP,IAAD,CAJpB;AAKAE,WAAO,GAAGlmJ,MAAM,CAAClC,MAAP,CAAc,6BAAd,EACPvD,IADO,CACF,GADE,EACGgsJ,EAAE,CAAC,CAAC,GAAD,GAAOR,IAAR,CADL,EAEPxrJ,IAFO,CAEF,GAFE,EAEGgsJ,EAAE,CAAC,CAAC,GAAD,GAAOP,IAAR,CAFL,EAGPzrJ,IAHO,CAGF,OAHE,EAGOgsJ,EAAE,CAACR,IAAD,CAHT,EAIPxrJ,IAJO,CAIF,QAJE,EAIQmsJ,QAJR,CAAV;AAKAP,gBAAY,GAAGnmJ,MAAM,CAACT,SAAP,CAAiB,iDAAjB,EACZvJ,IADY,CACPywJ,WADO,EAEZlsJ,IAFY,CAEP,GAFO,EAEFgsJ,EAAE,CAAC,CAAC,GAAD,GAAOP,IAAR,CAFA,EAGZzrJ,IAHY,CAGP,IAHO,EAGD,OAHC,EAIZA,IAJY,CAIP,IAJO,EAID,OAJC,CAAf;AAKAyF,UAAM,CAACT,SAAP,CAAiB,6CAAjB,EACGvJ,IADH,CACQs9C,SADR,EAEG/4C,IAFH,CAEQ,IAFR,EAEcisJ,OAFd,EAGGjsJ,IAHH,CAGQ,IAHR,EAGc,KAHd,EAIGA,IAJH,CAIQ,GAJR,EAIagsJ,EAAE,CAAC,MAAMP,IAAP,CAJf;AAMAhmJ,UAAM,CAACgB,IAAP,GAAcrjB,MAAd;AACD;;AAED,WAASspK,gBAAT,CAA0BpmJ,IAA1B,EAAgC;AAC9B,QAAIb,MAAM,GAAGsB,CAAC,CAAC/B,SAAF,CAAY,wBAAZ,EAAsCsB,IAAtC,CAA2CA,IAAI,CAAC6iB,MAAL,CAAY,UAASziB,CAAT,EAAY;AAC5E,aAAOA,CAAC,CAAClf,IAAF,KAAW,YAAlB;AACD,KAFqD,CAA3C,CAAb;AAAA,QAGEgf,KAAK,GAAGf,MAAM,CAACe,KAAP,GAAehZ,MAAf,CAAsB,GAAtB,EACPwS,IADO,CACF,OADE,EACO,8BADP,EAEP3e,IAFO,CAEFyiH,YAFE,CAHV;AAMA0oD,iBAAa,CAAChmJ,KAAD,EAAQf,MAAR,CAAb;AAEAe,SAAK,GAAGA,KAAK,CACVhZ,MADK,CACE,KADF,EAELwS,IAFK,CAEA,OAFA,EAES,sBAFT,EAGLA,IAHK,CAGA,SAHA,EAGW,iBAHX,EAILA,IAJK,CAIA,GAJA,EAIK,KAJL,EAKLA,IALK,CAKA,GALA,EAKK,KALL,EAMLA,IANK,CAMA,OANA,EAMS,IANT,EAOLA,IAPK,CAOA,QAPA,EAOU,IAPV,EAQLxS,MARK,CAQE,GARF,EASLwS,IATK,CASA,OATA,EASS,oBATT,CAAR;AAWAwG,SAAK,CAAChZ,MAAN,CAAa,MAAb,EACGwS,IADH,CACQ,GADR,EACa,wBADb,EAEGA,IAFH,CAEQ,WAFR,EAEqB,WAFrB;AAGAwG,SAAK,CAAChZ,MAAN,CAAa,MAAb,EACGwS,IADH,CACQ,GADR,EACa,wBADb,EAEGA,IAFH,CAEQ,WAFR,EAEqB,aAFrB;AAGAwG,SAAK,CAAChZ,MAAN,CAAa,MAAb,EACGwS,IADH,CACQ,GADR,EACa,wBADb,EAEGA,IAFH,CAEQ,WAFR,EAEqB,aAFrB;AAGAwG,SAAK,CAAChZ,MAAN,CAAa,QAAb,EACGwS,IADH,CACQ,GADR,EACa,EADb;AAGAyF,UAAM,CAACzF,IAAP,CAAY,WAAZ,EAAyBsiG,SAAzB;AACAwpD,YAAQ,GAAGrmJ,MAAM,CAAClC,MAAP,CAAc,qBAAd,EACRvD,IADQ,CACH,WADG,EACUosJ,kBADV,CAAX;AAEA3mJ,UAAM,CAACT,SAAP,CAAiB,6CAAjB,EACGvJ,IADH,CACQs9C,SADR,EAEG/4C,IAFH,CAEQ,IAFR,EAEcisJ,OAFd,EAGGjsJ,IAHH,CAGQ,IAHR,EAGc,OAHd,EAIGA,IAJH,CAIQ,GAJR,EAIa,IAJb;AAMAyF,UAAM,CAACgB,IAAP,GAAcrjB,MAAd;AACD;;AAED,WAASupK,qBAAT,CAA+BrmJ,IAA/B,EAAqC;AACnC,QAAIb,MAAM,GAAGsB,CAAC,CAAC/B,SAAF,CAAY,sBAAZ,EAAoCsB,IAApC,CAAyCA,IAAI,CAAC6iB,MAAL,CAAY,UAASziB,CAAT,EAAY;AAC1E,aAAOA,CAAC,CAAClf,IAAF,KAAW,UAAlB;AACD,KAFmD,CAAzC,CAAb;AAAA,QAGEgf,KAAK,GAAGf,MAAM,CAACe,KAAP,GAAehZ,MAAf,CAAsB,GAAtB,EACPwS,IADO,CACF,OADE,EACO,4BADP,EAEP3e,IAFO,CAEFyiH,YAFE,CAHV;AAOAt9F,SAAK,GAAGA,KAAK,CAAChZ,MAAN,CAAa,GAAb,EACLwS,IADK,CACA,WADA,EACassJ,WADb,CAAR;AAEA9lJ,SAAK,CAAChZ,MAAN,CAAa,MAAb,EACGwS,IADH,CACQ,OADR,EACiB,oBADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,KAFb,EAGGA,IAHH,CAGQ,GAHR,EAGa,KAHb,EAIGA,IAJH,CAIQ,OAJR,EAIiB,IAJjB,EAKGA,IALH,CAKQ,QALR,EAKkB,IALlB;AAMAwG,SAAK,CAAChZ,MAAN,CAAa,KAAb,EACGwS,IADH,CACQ,SADR,EACmB,SADnB,EAEGA,IAFH,CAEQ,GAFR,EAEa,KAFb,EAGGA,IAHH,CAGQ,GAHR,EAGa,KAHb,EAIGA,IAJH,CAIQ,OAJR,EAIiB,IAJjB,EAKGA,IALH,CAKQ,QALR,EAKkB,IALlB,EAMGxS,MANH,CAMU,MANV,EAOGwS,IAPH,CAOQ,OAPR,EAOiB,sBAPjB,EAQGA,IARH,CAQQ,GARR,EAQa,8BARb;AASAwG,SAAK,CAACnlB,IAAN,CAAWkrK,cAAX;AAEAC,iBAAa,CAAChmJ,KAAD,EAAQf,MAAR,CAAb;AAEAA,UAAM,CAACzF,IAAP,CAAY,WAAZ,EAAyBsiG,SAAzB;AACAypD,mBAAe,GAAGtmJ,MAAM,CAACT,SAAP,CAAiB,iDAAjB,EACfvJ,IADe,CACV4wJ,mBADU,EAEfrsJ,IAFe,CAEV,GAFU,EAEL,KAFK,EAGfA,IAHe,CAGV,IAHU,EAGJ,OAHI,EAIfA,IAJe,CAIV,IAJU,EAIJ,QAJI,CAAlB;AAKAyF,UAAM,CAACT,SAAP,CAAiB,6CAAjB,EACGvJ,IADH,CACQs9C,SADR,EAEG/4C,IAFH,CAEQ,IAFR,EAEcisJ,OAFd,EAGGjsJ,IAHH,CAGQ,IAHR,EAGc,OAHd,EAIGA,IAJH,CAIQ,GAJR,EAIa,IAJb;AAMAyF,UAAM,CAACgB,IAAP,GAAcrjB,MAAd;AACD,GA/NkD,CAiOnD;;;AACA+b,KAAG,GAAG;AACJsG,UAAM,EAAE,kBAAW;AACjBkmJ,aAAO,CAAC3rJ,IAAR,CAAa,QAAb,EAAuBmsJ,QAAvB;AACAP,kBAAY,CAACnwJ,IAAb,CAAkBywJ,WAAlB;AACAJ,cAAQ,CAAC9rJ,IAAT,CAAc,WAAd,EAA2BosJ,kBAA3B;AACAL,qBAAe,CAACtwJ,IAAhB,CAAqB4wJ,mBAArB;AACD,KANG;AAQJO,iBAAa,EAAE,yBAAW;AACxB,UAAI,CAACnxB,OAAL,EAAc;AAEdgxB,wBAAkB,CAAChxB,OAAD,CAAlB;AACAixB,sBAAgB,CAACjxB,OAAD,CAAhB;AACAkxB,2BAAqB,CAAClxB,OAAD,CAArB;AACD,KAdG;AAgBJoxB,oBAAgB,EAAE,0BAASC,UAAT,EAAqB;AACrCrxB,aAAO,GAAGqxB,UAAV;AACD,KAlBG;AAoBJC,iBAAa,EAAE,uBAAS9qK,GAAT,EAAcD,GAAd,EAAmB;AAChC6pK,mBAAa,CAAChnJ,MAAd,CAAqB,CAAC5iB,GAAD,EAAMD,GAAN,CAArB;AACD;AAtBG,GAAN;AAyBA,SAAOmd,GAAP;AACD;AAAA,C;;AC/PD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGe,SAASghG,iBAAT,CAAkBD,YAAlB,EAAgC3wG,KAAhC,EAAuC;AACpD,MAAI4P,GAAJ;AAAA,MAEE0kJ,YAFF;AAAA,MAGEmJ,aAHF;AAAA,MAIEpD,YAJF;AAAA,MAKEqD,UALF;AAAA,MAMEC,YANF;AAAA,MAOEC,YAAY,GAAG,IAAItH,eAAJ,CAAoB,IAApB,EAA0Bt2J,KAA1B,CAPjB;AAAA,MAQEy2J,OAAO,GAAGmH,YAAY,CAACvI,cAAb,EARZ;AAAA,MASEwI,WAAW,GAAG7nK,CAAC,CAAC,6BAAD,CATjB;AAAA,MAUE8nK,WAAW,GAAG,CAVhB;AAAA,MAYE9qC,OAAO,GAAG,KAZZ;;AAcA,WAAS+qC,cAAT,CAAwBj0H,IAAxB,EAA8B;AAC5B,QAAIk0H,MAAM,GAAGl0H,IAAI,CAACurH,cAAL,EAAb;AAEA2I,UAAM,CAACphK,GAAP,CAAW,OAAX,EAAoB,MAApB;AACAohK,UAAM,CAACphK,GAAP,CAAW,QAAX,EAAqB,MAArB;AACAohK,UAAM,CAACphK,GAAP,CAAW,UAAX,EAAuB,UAAvB;AACAohK,UAAM,CAACphK,GAAP,CAAW,KAAX,EAAkB,CAAlB;AACAohK,UAAM,CAACphK,GAAP,CAAW,MAAX,EAAmB,CAAnB;AACAohK,UAAM,CAACphK,GAAP,CAAW,SAAX,EAAsBkhK,WAAtB;AACAA,eAAW,IAAI,CAAf;AAEAD,eAAW,CAAC5/J,MAAZ,CAAmB+/J,MAAnB,EAX4B,CAa5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;;AAED,WAASC,gBAAT,GAA4B;AAC1B,QAAI7zI,KAAK,GAAGpqB,KAAK,CAACwb,UAAlB;AAEAqiJ,eAAW,CAACnnJ,KAAZ;AACAonJ,eAAW,GAAG,CAAd,CAJ0B,CAK1B;AACA;AACA;;AACA,QAAI99J,KAAK,CAAC+vJ,aAAN,EAAJ,EAA2B;AACzBuE,kBAAY,GAAG,IAAImB,gBAAJ,EAAf;AACAgI,mBAAa,GAAG,IAAI7E,kBAAJ,EAAhB,CAFyB,CAGzB;AACA;;AACAmF,oBAAc,CAACN,aAAD,CAAd;AACD,KAND,MAMO;AACLnJ,kBAAY,GAAG,IAAIX,WAAJ,EAAf;AACAoK,oBAAc,CAACzJ,YAAD,CAAd;AACAmJ,mBAAa,GAAG,IAAIrG,aAAJ,EAAhB;AACA2G,oBAAc,CAACN,aAAD,CAAd;AACD;;AACDpD,gBAAY,GAAG,IAAIT,WAAJ,EAAf;AACAmE,kBAAc,CAAC1D,YAAD,CAAd,CArB0B,CAuB1B;;AACA/F,gBAAY,CAACh0J,MAAb;AACAm9J,iBAAa,CAACn9J,MAAd;AACA+5J,gBAAY,CAAC/5J,MAAb,GA1B0B,CA4B1B;;AACA,QAAIN,KAAK,CAAC+vJ,aAAN,EAAJ,EAA2B;AACzBuE,kBAAY,CAAC4B,kBAAb,CAAgCl2J,KAAK,CAACwwJ,qBAAN,EAAhC;AACAiN,mBAAa,CAACjE,oBAAd,CAAmCx5J,KAAK,CAACywJ,kBAAN,EAAnC,EAA+DrmI,KAAK,CAAC+nH,UAArE,EAAiF/nH,KAAK,CAACgoH,WAAvF,EAAoG,EAApG;AACD,KAHD,MAGO;AACLkiB,kBAAY,CAACU,WAAb,CAAyBh1J,KAAK,CAACwjJ,mBAAN,EAAzB,EAAsDp5H,KAAK,CAAC+nH,UAA5D,EAAwE/nH,KAAK,CAACgoH,WAA9E;AACAqrB,mBAAa,CAACjF,aAAd,CAA4Bx4J,KAAK,CAACu1I,iBAAN,EAA5B,EAAuDv1I,KAAK,CAACw1I,iBAAN,EAAvD,EAAkFprH,KAAK,CAAC+nH,UAAxF,EAAoG/nH,KAAK,CAACgoH,WAA1G,EAAuH,EAAvH;AACD;;AACDioB,gBAAY,CAACI,gBAAb,CAA8Bz6J,KAAK,CAACgqJ,eAAN,EAA9B,EAAuD5/H,KAAK,CAACioH,WAA7D,EAA0EjoH,KAAK,CAACkoH,YAAhF;AACD;;AAED,WAAS4rB,aAAT,GAAyB;AACvB,QAAI9zI,KAAK,GAAGpqB,KAAK,CAACwb,UAAlB;AACAiiJ,iBAAa,CAACthJ,OAAd,GAAwBiO,KAAK,CAACumE,QAA9B;AACA2jE,gBAAY,CAACgB,iBAAb,CAA+BlrI,KAAK,CAACspH,mBAArC;AACA4gB,gBAAY,CAACiB,iBAAb,CAA+BnrI,KAAK,CAACupH,mBAArC;AACA2gB,gBAAY,CAACkB,eAAb,CAA6BprI,KAAK,CAACqpH,kBAAnC;AACAkqB,gBAAY,CAACH,aAAb,CAA2BpzI,KAAK,CAACspH,mBAAjC,EAAsDtpH,KAAK,CAACupH,mBAA5D;AACD;;AAED/jI,KAAG,GAAG;AACJnR,qBAAiB,EAAE,2BAASjC,KAAT,EAAgB;AACjC,aAAOA,KAAK,GAAGwD,KAAK,CAACwb,UAAN,CAAiB42H,WAAzB,GAAuCpyI,KAAK,CAACwb,UAAN,CAAiB22H,UAA/D;AACD,KAHG;AAKJlnG,SAAK,EAAE,eAASjrC,KAAT,EAAgB;AACrBgzH,aAAO,GAAG,IAAV;AACAirC,sBAAgB;AAEhBP,gBAAU,CAAC3B,cAAX,CAA0B/7J,KAAK,CAAC+pJ,aAAN,EAA1B;AACA4T,kBAAY,CAACL,gBAAb,CAA8Bt9J,KAAK,CAACgzJ,eAAN,EAA9B;AACA4K,kBAAY,CAAC97H,SAAb,CAAuB9hC,KAAvB;AACAk+J,mBAAa;AAEbR,gBAAU,CAAC7B,WAAX;AACA8B,kBAAY,CAACN,aAAb;AACAO,kBAAY,CAAC7oJ,MAAb;AACAnF,SAAG,CAACsG,MAAJ;AAEAlW,WAAK,CAACusB,qBAAN,CAA4B,WAA5B,EAAyC,YAAW;AAClD0xI,wBAAgB;AAChBC,qBAAa;AACbN,oBAAY,CAAC7oJ,MAAb;AACAnF,WAAG,CAACsG,MAAJ;AACD,OALD;AAMAlW,WAAK,CAACusB,qBAAN,CAA4B,CAAC,oBAAD,EAAuB,UAAvB,EAC1B,qBAD0B,EACH,qBADG,CAA5B,EAEG,YAAW;AACZ2xI,qBAAa;AACbtuJ,WAAG,CAACsG,MAAJ;AACD,OALD;AAMAlW,WAAK,CAAC0O,EAAN,CAAS,kBAAT,EAA6BkB,GAAG,CAACsG,MAAjC;AACAlW,WAAK,CAAC0O,EAAN,CAAS,0BAAT,EAAqC,YAAW;AAC9CgvJ,kBAAU,CAAC7B,WAAX;AACD,OAFD;AAGA77J,WAAK,CAAC0O,EAAN,CAAS,4BAAT,EAAuC,YAAW;AAChDivJ,oBAAY,CAACN,aAAb;AACD,OAFD;AAGD,KAtCG;AAwCJnnJ,UAAM,EAAE,kBAAW;AACjB,UAAI,CAAC88G,OAAL,EAAc;AACdshC,kBAAY,CAACC,aAAb;AACAkJ,mBAAa,CAACrF,eAAd;AACAiC,kBAAY,CAACC,aAAb;AACAqD,kBAAY,CAACznJ,MAAb;AACD,KA9CG;AAgDJ5V,UAAM,EAAE,kBAAW;AACjB;AACA,UAAI,CAAC0yH,OAAL,EAAc;AACdshC,kBAAY,CAACh0J,MAAb;AACAm9J,mBAAa,CAACn9J,MAAd;AACA+5J,kBAAY,CAAC/5J,MAAb;AACAo9J,gBAAU,CAAC7B,WAAX;AACA8B,kBAAY,CAACN,aAAb;AACAztJ,SAAG,CAACsG,MAAJ;AACD,KAzDG;AA2DJ1a,SAAK,EAAE,iBAAW,CAAE,CA3DhB;AA6DJ8sD,YAAQ,EAAE,oBAAW;AACnB,UAAItoD,KAAK,CAACmW,GAAN,CAAU,wBAAV,CAAJ,EAAyC;AACvC,aAAK7F,GAAL,CAASiwC,KAAT;AACD;AACF,KAjEG;AAmEJze,aAAS,EAAE,mBAASC,QAAT,EAAmB;AAC5B/hC,WAAK,GAAG+hC,QAAR;AACD;AArEG,GAAN;;AAwEC,eAAW;AACV;AACA,QAAI0vE,QAAQ,GAAGd,YAAY,CAACmE,cAAb,EAAf;AAEA4oD,cAAU,GAAG,IAAI3C,SAAJ,CAAcpqD,YAAd,EAA4Bc,QAAQ,CAACxzG,MAAT,CAAgB,GAAhB,CAA5B,CAAb;AACA0/J,gBAAY,GAAG,IAAIxB,WAAJ,CAAgBxrD,YAAhB,EAA8Bc,QAAQ,CAACxzG,MAAT,CAAgB,GAAhB,CAA9B,CAAf;AACA0yG,gBAAY,CAACrgG,GAAb,CAAiBrS,MAAjB,CAAwB4/J,WAAxB;AACAltD,gBAAY,CAACrgG,GAAb,CAAiBrS,MAAjB,CAAwBw4J,OAAxB;AACD,GARA,GAAD;;AAUA,SAAO7mJ,GAAP;AACD;AAAA,C;;AC3LD;AACA;AAEe,kEAAS5P,KAAT,EAAgB8lC,QAAhB,EAA0B;AACvC,SAAO,IAAI6qE,0BAAJ,CAAiB3wG,KAAjB,EAAwB8lC,QAAxB,EAAkC8qE,iBAAlC,EAA4C;AACjDx6C,UAAM,EAAE;AADyC,GAA5C,CAAP;AAGD;AAAA,C;;ACPD;AAEA,IAAI8oE,oBAAS,GAAG,IAAhB;AAAA,IACEC,sBAAW,GAAG,IADhB;AAGe,SAASzlE,gCAAT,CAAoBxtC,UAApB,EAAgC;AAC7C,MAAI6T,KAAJ;AAEA,MAAI2oB,UAAU,GAAG,CACf;AACA;AACA;AACA;AACE1wD,QAAI,EAAE,aADR;AAEEouD,WAAO,EAAE,IAFX;AAGEC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHb;AAIE0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClB;AACAyI,gBAAU,CAAClsB,KAAX,CAAiB+/B,KAAjB;AACAuB,gBAAU,CAAC,YAAW;AACpBpV,kBAAU,CAAClsB,KAAX,CAAiB89B,IAAjB;AAEA5R,kBAAU,CAAClsB,KAAX,CAAiBwb,UAAjB,CAA4B02H,SAA5B,GAAwC,KAAxC;AACAl5E,0BAAW,CAACC,WAAZ,CAAwB,IAAxB;AACAl5B,aAAK,GAAG7T,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,MAArB,CAAR;AAEAmrB,kBAAU,CAAC,YAAW;AACpB;AACApV,oBAAU,CAAClsB,KAAX,CAAiB+/B,KAAjB;AACAuB,oBAAU,CAAC,YAAW;AACpBpV,sBAAU,CAAClsB,KAAX,CAAiB89B,IAAjB;AAEAk7B,8BAAW,CAACC,WAAZ,CAAwB,KAAxB;AACAx1C,gBAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,QAAvB,CAAD,CAAJ;AAED,WANS,EAMP4lE,oBANO,CAAV;AAOD,SAVS,EAUP,GAVO,CAAV;AAWD,OAlBS,EAkBPC,sBAlBO,CAAV;AAmBD;AA1BH,GAJe,EA+BZ;AACDnnI,QAAI,EAAE,mBADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,cAAvB,CAAD,CAAJ;AACD;AANA,GA/BY,EAsCZ;AACDthE,QAAI,EAAE,WADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,MAAvB,CAAD,CAAJ;AACD;AANA,GAtCY,EA6CZ;AACDthE,QAAI,EAAE,qBADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,KAAvB,CAAD,CAAJ;AACD;AANA,GA7CY,EAoDZ;AACDthE,QAAI,EAAE,KADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClB,UAAI06I,gBAAgB,GAAGjyI,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,MAArB,IAA+B4pB,KAAtD;AACAtc,UAAI,CAAC06I,gBAAgB,IAAIjyI,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,kBAArB,IAA2C+V,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,UAArB,CAA/C,CAAhB,GAAmG,IAAnG,GAA0G+oH,oBAA3G,CAAJ;AACD;AAPA,GApDY,EA6Df;AACA;AACA;AACA;AACElnI,QAAI,EAAE,mBADR;AAEEouD,WAAO,EAAE,IAFX;AAGEC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHb;AAIE0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClB;AACAyI,gBAAU,CAAClsB,KAAX,CAAiB+/B,KAAjB;AACAuB,gBAAU,CAAC,YAAW;AACpBpV,kBAAU,CAAClsB,KAAX,CAAiB89B,IAAjB;AAEA5R,kBAAU,CAAClsB,KAAX,CAAiBwb,UAAjB,CAA4B02H,SAA5B,GAAwC,IAAxC;AACAl5E,0BAAW,CAACC,WAAZ,CAAwB,IAAxB;AACAl5B,aAAK,GAAG7T,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,MAArB,CAAR;AAEAmrB,kBAAU,CAAC,YAAW;AACpB;AACApV,oBAAU,CAAClsB,KAAX,CAAiB+/B,KAAjB;AACAuB,oBAAU,CAAC,YAAW;AACpBpV,sBAAU,CAAClsB,KAAX,CAAiB89B,IAAjB;AAEAk7B,8BAAW,CAACC,WAAZ,CAAwB,KAAxB;AACAx1C,gBAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,QAAvB,CAAD,CAAJ;AAED,WANS,EAMP4lE,oBANO,CAAV;AAOD,SAVS,EAUP,GAVO,CAAV;AAWD,OAlBS,EAkBPC,sBAlBO,CAAV;AAmBD;AA1BH,GAhEe,EA2FZ;AACDnnI,QAAI,EAAE,yBADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,cAAvB,CAAD,CAAJ;AACD;AANA,GA3FY,EAkGZ;AACDthE,QAAI,EAAE,iBADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,MAAvB,CAAD,CAAJ;AACD;AANA,GAlGY,EAyGZ;AACDthE,QAAI,EAAE,2BADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClBA,UAAI,CAACu1C,kBAAW,CAACM,UAAZ,CAAuB,KAAvB,CAAD,CAAJ;AACD;AANA,GAzGY,EAgHZ;AACDthE,QAAI,EAAE,WADL;AAEDouD,WAAO,EAAE,IAFR;AAGDC,aAAS,EAAE3yC,EAAE,CAACD,MAAH,CAAU,MAAV,CAHV;AAID0uB,OAAG,EAAE,aAAS1e,IAAT,EAAe;AAClB,UAAI06I,gBAAgB,GAAGjyI,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,MAArB,IAA+B4pB,KAAtD;AACAtc,UAAI,CAAC06I,gBAAgB,IAAIjyI,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,kBAArB,IAA2C+V,UAAU,CAAClsB,KAAX,CAAiBmW,GAAjB,CAAqB,UAArB,CAA/C,CAAhB,GAAmG,IAAnG,GAA0G+oH,oBAA3G,CAAJ;AACD;AAPA,GAhHY,CAAjB;AA2HA,SAAOx2E,UAAP;AAED;AAAA,C;;ACrIc,SAAS01G,oBAAT,CAA8BruJ,MAA9B,EAAsC;AAEnD,SAAO;AACLo9I,oBAAgB,EAAE,SAASA,gBAAT,CAA0B56J,CAA1B,EAA6BuV,CAA7B,EAAgC;AAChD,aAAOiI,MAAM,CAAC/P,KAAP,CAAamtJ,gBAAb,CAA8B56J,CAA9B,EAAiCuV,CAAjC,CAAP;AACD,KAHI;AAKLolJ,2BAAuB,EAAE,SAASA,uBAAT,CAAiC36J,CAAjC,EAAoCuV,CAApC,EAAuC;AAC9D,aAAOiI,MAAM,CAAC/P,KAAP,CAAaktJ,uBAAb,CAAqC36J,CAArC,EAAwCuV,CAAxC,CAAP;AACD,KAPI;AASLu2J,aAAS,EAAE,SAASA,SAAT,CAAmBjtK,CAAnB,EAAsB;AAC/B,aAAO2e,MAAM,CAAC/P,KAAP,CAAagzJ,eAAb,GAA+B5hK,CAA/B,CAAP;AACD,KAXI;AAaLktK,WAAO,EAAE,SAASA,OAAT,CAAiBltK,CAAjB,EAAoB;AAC3B,aAAO2e,MAAM,CAAC/P,KAAP,CAAa+pJ,aAAb,GAA6B34J,CAA7B,CAAP;AACD,KAfI;AAiBLq+J,WAAO,EAAE,SAASA,OAAT,CAAiBrlI,KAAjB,EAAwB;AAC/Bra,YAAM,CAAC/P,KAAP,CAAayvJ,OAAb,CAAqBrlI,KAArB;AACD,KAnBI;AAqBLslI,cAAU,EAAE,SAASA,UAAT,CAAoBt+J,CAApB,EAAuB;AACjC2e,YAAM,CAAC/P,KAAP,CAAa0vJ,UAAb,CAAwBt+J,CAAxB;AACD,KAvBI;AAyBLmtK,oBAAgB,EAAE,SAASA,gBAAT,GAA4B;AAC5C,aAAOxuJ,MAAM,CAAC/P,KAAP,CAAa+pJ,aAAb,GAA6B14J,MAApC;AACD,KA3BI;AA6BLw+J,mBAAe,EAAE,SAASA,eAAT,GAA2B;AAC1C9/I,YAAM,CAAC/P,KAAP,CAAa6vJ,eAAb;AACD;AA/BI,GAAP;AAiCD;AAAA,C;;ACpCD;AACA;AACA;AACA;AACA;AAEe,8EAAS/pH,QAAT,EAAmB/qB,YAAnB,EAAiCwI,qBAAjC,EAAwD;AACrE,SAAO,IAAIi2C,gBAAJ,CAAoB1zB,QAApB,EAA8B/qB,YAA9B,EAA4CwI,qBAA5C,EACL3R,OADK,EACE6nD,mBADF,EACkBh9B,oBADlB,EACgCi9B,gCADhC,CAAP;AAED,C;;ACRD,IAAI8kG,YAAY,GAAG,CAAnB;AAEe,SAASC,OAAT,CAAiBC,UAAjB,EAA6B1+J,KAA7B,EAAoC;AACjD;AACA,MAAI6oD,OAAJ;AAAA,MACExK,QADF;AAAA,MAEEn+B,SAFF;AAAA,MAGEuB,SAHF;AAAA,MAIEjG,UAJF;AAAA,MAKEiK,SAAS,GAAG,YAAa,EAAE+4I,YAL7B;;AAOA,WAAS9+J,UAAT,GAAsB;AACpB2+C,YAAQ,GAAG,CAAX;AACAn+B,aAAS,GAAG,EAAZ;AACAyQ,0BAAsB;AACtBlP,aAAS,GAAGi9I,UAAU,CAACtiJ,UAAX,CAAsBqF,SAAlC;AACAjG,cAAU,GAAGkjJ,UAAU,CAACtiJ,UAAX,CAAsBZ,UAAnC;AACAumC,qBAAiB;AAClB;;AAED,WAASA,iBAAT,GAA6B;AAC3B,QAAI3wD,CAAJ;AAAA,QAAOguD,OAAO,GAAG,EAAjB;AACAf,YAAQ;AACRe,WAAO,CAACprD,IAAR,CAAagM,KAAK,CAACmW,GAAN,CAAUsL,SAAV,CAAb;;AACA,SAAKrwB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGoqB,UAAU,CAACnqB,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtCguD,aAAO,CAACprD,IAAR,CAAagM,KAAK,CAACmW,GAAN,CAAUqF,UAAU,CAACpqB,CAAD,CAApB,CAAb;AACD;;AACD8uB,aAAS,CAAClsB,IAAV,CAAeorD,OAAf;AACD;;AAED,WAASzuB,sBAAT,GAAkC;AAChC;AACA3wB,SAAK,CAAC0O,EAAN,CAAS,UAAU+W,SAAnB,EAA8B,YAAW;AACvCs8B,uBAAiB;AAClB,KAFD;AAGD,GAjCgD,CAmCjD;;;AACA8G,SAAO,GAAG;AAER1+B,WAAO,EAAE,iBAASq4B,SAAT,EAAoB;AAC3B,eAASzwD,IAAT,CAAcb,KAAd,EAAqB;AACnB,YAAI2P,GAAG,GAAG,EAAV;AACA3P,aAAK,CAACqc,OAAN,CAAc,UAAS7K,OAAT,EAAkB;AAC9B7B,aAAG,CAAC7M,IAAJ,CAAS0O,OAAT;AACD,SAFD;AAGA,eAAO7B,GAAP;AACD;;AACD,UAAIzP,CAAJ;AAAA,UAAO4vD,GAAP;AAAA,UAAYt2B,KAAZ;AAAA,UAAmB7sB,CAAnB;AAAA,UAAsB1I,MAAM,GAAG,EAA/B;AAAA,UACEwpK,SADF;;AAEA,UAAIn8G,SAAS,KAAKlyD,SAAlB,EAA6B;AAC3B,eAAOyB,IAAI,CAACmuB,SAAD,CAAX;AACD,OAFD,MAEO;AACL,aAAK9uB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG8uB,SAAS,CAAC7uB,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC4vD,aAAG,GAAG9gC,SAAS,CAAC9uB,CAAD,CAAf;AACAutK,mBAAS,GAAG,EAAZ;;AACA,eAAK9gK,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2kD,SAAS,CAACnxD,MAA1B,EAAkCwM,CAAC,EAAnC,EAAuC;AACrC6sB,iBAAK,GAAGg0I,UAAU,CAACljJ,UAAX,CAAsB1K,OAAtB,CAA8B0xC,SAAS,CAAC3kD,CAAD,CAAvC,CAAR;AACA8gK,qBAAS,CAAC3qK,IAAV,CAAegtD,GAAG,CAACt2B,KAAD,CAAlB;AACD;;AACDv1B,gBAAM,CAACnB,IAAP,CAAY2qK,SAAZ;AACD;;AACD,eAAO,CAACxpK,MAAD,CAAP;AACD;AACF,KA1BO;AA4BRqG,SAAK,EAAE,iBAAW;AAChB0kB,eAAS,GAAGlqB,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBmrK,UAAU,CAACx+I,SAA9B,CAAZ;AACAm+B,cAAQ,GAAG,CAAX;AACD,KA/BO;;AAiCR;;;AAGA0D,qBAAiB,EAAEA,iBApCX;AAsCR;AACAlsD,aAAS,EAAE,qBAAW;AACpB;AACA,UAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBmrK,UAAnB,CAAb,CAFoB,CAGpB;;AACAvpK,YAAM,CAAC+qB,SAAP,GAAmBA,SAAnB;AACA,aAAO/qB,MAAP;AACD;AA7CO,GAAV;AAgDAuK,YAAU,GApFuC,CAsFjD;;AACA,SAAOmpD,OAAP;AACD;AAAA,C;;AC1FD;AACA;AACA;AAEe,SAAS+1G,oBAAT,CAA8BC,oBAA9B,EAAoDn3I,sBAApD,EAA4E;AACzF;AACA,MAAIwE,UAAJ,EACElsB,KADF,EAEEgtB,YAFF,EAGE8xI,kBAHF,EAIEC,cAJF,EAKE3iJ,UALF,EAMEY,MANF,EAOEzC,OAPF,EAQE8B,YARF,EASEC,YATF,EAUE0iJ,UAVF,EAWE;AACAziJ,UAZF,EAaEC,OAbF,EAcEC,OAdF,EAeEC,OAfF,EAgBEC,QAhBF,EAiBE;AACAsiJ,wBAlBF,EAmBEC,2BAnBF,EAoBEC,eApBF;;AAsBA,WAASz/J,UAAT,GAAsB;AACpB;AACAm/J,wBAAoB,GAAG/2I,4BAAS,CAACryB,oBAAV,CAA+BP,oBAAQ,CAACulB,UAAxC,EAAoDokJ,oBAApD,CAAvB;AACAziJ,cAAU,GAAGyiJ,oBAAoB,CAACziJ,UAAlC;AACAY,UAAM,GAAG6hJ,oBAAoB,CAACzkJ,UAArB,CAAgC4C,MAAzC;AACAzC,WAAO,GAAGskJ,oBAAoB,CAACzkJ,UAArB,CAAgCG,OAA1C;AACA8B,gBAAY,GAAGwiJ,oBAAoB,CAACxiJ,YAApC;AACAC,gBAAY,GAAGuiJ,oBAAoB,CAACviJ,YAApC;AACAwiJ,sBAAkB,GAAG,EAArB;AAEAp3I,0BAAsB,CAAChZ,EAAvB,CAA0B,kCAA1B,EAA8D,YAAW;AACvEse,kBAAY,GAAGtF,sBAAsB,CAACwG,eAAvB,EAAf;AACAluB,WAAK,GAAG0nB,sBAAsB,CAACG,QAAvB,EAAR;AACAu3I,0BAAoB;AACrB,KAJD;AAMAn0H,SAAK;AACN;;AAED,WAASm0H,oBAAT,GAAgC;AAC9Bp/J,SAAK,CAACqhE,eAAN,CAAsB,mBAAtB,EAA2C;AACzCpmD,kBAAY,EAAE;AAD2B,KAA3C,EAEG,YAAW;AACZ,UAAIjb,KAAK,CAACmW,GAAN,CAAU,mBAAV,CAAJ,EAAoC;AAClCkpJ,mBAAW;AACXr/J,aAAK,CAACrM,GAAN,CAAU,mBAAV,EAA+B,KAA/B;AACD;AACF,KAPD;AAQAqM,SAAK,CAACqhE,eAAN,CAAsB,mBAAtB,EAA2C;AACzCpmD,kBAAY,EAAE;AAD2B,KAA3C,EAEG,YAAW;AACZ,UAAIjb,KAAK,CAACmW,GAAN,CAAU,mBAAV,CAAJ,EAAoC;AAClCmpJ,sBAAc;AACf,OAFD,MAEO;AACLC,sBAAc;AACf;AACF,KARD;AASD;;AAED,WAASt0H,KAAT,GAAiB;AAEf;AACA,aAASu0H,iBAAT,GAA6B;AAC3BjjJ,cAAQ,GAAGmL,sBAAsB,CAACkH,YAAvB,CAAoCtS,YAAY,CAACC,QAAjD,CAAX;AACAC,aAAO,GAAGkL,sBAAsB,CAACkH,YAAvB,CAAoCtS,YAAY,CAACE,OAAjD,CAAV;AACAC,aAAO,GAAGiL,sBAAsB,CAACkH,YAAvB,CAAoCtS,YAAY,CAACG,OAAjD,CAAV;AACAC,aAAO,GAAGgL,sBAAsB,CAACkH,YAAvB,CAAoCtS,YAAY,CAACI,OAAjD,CAAV;AACAC,cAAQ,GAAG+K,sBAAsB,CAACkH,YAAvB,CAAoCtS,YAAY,CAACK,QAAjD,CAAX;AACD;;AAED,aAAS8iJ,0BAAT,GAAsC;AACpC,UAAIruK,CAAJ,EAAOyM,CAAP,EAAU4oE,WAAV,EAAuBxjD,SAAvB;AACAg8I,4BAAsB,GAAG,EAAzB;AACAC,iCAA2B,GAAG,EAA9B;;AACA,WAAK9tK,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGirB,YAAY,CAAChrB,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxCq1E,mBAAW,GAAGpqD,YAAY,CAACjrB,CAAD,CAA1B;AACAq1E,mBAAW,CAAC5mE,UAAZ,GAAyB,EAAzB;;AACA,aAAKhC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG4oE,WAAW,CAACvpD,YAAZ,CAAyB7rB,MAAzC,EAAiDwM,CAAC,EAAlD,EAAsD;AACpD4oE,qBAAW,CAAC5mE,UAAZ,CAAuB7L,IAAvB,CAA4B0zB,sBAAsB,CAACkH,YAAvB,CAAoC63C,WAAW,CAACvpD,YAAZ,CAAyBrf,CAAzB,CAApC,CAA5B;AACD;;AACD,gBAAQ4oE,WAAW,CAACxuE,IAApB;AACE,eAAK,YAAL;AACEgnK,kCAAsB,CAACjrK,IAAvB,CAA4ByyE,WAA5B;AACA;;AACF,eAAK,iBAAL;AACEy4F,uCAA2B,CAAClrK,IAA5B,CAAiCyyE,WAAjC;AACA;;AACF;AACE,kBAAM,IAAIx1E,KAAJ,CAAU,uDAAuDw1E,WAAW,CAACxuE,IAA7E,CAAN;AARJ;AAUD;;AACDknK,qBAAe,GAAG7uK,SAAlB;;AACA,WAAKc,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6tK,sBAAsB,CAAC5tK,MAAvC,EAA+CD,CAAC,EAAhD,EAAoD;AAClDq1E,mBAAW,GAAGw4F,sBAAsB,CAAC7tK,CAAD,CAApC;;AACA,aAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG4oE,WAAW,CAAC5mE,UAAZ,CAAuBxO,MAAvC,EAA+CwM,CAAC,EAAhD,EAAoD;AAClDolB,mBAAS,GAAGwjD,WAAW,CAAC5mE,UAAZ,CAAuBhC,CAAvB,CAAZ;;AACA,cAAIolB,SAAS,CAAChrB,IAAV,KAAmB3H,SAAnB,IAAgC2yB,SAAS,CAAChrB,IAAV,KAAmB,OAAvD,EAAgE;AAC9DknK,2BAAe,GAAGl8I,SAAlB;AACA;AACD;AACF;AACF;AACF;;AAED,aAASy8I,uBAAT,GAAmC;AACjCnjJ,cAAQ,CAACunB,SAAT,CAAmB,iCAAnB;AACAtnB,aAAO,CAACsnB,SAAR,CAAkB,kCAAlB;AACArnB,aAAO,CAACqnB,SAAR,CAAkB,YAAW;AAC3B,YAAI1yC,CAAJ,EAAOyM,CAAP,EAAU8hK,0BAAV;AACAb,0BAAkB,CAAC9qK,IAAnB,CAAwB+qK,cAAxB;;AACA,aAAK3tK,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG8tK,2BAA2B,CAAC7tK,MAA5C,EAAoDD,CAAC,EAArD,EAAyD;AACvDuuK,oCAA0B,GAAGT,2BAA2B,CAAC9tK,CAAD,CAAxD;;AACA,eAAKyM,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG8hK,0BAA0B,CAAC9/J,UAA3B,CAAsCxO,MAAtD,EAA8DwM,CAAC,EAA/D,EAAmE;AACjE8hK,sCAA0B,CAAC9/J,UAA3B,CAAsChC,CAAtC,EAAyCqzB,+BAAzC;AACD;AACF;;AACDzU,eAAO,CAAC6iB,WAAR,CAAoB,IAApB;AACD,OAVD;AAWA5iB,aAAO,CAAConB,SAAR,CAAkB,iCAAlB;AACAnnB,cAAQ,CAACmnB,SAAT,CAAmB,YAAW;AAC5Bpc,8BAAsB,CAACwY,iBAAvB;AACD,OAFD;AAGD,KA/Dc,CAiEf;;;AACAs/H,qBAAiB;AACjBC,8BAA0B;AAC1BC,2BAAuB;AACxB;;AAED,WAASE,mBAAT,GAA+B;AAC7B,QAAIxuK,CAAJ;;AACA,QAAI+tK,eAAJ,EAAqB;AACnB,WAAK/tK,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0tK,kBAAkB,CAACztK,MAAnC,EAA2CD,CAAC,EAA5C,EAAgD;AAC9C+tK,uBAAe,CAAC92I,UAAhB,CAA2By2I,kBAAkB,CAAC1tK,CAAD,CAAlB,CAAsB+4B,OAAtB,EAA3B;AACD;;AACDg1I,qBAAe,CAACjpJ,MAAhB;AACD;AACF;;AAED,WAAS2pJ,uBAAT,GAAmC;AACjC,SAAK,IAAIzuK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4rB,MAAM,CAAC3rB,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC4O,WAAK,CAAC09B,QAAN,CAAe1gB,MAAM,CAAC5rB,CAAD,CAArB;AACD;AACF;;AAGD,WAAS0uK,qBAAT,GAAiC;AAC/B,SAAK,IAAI1uK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4rB,MAAM,CAAC3rB,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC4O,WAAK,CAACy9B,MAAN,CAAazgB,MAAM,CAAC5rB,CAAD,CAAnB;AACD;AACF;;AAED,WAASkuK,cAAT,GAA0B;AACxB/iJ,YAAQ,CAAC+iB,WAAT,CAAqB,IAArB;AACA9iB,WAAO,CAAC8iB,WAAR,CAAoB,KAApB;AACA7iB,WAAO,CAAC6iB,WAAR,CAAoB,IAApB;AACA5iB,WAAO,CAAC4iB,WAAR,CAAoB,IAApB;AACA3iB,YAAQ,CAAC2iB,WAAT,CAAqB,KAArB;AACAwgI,yBAAqB;AACrBf,kBAAc,GAAG,IAAIN,OAAJ,CAAY;AAC3BriJ,gBAAU,EAAEA;AADe,KAAZ,EAEdpc,KAFc,CAAjB;AAGAgtB,gBAAY,CAACpd,GAAb,CAAiBmwB,KAAjB;AACD;;AAED,WAASw/H,cAAT,GAA0B;AACxBhjJ,YAAQ,CAAC+iB,WAAT,CAAqB,IAArB;AACA9iB,WAAO,CAAC8iB,WAAR,CAAoB,IAApB;AACA7iB,WAAO,CAAC6iB,WAAR,CAAoB,KAApB;AACA5iB,WAAO,CAAC4iB,WAAR,CAAoB,KAApB;AACAtS,gBAAY,CAACpd,GAAb,CAAiBkuB,IAAjB;AACD;;AAED,WAASuhI,WAAT,GAAuB;AACrB9iJ,YAAQ,CAAC+iB,WAAT,CAAqB,KAArB;AACA9iB,WAAO,CAAC8iB,WAAR,CAAoB,IAApB;AACA7iB,WAAO,CAAC6iB,WAAR,CAAoB,IAApB;AACA5iB,WAAO,CAAC4iB,WAAR,CAAoB,IAApB;AACAt/B,SAAK,CAACrM,GAAN,CAAU,mBAAV,EAA+B,KAA/B;AACA+zB,0BAAsB,CAACuY,WAAvB,CAAmC;AACjC3lB,wBAAkB,EAAE0C,MADa;AAEjCwc,WAAK,EAAE;AAF0B,KAAnC;AAIAqmI,2BAAuB;AACvBD,uBAAmB;AACpB,GA9LwF,CAgMzF;;;AACA1zI,YAAU,GAAG;AAEX6zI,mBAAe,EAAE,yBAASC,YAAT,EAAuB;AACtChB,gBAAU,GAAGgB,YAAb;AACD,KAJU;AAMX;AACAnqK,aAAS,EAAE,qBAAW;AACpB;AACA,UAAIV,MAAM,GAAGa,CAAC,CAACzC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBsrK,oBAAnB,CAAb,CAFoB,CAGpB;;AACA,aAAO1pK,MAAP;AACD;AAZU,GAAb;AAeAuK,YAAU,GAhN+E,CAkNzF;;AACA,SAAOwsB,UAAP;AACD;AAAA,C;;;;ACxND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAI;AACF+zI,kBAAkB,GAAG;AACnB,UAAQC,sBADW;AAEnB,sBAAoBC,2BAFD;AAGnB,kBAAgBC,iBAHG;AAInB,YAAUC,iBAJS;AAKnB,iBAAeC,sBALI;AAMnB,2BAAyBC,gCANN;AAOnB,sBAAoBC,2BAPD;AAQnB,eAAaC,oBARM;AASnB,cAAYC,+BAAyCA;AATlC,CADvB;AAAA,IAaE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAC,oBAAoB,GAAG;AACrB,UAAQn7H,eADa;AAErB,WAASE,gBAFY;AAGrB,YAAUtB,iBAHW;AAIrB,cAAYE,kBAJS;AAKrB,cAAYuF,kBALS;AAMrB,WAAS3D,eANY;AAOrB,iBAAe4iB,qBAPM;AAQrB,cAAY78B,kBARS;AASrB,WAAS20I,eATY;AAUrB,YAAU95H,gBAVW;AAWrB,oBAAkB4G,wBAXG;AAYrB,cAAYxD,kBAZS;AAarB,kBAAgBkO,uBAbK;AAcrB,mBAAiB2D,uBAdI;AAerB,WAASsF,eAfY;AAgBrB,SAAOiO,cAhBc;AAiBrB,cAAYrF,mBAAkBA;AAjBT,CAxCzB;;AA4DA,SAAS93D,6BAAT,CAAe0qC,GAAf,EAAoB;AAClB,MAAI9qC,IAAJ,CADkB,CAElB;;AACA,MAAI,QAAQ8qC,GAAR,IAAe,aAAa,+BAAOA,GAApB,CAAnB,EAA4C,OAAOA,GAAP,CAH1B,CAIlB;;AACA,MAAIA,GAAG,YAAYvF,IAA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oxK,SAAS,GAAGJ,KAAK,CAAC,KAAKhxK,IAAN,CAAvB;;AACA,MAAKoxK,SAAS,IAAI,IAAlB,EAAyB;AACvB,UAAM,IAAIp4K,KAAJ,CAAU,wDAAV,CAAN;AACD,GALe,CAOhB;;;AACA,OAAK,IAAI6qB,QAAT,IAAqButJ,SAArB,EAAgC;AAC9B,QAAMl4K,KAAK,GAAGk4K,SAAS,CAACvtJ,QAAD,CAAvB;AACA,SAAKA,QAAL,IAAiB3qB,KAAjB;AACD;AACF,CAlBH,E;;;;;;;AC5BA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,KAA6B;AACnC,QAAQ,KAA4B;AACpC;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA,KAAK;AACL;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;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,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,wCAAwC;AACxC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;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,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,qBAAqB,eAAe;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;;AAGA;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,6EAA6E;AAC7E;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;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;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAwB;AAC9B;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,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB;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,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,qBAAqB;AACrB;;AAEA;AACA;AACA,KAAK;AACL,iBAAiB;;AAEj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A;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gFAAgF;AAChF;;AAEA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,CAAC;;;;;;;;AChMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,MAAM,KAA0B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,YAAY;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,oBAAoB;;AAEpB;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF,gCAAgC;AAChC;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA,gBAAgB,IAAI;;AAEpB;AACA;;AAEA;AACA;;AAEA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS;;AAET;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;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;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,eAAe;;AAEf,SAAS;;AAET;AACA,QAAQ,iCAAiC;AACzC,QAAQ,oBAAoB;AAC5B,QAAQ,sCAAsC;AAC9C,QAAQ;AACR,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;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,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,iEAAiE,UAAU;AAC3E,sCAAsC,2BAA2B;AACjE;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,YAAY,uEAAuE;AACnF;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,2DAA2D;;AAE3D;AACA;AACA,oFAAoF;;AAEpF;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,QAAQ,SAAS;AACjB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAiD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,UAAU,wCAAwC;AAClD;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA,CAAC;;;;AAID;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,QAAQ,GAAG;AACX;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,OAAO;AAChB,yBAAyB,wBAAwB;;AAEjD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,0CAA0C;AAC1C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;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,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,cAAc;AACxB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA,OAAO;AACP,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA,MAAM;AACN,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C;AAC9C,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;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;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB,EAAE;AACrC,eAAe,qCAAqC,EAAE;AACtD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB;AAClB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,cAAc;;AAExB;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+BAA+B;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,wDAAwD;AAC/E;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;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;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,+BAA+B;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA,SAAS,8BAA8B;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,UAAU,SAAS,MAAM,aAAa;AAC3E,aAAa,eAAe;AAC5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,2BAA2B,sBAAsB;AACnF,sBAAsB,cAAc;AACpC,gBAAgB,WAAW,YAAY;AACvC,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS,QAAQ,QAAQ;AACrD;;AAEA;AACA;AACA,oCAAoC,uBAAuB;AAC3D,mBAAmB,SAAS,SAAS;AACrC;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA,YAAY,+DAA+D;AAC3E;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,QAAQ,OAAO;;AAEf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,4BAA4B;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,QAAQ,QAAQ;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,iDAAiD;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,iBAAiB;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,cAAc;AAClC,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,cAAc;AACd,CAAC;AACD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,mBAAmB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,IAAI;AACJ;;AAEA,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,SAAS;AACpB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qCAAqC;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,oCAAoC;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,MAAM;AACN,MAAM;AACN,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,UAAU,kBAAkB;AAC5B;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB,4DAA4D,eAAe;AAC3E;AACA;;AAEA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,cAAc,sDAAsD;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA,cAAc,mCAAmC;AACjD,eAAe,6DAA6D;AAC5E;;AAEA;AACA;AA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,oBAAoB,0CAA0C,YAAY,WAAW,YAAY,SAAS,GAAG;AAC5uB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uBAAuB,EAAE;AACxE,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,uBAAuB,EAAE;AACxD;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,uBAAuB,EAAE;AACxD;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,uBAAuB,EAAE;AACxD;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,uBAAuB,EAAE;AACxD;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qCAAqC;AACrC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,0CAA0C,iCAAiC;;AAE3E;AACA;AACA;AACA,GAAG;;;;AAIH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,0BAA0B,EAAE;AACrE,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,iCAAiC;AAC3E;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL,8BAA8B,6DAA6D,EAAE;;AAE7F,6BAA6B,4DAA4D,EAAE;;AAE3F;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,EAAE,kDAAkD;AACrD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA,CAAC,GAAG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;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;AACA;AACA;AACA,OAAO;AACP,oDAAoD,YAAY;AAChE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,kDAAkD,uBAAuB;AACzE;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,sCAAsC,cAAc;AACpD;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;;AAE5B;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;;AAEA,qBAAqB,oBAAoB;AACzC;AACA;AACA;;AAEA;;AAEA,iDAAiD,YAAY;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC,GAAG;AACJ,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA,2CAA2C;AAC3C;AACA,2DAA2D;;AAE3D;AACA,mDAAmD;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,MAAM,aAAa,OAAO;;AAEpD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;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,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,eAAe;AACf,eAAe;AACf;;AAEA;AACA;AACA,UAAU;AACV,SAAS;AACT,SAAS;AACT,WAAW;AACX,UAAU;AACV,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,EAAE;AACf,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,UAAU;AACvB,eAAe,OAAO;AACtB;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;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,EAAE;AACf,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA,cAAc,2BAA2B;AACzC;AACA;AACA,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,MAAM;AACN;AACA;AACA,iCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;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;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,eAAe,QAAQ;AACvB;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,eAAe,QAAQ;AACvB;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,kBAAkB;AACjC,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO,WAAW;AACjC,iBAAiB,OAAO;AACxB;AACA;AACA,4BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,oCAAoC,6BAA6B,EAAE;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,iBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,iBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB,iBAAiB,SAAS;AAC1B;AACA;AACA;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,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,eAAe,QAAQ;AACvB;AACA,eAAe,SAAS;AACxB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,6BAA6B;AAC5C,eAAe,UAAU;AACzB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA,0DAA0D,2BAA2B,EAAE;;AAEvF;AACA,+DAA+D,wBAAwB,EAAE;AACzF,gBAAgB;AAChB,OAAO;;AAEP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,MAAM;AACrB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,EAAE;AACjB,eAAe,QAAQ;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,eAAe,MAAM;AACrB,eAAe,EAAE;AACjB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;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,eAAe,YAAY;AAC3B,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;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,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;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,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,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;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;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;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB,eAAe,MAAM;AACrB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;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,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,QAAQ;AACzB;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,EAAE;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C,wCAAwC;AACxC,+DAA+D;AAC/D,iEAAiE;AACjE;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,aAAa;AAC5B,eAAe,MAAM;AACrB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;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;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;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;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;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,MAAM;AACvB;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,MAAM;AACrB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,MAAM;AACvB;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;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU,oCAAoC;AAC9C,UAAU,qCAAqC;AAC/C,UAAU;AACV;AACA;AACA;AACA,wCAAwC,qCAAqC;AAC7E;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,eAAe,MAAM;AACrB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU,qCAAqC;AAC/C,UAAU,qCAAqC;AAC/C,UAAU;AACV;AACA;AACA;AACA,mCAAmC,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;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;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,UAAU,qCAAqC;AAC/C,UAAU,qCAAqC;AAC/C,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,2BAA2B,kCAAkC;AAC7D;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,eAAe,MAAM;AACrB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,UAAU,oCAAoC;AAC9C,UAAU,qCAAqC;AAC/C,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,+BAA+B,mCAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,gBAAgB,OAAO;AACvB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,EAAE;AACjB,eAAe,eAAe;AAC9B;AACA,iBAAiB,OAAO;AACxB;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,EAAE;AACjB,eAAe,eAAe;AAC9B;AACA,iBAAiB,OAAO;AACxB;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;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,KAAK;AACpB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,qBAAqB;AACpC;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,EAAE;AACjB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU,yCAAyC;AACtE;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,uBAAuB,UAAU,GAAG,UAAU,IAAI,UAAU;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,EAAE;AACjB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,MAAM;AACvB;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,MAAM;AACrB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,MAAM;AACvB;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;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU,oCAAoC;AAC9C,UAAU,qCAAqC;AAC/C,UAAU;AACV;AACA;AACA;AACA,wCAAwC,qCAAqC;AAC7E;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,eAAe,MAAM;AACrB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU,qCAAqC;AAC/C,UAAU,oCAAoC;AAC9C,UAAU;AACV;AACA;AACA;AACA,mCAAmC,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,uBAAuB;AACtC,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,gBAAgB,SAAS,GAAG,SAAS,GAAG,SAAS;AACjD,eAAe,SAAS,GAAG,SAAS;AACpC;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,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,KAAK;AACpB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;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,eAAe,SAAS;AACxB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU;AACV;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;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,eAAe,KAAK;AACpB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4DAA4D;AAC9F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,qCAAqC;AACpD;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,QAAQ;AACR,cAAc;AACd;AACA;AACA;AACA,QAAQ;AACR,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oCAAoC;AAC9C,UAAU;AACV;AACA;AACA;AACA,uBAAuB,oCAAoC;AAC3D;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,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU,8CAA8C;AACxD,UAAU;AACV;AACA;AACA;AACA,gCAAgC,4BAA4B;AAC5D;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,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA,UAAU,+CAA+C;AACzD,UAAU,gDAAgD;AAC1D,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,OAAO;AACtB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA,UAAU,8CAA8C;AACxD,UAAU;AACV;AACA;AACA,oCAAoC,4BAA4B;AAChE;AACA;AACA,oCAAoC,6BAA6B;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,QAAQ;AACR,cAAc;AACd;AACA;AACA;AACA,QAAQ;AACR,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;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,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,UAAU,4BAA4B;AACtC,UAAU;AACV;AACA;AACA;AACA,cAAc,UAAU,4BAA4B,YAAY,8BAA8B;AAC9F;AACA;AACA;AACA,QAAQ;AACR,cAAc,OAAO,4BAA4B,QAAQ,8BAA8B;AACvF;AACA;AACA;AACA,QAAQ;AACR,cAAc,OAAO,4BAA4B,QAAQ,8BAA8B;AACvF;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,sBAAsB;AACrC;AACA,eAAe,KAAK;AACpB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA,UAAU,mBAAmB;AAC7B,UAAU;AACV;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,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D,UAAU,+CAA+C;AACzD,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,cAAc,iBAAiB,EAAE;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,aAAa;AAC5B,iBAAiB,MAAM;AACvB;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU;AACV;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,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA,QAAQ,IAAI;AACZ,cAAc,iBAAiB;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU,+CAA+C;AACzD,UAAU;AACV;AACA;AACA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,eAAe,oBAAoB;AACnC,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;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,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C,UAAU;AACV;AACA;AACA;AACA,sBAAsB,oCAAoC;AAC1D;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,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B,UAAU,oBAAoB;AAC9B,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,yDAAyD;AACxE;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,6BAA6B;AAC5C,eAAe,UAAU;AACzB,gBAAgB,OAAO;AACvB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU;AACV;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,eAAe,oBAAoB;AACnC,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA,UAAU,kEAAkE;AAC5E,UAAU;AACV;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,oBAAoB,iCAAiC;AACrD,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,eAAe,KAAK;AACpB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,qBAAqB;AACpC;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,KAAK;AACpB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,SAAS;AAC1B;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,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,SAAS;AAC1B;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,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE;AACA;AACA,QAAQ;AACR;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,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;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,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,KAAK;AACpB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,KAAK;AACpB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,iBAAiB,SAAS;AAC1B;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,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,oBAAoB;AACpB;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;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,eAAe,SAAS;AACxB,eAAe,yBAAyB;AACxC;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;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,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,KAAK;AACpB,iBAAiB,SAAS;AAC1B;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,eAAe,SAAS;AACxB,eAAe,KAAK;AACpB,iBAAiB,SAAS;AAC1B;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,eAAe,SAAS;AACxB,eAAe,qBAAqB;AACpC;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;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,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,mCAAmC,6DAA6D;AAChG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA,UAAU,mBAAmB;AAC7B,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;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,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA,UAAU,mBAAmB;AAC7B,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA,iCAAiC,kBAAkB,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;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,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA,qBAAqB;AACrB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;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,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA,oBAAoB;AACpB;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,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,0BAA0B,YAAY;AACtC;AACA;AACA,0BAA0B,YAAY;AACtC;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;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,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B,cAAc;AACd;AACA,iBAAiB,SAAS;AAC1B,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,mBAAmB,mBAAmB,GAAG,iBAAiB;AAC1D;AACA;AACA;AACA,mBAAmB,YAAY,GAAG,YAAY;AAC9C;AACA;AACA;AACA,cAAc,WAAW,8BAA8B,GAAG,4BAA4B;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA,iBAAiB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACvE,cAAc;AACd;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,iBAAiB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACvE,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;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,eAAe,OAAO;AACtB,eAAe,UAAU;AACzB,iBAAiB,OAAO;AACxB;AACA;AACA,mBAAmB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACzE,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,UAAU;AACzB,iBAAiB,OAAO;AACxB;AACA;AACA,uBAAuB,UAAU,mBAAmB,EAAE,GAAG,UAAU,4BAA4B,EAAE;AACjG,cAAc,UAAU,8BAA8B;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD,qBAAqB,6BAA6B;AAClD,qBAAqB;AACrB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,yBAAyB,2BAA2B;AACpD;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,eAAe,OAAO;AACtB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD,qBAAqB,6BAA6B;AAClD,qBAAqB;AACrB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,6BAA6B,4BAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,aAAa;AAC5B,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA,qBAAqB,QAAQ,OAAO,SAAS,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,aAAa;AAC5B,iBAAiB,QAAQ;AACzB;AACA;AACA,qBAAqB,OAAO,OAAO,SAAS,EAAE;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,gBAAgB,OAAO;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;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,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;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;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA,QAAQ;AACR,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,uBAAuB;AACtC;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA,QAAQ;AACR,cAAc;AACd;AACA;AACA,qBAAqB,+BAA+B;AACpD,qBAAqB;AACrB;AACA;AACA;AACA;AACA,cAAc,2BAA2B;AACzC;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,8BAA8B;AAC7C;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA,gBAAgB,2BAA2B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,8BAA8B;AAC7C;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,aAAa;AAC5B,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA,qBAAqB,QAAQ,OAAO,+BAA+B,EAAE;AACrE;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,eAAe,OAAO;AACtB,eAAe,aAAa;AAC5B,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA,qBAAqB,QAAQ,OAAO,SAAS,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA,QAAQ;AACR,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;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,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,iBAAiB,OAAO;AACxB;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;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,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC,qBAAqB,UAAU;AAC/B;AACA;AACA,sEAAsE,2BAA2B,EAAE;AACnG,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA,4DAA4D;AAC5D,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,0CAA0C,OAAO;AACjD,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA,2CAA2C,YAAY;AACvD,0CAA0C,QAAQ;AAClD,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA,qDAAqD,2BAA2B,EAAE;AAClF,wCAAwC,aAAa,eAAe,EAAE;AACtE,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA,wDAAwD,qCAAqC;AAC7F;AACA;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC,4CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA,uDAAuD;AACvD;AACA;AACA,6BAA6B,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,+BAA+B,iCAAiC;AAChE,cAAc;AACd;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,OAAO;AACxB;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,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,OAAO;AACxB;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,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB,iBAAiB,OAAO;AACxB;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,eAAe,OAAO;AACtB,eAAe,cAAc;AAC7B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,cAAc;AAC7B,gBAAgB,OAAO;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC,aAAa,QAAQ,QAAQ,UAAU,SAAS,aAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,cAAc;AAC7B,gBAAgB,OAAO;AACvB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB,OAAO;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,eAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,SAAS;AAC1B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,UAAU,8CAA8C;AACxD,UAAU;AACV;AACA;AACA,kCAAkC,6BAA6B;AAC/D,eAAe,6CAA6C;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,EAAE;AACjB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,UAAU,mBAAmB;AAC7B,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,KAAK;AACpB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,UAAU,OAAO,OAAO,qBAAqB,EAAE,EAAE;AACjD,UAAU,OAAO,OAAO,qBAAqB,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,KAAK;AACpB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB,GAAG,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,UAAU,OAAO,OAAO,SAAS,EAAE,EAAE;AACrC,UAAU,OAAO,OAAO,SAAS,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;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,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC,eAAe,EAAE;AACjB,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,uBAAuB;AACtC,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA,UAAU,SAAS;AACnB,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,iCAAiC,sEAAsE;AACvG;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,8DAA8D;AACjG;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,4DAA4D;AAClF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,yCAAyC;AAC7D;AACA,KAAK;;AAEL,sEAAsE,uCAAuC;;AAE7G;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC,GAAG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,YAAY;AACZ;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,gCAAgC;AAChC;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kBAAkB;AAClB,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yBAAyB;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA,eAAe;;AAEf,0DAA0D;;AAE1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,gDAAgD;AAChD;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,2BAA2B,4CAA4C;AACvE,GAAG;AACH,WAAW;AACX;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,uCAAuC,aAAa;AACpD,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,2BAA2B,4BAA4B;AACvD,GAAG;AACH,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,CAAC;;AAED,CAAC,EAAE,WAAW;AACd;AACA,CAAC,GAAG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;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;AACA;AACA,CAAC,EAAE,8SAA8S;AACjT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;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,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,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,6CAA6C;AAChD;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,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,+BAA+B;AACzC,UAAU,mCAAmC;AAC7C,UAAU;AACV;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,8CAA8C;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,eAAe;AAClB,4CAA4C;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,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA,CAAC,EAAE,yBAAyB;AAC5B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,cAAc;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC,EAAE,eAAe;AAClB;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,SAAS;AACT;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,mBAAmB,0CAA0C;AAC7D;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,CAAC,EAAE,6BAA6B;AAChC;AACA;AACA,yCAAyC,OAAO;AAChD;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;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA,eAAe;AACf,eAAe;AACf;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,SAAS;AACnB;AACA,UAAU,OAAO;AACjB;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,CAAC,EAAE,4BAA4B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,+BAA+B;AACpD,uBAAuB,+BAA+B;AACtD,wBAAwB,+BAA+B;AACvD,uBAAuB;AACvB;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE,kCAAkC,mCAAmC;AACrE,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,4CAA4C;AAC5C;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,kEAAkE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,qDAAqD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,EAAE,2BAA2B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,SAAS;AACnB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,EAAE,4BAA4B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;;AAEhC,iCAAiC,eAAe;AAChD;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,MAAM;AACpB;AACA,gBAAgB,MAAM;AACtB;AACA,KAAK;AACL,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,SAAS;AACnB;AACA;AACA,0DAA0D,EAAE;AAC5D,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qCAAqC,4BAA4B;AACjE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC,EAAE,4BAA4B;AAC/B;AACA;AACA;AACA;AACA;AACA;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;AACA,mBAAmB,0CAA0C;AAC7D;AACA;AACA;AACA;AACA,CAAC,EAAE,+CAA+C;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,EAAE,mLAAmL;AACtL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,mBAAmB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kCAAkC;AAClC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oCAAoC;AACpC;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA,gBAAgB;AAChB;;AAEA,gCAAgC;AAChC;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA,CAAC,EAAE,eAAe;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0CAA0C;AAC7D;AACA;AACA;AACA;AACA,CAAC,EAAE,+BAA+B;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,iBAAiB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,iBAAiB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,eAAe;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,IAAI;AACd,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA,CAAC,EAAE,eAAe;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,IAAI;AACd,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,eAAe;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC,GAAG;AACJ;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;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,EAAE,GAAG;AACT;AACA,CAAC;AACD,C;;;;;;;ACp3fA,qCAAa,KAAwB,oBAAoB,SAA2O,CAAC,YAAY,0BAA0B,0BAA0B,gBAAgB,UAAU,UAAU,0CAA0C,gBAAgB,OAAC,OAAO,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,0CAA0C,YAAY,WAAW,YAAY,SAAS,GAAG;AAC5uB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,iCAAiC;;AAEzE;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,oCAAoC,0BAA0B,EAAE;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iCAAiC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,CAAC,EAAE,2BAA2B;AAC9B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA,CAAC,GAAG;AACJ,6CAA6C;;AAE7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;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;AACA;AACA;AACA,OAAO;AACP,oDAAoD,YAAY;AAChE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,kDAAkD,uBAAuB;AACzE;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,sCAAsC,cAAc;AACpD;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;;AAE5B;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;;AAEA,qBAAqB,oBAAoB;AACzC;AACA;AACA;;AAEA;;AAEA,iDAAiD,YAAY;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA,CAAC;;AAED,CAAC,EAAE,yBAAyB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;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;AACA;AACA,CAAC,EAAE,0SAA0S;AAC7S;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,+BAA+B;AACzC,UAAU,mCAAmC;AAC7C,UAAU;AACV;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;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,wBAAwB;AACnD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,4BAA4B;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,eAAe;AAClB,4CAA4C;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,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA,CAAC,EAAE,yBAAyB;AAC5B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,cAAc;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC,EAAE,eAAe;AAClB;AACA;AACA,yCAAyC,OAAO;AAChD;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;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA,eAAe;AACf,eAAe;AACf;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,SAAS;AACnB;AACA,UAAU,OAAO;AACjB;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,CAAC,EAAE,4BAA4B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,+BAA+B;AACpD,uBAAuB,+BAA+B;AACtD,wBAAwB,+BAA+B;AACvD,uBAAuB;AACvB;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE,kCAAkC,mCAAmC;AACrE,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,4CAA4C;AAC5C;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,4BAA4B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,EAAE,4BAA4B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,EAAE,0BAA0B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,SAAS;AACnB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,EAAE,4BAA4B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;;AAEhC,iCAAiC,eAAe;AAChD;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,MAAM;AACpB;AACA,gBAAgB,MAAM;AACtB;AACA,KAAK;AACL,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,SAAS;AACnB;AACA;AACA,0DAA0D,EAAE;AAC5D,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qCAAqC,4BAA4B;AACjE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC,EAAE,4BAA4B;AAC/B;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;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU;AACV,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;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,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;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,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;AACL;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,CAAC,EAAE,kKAAkK;AACrK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;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,wBAAwB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,EAAE,cAAc;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kCAAkC;AAClC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oCAAoC;AACpC;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA,gBAAgB;AAChB;;AAEA,gCAAgC;AAChC;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,GAAG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,EAAE,cAAc;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,GAAG;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,GAAG;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,eAAe;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,IAAI;AACd,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA,CAAC,EAAE,eAAe;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,IAAI;AACd,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,eAAe;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC,GAAG;AACJ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,EAAE,GAAG;AACT;AACA,CAAC;AACD,C;;;;;;;AChxFA;;AAEA;AACA;;AAEA;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,CAAC;;AAED;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;CAGA;;AACAl6K,MAAM,CAACi3D,GAAP,GAAaj3D,MAAM,CAACi3D,GAAP,IAAc,EAA3B,C,CACA;;AACAj3D,MAAM,CAACi3D,GAAP,CAAW/5B,OAAX,GAAqBl9B,MAAM,CAACi3D,GAAP,CAAW/5B,OAAX,IAAsB,EAA3C;AACAl9B,MAAM,CAACi3D,GAAP,CAAW/5B,OAAX,CAAmBrb,aAAnB,GAAmCA,iFAAnC;AACA7hB,MAAM,CAACi3D,GAAP,CAAW/5B,OAAX,CAAmBpZ,YAAnB,GAAkCA,gFAAlC;AACA9jB,MAAM,CAACi3D,GAAP,CAAW/5B,OAAX,CAAmBgE,KAAnB,GAA2BA,kDAA3B,C,CACA;;AACAlhC,MAAM,CAACi3D,GAAP,CAAW1jC,MAAX,GAAoBA,0DAApB,C,CAEA;;AACevzB,qEAAM,CAACi3D,GAAP,CAAW/5B,OAA1B,E;;;;;;;AChBA,qCAAa,KAAwB,oBAAoB,SAAkO,CAAC,YAAY,0BAA0B,0BAA0B,gBAAgB,UAAU,UAAU,0CAA0C,gBAAgB,OAAC,OAAO,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,0CAA0C,YAAY,WAAW,YAAY,SAAS,GAAG;AACnuB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA,CAAC,EAAE,qCAAqC;AACxC;;AAEA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA,oDAAoD;AACpD;;AAEA,oCAAoC;AACpC,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,EAAE,UAAU;AACb;AACA;AACA,CAAC,GAAG;AACJ;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,GAAG;AACJ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,gBAAgB,eAAe;AAC/B;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,2DAA2D;AAC3D,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4BAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;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,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAoB,iCAAiC;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qBAAqB;AACpD,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA,CAAC,EAAE,4EAA4E;AAC/E;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,GAAG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,GAAG;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,EAAE,kGAAkG;;;AAGrG;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC,GAAG;AACJ;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,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;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;;;AAGA;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;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,KAAK;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,CAAC,EAAE,YAAY,EAAE,GAAG;AACpB;AACA,CAAC;AACD","file":"lab/lab.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\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\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 400);\n","var arrays = {};\n\narrays.version = \"0.0.1\";\n\narrays.webgl = (typeof window !== \"undefined\") && !!window.WebGLRenderingContext;\n\narrays.typed = (function () {\n try {\n new Float64Array(0);\n return true;\n } catch (e) {\n return false;\n }\n}());\n\n// http://www.khronos.org/registry/typedarray/specs/latest/#TYPEDARRAYS\n// regular\n// Uint8Array\n// Uint8ClampedArray\n// Uint16Array\n// Uint32Array\n// Int8Array\n// Int16Array\n// Int32Array\n// Float32Array\n// Float64Array\n\narrays.create = function (size, fill, array_type) {\n if (!array_type) {\n if (arrays.webgl || arrays.typed) {\n array_type = \"Float32Array\";\n } else {\n array_type = \"regular\";\n }\n }\n if (fill === undefined) {\n fill = 0;\n }\n var a;\n if (array_type === \"regular\") {\n a = new Array(size);\n } else {\n switch (array_type) {\n case \"Float64Array\":\n a = new Float64Array(size);\n break;\n case \"Float32Array\":\n a = new Float32Array(size);\n break;\n case \"Int32Array\":\n a = new Int32Array(size);\n break;\n case \"Int16Array\":\n a = new Int16Array(size);\n break;\n case \"Int8Array\":\n a = new Int8Array(size);\n break;\n case \"Uint32Array\":\n a = new Uint32Array(size);\n break;\n case \"Uint16Array\":\n a = new Uint16Array(size);\n break;\n case \"Uint8Array\":\n a = new Uint8Array(size);\n break;\n case \"Uint8ClampedArray\":\n a = new Uint8ClampedArray(size);\n break;\n default:\n throw new Error(\"arrays: couldn't understand array type \\\"\" + array_type + \"\\\".\");\n }\n }\n arrays.fill(a, fill);\n return a;\n};\n\narrays.fill = function (array, value) {\n var i = -1,\n size = array.length;\n while (++i < size) {\n array[i] = value;\n }\n};\n\narrays.constructor_function = function (source) {\n if (source.buffer &&\n source.buffer.__proto__ &&\n source.buffer.__proto__.constructor &&\n Object.prototype.toString.call(source) === \"[object Array]\") {\n return source.__proto__.constructor;\n }\n\n switch (source.constructor) {\n case Array:\n return Array;\n case Float32Array:\n return Float32Array;\n case Uint8Array:\n return Uint8Array;\n case Float64Array:\n return Float64Array;\n case Int32Array:\n return Int32Array;\n case Int16Array:\n return Int16Array;\n case Int8Array:\n return Int8Array;\n case Uint32Array:\n return Uint32Array;\n case Uint16Array:\n return Uint16Array;\n case Uint8ClampedArray:\n return Uint8ClampedArray;\n default:\n throw new Error(\n \"arrays.constructor_function: must be an Array or Typed Array: \" + \" source: \" + source);\n // \", source.constructor: \" + source.constructor +\n // \", source.buffer: \" + source.buffer +\n // \", source.buffer.slice: \" + source.buffer.slice +\n // \", source.buffer.__proto__: \" + source.buffer.__proto__ +\n // \", source.buffer.__proto__.constructor: \" + source.buffer.__proto__.constructor\n }\n};\n\narrays.copy = function (source, dest, num) {\n var len = num !== undefined ? num : source.length,\n i = -1;\n while (++i < len) {\n dest[i] = source[i];\n }\n if (arrays.constructor_function(dest) === Array) dest.length = len;\n return dest;\n};\n\narrays.clone = function (source) {\n var i, len = source.length,\n clone, constructor;\n constructor = arrays.constructor_function(source);\n if (constructor === Array) {\n clone = new constructor(len);\n for (i = 0; i < len; i++) {\n clone[i] = source[i];\n }\n return clone;\n }\n if (source.buffer.slice) {\n clone = new constructor(source.buffer.slice(0));\n return clone;\n }\n clone = new constructor(len);\n for (i = 0; i < len; i++) {\n clone[i] = source[i];\n }\n return clone;\n};\n\n/** @return true if x is between a and b. */\n// float a, float b, float x\narrays.between = function (a, b, x) {\n return x < Math.max(a, b) && x > Math.min(a, b);\n};\n\n// float[] array\narrays.max = function (array) {\n return Math.max.apply(Math, array);\n};\n\n// float[] array\narrays.min = function (array) {\n return Math.min.apply(Math, array);\n};\n\n// FloatxxArray[] array\narrays.maxTypedArray = function (array) {\n var test, i,\n max = Number.MIN_VALUE,\n length = array.length;\n for (i = 0; i < length; i++) {\n test = array[i];\n max = test > max ? test : max;\n }\n return max;\n};\n\n// FloatxxArray[] array\narrays.minTypedArray = function (array) {\n var test, i,\n min = Number.MAX_VALUE,\n length = array.length;\n for (i = 0; i < length; i++) {\n test = array[i];\n min = test < min ? test : min;\n }\n return min;\n};\n\n// float[] array\narrays.maxAnyArray = function (array) {\n try {\n return Math.max.apply(Math, array);\n } catch (e) {\n if (e instanceof TypeError) {\n var test, i,\n max = Number.MIN_VALUE,\n length = array.length;\n for (i = 0; i < length; i++) {\n test = array[i];\n max = test > max ? test : max;\n }\n return max;\n }\n }\n};\n\n// float[] array\narrays.minAnyArray = function (array) {\n try {\n return Math.min.apply(Math, array);\n } catch (e) {\n if (e instanceof TypeError) {\n var test, i,\n min = Number.MAX_VALUE,\n length = array.length;\n for (i = 0; i < length; i++) {\n test = array[i];\n min = test < min ? test : min;\n }\n return min;\n }\n }\n};\n\narrays.average = function (array) {\n var i, acc = 0,\n length = array.length;\n for (i = 0; i < length; i++) {\n acc += array[i];\n }\n return acc / length;\n};\n\n/**\n Create a new array of the same type as 'array' and of length 'newLength', and copies as many\n elements from 'array' to the new array as is possible.\n\n If 'newLength' is less than 'array.length', and 'array' is a typed array, we still allocate a\n new, shorter array in order to allow GC to work.\n\n The returned array should always take the place of the passed-in 'array' in client code, and this\n method should not be counted on to always return a copy. If 'array' is non-typed, we manipulate\n its length instead of copying it. But if 'array' is typed, we cannot increase its size in-place,\n therefore must pas a *new* object reference back to client code.\n */\narrays.extend = function (array, newLength) {\n var extendedArray,\n Constructor,\n i;\n\n Constructor = arrays.constructor_function(array);\n\n if (Constructor === Array) {\n i = array.length;\n array.length = newLength;\n // replicate behavior of typed-arrays by filling with 0\n for (; i < newLength; i++) {\n array[i] = 0;\n }\n return array;\n }\n\n extendedArray = new Constructor(newLength);\n\n // prevent 'set' method from erroring when array.length > newLength, by using the (no-copy) method\n // 'subarray' to get an array view that is clamped to length = min(array.length, newLength)\n extendedArray.set(array.subarray(0, newLength));\n\n return extendedArray;\n};\n\narrays.remove = function (array, idx) {\n var constructor = arrays.constructor_function(array),\n rest;\n\n if (constructor !== Array) {\n throw new Error(\"arrays.remove for typed arrays not implemented yet.\");\n }\n\n rest = array.slice(idx + 1);\n array.length = idx;\n Array.prototype.push.apply(array, rest);\n\n return array;\n};\n\narrays.isArray = function (object) {\n if (object === undefined || object === null) {\n return false;\n }\n switch (Object.prototype.toString.call(object)) {\n case \"[object Array]\":\n case \"[object Float32Array]\":\n case \"[object Float64Array]\":\n case \"[object Uint8Array]\":\n case \"[object Uint16Array]\":\n case \"[object Uint32Array]\":\n case \"[object Uint8ClampedArray]\":\n case \"[object Int8Array]\":\n case \"[object Int16Array]\":\n case \"[object Int32Array]\":\n return true;\n default:\n return false;\n }\n};\n\nexport default arrays;\n","\n// For now, only defaultValue, readOnly and immutable\n// meta-properties are supported.\nimport arrays from 'arrays';\n\n\n// Create a new object, that prototypically inherits from the Error constructor.\n// It provides a direct information which property of the input caused an error.\nfunction ValidationError(prop, message) {\n this.prop = prop;\n this.message = message;\n}\nValidationError.prototype = new Error();\nValidationError.prototype.constructor = ValidationError;\n\nfunction isObject(prop) {\n // Note that typeof null is also equal to \"object\", so we have to check it.\n return prop !== null && typeof prop === \"object\";\n}\n\nfunction checkConflicts(input, propName, conflictingProps) {\n var i, len;\n for (i = 0, len = conflictingProps.length; i < len; i++) {\n if (input.hasOwnProperty(conflictingProps[i])) {\n throw new ValidationError(propName, \"Properties set contains conflicting properties: \" +\n conflictingProps[i] + \" and \" + propName);\n }\n }\n}\n\nfunction validateSingleProperty(propertyMetadata, prop, value, ignoreImmutable) {\n if (propertyMetadata.readOnly) {\n throw new ValidationError(prop, \"Properties set tries to overwrite read-only property \" + prop);\n }\n if (!ignoreImmutable && propertyMetadata.immutable) {\n throw new ValidationError(prop, \"Properties set tries to overwrite immutable property \" + prop);\n }\n // Use custom validate function defined in metadata if provided.\n return propertyMetadata.validate ? propertyMetadata.validate(value) : value;\n}\n\nexport default {\n\n // Basic validation.\n // Check if provided 'input' hash doesn't try to overwrite properties\n // which are marked as read-only or immutable. Don't take into account\n // 'defaultValue' as the 'input' hash is allowed to be incomplete.\n // It should be used *only* for update of an object.\n // While creating new object, use validateCompleteness() instead!\n validate: function(metadata, input, ignoreImmutable) {\n var result = {},\n prop, propMetadata;\n\n if (arguments.length < 2) {\n throw new Error(\"Incorrect usage. Provide metadata and hash which should be validated.\");\n }\n\n for (prop in input) {\n if (input.hasOwnProperty(prop)) {\n // Try to get meta-data for this property.\n propMetadata = metadata[prop];\n // Continue only if the property is listed in meta-data.\n if (typeof propMetadata !== \"undefined\") {\n input[prop] = validateSingleProperty(propMetadata, prop, input[prop], ignoreImmutable);\n if (propMetadata.conflictsWith) {\n checkConflicts(input, prop, propMetadata.conflictsWith);\n }\n result[prop] = input[prop];\n }\n }\n }\n return result;\n },\n\n validateSingleProperty: validateSingleProperty,\n\n propertyIsWritable: function(propertyMetadata) {\n // Note that immutable properties are writable, they just have to be\n return !propertyMetadata.readOnly;\n },\n\n propertyChangeInvalidates: function(propertyMetadata) {\n // Default to true for safety.\n if (typeof propertyMetadata.propertyChangeInvalidates === \"undefined\") {\n return true;\n }\n return !!propertyMetadata.propertyChangeInvalidates;\n },\n\n // Complete validation.\n // Assume that provided 'input' hash is used for creation of new\n // object. Start with checking if all required values are provided,\n // and using default values if they are provided.\n // Later perform basic validation.\n validateCompleteness: function(metadata, input, opts) {\n var result = {},\n includeOnlySerializedProperties = opts && opts.includeOnlySerializedProperties,\n prop, propMetadata, defVal;\n\n if (arguments.length < 2) {\n throw new Error(\"Incorrect usage. Provide metadata and hash which should be validated.\");\n }\n\n for (prop in metadata) {\n if (metadata.hasOwnProperty(prop)) {\n propMetadata = metadata[prop];\n // require explicit check for serialize === false, because the default value is true.\n if (includeOnlySerializedProperties && propMetadata.serialize === false) {\n continue;\n }\n\n defVal = propMetadata.defaultValue;\n\n if (typeof input[prop] === \"undefined\") {\n // Value is not declared in the input data.\n if (propMetadata.required === true) {\n throw new ValidationError(prop, \"Properties set is missing required property \" + prop);\n } else if (arrays.isArray(defVal)) {\n // Copy an array defined as a default value.\n // Do not use instance defined in metadata.\n result[prop] = arrays.copy(defVal, []);\n } else if (isObject(defVal)) {\n // Copy an object defined as a default value. Do not use instance defined in metadata.\n result[prop] = $.extend(true, {}, defVal);\n } else if (typeof defVal !== \"undefined\") {\n // If it's basic type, just set value.\n result[prop] = defVal;\n }\n } else if (!arrays.isArray(input[prop]) && isObject(input[prop]) && isObject(defVal)) {\n // Note that typeof [] is also \"object\" - that is the reason of the isArray() check.\n result[prop] = $.extend(true, {}, defVal, input[prop]);\n } else if (arrays.isArray(input[prop])) {\n // Deep copy of an array.\n result[prop] = $.extend(true, [], input[prop]);\n } else {\n // Basic type like number, so '=' is enough.\n result[prop] = input[prop];\n }\n }\n }\n\n // Perform standard check like for hash meant to update object.\n // However, ignore immutable check, as these properties are supposed\n // to create a new object.\n return this.validate(metadata, result, true);\n },\n\n // Expose ValidationError. It can be useful for the custom validation routines.\n ValidationError: ValidationError\n};\n","/**\n Tiny module providing global way to show errors to user.\n\n It's better to use module, as in the future, we may want to replace basic\n alert with more sophisticated solution (for example jQuery UI dialog).\n*/\nimport console from 'common/console';\n // Try to use global alert. If it's not available, use console.error (node.js).\n const alertFunc = typeof window.alert !== 'undefined' ? window.alert : console.error;\n\nexport default function(msg) {\n alertFunc(msg);\n}\n","var structuredClone = require('./structured-clone');\n\n/**\n Call as:\n new ParentEndpoint(targetWindow, targetOrigin, afterConnectedCallback)\n targetWindow is a WindowProxy object. (Messages will be sent to it)\n\n targetOrigin is the origin of the targetWindow. (Messages will be restricted to this origin)\n\n afterConnectedCallback is an optional callback function to be called when the connection is\n established.\n\n OR (less secure):\n new ParentEndpoint(targetIframe, afterConnectedCallback)\n\n targetIframe is a DOM object (HTMLIframeElement); messages will be sent to its contentWindow.\n\n afterConnectedCallback is an optional callback function\n\n In this latter case, targetOrigin will be inferred from the value of the src attribute of the\n provided DOM object at the time of the constructor invocation. This is less secure because the\n iframe might have been navigated to an unexpected domain before constructor invocation.\n\n Note that it is important to specify the expected origin of the iframe's content to safeguard\n against sending messages to an unexpected domain. This might happen if our iframe is navigated to\n a third-party URL unexpectedly. Furthermore, having a reference to Window object (as in the first\n form of the constructor) does not protect against sending a message to the wrong domain. The\n window object is actualy a WindowProxy which transparently proxies the Window object of the\n underlying iframe, so that when the iframe is navigated, the \"same\" WindowProxy now references a\n completely differeent Window object, possibly controlled by a hostile domain.\n\n See http://www.esdiscuss.org/topic/a-dom-use-case-that-can-t-be-emulated-with-direct-proxies for\n more about this weird behavior of WindowProxies (the type returned by ';\n\n/**\n * Share Dialog. Inherits from Basic Dialog.\n *\n * @constructor\n */\nfunction ShareDialog(parentSelector, interactiveContainerSelector, i18n, interactive) {\n var hash = location.hash,\n originMatch = location.href.match(/(.*?\\/\\/.*?)\\//),\n // Origin might not be available when Lab is running in iframe using srcdoc attr.\n origin = originMatch && originMatch[1],\n embeddablePath = location.pathname;\n\n BasicDialog.call(this, {\n dialogClass: \"share-dialog\",\n appendTo: parentSelector\n }, i18n);\n\n /** @private */\n this._view = {\n paste_html: i18n.t(\"share_dialog.paste_html\"),\n select_size: i18n.t(\"share_dialog.select_size\"),\n size_larger: i18n.t(\"share_dialog.size_larger\", {\n val: 50\n }),\n size_actual: i18n.t(\"share_dialog.size_actual\"),\n size_smaller: i18n.t(\"share_dialog.size_smaller\", {\n val: 30\n }),\n copyright: getCopyright(i18n)\n };\n this._i18n = i18n;\n\n if (labConfig.homeForSharing) {\n this._view.embeddableSharingUrl = labConfig.homeForSharing + labConfig.homeEmbeddablePath + hash;\n } else if (origin) {\n this._view.embeddableSharingUrl = origin + embeddablePath + hash;\n } else {\n // In this case sharing should be disabled. But if it's not, just provide anything.\n this._view.embeddableSharingUrl = \"\";\n }\n\n var link = \"\" + i18n.t(\"share_dialog.link\") + \"\";\n this._view.paste_email_im = i18n.t(\"share_dialog.paste_email_im\", {\n link: link\n });\n\n this.setContent(mustache.render(shareDialogTpl, this._view));\n\n /** @private */\n this._$interactiveContainer = $(interactiveContainerSelector);\n /** @private */\n this._$iframeSize = this.$element.find(\"#iframe-size\");\n /** @private */\n this._$iframeContent = this.$element.find(\"#share-iframe-content\");\n\n this._$iframeSize.on('change', $.proxy(this.updateIframeSize, this));\n this.updateIframeSize();\n\n if (interactive) {\n this.update(interactive);\n }\n}\ninherit(ShareDialog, BasicDialog);\n\n/**\n * Updates size of the Interactive iframe in the share dialog.\n */\nShareDialog.prototype.updateIframeSize = function() {\n var actualWidth = this._$interactiveContainer.innerWidth(),\n actualHeight = this._$interactiveContainer.innerHeight(),\n sizeChoice = this._$iframeSize.val();\n\n switch (sizeChoice) {\n case \"smaller\":\n this._view.width = Math.floor(actualWidth * 0.7);\n this._view.height = Math.floor(actualHeight * 0.7);\n break;\n case \"larger\":\n this._view.width = Math.floor(actualWidth * 1.5);\n this._view.height = Math.floor(actualHeight * 1.5);\n break;\n default:\n this._view.width = actualWidth;\n this._view.height = actualHeight;\n break;\n }\n\n this._$iframeContent.val(mustache.render(iframeTpl, this._view));\n};\n\n/**\n * Updates dialog content using interactive JSON definition.\n *\n * @param {Object} interactive Interactive JSON definition.\n */\nShareDialog.prototype.update = function(interactive) {\n this.set(\"title\", this._i18n.t(\"share_dialog.title\", {\n interactive_title: interactive.title\n }));\n};\n\nexport default ShareDialog;\n","export default \"
\\n

\\n {{{credits_text}}}\\n

\\n {{#showShareable}}\\n

\\n {{{find_shareable}}}\\n

\\n {{/showShareable}}\\n {{{copyright}}}\\n
\\n\";","import labConfig from 'lab.config';\nimport mustache from 'mustache';\nimport markdownToHTML from 'common/markdown-to-html';\nimport inherit from 'common/inherit';\nimport BasicDialog from 'common/controllers/basic-dialog';\nimport getCopyright from 'common/controllers/copyright';\nimport creditsDialogTpl from 'common/controllers/credits-dialog.tpl';\n\nvar CONCORD_URL = 'https://concord.org',\n NEXT_GEN_URL = 'http://mw.concord.org/nextgen/';\n\n/**\n * Credits Dialog. Inherits from Basic Dialog.\n *\n * @constructor\n */\nfunction CreditsDialog(parentSelector, i18n, interactive) {\n BasicDialog.call(this, {\n dialogClass: \"credits-dialog\",\n appendTo: parentSelector\n }, i18n);\n this._i18n = i18n;\n if (interactive) {\n this.update(interactive)\n }\n}\ninherit(CreditsDialog, BasicDialog);\n\n/**\n * Updates dialog content using interactive JSON definition.\n *\n * @param {Object} interactive Interactive JSON definition.\n */\nCreditsDialog.prototype.update = function(interactive) {\n var hash = document.location.hash,\n originMatch = document.location.href.match(/(.*?\\/\\/.*?)\\//),\n // Origin might not be available when Lab is running in iframe using srcdoc attr.\n origin = originMatch && originMatch[1],\n embeddablePath = document.location.pathname,\n i18n = this._i18n,\n concordUrl = CONCORD_URL,\n nextGenUrl = NEXT_GEN_URL,\n interactiveCreditsUrl,\n utmString;\n\n this.set(\"title\", this._i18n.t(\"credits_dialog.title\", {\n interactive_title: interactive.title\n }));\n\n if (labConfig.homeForSharing) {\n interactiveCreditsUrl = labConfig.homeForSharing + labConfig.homeEmbeddablePath + hash;\n } else if (origin) {\n interactiveCreditsUrl = origin + embeddablePath + hash;\n } else {\n // In this case sharing should be disabled. But if it's not, just provide anything.\n interactiveCreditsUrl = \"\";\n }\n\n if (labConfig.utmCampaign) {\n utmString = \"utm_source=\" + encodeURIComponent(interactive.title.replace(/ /gi, \"+\")) +\n \"&utm_medium=embedded_interactive&utm_campaign=\" + labConfig.utmCampaign;\n concordUrl += \"?\" + utmString;\n nextGenUrl += \"?\" + utmString;\n interactiveCreditsUrl += \"?\" + encodeURI(\"utm_source=embed_link&utm_medium=embedded_interactive&utm_campaign=\" + labConfig.utmCampaign);\n }\n\n var view = {\n // Content of the credits dialog. If it's not specified, the default, translatable text will be used.\n credits_text: interactive.credits ? markdownToHTML(interactive.credits) : i18n.t(\"credits_dialog.credits_text\", {\n CC_link: \"Concord Consortium\",\n Next_Gen_MW_link: \"Next-Generation Molecular Workbench\",\n Google_link: \"Google.org\"\n }),\n find_shareable: i18n.t(\"credits_dialog.find_shareable\", {\n shareable_ver_link: '' + i18n.t('credits_dialog.shareable_ver') + '',\n concord_org_link: 'concord.org'\n }),\n copyright: getCopyright(i18n)\n };\n\n if (!labConfig.sharing) {\n view.showShareable = true;\n }\n\n this.setContent(mustache.render(creditsDialogTpl, view));\n};\n\nexport default CreditsDialog;\n","export default {\n \"model-only\": [],\n \"simple\": [{\n \"id\": \"top\",\n \"bottom\": \"model.top\",\n \"width\": \"interactive.width\"\n }, {\n \"id\": \"right\",\n \"top\": \"model.top\",\n \"left\": \"model.right\",\n \"height\": \"model.height\",\n \"padding-left\": \"1em\",\n \"padding-right\": \"0.5em\"\n }, {\n \"id\": \"bottom\",\n \"top\": \"model.bottom\",\n \"width\": \"interactive.width\",\n \"padding-top\": \"0.5em\"\n }],\n \"narrow-right\": [{\n \"id\": \"top\",\n \"bottom\": \"model.top\",\n \"width\": \"interactive.width\"\n }, {\n \"id\": \"right\",\n \"top\": \"model.top\",\n \"left\": \"model.right\",\n \"height\": \"model.height\",\n \"padding-left\": \"1em\",\n \"padding-right\": \"0.5em\",\n \"width\": \"model.width / 4\",\n \"min-width\": \"6em\"\n }, {\n \"id\": \"bottom\",\n \"top\": \"model.bottom\",\n \"width\": \"interactive.width\",\n \"padding-top\": \"0.5em\"\n }],\n \"wide-right\": [{\n \"id\": \"top\",\n \"bottom\": \"model.top\",\n \"width\": \"interactive.width\"\n }, {\n \"id\": \"right\",\n \"top\": \"model.top\",\n \"left\": \"model.right\",\n \"height\": \"model.height\",\n \"padding-left\": \"1em\",\n \"padding-right\": \"0.5em\",\n \"width\": \"model.width\",\n \"min-width\": \"6em\"\n }, {\n \"id\": \"bottom\",\n \"top\": \"model.bottom\",\n \"width\": \"interactive.width\",\n \"padding-top\": \"0.5em\"\n }],\n \"left-right-bottom\": [{\n \"id\": \"left\",\n \"top\": \"model.top\",\n \"height\": \"model.height\",\n \"right\": \"model.left\",\n \"padding-right\": \"0.5em\"\n }, {\n \"id\": \"right\",\n \"top\": \"model.top\",\n \"height\": \"model.height\",\n \"left\": \"model.right\",\n \"padding-left\": \"1em\",\n \"padding-right\": \"0.5em\"\n }, {\n \"id\": \"bottom\",\n \"top\": \"model.bottom\",\n \"left\": \"model.left\",\n \"width\": \"model.width\"\n }]\n};\n","var nowFunc,\n scope,\n enabled = false;\n\nif (typeof performance !== 'undefined' && typeof performance.now !== 'undefined') {\n nowFunc = performance.now.bind(performance);\n} else {\n nowFunc = Date.now.bind(Date);\n}\n\nexport default {\n /**\n * window.performance.now or Date.now when performance.now is not available.\n * @type {Function}\n */\n now: nowFunc,\n\n collectData: function(v) {\n enabled = v;\n // Reset data each time when data collection is being started.\n if (enabled) scope = {};\n },\n\n enterScope: function(name) {\n if (enabled) {\n var s = scope[name];\n if (s === undefined) {\n s = scope[name] = {\n lastTime: 0,\n timeSum: 0,\n count: 0\n };\n }\n s.lastTime = nowFunc();\n }\n },\n\n leaveScope: function(name) {\n if (enabled) {\n var s = scope[name];\n if (s !== undefined) {\n s.timeSum += nowFunc() - s.lastTime;\n s.count += 1;\n }\n }\n },\n\n getAvgTime: function(name) {\n var s = scope[name];\n if (s !== undefined) {\n return s.timeSum / s.count;\n }\n return 0;\n },\n\n getAvgFreq: function(name) { // in Hz\n var s = scope[name];\n if (s !== undefined) {\n return s.count * 1000 / s.timeSum;\n }\n return 0;\n }\n};\n","import seedrandom from 'seedrandom';\nimport performance from 'common/performance';\n\nfunction ModelController(modelUrl, modelOptions, interactivesController,\n Model, ModelContainer, ScriptingAPI, Benchmarks) {\n var controller,\n model,\n benchmarks,\n modelContainer,\n\n // Used to track cause of model reset, if known; required to be kept in this closure because\n // it doesn't get passed directly to our model.reset handler\n resetCause,\n\n // event dispatcher\n dispatch = d3.dispatch('modelLoaded', 'modelReset', 'modelSetupComplete');\n\n function tickStartHandler() {\n // Use seedrandom library (see vendor/seedrandom) that substitutes an explicitly seeded\n // RC4-based algorithm for Math.random(). When interactive random seed is constant, it ensures\n // that simulations will look the same for different users even if physics engine uses random\n // values. Note that we set seed each tick to be sure that it's always the same before\n // performing simulation step. Otherwise, it's possible that simulations won't be repeatable\n // if e.g. user uses tick history or triggers any code path that calls Math.random()\n // between ticks.\n // Note that event if .randomSeed is based on entropy (so, it's almost random), this still\n // ensures that e.g. when users steps back in tick history and clicks play, he will see\n // the same results like for the first time.\n Math.seedrandom = seedrandom(interactivesController.randomSeed + model.get(\"time\"));\n }\n\n function tickHandler() {\n performance.enterScope(\"js-rendering\");\n controller.modelContainer.update();\n performance.leaveScope(\"js-rendering\");\n }\n\n // ------------------------------------------------------------\n //\n // Model Setup\n // ------------------------------------------------------------\n function setupModel() {\n model = new Model(modelOptions, {\n waitForSetup: true,\n i18n: interactivesController.i18n\n });\n model.on('tickStart.modelController', tickStartHandler);\n model.on('tick.modelController', tickHandler);\n model.on('reset.modelController', resetHandler);\n }\n\n function resetHandler() {\n // Just use the generic cause, \"reset\", if no more specific cause of the model reset is\n // available.\n resetCause = resetCause || ModelController.RESET_CAUSE.RESET;\n modelContainer.repaint();\n dispatch.modelReset(resetCause);\n }\n\n /**\n Note: newModelConfig, newinteractiveViewConfig are optional. Calling this without\n arguments will simply reload the current model.\n */\n // REF TODO rename to load\n function reload(newModelUrl, newModelOptions, suppressEvents) {\n // Since we won't call model.reset() (instead, we will discard the model) we need to make sure\n // that the model knows to dispatch a willReset event.\n if (model && model.willReset) {\n model.willReset();\n }\n\n modelUrl = newModelUrl || modelUrl;\n modelOptions = newModelOptions || modelOptions;\n setupModel();\n\n if (modelContainer) {\n modelContainer.bindModel(model, modelUrl);\n } else {\n modelContainer = new ModelContainer(model, controller.modelUrl, interactivesController.i18n);\n }\n\n if (!suppressEvents) {\n dispatch.modelLoaded(ModelController.LOAD_CAUSE.RELOAD);\n }\n\n }\n\n // ------------------------------------------------------------\n //\n // Public methods\n //\n // ------------------------------------------------------------\n\n controller = {\n\n get type() {\n return Model.type;\n },\n get benchmarks() {\n return benchmarks;\n },\n get modelUrl() {\n return modelUrl;\n },\n get model() {\n return model;\n },\n get modelContainer() {\n return modelContainer;\n },\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n getViewContainer: function() {\n return controller.modelContainer.$el;\n },\n\n getHeightForWidth: function(width, fontSizeChanged) {\n return controller.modelContainer.getHeightForWidth(width, fontSizeChanged);\n },\n\n /**\n Initializes the model-type-specific renderer within the model container and asks it to\n render.\n\n The model will not be rendered to the screen until this method is called. For their part,\n renderers should ignore render() and repaint() calls before they have been setup by calling\n this method.\n\n Call this when the when the model is ready to be rendered (ie the container has been laid\n out and resized) and again after a new model has been bound to the container and\n has been initialized to the point that it is ready to render.\n */\n initializeView: function() {\n controller.modelContainer.setup();\n controller.modelContainer.repaint();\n },\n\n resize: function() {\n controller.modelContainer.resize();\n },\n\n repaint: function() {\n controller.modelContainer.repaint();\n },\n\n updateView: function() {\n controller.modelContainer.update();\n },\n\n reload: reload,\n\n reset: function(cause) {\n model.stop();\n // use the resetCause closure var to make the cause (which the model doesn't know about)\n // available to resetHandler()\n resetCause = cause;\n model.reset();\n resetCause = undefined;\n },\n\n state: function() {\n return model.serialize();\n },\n\n ScriptingAPI: ScriptingAPI,\n\n enableKeyboardHandlers: function() {\n return model.get(\"enableKeyboardHandlers\");\n }\n };\n\n // ------------------------------------------------------------\n //\n // Initial setup of this modelController:\n //\n // ------------------------------------------------------------\n\n // REF TODO ugly\n if (modelOptions != null) {\n setupModel();\n }\n\n // publish model so it can be inspected at console\n window.getModel = function() {\n return model;\n };\n\n benchmarks = typeof Benchmarks === \"function\" ? new Benchmarks(controller) : [];\n return controller;\n}\n\nModelController.LOAD_CAUSE = {\n RELOAD: 'reload',\n INITIAL_LOAD: 'initialLoad'\n};\n\nModelController.RESET_CAUSE = {\n RESET: 'reset'\n};\n\nexport default ModelController;\n","import arrays from \"arrays\";\n\nconst infinityToString = function (obj) {\n var i, len;\n if (arrays.isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (obj[i] === Infinity || obj[i] === -Infinity) {\n obj[i] = obj[i].toString();\n }\n }\n } else {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (obj[i] === Infinity || obj[i] === -Infinity) {\n obj[i] = obj[i].toString();\n }\n if (typeof obj[i] === \"object\" || arrays.isArray(obj[i])) {\n infinityToString(obj[i]);\n }\n }\n }\n }\n};\n\nexport default function serialize(metaData, propertiesHash, count) {\n var result = {},\n propName, prop;\n for (propName in metaData) {\n if (metaData.hasOwnProperty(propName)) {\n if (propertiesHash[propName] !== undefined && metaData[propName].serialize !== false) {\n prop = propertiesHash[propName];\n if (arrays.isArray(prop)) {\n result[propName] = arrays.copy(prop, [], count);\n } else if (typeof prop === \"object\" && prop !== null) {\n result[propName] = $.extend(true, {}, prop);\n } else {\n result[propName] = prop;\n }\n }\n }\n }\n // JSON doesn't allow Infinity values so convert them to strings.\n infinityToString(result);\n // TODO: to make serialization faster, replace arrays.copy(prop, [])\n // with arrays.clone(prop) to use typed arrays whenever they are available.\n // Also, do not call \"infinityToString\" function. This can be useful when\n // we decide to use serialization in tick history manager.\n // Then we can provide toString() function which will use regular arrays,\n // replace each Infinity value with string and finally call JSON.stringify().\n return result;\n}\n"," /**\n\n This module provides support which Lab model types can use to implement observable properties that\n have custom getters, setters, and validation. It is specialized for the needs of interactive,\n computationally intensive simulations which want to enable UI bindings to simulation-state\n variables that evolve in time and change at potentially every clock tick.\n\n For example, if the model object using PropertySupport is 'model':\n\n > model.addObserver('kineticEnergy', function() { console.log(model.properties.kineticEnergy); })\n > model.start()\n 3.10225948103683\n 3.102259509874652\n 3.1022595094558194\n ...\n > model.addObserver('property', function() { console.log('property changed!'); })\n > model.properties.property = 1\n property changed!\n > model.properties.property\n 1\n\n Or, using the \"legacy\" interface:\n\n > model.addObserver('kineticEnergy', function() { console.log(model.get('kineticEnergy'); })\n > model.start()\n 3.10225948103683\n 3.102259509874652\n 3.1022595094558194\n ...\n > model.addObserver('property', function() { console.log('property changed!'); })\n > model.set('property', 1)\n property changed!\n > model.get('property')\n 1\n\n The design of this module differs in several ways than the property support implemented by general\n web MVC frameworks such as Backbone, Ember, and Angular.\n\n First, we assume that the properties module is used to enable UI binding and state saving for a\n simulation engine which has its own internal data structures and which executes many iterations of\n its inner loop between each screen refresh. As a result, we must assume that any computed property\n can change between \"clock ticks\" and that most computed properties are not simple functions of\n the value of other properties. Therefore we provide mechanisms that must be explicitly invoked by\n the model to synchronize the engine's internal state to the exposed property values when the\n engine considers it appropriate to do so.\n\n Second, we assume that the most properties are numbers that represent physical quantities that\n either parameterize the simulation or are computed by it.\n\n Third, we assume that, the simulation may need to save and restore the values of a subset of\n properties outside the usual setter/getter cycle. Specifically, we allow the simulation to define\n two subsets of properties: one that represents the entire set of properties required to restore\n the state of the model, for use when saving the model to storage; and a smaller subset of\n properties that represent the time-varying state of the model, for use when rewinding or fast-\n forwarding the model while it retains the remainder of its state in memory.\n\n*/\n// If at all possible, avoid adding dependencies to this module.\n\n// These are the properties that can be passed as the 'descriptor' argument to defineProperty.\nvar descriptorProperties = {\n\n /**\n A getter function that will be executed whenever the value of this property is read.\n\n Use this, for example, to make a property reflect internal state of the simulation.\n\n The property will be considered a \"computed property\" if and only if it has a getter. The\n return value of the getter is considered the \"raw\" property value and will be passed through\n the afterGetTransform, if one is defined, to generate the final value of the property.\n\n The (untransformed) raw getter value will be cached unless the enableCaching property of the\n propertySupport object is false. The cache can be cleared by calling the\n deleteComputedPropertyCachedValues method of the propertySupport object. The caching normally\n occurs lazily, but paired calls to the storeComputedProperties and\n notifyChangedComputedProperties methods of the propertySupport object cause all properties\n with getters to be computed and then recomputed, triggering notification of the observers of\n properties whose value changed between the calls.\n\n Optional.\n */\n get: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A setter function that will be executed when the value of this property is assigned.\n\n Use this, for example, to modify simulation state when the property is changed.\n\n Note that this function is not required to store the value in any way; a corresponding getter\n does not need to be defined, although one could be. This setter is normally executed just to\n make sure the correct side effects occur when a property assignment is made.\n\n The value received by this function is a \"raw\" value. That is, if the value of this property\n is set \"normally\", then the value is first passed through the beforeSetTransform, if one is\n defined, and the transformed value is passed to this function. (If that sounds backwards,\n consider \"raw\" values to be of the type operated on by the simulation engine; transformed\n values are what are visible in the user interface.)\n\n The set function is called whenever a normal assignment is made to the property, but it may or\n may not be called when the property value is set \"behind the scenes\" by the setRawValues\n method. It will be called if and onlyh if this property key is present in the hash sent to\n setRawValues *and* the invokeSetterAfterBulkRestore descriptor value for this property is\n true.\n\n This is useful for distinguishing between properties whose setters must manipulate private\n state variables when they are called, and properties whose setter action operates entirely\n by setting publicly visible\n */\n set: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A function that will be called with the new, \"raw\" value of this property whenever the\n property is assigned to.\n\n This function *must* return input value if it is correct. If the value is invalid,\n the validate function should throw an exception. Note that custom validate function\n can be used to autmatically \"fix\" the value (e.g. change lower case to upper case or\n do any other transformation related to notation of the value).\n\n The validate function is *not* called when the property value is set via setRawValues.\n */\n validate: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A callback that is called before assignment to the property. (Exception: it is not called\n when the value is set via the setRawValues method of propertySupport.)\n\n Use this to detect changes which may cause other property values to need to be updated.\n\n For convenience, the property key is passed to the callback. The callback's return value is\n discarded.\n */\n beforeSetCallback: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A callback that is called after assignment to the property. (Exception: it is not called\n when the value is set via the setRawValues method of propertySupport.)\n\n Use this to detect changes which may cause other property values to need to be updated.\n\n For convenience, the property key is passed to the callback. The callback's return value is\n discarded.\n */\n afterSetCallback: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A function that is called with the return value of the get method whenever this property value\n is read. The value returned by this function is returned as the value of the property.\n\n If the transform is not defined, no transform is applied and the value of the property is\n simply the value returned by the get method.\n\n The expected use of this transform (and the associated beforeSetTransform) is to allow the\n same simulation engine to appear to operate at different length scales. Currently, the MD2D\n engine uses afterGetTransforms to convert values that are nominally in microscopic units (nm,\n for example) to values in a macroscopic unit system (m).\n */\n afterGetTransform: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A function that is called to transform the property value to a \"raw\" value which is passed to\n the set function whenever this property is assigned to.\n\n If the transform is not defined, no transform is applied and the value that is assigned to the\n property is the value that is passed to the set method.\n */\n beforeSetTransform: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n If true, the property is considered read-only (and, practically speaking, must have a getter).\n\n Attempts to assign to the property will throw an error whether the property is directly\n assigned to or a value for the property is passed to the setRawValues method of the\n propertySupport object.\n\n Note that the native 'writable' property of ES5 Object descriptors does not apply to accessor\n properties (those with setters and getters, such as we construct in this module).\n */\n writable: {\n defaultValue: true,\n type: 'boolean'\n },\n\n /**\n If true, then the raw value of this property will be included in historyStateRawValues hash.\n */\n includeInHistoryState: {\n defaultValue: false,\n type: 'boolean'\n },\n\n /**\n If true, and this property's descriptor also includes a set function, then the set function\n will be called when the value of this property is updated via the setRawValues method of the\n PropertySupport object.\n\n If false, setRawValues will update the property without calling the set method.\n\n It is useful to set this to false for properties whose setter action operates entirely by\n directly or indirectly manipulating other properties. When setRawValues is used to restore the\n value of those properties during navigation of simulation history, it would be undesirable to\n repeat the setter action as it is entirely accounted for by the value of the other properties.\n */\n invokeSetterAfterBulkRestore: {\n defaultValue: true,\n type: 'boolean'\n },\n\n /**\n A string that represents the user-defined categorization of this property.\n\n When the propertySupport object is initialized, it can be passed a list of strings\n containing the different property types the engine wishes to use to categorize its properties.\n\n PRopertySupport mixes into its target object a method called propertiesOfType which can be\n used to filter the set of properties by category\n\n (For example, MD2D defines \"mainProperties\", \"viewOptions\", \"parameters\", and \"outputs\")\n */\n type: {\n defaultValue: undefined,\n type: 'propertyType'\n },\n\n /**\n An arbitrary object that will be returned when this property's key is passed to the\n getPropertyDescription method of the target object.\n\n Use this (possibly combined with enumeration and categorization of properties) to expose the\n list of properties to client code for use by e.g,. a UI builder or live scripting help.\n */\n description: {\n defaultValue: undefined\n }\n};\n\nfunction validateIsType(type, propertyKey, value) {\n // This is sufficient for functions and strings, which is all we test for.\n if (typeof value !== type) {\n throw new TypeError(propertyKey + \" must be a \" + type + \".\");\n }\n}\n\nfunction copy(a) {\n var ret = [];\n a.forEach(function(item) {\n ret.push(item);\n });\n return ret;\n}\n\n// Constructs a propertySupport object for use by client code. Client code (e.g., models) can maintain a\n// private reference to the propertySupport objectg and delegate property handling to it, and they\n// can optionally call the mixInto method of the propertySupport method to mix in a useful set of\n// public-facing methods and properties.\n\n// Accepts an args object with an optional 'types' arg, which should be a list of strings that\n// represent user-defined categories of properties.\nexport default function PropertySupport(args) {\n\n var propertyTypes = args && args.types && copy(args.types) || [],\n propertyInformation = {},\n cachedPropertiesObjects = {\n all: undefined,\n byType: {}\n },\n cachingIsEnabled = true,\n notificationsAreBatched = false,\n\n dispatch = d3.dispatch(\"beforeInvalidatingChange\",\n \"afterInvalidatingChange\",\n \"afterInvalidatingChangeSequence\"),\n\n invalidatingChangeNestingLevel = 0,\n invalidatingChangeOccurredDuringBatch,\n suppressInvalidationForBatch = false,\n\n // all properties that were notified while notifications were batched\n changedPropertyKeys = [],\n\n // all properties with a getter\n computedPropertyKeys = [],\n\n // all properties for which includeInHistoryState is true\n historyStatePropertyKeys = [],\n\n // public API\n api;\n\n\n // observed properties with a getter\n function observedComputedPropertyKeys() {\n return computedPropertyKeys.filter(function(key) {\n return propertyInformation[key].observers.length > 0;\n });\n }\n\n function validateIsPropertyType(value) {\n if (propertyTypes.indexOf(value) < 0) {\n throw new TypeError(value + \" is not a recognized property type.\");\n }\n }\n\n // Copy the properties described in descriptorProperties from 'descriptor' to return value;\n // validate each value of descriptor according to descriptorProperties[key].type and,\n // if no value is supplied for a given key in 'descriptor' use the default value specified\n // in descriptorProperties[key].default\n function validateDescriptor(descriptor) {\n var ret = {};\n\n Object.keys(descriptorProperties).forEach(function(key) {\n var descriptorProperty = descriptorProperties[key];\n\n if (descriptor[key] !== undefined) {\n ret[key] = descriptor[key];\n switch (descriptorProperty.type) {\n case 'boolean':\n ret[key] = !!ret[key];\n break;\n case 'function':\n validateIsType('function', key, descriptor[key]);\n break;\n case 'string':\n validateIsType('string', key, descriptor[key]);\n break;\n case 'propertyType':\n validateIsPropertyType(descriptor[key]);\n break;\n }\n } else {\n ret[key] = descriptorProperty.defaultValue;\n }\n });\n\n return ret;\n }\n\n // Given a list of callbacks, invoke each one in order, but skip repeats.\n function notifyCallbacksOnce(callbacks) {\n var called = [];\n callbacks.forEach(function(callback) {\n // TODO: explore ES6 Map/WeakMap shim that would allow this check to happen in O(1)\n if (called.indexOf(callback) < 0) {\n callback();\n called.push(callback);\n }\n });\n }\n\n // Execute closure after setting a flag which causes the notify function to queue a list of\n // notified properties, rather than notifying their observers immediately. After the closure\n // finishes, notify the observers, making sure to call each callback at most once.\n function withBatchedNotifications(closure) {\n var callbacks = [];\n\n notificationsAreBatched = true;\n closure();\n notificationsAreBatched = false;\n\n changedPropertyKeys.forEach(function(key) {\n propertyInformation[key].observers.forEach(function(callback) {\n callbacks.push(callback);\n });\n });\n changedPropertyKeys = [];\n notifyCallbacksOnce(callbacks);\n }\n\n // Notify observers of the passed-in property immediately if notifications are not batched\n // (see withBatchedNotifications), or else queue the passed-in property key for later\n // notification\n function notify(key) {\n if (notificationsAreBatched) {\n changedPropertyKeys.push(key);\n } else {\n notifyCallbacksOnce(propertyInformation[key].observers);\n }\n }\n\n // Note this does not respect batched notifications, as property descriptions are not expected\n // to be updated en masse during an engine tick as are property values.\n function notifyPropertyDescriptionObservers(key) {\n notifyCallbacksOnce(propertyInformation[key].propertyDescriptionObservers);\n }\n\n // Private implementation of the getter for the property specified by 'key'. Handles caching\n // concerns, but not afterGetTransform, etc.\n function get(key) {\n var info = propertyInformation[key];\n\n if (!info.descriptor.get) {\n return info.cachedValue;\n }\n\n if (cachingIsEnabled) {\n if (!info.hasCachedValue) {\n info.hasCachedValue = true;\n info.cachedValue = info.descriptor.get();\n }\n return info.cachedValue;\n }\n return info.descriptor.get();\n }\n\n // Private implementation of the setter for the property specified by 'key'. Handles caching\n // and the writable check (which, remember, is always applied) but does not handle observer\n // notification, validation, the beforeSetTransform, or beforeSet/afterSet callbacks.\n function set(key, value) {\n var info = propertyInformation[key];\n\n if (!info.descriptor.writable) {\n throw new Error(\"Attempt to set read-only property \" + key);\n }\n\n if (info.descriptor.get && !cachingIsEnabled) {\n info.hasCachedValue = false;\n } else {\n info.hasCachedValue = true;\n info.cachedValue = value;\n }\n }\n\n function setPropertyDescription(key, description) {\n var info = propertyInformation[key];\n\n info.descriptor.description = description;\n notifyPropertyDescriptionObservers(key);\n }\n\n function invalidateCachedPropertiesObjects(type) {\n cachedPropertiesObjects.all = undefined;\n if (type) {\n cachedPropertiesObjects.byType[type] = undefined;\n }\n }\n\n // This is the meat. Adds an enumerable property to the properties object returned by the\n // propertySupport object, with custom getters and setters that implement the behavior supported\n // by this module.\n function constructProperty(object, key) {\n var info = propertyInformation[key];\n\n Object.defineProperty(object, key, {\n enumerable: true,\n configurable: false,\n\n // This is the publicly-accessible getter for the property. This is invoked whenever the\n // property is read via code such as `var value = model.properties[key]`, or when the `get`\n // method mixed into the target is called (this might look like `model.get(key)`). It is\n // not invoked when a 'raw values' hash is constructed by the historyStateRawValues or\n // rawValues property accessors.\n get: function() {\n var value = get(key);\n if (info.descriptor.afterGetTransform) {\n value = info.descriptor.afterGetTransform(value);\n }\n return value;\n },\n\n // This is the publicly-accessible setter for the property. It is invoked whenever the\n // property is assigned to via code such as `model.properties[key] = value;`, or when the\n // `set` method mixed into the target is called (this might look like `model.set(key,\n // value)`). It is never invoked when the setRawValues method of the propertySupport object\n // is called.\n //\n // If beforeSetCallback or afterSetCallback properties have been defined on propertySupport,\n // then they will be called, respectively, before and after the body of this function\n // executes. Note again that setRawValues bypasses these callbacks.\n set: function(value) {\n if (info.descriptor.beforeSetCallback) {\n info.descriptor.beforeSetCallback();\n }\n\n if (info.descriptor.beforeSetTransform) {\n value = info.descriptor.beforeSetTransform(value);\n }\n if (info.descriptor.validate) {\n value = info.descriptor.validate(value);\n }\n\n set(key, value);\n\n if (info.descriptor.set) {\n info.descriptor.set(value);\n }\n\n if (info.descriptor.afterSetCallback) {\n info.descriptor.afterSetCallback();\n }\n\n notify(key);\n }\n });\n }\n\n // Private support for the `properties` and `propertiesOfType` accessor and method of the\n // propertySupport object. Returns the cached properties object if one exists, or constructs a\n // new one. Note that adding a property to the list of properties invalidates the cached object,\n // forcing construction of a new one when it is requested.\n function getPropertiesObject(type) {\n var object = type ? cachedPropertiesObjects.byType[type] : cachedPropertiesObjects.all;\n\n if (!object) {\n object = {};\n Object.keys(propertyInformation).forEach(function(key) {\n if (!type || type === propertyInformation[key].descriptor.type) {\n constructProperty(object, key);\n }\n });\n\n if (Object.seal) {\n Object.seal(object);\n }\n\n if (type) {\n cachedPropertiesObjects.byType[type] = object;\n } else {\n cachedPropertiesObjects.all = object;\n }\n }\n return object;\n }\n\n // The public methods and properties of the propertySupport object\n api = {\n\n /**\n Mixes a useful set of methods and properties into the target object. Lab models are expected\n to provide themselves as the target, i.e., mix these methods/properties into themselves.\n */\n mixInto: function(target) {\n\n /**\n The 'properties' property mixed into 'target' is a sealed Object whose enumerable\n properties are all the properties defined by calls to the defineProperty method of the\n propertySupport object. Creating this object is the main feature of the PropertySupport\n module.\n\n Reading the value of a computed property of the 'properties' object causes that value to\n be cached, unless the `enableCaching` property of the propertySupport object is false. The\n cached value is returned on subsequent reads, unless `enableCaching` is set to false,\n or `deleteComputedPropertyCachedValues` is called.\n\n Assigning to a property of the 'properties' object always triggers the observers of that\n property, if any.\n\n Because the 'properties' object is sealed, if `defineProperty` is subsequently called, the\n value of the 'properties' property will be updated to a new object containing the updated\n set of properties.\n */\n Object.defineProperty(target, 'properties', {\n configurable: false,\n enumerable: true,\n get: getPropertiesObject\n });\n\n /**\n The 'propertiesOfType' method mixed in to 'target' returns a sealed Object whose\n enumerable properties are all the properties defined by calls to the defineProperty\n method with the value 'type' as the type descriptor option.\n\n These properties behave the same as properties of the 'properties' object.\n */\n target.propertiesOfType = function(type) {\n return getPropertiesObject(type);\n };\n\n /**\n The 'set' method mixed into 'target' sets the value of one or more properties.\n\n Calling `target.set(key, value)` is equivalent to `target.properties[key] = value`\n\n However, if the first argument is a hash of properties, then the hash is treated as a\n set of key-value pairs to be assigned. In that case, observer notification is delayed\n until after all property values in the hash have been assigned.\n */\n target.set = function(key, value) {\n var hash;\n if (typeof key === 'string') {\n target.properties[key] = value;\n } else {\n hash = key;\n withBatchedNotifications(function() {\n Object.keys(hash).forEach(function(key) {\n target.properties[key] = hash[key];\n });\n });\n }\n };\n\n /**\n The 'get' method mixed into target reads the value of one property.\n\n Calling `target.get(key)` is equivalent to accessing `target.properties[key]`\n */\n target.get = function(key) {\n return target.properties[key];\n };\n\n // This is the publicly-accessible setter for 'freezing' the property.\n target.freeze = function(key) {\n var description = target.getPropertyDescription(key);\n description.setFrozen(true);\n setPropertyDescription(key, description);\n };\n\n // This is the publicly-accessible setter for 'un-freezing' the property.\n target.unfreeze = function(key) {\n var description = target.getPropertyDescription(key);\n description.setFrozen(false);\n setPropertyDescription(key, description);\n };\n\n /**\n The 'addObserver' method mixed into 'target' adds 'callback' to the end of the list of\n property observers of the property specified by 'key'. Note that adding a callback more\n than once to the observer list for a given property has no effect.\n\n Whenever the property 'key' is assigned to, the callback will be called. As noted above,\n sometimes property assignment is batched (e.g., by passing a hash to`target.set`). When\n this is the case, 'callback' is guaranteed to be called only once after the batched\n assignment, regardless of how many keys it is registered for. (Of course, if one of those\n observers then assigns to a property observed by 'callback', a second call will occur.)\n\n If 'key' represents a computed property, then observer notification is supported but\n happends according to a different cycle. Specifically, notification of the observer will\n happen if the value of the property changes between paired calls to\n `storeComputedProperties` and `notifyChangedComputedProperties`, or whenever\n `notifyAllComputedProperties` is called (regardless of the current or previous value of\n the property). As with batched property assignment, each callback is guaranteed to be\n called directly by `notifyAllComputedProperties` or `notifyChangedComputedProperties`\n at most once per invocation.\n\n Notification is never triggered by simply accessing the property, regardless of whether or\n not the access causes the property to be recalcuated\n\n Note that there are only 2 arguments accepted by addObserver; it does not support\n 'this'-binding to a target object.\n */\n target.addObserver = function(key, callback) {\n if (!propertyInformation[key]) {\n return;\n }\n var observers = propertyInformation[key].observers;\n if (observers.indexOf(callback) < 0) {\n observers.push(callback);\n }\n };\n\n /**\n The 'removeObserver' method mixed into 'target' removes 'callback' from the list of\n callbacks registered for the propery specified by key.\n */\n target.removeObserver = function(key, callback) {\n var observers = propertyInformation[key] && propertyInformation[key].observers,\n index = observers && observers.indexOf(callback);\n\n if (index !== undefined && index >= 0) {\n observers.splice(index, 1);\n }\n };\n\n /**\n The 'addPropertyDescriptionObserver' method mixed into 'target' adds 'callback' to the end\n of the list of property-description observers of the property specified by key. Note that\n adding a callback more than once to the property-description observer list for a given\n property has no effect.\n\n Property-description observers are called immediately when the observed property's\n description object is reassigned. Note that observing of mutation of the description\n object is not supported; to change a property's description after the property is created,\n always pass a property description object to propertySupport.setPropertyDescription.\n */\n target.addPropertyDescriptionObserver = function(key, callback) {\n if (!propertyInformation[key]) {\n return;\n }\n var observers = propertyInformation[key].propertyDescriptionObservers;\n if (observers.indexOf(callback) < 0) {\n observers.push(callback);\n }\n };\n\n target.removePropertyDescriptionObserver = function(key, callback) {\n var observers = propertyInformation[key].propertyDescriptionObservers,\n index = observers.indexOf(callback);\n\n if (index >= 0) {\n observers.splice(index, 1);\n }\n };\n\n /**\n The 'isPropertyWritable' method mixed into 'target' returns information whether\n the property named 'key' is writable.\n */\n target.hasProperty = function(key) {\n return propertyInformation[key] != null;\n };\n\n /**\n The 'isPropertyWritable' method mixed into 'target' returns information whether\n the property named 'key' is writable.\n */\n target.isPropertyWritable = function(key) {\n return !!propertyInformation[key] && propertyInformation[key].descriptor.writable;\n };\n\n /**\n The 'getPropertyDescription' method mixed into 'target' simply returns the object passed\n in as the 'description' property of the descriptor passed to `defineProperty` when the\n property named 'key' was defined.\n */\n target.getPropertyDescription = function(key) {\n if (propertyInformation[key] && propertyInformation[key].descriptor) {\n return propertyInformation[key].descriptor.description;\n }\n return null;\n };\n\n /**\n The 'getPropertyType' method mixed into 'target' simply returns the 'type' value passed\n in as the 'type' property of the descriptor passed to 'defineProperty'when the property\n named 'key' was defined.\n */\n target.getPropertyType = function(key) {\n if (propertyInformation[key] && propertyInformation[key].descriptor) {\n return propertyInformation[key].descriptor.type;\n }\n return null;\n };\n\n /**\n The 'getPropertyValidateFunc' method mixed into 'target' simply returns the 'validate' function\n passed in as the 'validate' property of the descriptor passed to 'defineProperty' when the\n property named 'key' was defined.\n */\n target.getPropertyValidateFunc = function(key) {\n if (propertyInformation[key] && propertyInformation[key].descriptor) {\n return propertyInformation[key].descriptor.validate;\n }\n return null;\n };\n\n /**\n The 'makeInvalidatingChange' method mixed into 'target' lets client code perform an action\n that will invalidate all computed properties.\n */\n target.makeInvalidatingChange = function(closure) {\n api.invalidatingChangePreHook();\n if (closure) {\n closure();\n }\n api.invalidatingChangePostHook();\n };\n\n // TODO: probably it's unnecessary, addObserver can support multiple\n // properties instead.\n target.addPropertiesListener = function(properties, callback) {\n if (typeof properties === 'string') {\n target.addObserver(properties, callback);\n } else {\n properties.forEach(function(property) {\n target.addObserver(property, callback);\n });\n }\n };\n },\n\n /**\n The defineProperty method allows the client object to define a new property named 'key'. The\n 'descriptor' property should be a hash containing property descriptors; see the comments on\n the descriptorProperties constant, above.\n */\n\n defineProperty: function(key, descriptor) {\n descriptor = validateDescriptor(descriptor || {});\n\n propertyInformation[key] = {\n descriptor: descriptor,\n observers: [],\n propertyDescriptionObservers: [],\n hasCachedValue: false,\n cachedValue: undefined,\n previousValue: undefined\n };\n\n if (descriptor.get) {\n computedPropertyKeys.push(key);\n }\n if (descriptor.includeInHistoryState) {\n historyStatePropertyKeys.push(key);\n }\n\n invalidateCachedPropertiesObjects(descriptor.type);\n },\n\n /**\n Set the PropertyDescription associated with 'key' to 'description' and notify any\n property-description observers (added via target.addPropertyDescriptionObserver())\n */\n setPropertyDescription: function(key, description) {\n setPropertyDescription(key, description);\n },\n\n /**\n The 'deleteComputedPropertyCachedValues' method removes the cached value of all computed\n properties (i.e., all properties with getters.)\n\n The next access of the property (either caused directly by code that explicitly accesses the\n property, or indirectly by `notifyChangedComputedProperties`, which retrieves the current\n value of all observed computed properties) will cause a recomputation of the property.\n */\n deleteComputedPropertyCachedValues: function() {\n computedPropertyKeys.forEach(function(key) {\n propertyInformation[key].hasCachedValue = false;\n propertyInformation[key].cachedValue = undefined;\n });\n },\n\n /**\n The 'storeComputedProperties' method retrieves the current value of all computed properties,\n respecting any previously-cached value, and stores it in a secondary cache for subsequent\n comparison to an updated value, by `notifyChangedComputedProperties`.\n\n Normally, one would call this method prior to updating the simulation clock, and then call\n `deleteComputedPropertyCachedValues` and notifyChangedComputedProperties` after updating\n the simulation clock.\n */\n storeComputedProperties: function() {\n observedComputedPropertyKeys().forEach(function(key) {\n propertyInformation[key].previousValue = get(key);\n });\n },\n\n /**\n Retrieves the current value of all computed properties, respecting any cached value it\n finds, and compares them to the previous values of the properties stored by\n `storeComputedProperties`\n\n Notifies the observers of any properties whose values differ from the previous value. Note\n that observers are called strictly after all computed property values are calculated, and\n each observer callback is guaranteed to be called directly by this method only once per\n invocation.\n\n (However, it would be possible for any given callback to be called again as a side effect of\n previous observers.)\n\n Note that, because this method observes the cache, you probably want to call\n `deleteComputedPropertyCachedValues` after calling `storeComputedProperties`,\n */\n notifyChangedComputedProperties: function() {\n withBatchedNotifications(function() {\n observedComputedPropertyKeys().forEach(function(key) {\n if (get(key) !== propertyInformation[key].previousValue) {\n notify(key);\n }\n propertyInformation[key].previousValue = undefined;\n });\n });\n },\n\n /**\n Blanket-notifies the observers of all computed properties. As described above, each observer\n callback will only be called directly by this method only once per invocation, but the side\n effects of some observer callbacks may result in subsequent calls to any given observer\n callback.\n */\n notifyAllComputedProperties: function() {\n withBatchedNotifications(function() {\n observedComputedPropertyKeys().forEach(function(key) {\n notify(key);\n });\n });\n },\n\n /**\n The 'properties' object is the main object containing the properties defined using this\n module. This is the same object that is mixed into the mixin target, and it is described\n above in detail.\n */\n get properties() {\n return getPropertiesObject();\n },\n\n /**\n The 'propertiesOfType' method behaves the same as the `propertiesOfType` method mixed into\n the mixin target, and it is describd above.\n */\n propertiesOfType: function(type) {\n return getPropertiesObject(type);\n },\n\n /**\n The enableCaching property indicates whether computed property values should be cached.\n When multiple cycles of property changes are triggered by a single change to the simulation\n state, you may want to turn off property caching until all cycles complete.\n */\n\n get enableCaching() {\n return cachingIsEnabled;\n },\n\n set enableCaching(value) {\n cachingIsEnabled = !!value;\n },\n\n /**\n The 'historyStateRawValues' property is a hash of key-value pairs of those properties which\n have the `includeInHistoryState` descriptor property set to true.\n\n The underlying values are 'raw' values, i.e., those which have been passed through the\n beforeSetTransform.\n */\n get historyStateRawValues() {\n var ret = {};\n historyStatePropertyKeys.forEach(function(key) {\n ret[key] = get(key);\n });\n return ret;\n },\n\n /**\n The 'rawValues' property is a hash of key-value pairs of all properties.\n\n The underlying values are 'raw' values, i.e., those which have been passed through the\n beforeSetTransform.\n */\n get rawValues() {\n var ret = {};\n Object.keys(propertyInformation).forEach(function(key) {\n ret[key] = get(key);\n });\n return ret;\n },\n\n /**\n The 'setRawValues' method accepts a hash of key-value pairs of some properties.\n\n Unlike the argument accepted by the 'set' method mixed into the mixin target, the values are\n expected to be 'raw' values, i.e., those which have already passed through the\n beforeSetTransform.\n\n Furthermore, notification of observers is only triggered for those properties whose value\n changed. This is because setRawValues is expected to be used as a system interface for\n restoring past states of the simulation, e.g., rewinding a simulation, and it would be\n undesirable to notify every observer, every time a history state was revisited.\n\n Additionally, for each property in the passed-in hash, the 'internal' setter is called if\n and only if that property has its `invokeSetterAfterBulkRestore` descriptor property set\n to true.\n */\n setRawValues: function(values) {\n withBatchedNotifications(function() {\n Object.keys(values).forEach(function(key) {\n var info = propertyInformation[key];\n if (!info) {\n return;\n }\n // During bulk state restoration, only actually changed values should trigger observers!\n if (get(key) !== values[key]) {\n notify(key);\n }\n set(key, values[key]);\n if (info.descriptor.invokeSetterAfterBulkRestore && info.descriptor.set) {\n info.descriptor.set(get(key));\n }\n });\n });\n },\n\n invalidatingChangePreHook: function() {\n\n // Only the first invalidating change during a batch runs the \"pre hook\".\n if (suppressInvalidationForBatch && invalidatingChangeOccurredDuringBatch) {\n return;\n }\n\n invalidatingChangeOccurredDuringBatch = true;\n\n if (invalidatingChangeNestingLevel === 0) {\n api.storeComputedProperties();\n api.deleteComputedPropertyCachedValues();\n api.enableCaching = false;\n }\n invalidatingChangeNestingLevel++;\n\n dispatch.beforeInvalidatingChange();\n },\n\n invalidatingChangePostHook: function() {\n if (suppressInvalidationForBatch) return;\n\n invalidatingChangeNestingLevel--;\n\n dispatch.afterInvalidatingChange();\n\n if (invalidatingChangeNestingLevel === 0) {\n api.enableCaching = true;\n api.notifyChangedComputedProperties();\n\n dispatch.afterInvalidatingChangeSequence();\n }\n },\n\n // N.B. We don't currently handle nested batches. This may be a problem.\n startBatch: function() {\n invalidatingChangeOccurredDuringBatch = false;\n suppressInvalidationForBatch = true;\n },\n\n endBatch: function() {\n suppressInvalidationForBatch = false;\n if (invalidatingChangeOccurredDuringBatch) {\n api.invalidatingChangePostHook();\n }\n },\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n }\n };\n\n return api;\n};\n","/*jshint eqnull:true, boss:true */\n\nimport _ from 'underscore';\n\n\nfunction isUndefined(val) {\n return val === \"\";\n}\n\nfunction PropertyDescription(unitDefinition, descriptionHash) {\n var u;\n\n this._descriptionHash = descriptionHash;\n this._label = descriptionHash.label || \"\";\n\n this._unitName = \"\";\n this._unitPluralName = \"\";\n this._unitAbbreviation = \"\";\n\n if (descriptionHash.unitType) {\n if (!(u = unitDefinition.units[descriptionHash.unitType])) {\n throw new Error(\"PropertyDescription: couldn't find unitType \" + descriptionHash.unitType + \" in the supplied units definition.\");\n }\n this._unitType = descriptionHash.unitType;\n this._unitName = u.name;\n this._unitPluralName = u.pluralName;\n this._unitAbbreviation = u.symbol;\n }\n\n // allow overriding the unit properties, or specifying custom ones for which there is no\n // current unit definition.\n if (descriptionHash.unitName) this._unitName = descriptionHash.unitName;\n if (descriptionHash.unitPluralName) this._unitPluralName = descriptionHash.unitPluralName;\n if (descriptionHash.unitAbbreviation) this._unitAbbreviation = descriptionHash.unitAbbreviation;\n\n this._min = descriptionHash.min;\n this._max = descriptionHash.max;\n\n this._frozen = descriptionHash.frozen;\n\n this.setFormat(descriptionHash.format);\n}\n\nPropertyDescription.prototype.getHash = function() {\n return _.extend(\n _.reject({\n unitName: this.getUnitName(),\n unitPluralName: this.getUnitPluralName(),\n unitAbbreviation: this.getUnitAbbreviation()\n }, isUndefined),\n this._descriptionHash);\n};\n\nPropertyDescription.prototype.getLabel = function() {\n return this._label;\n};\n\nPropertyDescription.prototype.getUnitType = function() {\n return this._unitType;\n};\n\nPropertyDescription.prototype.getUnitName = function() {\n return this._unitName;\n};\n\nPropertyDescription.prototype.getUnitPluralName = function() {\n return this._unitPluralName;\n};\n\nPropertyDescription.prototype.getUnitAbbreviation = function() {\n return this._unitAbbreviation;\n};\n\nPropertyDescription.prototype.getMin = function() {\n return this._min;\n};\n\nPropertyDescription.prototype.getMax = function() {\n return this._max;\n};\n\nPropertyDescription.prototype.getFrozen = function() {\n return this._frozen;\n};\n\nPropertyDescription.prototype.setFrozen = function(b) {\n this._frozen = b;\n};\n\nPropertyDescription.prototype.setFormat = function(s) {\n if (s) this._formatter = d3.format(s);\n else this._formatter = function(val) {\n return val;\n };\n};\n\nPropertyDescription.prototype.format = function(val, opts) {\n opts = opts || {};\n\n var formatter,\n formattedVal,\n plural,\n abbreviated = true;\n\n if (opts.format) {\n if (opts.format === this._lastFormat) {\n formatter = this._lastFormatter;\n } else {\n formatter = d3.format(opts.format);\n this._lastFormat = opts.format;\n this._lastFormatter = formatter;\n }\n } else {\n formatter = this._formatter;\n }\n\n formattedVal = formatter(val);\n\n if (opts && opts.abbreviated != null) abbreviated = opts.abbreviated;\n\n if (abbreviated) {\n return formattedVal + \" \" + this._unitAbbreviation;\n }\n\n plural = parseFloat(formattedVal) !== 1;\n return formattedVal + \" \" + (plural ? this._unitPluralName : this._unitName);\n};\n\nexport default PropertyDescription;\n","\nimport PropertyDescription from 'common/property-description';\n\n\nexport default function ParameterSupport(args) {\n var propertySupport = args.propertySupport,\n unitsDefinition = args.unitsDefinition || {};\n\n return {\n mixInto: function(target) {\n\n /**\n Define a property of the model to be treated as a custom parameter. Custom parameters are\n (generally, user-defined) read/write properties that trigger a setter action when set, and\n whose values are automatically persisted in the tick history.\n\n Because custom parameters are not intended to be interpreted by the engine, but instead simply\n *represent* states of the model that are otherwise fully specified by the engine state and\n other properties of the model, and because the setter function might not limit itself to a\n purely functional mapping from parameter value to model properties, but might perform any\n arbitrary stateful change, (stopping the model, etc.), the setter is NOT called when custom\n parameters are updated by the tick history.\n */\n target.defineParameter = function(key, descriptionHash, setter) {\n var descriptor = {\n type: 'parameter',\n includeInHistoryState: true,\n invokeSetterAfterBulkRestore: false,\n description: new PropertyDescription(unitsDefinition, descriptionHash),\n beforeSetCallback: propertySupport.invalidatingChangePreHook,\n afterSetCallback: propertySupport.invalidatingChangePostHook\n };\n\n // In practice, some parameters are meant only to be observed, and have no setter\n if (setter) {\n descriptor.set = function(value) {\n setter.call(target, value);\n };\n }\n propertySupport.defineProperty(key, descriptor);\n };\n }\n };\n};\n"," /*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nFilter implementing running average.\nThis filter assumes that provided samples are samples of some unknown function.\nThe function is interpolated using linear interpolation. Later, integration is\nused to get mean value of the function on the given time period.\n*/\nlet RunningAverageFilter;\nexport default RunningAverageFilter = class RunningAverageFilter {\n\n /*\n Construct new Running Average Filter.\n @periodLength - length of time period, in fs, which is used to calculate averaged value.\n */\n constructor(periodLength) {\n this.periodLength = periodLength;\n this._value = [];\n this._time = [];\n this._idx = -1;\n // By default, max length of buffer is equal to periodLength.\n // You can adjust it using #setMaxBufferLength.\n this._maxBufferLength = this.periodLength;\n }\n\n /*\n Add a new sample of a function which is going to be averaged.\n Note that samples must be provided in order, sorted by time.\n @t - time\n @val - value of the sample\n */\n addSample(t, val) {\n if (this._time[this._idx] === t) {\n // Overwrite last @_value.\n this._value[this._idx] = val;\n return;\n } else if (this._time[this._idx] > t) {\n throw new Error(\"RunningAverageFilter: cannot add sample with @_time less than previous sample.\");\n }\n\n // Add new value and time.\n this._idx++;\n this._value.push(val);\n this._time.push(t);\n\n return (() => {\n const result = [];\n while (this._value.length > this._maxBufferLength) {\n // Remove first elements if buffers are too long.\n this._time.shift();\n this._value.shift();\n result.push(this._idx--);\n }\n return result;\n })();\n }\n\n /*\n Return averaged value n the specified time period (using available samples).\n */\n calculate() {\n // To get average value on [t - periodLength, t], we use\n // intuitive \"first mean value theorem for integration\". See:\n // http://en.wikipedia.org/wiki/Mean_value_theorem#Mean_value_theorems_for_integration\n\n // Limit lower bound of time period to 0.\n let timeDiff;\n const minTime = Math.max(this._time[this._idx] - this.periodLength, 0);\n\n let valSum = 0;\n let timeSum = 0;\n let i = this._idx;\n\n // Perform very simple integration.\n while ((i > 0) && (this._time[i - 1] >= minTime)) {\n timeDiff = this._time[i] - this._time[i - 1];\n timeSum += timeDiff;\n // timeDiff * avg from @_value[i-1] and @_value[i]\n valSum += (timeDiff * (this._value[i - 1] + this._value[i])) / 2.0;\n i--;\n }\n\n // Last, optional step of integration.\n // It occurs when end of integration period is between two samples.\n // Linear interpolation needs to be performed.\n // In most cases, probably it won't be performed.\n if ((i > 0) && (this._time[i] > minTime) && (this._time[i - 1] < minTime)) {\n timeDiff = this._time[i] - minTime;\n timeSum += timeDiff;\n // Linear interpolation.\n const minVal = this._value[i - 1] + (((this._value[i] - this._value[i - 1]) * (minTime - this._time[i - 1])) / (this._time[i] - this._time[i - 1]));\n valSum += (timeDiff * (this._value[i] + minVal)) / 2.0;\n }\n\n // Return mean value using mentioned theorem.\n if (timeSum) {\n return valSum / timeSum;\n } else {\n return this._value[0] || 0;\n }\n }\n\n /*\n Return current length of the buffers used to store samples.\n */\n getCurrentBufferLength() {\n return this._value.length;\n }\n\n /*\n Set limit of the buffer which stores samples.\n */\n setMaxBufferLength(maxLength) {\n return this._maxBufferLength = maxLength;\n }\n\n /*\n Return current time.\n */\n getCurrentTime() {\n return this._time[this._idx];\n }\n\n /*\n Return current step index.\n */\n getCurrentStep() {\n return this._idx;\n }\n\n /*\n Set current step to @location.\n It allows to get average value of the function in various moments in time.\n */\n setCurrentStep(location) {\n // Note that location can be -1, e.g. while reseting buffers and starting from initial state.\n if ((location < -1) || (location >= this._value.length)) {\n throw new Error(\"RunningAverageFilter: cannot seek, location outside available range.\");\n }\n return this._idx = location;\n }\n\n /*\n Remove all samples *after* @location.\n */\n invalidate(location) {\n this._value.length = location + 1;\n this._time.length = location + 1;\n return this._idx = location;\n }\n\n /*\n Reset filter\n */\n reset() {\n this._values.length = 0;\n this._time = 0;\n return this._idx = 0;\n }\n};\n\n"," /*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nFilter implementing that calculates period for a simple period data.\n*/\nlet SimplePeriodFilter;\nexport default SimplePeriodFilter = class SimplePeriodFilter {\n\n /*\n Construct new Running Average Filter.\n @periodLength - length of time period, in fs, which is used to calculate averaged value.\n */\n constructor() {\n this._values = [];\n this._time = [];\n this._idx = -1;\n this._zero_crossing_buffer = [];\n this._period_buffer = [];\n // By default, max length of buffer is equal to periodLength.\n // You can adjust it using #setMaxBufferLength.\n this._maxBufferLength = 8192;\n }\n\n /*\n Add a new sample of a function which is going to be averaged.\n Note that samples must be provided in order, sorted by time.\n @t - time\n @val - value of the sample\n */\n addSample(t, val) {\n let previous_value;\n if (this._time[this._idx] === t) {\n // Overwrite last @_values.\n this._values[this._idx] = val;\n return;\n } else if (this._time[this._idx] > t) {\n console.log(\"Error: RunningAverageFilter: cannot add sample with @_time less than previous sample.\");\n // throw new Error \"RunningAverageFilter: cannot add sample with @_time less than previous sample.\"\n return;\n }\n\n // Add new value and time.\n this._idx++;\n this._values.push(val);\n this._time.push(t);\n if (this._values.length > 1) {\n previous_value = this._values[this._values.length - 2];\n }\n\n while (this._values.length > this._maxBufferLength) {\n // Remove first elements if buffers are too long.\n this._time.shift();\n this._values.shift();\n this._idx--;\n }\n\n // save zero-crossing times and zero-to-zero times\n if (((previous_value < 0) && (val > 0)) || ((previous_value > 0) && (val < 0))) {\n this._zero_crossing_buffer.push(t);\n if (this._zero_crossing_buffer.length > 1) {\n const previous_zero_crossing = this._zero_crossing_buffer[this._zero_crossing_buffer.length - 2];\n this._period_buffer.push(t - previous_zero_crossing);\n }\n while (this._zero_crossing_buffer.length > 128) {\n this._zero_crossing_buffer.shift();\n this._period_buffer.shift();\n }\n }\n\n }\n\n /*\n Return averaged period.\n */\n calculate() {\n if (this._period_buffer.length < 1) {\n return 0;\n }\n if (this._period_buffer.length === 1) {\n return this._period_buffer[0] * 2;\n }\n const sum = this._period_buffer.reduce((x, y) => x + y);\n const average = sum / this._period_buffer.length;\n return average * 2;\n }\n\n /*\n Return current length of the buffers used to store samples.\n */\n getCurrentBufferLength() {\n return this._values.length;\n }\n\n /*\n Set limit of the buffer which stores samples.\n */\n setMaxBufferLength(maxLength) {\n return this._maxBufferLength = maxLength;\n }\n\n /*\n Return current time.\n */\n getCurrentTime() {\n return this._time[this._idx];\n }\n\n /*\n Return current step index.\n */\n getCurrentStep() {\n return this._idx;\n }\n\n /*\n Set current step to @location.\n It allows to get average value of the function in various moments in time.\n */\n setCurrentStep(location) {\n // Note that location can be -1, e.g. while reseting buffers and starting from initial state.\n if ((location < -1) || (location >= this._values.length)) {\n throw new Error(\"SimplePeriodFilter: cannot seek, location outside available range.\");\n }\n return this._idx = location;\n }\n\n /*\n Remove all samples *after* @location.\n */\n invalidate(location) {\n if (location) {\n this._values.length = location + 1;\n this._time.length = location + 1;\n return this._idx = location;\n } else {\n return this.reset();\n }\n }\n\n /*\n Reset filter\n */\n reset() {\n this._values.length = 0;\n this._time.length = 0;\n this._idx = 0;\n this._zero_crossing_buffer.length = 0;\n this._period_buffer.length = 0;\n }\n};\n\n"," \nimport PropertyDescription from 'common/property-description';\nimport RunningAverageFilter from 'common/filters/running-average-filter';\nimport SimplePeriodFilter from 'common/filters/simple-period-filter';\n\n\nexport default function OutputSupport(args) {\n var propertySupport = args.propertySupport,\n unitsDefinition = args.unitsDefinition || {},\n tickHistory = args.tickHistory || null,\n\n filteredOutputs = [];\n\n function updateFilteredOutputs() {\n filteredOutputs.forEach(function(output) {\n output.addSample();\n });\n }\n\n function resetFilteredOutputs() {\n filteredOutputs.forEach(function(output) {\n output.reset();\n });\n }\n\n // TODO: is it necessary? It follows the old solution.\n // In theory filtered outputs could be updated only on time change\n // or on filtered property value change. Check it!\n propertySupport.on(\"afterInvalidatingChange.output-support\", updateFilteredOutputs);\n\n return {\n mixInto: function(target) {\n\n /**\n Add an \"output\" property to the model. Output properties are expected to change at every\n model tick, and may also be changed indirectly, outside of a model tick, by a change to model\n properties or the atom, element, etc. properties.\n\n `key` should be the name of the output. The property value will be accessed by\n `model.get();`\n\n `description` should be a hash of metadata about the property.\n\n `getter` should be a no-arg function which calculates the property value. These values are not\n translated after getter returns because we expect that most output getters are authored\n scripts, which operate entirely with already-translated units. Therefore, getters defined\n internally in modeler.js needs to make sure to translate any \"model units\" values out of the\n model-unit domain.\n */\n target.defineOutput = function(key, descriptionHash, getter) {\n propertySupport.defineProperty(key, {\n type: 'output',\n writable: false,\n get: getter,\n includeInHistoryState: false,\n description: new PropertyDescription(unitsDefinition, descriptionHash)\n });\n };\n\n\n /**\n Add an \"filtered output\" property to the model. This is special kind of output property, which\n is filtered by one of the built-in filters based on time (like running average). Note that filtered\n outputs do not specify calculate function - instead, they specify property which should filtered.\n It can be another output, model parameter or custom parameter.\n\n Filtered output properties are extension of typical output properties. They share all features of\n output properties, so they are expected to change at every model tick, and may also be changed indirectly,\n outside of a model tick, by a change to the model parameters or to the configuration of atoms and other\n objects in the model.\n\n `key` should be the name of the parameter. The property value will be accessed by\n `target.get();`\n\n `description` should be a hash of metadata about the property. Right now, these metadata are not\n used. However, example metadata include the label and units name to be used when graphing\n this property.\n\n `filteredPropertyKey` should be name of the basic property which should be filtered.\n\n `type` should be type of filter, defined as string. For now only \"RunningAverage\" and \"SimplePeriod\"\n are supported.\n\n `period` should be number defining length of time period used for calculating filtered value. It should\n be specified in femtoseconds.\n\n */\n target.defineFilteredOutput = function(key, description, filteredPropertyKey, type, period) {\n var filter, initialValue;\n\n if (type === \"RunningAverage\") {\n filter = new RunningAverageFilter(period);\n } else if (type === \"SimplePeriod\") {\n filter = new SimplePeriodFilter();\n } else {\n throw new Error(\"FilteredOutput: unknown filter type \" + type + \".\");\n }\n\n // Add initial sample\n initialValue = target.properties[filteredPropertyKey];\n if (initialValue === undefined || isNaN(Number(initialValue))) {\n throw new Error(\"FilteredOutput: property is not a valid numeric value or it is undefined.\");\n }\n filter.addSample(target.properties.time, initialValue);\n\n if (tickHistory) {\n // Create simple adapter implementing TickHistoryCompatible Interface\n // and register it in tick history.\n tickHistory.registerExternalObject({\n push: function() {\n // Filtered outputs are updated only at the end of tick() operation,\n // during tickHistory.push() call. So they are *not* updated\n // immediately after property change, e.g. using model.set(\"prop\", 5).\n // Filtered ouput bound to \"prop\" property will reflect this change\n // in the next tick.\n filter.addSample(target.properties.time, target.properties[filteredPropertyKey]);\n },\n extract: function(idx) {\n filter.setCurrentStep(idx);\n },\n invalidate: function(idx) {\n filter.invalidate(idx);\n },\n setHistoryLength: function(length) {\n filter.setMaxBufferLength(length);\n },\n reset: function() {\n filter.reset();\n }\n });\n } else {\n filteredOutputs.push({\n addSample: function() {\n filter.addSample(target.properties.time, target.properties[filteredPropertyKey]);\n }\n });\n }\n\n // Extend description to contain information about filter\n description.property = filteredPropertyKey;\n description.type = type;\n description.period = period;\n\n target.defineOutput(key, description, function() {\n return filter.calculate();\n });\n };\n\n /**\n Call this method after moving to a different model time (e.g., after stepping the model\n forward or back, seeking to a different time, or on model initialization) to update all output\n properties and notify their listeners. This method is more efficient for that case than\n updateOutputPropertiesAfterChange because it can assume that all output properties are\n invalidated by the model step. It therefore does not need to calculate any output property\n values; it allows them to be evaluated lazily instead. Property values are calculated when and\n if listeners request them. This method also guarantees that all properties have their updated\n value when they are requested by any listener.\n\n Technically, this method first updates the 'viewAtoms' array and macrostate variables, then\n invalidates any cached output-property values, and finally notifies all output-property\n listeners.\n\n Note that this method and updateOutputPropertiesAfterChange are the only methods which can\n flush the cached value of an output property. Therefore, be sure to not to make changes\n which would invalidate a cached value without also calling one of these two methods.\n */\n target.updateAllOutputProperties = function() {\n propertySupport.deleteComputedPropertyCachedValues();\n propertySupport.notifyAllComputedProperties();\n updateFilteredOutputs();\n };\n\n target.resetAllOutputProperties = function() {\n resetFilteredOutputs();\n };\n }\n };\n};\n","\nimport console from 'common/console';\nimport performance from 'common/performance';\nimport PropertyDescription from 'common/property-description';\n\nexport default function PlaybackSupport(args) {\n // DispatchSupport instance or compatible module.\n var dispatch = args && args.dispatch || null,\n // Properties object - it can be used to define 'modelSampleRate'.\n // Instance of PropertiesSupport class is expected.\n propertySupport = args && args.propertySupport || null,\n unitsDefinition = args && args.unitsDefinition || null,\n computeActualUseDuration = args.computeActualUseDuration,\n computeActualDuration = args.computeActualDuration,\n\n eventsSupported = (function() {\n // Events support is optional. It should be provided by the\n // DispatchSupport (common/dispatch-support) or another compatible\n // module.\n if (dispatch) {\n if (dispatch.on && dispatch.addEventTypes) {\n dispatch.addEventTypes(\"play\", \"stop\", \"tickStart\", \"tickEnd\");\n return true;\n } else {\n throw new Error(\"[PlaybackSupport] Provided Dispatch object doesn't implement required interface!\");\n }\n } else {\n return false;\n }\n }()),\n\n stopped = true,\n stopRequest = false,\n restartRequest = false,\n hasPlayed = false;\n\n /**\n Repeatedly calls `f` at an interval defined by the modelSampleRate property, until f returns\n true. (This is the same signature as d3.timer.)\n\n If modelSampleRate === 'default', try to run at the \"requestAnimationFrame rate\"\n (i.e., using d3.timer(), after running f, also request to run f at the next animation frame)\n\n If modelSampleRate !== 'default', instead uses setInterval to schedule regular calls of f with\n period (1000 / sampleRate) ms, corresponding to sampleRate calls/s\n */\n function timer(f) {\n var intervalID,\n // When target support properties and it defines\n // 'modelSampleRate', it will be used.\n sampleRate = propertySupport && propertySupport.properties.modelSampleRate || 'default';\n\n if (sampleRate === 'default') {\n // use requestAnimationFrame via d3.timer\n d3.timer(f);\n } else {\n // set an interval to run the model more slowly.\n intervalID = window.setInterval(function() {\n if (f()) {\n window.clearInterval(intervalID);\n }\n }, 1000 / sampleRate);\n }\n }\n\n return {\n mixInto: function(target) {\n var timePropertyDescription;\n\n if (propertySupport && target.defineOutput) {\n\n // Define duration-related properties, indicating the time, if any, past which\n // the model should not play.\n\n // values to show, e.g., as a menu of reasonable choices for requestedDuration\n target.defineOutput('durationOptions', {}, function() {\n // Result is an array of times (in \"user-facing\" units, such as s in mks models or fs\n // in md2d models), derived from a number of ticks.\n // For mks models having 1/60 seconds per tick, this is 0.5s, 1s, 2s, 5s, 10s, 30s, 60s:\n var TICKS = [30, 60, 120, 300, 600, 1800, 3600];\n var timePerTick = propertySupport.properties.timePerTick;\n\n if (timePerTick != null) {\n return TICKS.map(function(ticks) {\n return ticks * timePerTick;\n });\n }\n return [];\n });\n\n target.defineOutput('actualUseDuration', {}, computeActualUseDuration);\n\n target.defineOutput('actualDuration', {\n label: \"Experiment duration\",\n unitType: 'time',\n format: 'f'\n }, computeActualDuration);\n }\n\n // All playable (time-based) models should have a method to return time values formatted\n // user consumption. Specific models can override this method; for example md2d internally\n // uses time values in fs but we want to display them as ps.\n\n if (!target.formatTime && unitsDefinition) {\n timePropertyDescription = new PropertyDescription(unitsDefinition, {\n unitType: 'time',\n // might want to provide a way for models to override this default format without\n // having to override the formatTime method?\n format: '.1f'\n });\n\n target.formatTime = function(time) {\n return timePropertyDescription.format(time);\n };\n }\n\n if (typeof target.tick !== \"function\") {\n target.tick = function() {\n console.warn(\"[PlaybackSupport] .tick() method should be overwritten by target!\");\n };\n }\n\n target.start = function() {\n // Cleanup stop and restart requests.\n stopRequest = false;\n restartRequest = false;\n\n if (!stopped) {\n // Do nothing, model is running.\n return target;\n }\n\n stopped = false;\n\n timer(function timerTick(elapsedTime) {\n if (eventsSupported) dispatch.tickStart();\n performance.leaveScope(\"gap\");\n // Cancel the timer and refuse to to step the model, if the model is stopped.\n // This is necessary because there is no direct way to cancel a d3 timer.\n // See: https://github.com/mbostock/d3/wiki/Transitions#wiki-d3_timer)\n if (stopRequest) {\n stopped = true;\n if (eventsSupported) dispatch.stop();\n return true;\n }\n\n if (restartRequest) {\n setTimeout(target.start, 0);\n stopped = true;\n return true;\n }\n\n if (propertySupport && propertySupport.properties.time >= propertySupport.properties.actualDuration) {\n target.stop();\n return false;\n }\n\n performance.enterScope(\"tick\");\n target.tick(elapsedTime);\n performance.leaveScope(\"tick\");\n\n performance.enterScope(\"gap\");\n return false;\n });\n\n if (eventsSupported) dispatch.play();\n\n performance.enterScope(\"gap\");\n return target;\n };\n\n target.restart = function() {\n restartRequest = true;\n return target;\n };\n\n target.stop = function() {\n stopRequest = true;\n return target;\n };\n\n target.isStopped = function() {\n return stopped || stopRequest;\n };\n\n target.on('play.playback-support', function() {\n hasPlayed = true;\n });\n\n target.on('reset.playback-support', function() {\n hasPlayed = false;\n });\n\n Object.defineProperty(target, 'hasPlayed', {\n enumerable: true,\n get: function() {\n return hasPlayed;\n }\n });\n }\n };\n};\n","\nimport validator from 'common/validator';\nimport PropertyDescription from 'common/property-description';\n\n\nexport default function defineBuiltinProperties(args) {\n var propertySupport = args.propertySupport,\n metadata = args.metadata,\n // Optional:\n unitsDefinition = args.unitsDefinition || {},\n unitsTranslation = args.unitsTranslation || null,\n setters = args.setters || {},\n initialProperties = args.initialProperties || null;\n\n function defineBuiltinProperty(key, type, setter) {\n var metadataForType,\n descriptor,\n propertyChangeInvalidates,\n unitType;\n\n if (type === 'mainProperty') {\n metadataForType = metadata.mainProperties;\n } else if (type === 'viewOption') {\n metadataForType = metadata.viewOptions;\n } else {\n throw new Error(type + \" is not a supported built-in property type\");\n }\n\n propertyChangeInvalidates = validator.propertyChangeInvalidates(metadataForType[key]);\n\n descriptor = {\n type: type,\n writable: validator.propertyIsWritable(metadataForType[key]),\n set: setter,\n includeInHistoryState: !!metadataForType[key].storeInTickHistory,\n validate: function(value) {\n return validator.validateSingleProperty(metadataForType[key], key, value, false);\n },\n beforeSetCallback: propertyChangeInvalidates ? propertySupport.invalidatingChangePreHook : undefined,\n afterSetCallback: propertyChangeInvalidates ? propertySupport.invalidatingChangePostHook : undefined\n };\n\n unitType = metadataForType[key].unitType;\n descriptor.description = new PropertyDescription(unitsDefinition, {\n unitType: unitType,\n label: metadataForType[key].label || key\n });\n\n if (unitType && unitsTranslation) {\n descriptor.beforeSetTransform = function(value) {\n return unitsTranslation.translateToModelUnits(value, unitType);\n };\n descriptor.afterGetTransform = function(value) {\n return unitsTranslation.translateFromModelUnits(value, unitType);\n };\n }\n\n propertySupport.defineProperty(key, descriptor);\n }\n\n (function() {\n var mainProperties,\n viewOptions;\n\n // Define built-in properties using provided metadata.\n Object.keys(metadata.mainProperties).forEach(function(key) {\n defineBuiltinProperty(key, 'mainProperty', setters[key]);\n });\n Object.keys(metadata.viewOptions).forEach(function(key) {\n defineBuiltinProperty(key, 'viewOption', setters[key]);\n });\n\n if (initialProperties) {\n mainProperties = validator.validateCompleteness(metadata.mainProperties, initialProperties);\n propertySupport.setRawValues(mainProperties);\n\n viewOptions = validator.validateCompleteness(metadata.viewOptions, initialProperties.viewOptions || {});\n propertySupport.setRawValues(viewOptions);\n }\n }());\n};\n","\nimport PropertySupport from 'common/property-support';\nimport ParameterSupport from 'common/parameter-support';\nimport OutputSupport from 'common/output-support';\nimport DispatchSupport from 'common/dispatch-support';\nimport PlaybackSupport from 'common/playback-support';\nimport defineBuiltinProperties from 'common/define-builtin-properties';\n// it's somewhat unfortunate to have an \"upwards\" dependency on the controller layer\nimport ExportController from 'common/controllers/export-controller';\n\nexport default function LabModelerMixin(args) {\n\n var api,\n\n /**\n * Accepted arguments:\n */\n metadata = args.metadata,\n setters = args.setters,\n unitsDefinition = args.unitsDefinition,\n unitsTranslation = args.unitsTranslation,\n initialProperties = args.initialProperties,\n tickHistory = args.tickHistory,\n\n // defaults to true:\n usePlaybackSupport = args.usePlaybackSupport === undefined || !!args.usePlaybackSupport,\n\n propertySupport = new PropertySupport({\n types: [\"output\", \"parameter\", \"mainProperty\", \"viewOption\"]\n }),\n parameterSupport = new ParameterSupport({\n propertySupport: propertySupport,\n unitsDefinition: unitsDefinition\n }),\n outputSupport = new OutputSupport({\n propertySupport: propertySupport,\n unitsDefinition: unitsDefinition,\n tickHistory: tickHistory\n }),\n dispatchSupport = new DispatchSupport(),\n playbackSupport;\n\n // Make these functions available to any model that chooses to implement duration\n // related properties. PlaybackSupport mixes the duration-related property definitions\n // into models that use it, but other model types, such as sensor models, have to use\n // alternate definitions. The functions below implement some of the logic the different\n // implementations have in common.\n function computeActualDuration() {\n // changing requestedDuration will have an effect iff actualUseDuration == true\n var actualUseDuration = propertySupport.properties.actualUseDuration;\n var requestedDuration = propertySupport.properties.requestedDuration;\n var durationOptions;\n\n if (!actualUseDuration) {\n return Infinity;\n }\n\n // Only numeric values can be handled by rest of the code. Strings, {}, or nulls won't work, so in that\n // case calculate a default / fallback value will be calculated below.\n if (typeof requestedDuration === 'number') {\n return requestedDuration;\n }\n\n // need to use a default\n durationOptions = propertySupport.properties.durationOptions;\n\n if (durationOptions.length > 0) {\n return durationOptions[Math.floor(durationOptions.length / 2)];\n } else {\n // No good default; punt. Leave actualUseDuration = true, but don't actually stop.\n return Infinity;\n }\n }\n\n function computeActualUseDuration() {\n var useDuration = propertySupport.properties.useDuration;\n return useDuration === true || useDuration === 'codap' && ExportController.canExportData();\n }\n\n if (usePlaybackSupport) {\n playbackSupport = new PlaybackSupport({\n dispatch: dispatchSupport,\n propertySupport: propertySupport,\n unitsDefinition: unitsDefinition,\n computeActualDuration: computeActualDuration,\n computeActualUseDuration: computeActualUseDuration\n });\n }\n\n // Is the model setup complete, so the model is ready to be played and record to tick history?\n // \"Naked\" models are ready upon instantation, but in an interactive, a model shouldn't record\n // history or play until external code has finished setting up parameters, running onload\n // scripts; in the latter case, we wait for a call to model.ready()\n var isReady = false;\n\n // FIXME: These events have to be available as some other modules try to\n // add listeners. Probably they aren't necessary, trace it and fix.\n dispatchSupport.addEventTypes(\"reset\", \"stepForward\", \"stepBack\", \"seek\", \"invalidation\", \"willReset\", \"ready\", \"log\");\n\n api = {\n mixInto: function(target) {\n propertySupport.mixInto(target);\n parameterSupport.mixInto(target);\n outputSupport.mixInto(target);\n dispatchSupport.mixInto(target);\n\n if (playbackSupport) {\n playbackSupport.mixInto(target);\n }\n\n // This allows external code (such as the model controller) to trigger the model's\n // willReset event. This allows observers such as the export controller to observe model\n // state before it gets blown away.\n target.willReset = function() {\n dispatchSupport.willReset();\n };\n\n /**\n Indicate that the model is ready, causing it to save its current state as the initial state,\n to push the current state as the first state of the regular tick history, and to emit the\n ready event.\n\n This is a public method because we may have to wait for\n external code to indicate that setup is complete (e.g., code that defines parameters and sets\n their initial values, or manipulates the model in some other way)\n\n This method is called upon model instantiation if initializationOptions.waitForSetup is false\n Otherwise, it must be called by external code. It is an error to call it twice.\n */\n target.ready = function() {\n if (isReady) {\n throw new Error(\"ready() called on an already-ready model.\");\n }\n\n if (api.tickHistory) {\n api.tickHistory.saveInitialState();\n api.tickHistory.push();\n }\n\n propertySupport.invalidatingChangePreHook();\n isReady = true;\n propertySupport.invalidatingChangePostHook();\n\n dispatchSupport.ready();\n };\n\n Object.defineProperty(target, 'isReady', {\n enumerable: true,\n get: function() {\n return isReady;\n }\n });\n\n if (metadata) {\n defineBuiltinProperties({\n propertySupport: propertySupport,\n metadata: metadata,\n\n unitsDefinition: unitsDefinition,\n unitsTranslation: unitsTranslation,\n setters: setters,\n initialProperties: initialProperties\n });\n }\n },\n\n get propertySupport() {\n return propertySupport;\n },\n\n get parameterSupport() {\n return parameterSupport;\n },\n\n get outputSupport() {\n return outputSupport;\n },\n\n get dispatchSupport() {\n return dispatchSupport;\n },\n\n get playbackSupport() {\n return playbackSupport;\n },\n\n get computeActualDuration() {\n return computeActualDuration;\n },\n\n get computeActualUseDuration() {\n return computeActualUseDuration;\n }\n };\n\n return api;\n};\n"," \n/**\n Class which handles tick history. It supports saving and restoring state\n of core state objects defined by the modeler and engine. However, while\n adding a new object which should also be saved in tick history, consider\n utilization of \"external objects\" - this is special object which should\n implement TickHistoryCompatible Interface:\n #setHistoryLength(number)\n #push()\n #extract(index)\n #invalidate(index)\n\n Note that index argument is *always* limited to [0, historyLength) range.\n\n \"External objects\" handle changes of the current step itself. TickHistory\n only sends requests to perform various operations. To register new\n external object use #registerExternalObject(object) method.\n\n It allows to decentralize management of tick history and tight coupling\n TickTistory with API of various objects.\n*/\nexport default function TickHistory(modelState, model, size) {\n var tickHistory = {},\n initialState,\n list,\n listState,\n defaultSize = 1000,\n // List of objects defining TickHistoryCompatible Interface.\n externalObjects = [],\n\n // Provide the \"old\" interface for models that don't use PropertySupport yet, but provide\n // a different, new interface for models using PropertySupport for their parameters, etc.\n // Such models are smart enough to send a single hash of raw property values for all the\n // properties (parameters, main properties, view properties, etc) we need to save. Older\n // models need to provide us with separate lists of \"regular\" properties and parameters,\n // with their own separate restore callbacks.\n //\n // *** Remember to remove this when all models use PropertySupport! ***\n //\n useNewInterface = !!modelState.getProperties;\n\n function newState() {\n return {\n input: {},\n state: [],\n parameters: {}\n };\n }\n\n function reset() {\n var i;\n\n list = [];\n listState = {\n // Equal to list.length:\n length: 0,\n // Drop oldest state in order to keep list no longer than this:\n maxSize: size,\n // Index into `list` of the current state:\n index: -1,\n // Total length of \"total history\" (counting valid history states that have been dropped)\n counter: -1,\n // Index in \"total history\" of the oldest state in the list.\n // Invariant: counter == index + startCounter\n startCounter: 0\n };\n // Send push request to external objects defining TickHistoryCompatible Interface.\n for (i = 0; i < externalObjects.length; i++) {\n if (externalObjects[i].reset) {\n externalObjects[i].reset();\n }\n }\n }\n\n function copyModelState(destination) {\n var i,\n prop,\n state,\n parameters,\n name;\n\n if (useNewInterface) {\n // we expect that modelState.getProperties returns us a hash we can keep\n destination.input = modelState.getProperties();\n } else {\n // save model input properties\n for (i = 0; i < modelState.input.length; i++) {\n prop = modelState.input[i];\n destination.input[prop] = modelState.getRawPropertyValue(prop);\n }\n\n // save model parameters\n parameters = modelState.parameters;\n for (name in parameters) {\n if (parameters.hasOwnProperty(name) && parameters[name].isDefined) {\n destination.parameters[name] = modelState.getRawPropertyValue(name);\n }\n }\n }\n\n // save model objects defining state\n state = modelState.state;\n for (i = 0; i < state.length; i++) {\n destination.state[i] = state[i].clone();\n }\n }\n\n /** Copy the current model state into the list at list[listState.index+1] and updates listState.\n Removes any (now-invalid) states in the list that come after the newly pushed state.\n */\n function push() {\n var lastState = newState(),\n i;\n\n copyModelState(lastState);\n list[listState.index + 1] = lastState;\n\n // Drop the oldest state if we went over the max list size\n if (list.length > listState.maxSize) {\n list.splice(0, 1);\n listState.startCounter++;\n } else {\n listState.index++;\n }\n listState.counter = listState.index + listState.startCounter;\n\n // Send push request to external objects defining TickHistoryCompatible Interface.\n for (i = 0; i < externalObjects.length; i++) {\n externalObjects[i].push();\n }\n\n invalidateFollowingState();\n listState.length = list.length;\n }\n\n /** Invalidate (remove) all history after current index. For example, after seeking backwards\n and then pushing new state */\n function invalidateFollowingState() {\n var i;\n\n list.length = listState.index + 1;\n listState.length = list.length;\n\n // Invalidate external objects defining TickHistoryCompatible Interface.\n for (i = 0; i < externalObjects.length; i++) {\n externalObjects[i].invalidate(listState.index);\n }\n }\n\n function extract(savedState) {\n var i,\n state;\n\n // restore model input properties\n modelState.restoreProperties(savedState.input);\n\n if (!useNewInterface) {\n // old interface requires restoring parameters separately\n modelState.restoreParameters(savedState.parameters);\n }\n\n // restore model objects defining state\n state = savedState.state;\n for (i = 0; i < state.length; i++) {\n modelState.state[i].restore(state[i]);\n }\n\n // Send extract request to external objects defining TickHistoryCompatible Interface.\n for (i = 0; i < externalObjects.length; i++) {\n externalObjects[i].extract(listState.index);\n }\n }\n\n function checkIndexArg(index) {\n if (index < 0) {\n throw new Error(\"TickHistory: extract index [\" + index + \"] less than 0\");\n }\n if (index >= list.length) {\n throw new Error(\"TickHistory: extract index [\" + index + \"] greater than list.length: \" + list.length);\n }\n return index;\n }\n\n //\n // Public methods\n //\n tickHistory.isEmpty = function() {\n return listState.index === 0;\n };\n\n tickHistory.push = function() {\n push();\n };\n\n tickHistory.returnTick = function(ptr) {\n var i;\n if (typeof ptr === 'number') {\n i = ptr;\n } else {\n i = listState.index;\n }\n checkIndexArg(i);\n return list[i];\n };\n\n tickHistory.extract = function(ptr) {\n var i;\n if (typeof ptr === 'number') {\n i = ptr;\n } else {\n i = listState.index;\n }\n checkIndexArg(i);\n extract(list[i]);\n };\n\n tickHistory.saveInitialState = function() {\n initialState = newState();\n copyModelState(initialState);\n };\n\n tickHistory.restoreInitialState = function() {\n reset();\n extract(initialState);\n push();\n };\n\n tickHistory.reset = reset;\n\n tickHistory.decrementExtract = function() {\n if (listState.counter > listState.startCounter) {\n listState.index--;\n listState.counter--;\n extract(list[listState.index]);\n }\n };\n\n tickHistory.incrementExtract = function() {\n listState.index++;\n listState.counter++;\n extract(list[listState.index]);\n };\n\n tickHistory.seekExtract = function(ptr) {\n if (ptr < listState.startCounter) ptr = listState.startCounter;\n if (ptr >= listState.startCounter + listState.length) ptr = listState.startCounter + listState.length - 1;\n listState.counter = ptr;\n listState.index = ptr - listState.startCounter;\n extract(list[listState.index]);\n };\n\n tickHistory.invalidateFollowingState = invalidateFollowingState;\n\n tickHistory.get = function(key) {\n return listState[key];\n };\n\n tickHistory.set = function(key, val) {\n return listState[key] = val;\n };\n\n /**\n Registers a new external object. It is a special object, which handles changes of step itself.\n TickHistory object only sends requests for various actions.\n External object should implement TickHistoryCompatible Interface:\n #setHistoryLength(number)\n #push()\n #extract(index)\n #invalidate(index)\n */\n tickHistory.registerExternalObject = function(externalObj) {\n externalObj.setHistoryLength(listState.maxSize);\n externalObjects.push(externalObj);\n };\n\n //\n // Initialization\n //\n if (size == null) size = defaultSize;\n\n reset();\n return tickHistory;\n};\n","export default [{\n \"fullName\": \"Alanine\",\n \"abbreviation\": \"Ala\",\n \"symbol\": \"A\",\n \"molWeight\": 89.09,\n \"charge\": 0,\n \"hydrophobicityRB\": 2.15,\n \"pK\": 0,\n \"surface\": 115,\n \"volume\": 88.6,\n \"solubility\": 16.65,\n \"hydrophobicity\": 1,\n \"property\": \"Total aliphatic; hydrophobic\"\n}, {\n \"fullName\": \"Arginine\",\n \"abbreviation\": \"Arg\",\n \"symbol\": \"R\",\n \"molWeight\": 174.2,\n \"charge\": 1,\n \"hydrophobicityRB\": 2.23,\n \"pK\": 12,\n \"surface\": 225,\n \"volume\": 173.4,\n \"solubility\": 15,\n \"hydrophobicity\": -2,\n \"property\": \"Acidic side chains; strongly polar; cationic\"\n}, {\n \"fullName\": \"Asparagine\",\n \"abbreviation\": \"Asn\",\n \"symbol\": \"N\",\n \"molWeight\": 132.12,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.05,\n \"pK\": 0,\n \"surface\": 160,\n \"volume\": 114.1,\n \"solubility\": 3.53,\n \"hydrophobicity\": -1,\n \"property\": \"Strongly polar\"\n}, {\n \"fullName\": \"Asparticacid\",\n \"abbreviation\": \"Asp\",\n \"symbol\": \"D\",\n \"molWeight\": 133.1,\n \"charge\": -1,\n \"hydrophobicityRB\": 1.13,\n \"pK\": 4.4,\n \"surface\": 150,\n \"volume\": 111.1,\n \"solubility\": 0.778,\n \"hydrophobicity\": -2,\n \"property\": \"Acidic side chains; strongly polar; anionic\"\n}, {\n \"fullName\": \"Cysteine\",\n \"abbreviation\": \"Cys\",\n \"symbol\": \"C\",\n \"molWeight\": 121.15,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.2,\n \"pK\": 8.5,\n \"surface\": 135,\n \"volume\": 108.5,\n \"solubility\": 1000,\n \"hydrophobicity\": 1,\n \"property\": \"Polar side chains; semipolar\"\n}, {\n \"fullName\": \"Glutamine\",\n \"abbreviation\": \"Gln\",\n \"symbol\": \"Q\",\n \"molWeight\": 146.15,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.65,\n \"pK\": 0,\n \"surface\": 180,\n \"volume\": 143.8,\n \"solubility\": 2.5,\n \"hydrophobicity\": -1,\n \"property\": \"Strongly polar\"\n}, {\n \"fullName\": \"Glutamicacid\",\n \"abbreviation\": \"Glu\",\n \"symbol\": \"E\",\n \"molWeight\": 147.13,\n \"charge\": -1,\n \"hydrophobicityRB\": 1.73,\n \"pK\": 4.4,\n \"surface\": 190,\n \"volume\": 138.4,\n \"solubility\": 0.864,\n \"hydrophobicity\": -2,\n \"property\": \"Acidic side chains; strongly polar; anionic\"\n}, {\n \"fullName\": \"Glycine\",\n \"abbreviation\": \"Gly\",\n \"symbol\": \"G\",\n \"molWeight\": 75.07,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.18,\n \"pK\": 0,\n \"surface\": 75,\n \"volume\": 60.1,\n \"solubility\": 24.99,\n \"hydrophobicity\": 1,\n \"property\": \"Semipolar\"\n}, {\n \"fullName\": \"Histidine\",\n \"abbreviation\": \"His\",\n \"symbol\": \"H\",\n \"molWeight\": 155.16,\n \"charge\": 1,\n \"hydrophobicityRB\": 2.45,\n \"pK\": 6.5,\n \"surface\": 195,\n \"volume\": 153.2,\n \"solubility\": 4.19,\n \"hydrophobicity\": -2,\n \"property\": \"Basic side chains; strongly polar; cationic\"\n}, {\n \"fullName\": \"Isoleucine\",\n \"abbreviation\": \"Ile\",\n \"symbol\": \"I\",\n \"molWeight\": 131.17,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.88,\n \"pK\": 0,\n \"surface\": 175,\n \"volume\": 166.7,\n \"solubility\": 4.117,\n \"hydrophobicity\": 1,\n \"property\": \"Branched chain aliphatic; hydrophobic\"\n}, {\n \"fullName\": \"Leucine\",\n \"abbreviation\": \"Leu\",\n \"symbol\": \"L\",\n \"molWeight\": 131.17,\n \"charge\": 0,\n \"hydrophobicityRB\": 4.1,\n \"pK\": 10,\n \"surface\": 170,\n \"volume\": 166.7,\n \"solubility\": 2.426,\n \"hydrophobicity\": 1,\n \"property\": \"Branched chain aliphatic; hydrophobic\"\n}, {\n \"fullName\": \"Lysine\",\n \"abbreviation\": \"Lys\",\n \"symbol\": \"K\",\n \"molWeight\": 146.19,\n \"charge\": 1,\n \"hydrophobicityRB\": 3.05,\n \"pK\": 0,\n \"surface\": 200,\n \"volume\": 168.6,\n \"solubility\": 1000,\n \"hydrophobicity\": -2,\n \"property\": \"Acidic side chains; strongly polar; cationic\"\n}, {\n \"fullName\": \"Methionine\",\n \"abbreviation\": \"Met\",\n \"symbol\": \"M\",\n \"molWeight\": 149.21,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.43,\n \"pK\": 0,\n \"surface\": 185,\n \"volume\": 162.9,\n \"solubility\": 3.81,\n \"hydrophobicity\": 1,\n \"property\": \"Totally alyphatic\"\n}, {\n \"fullName\": \"Phenylalanine\",\n \"abbreviation\": \"Phe\",\n \"symbol\": \"F\",\n \"molWeight\": 165.19,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.46,\n \"pK\": 0,\n \"surface\": 210,\n \"volume\": 189.9,\n \"solubility\": 2.965,\n \"hydrophobicity\": 2,\n \"property\": \"Totally aromatic\"\n}, {\n \"fullName\": \"Proline\",\n \"abbreviation\": \"Pro\",\n \"symbol\": \"P\",\n \"molWeight\": 115.13,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.1,\n \"pK\": 0,\n \"surface\": 145,\n \"volume\": 112.7,\n \"solubility\": 162.3,\n \"hydrophobicity\": 1,\n \"property\": \"Totally alyphatic\"\n}, {\n \"fullName\": \"Serine\",\n \"abbreviation\": \"Ser\",\n \"symbol\": \"S\",\n \"molWeight\": 105.09,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.4,\n \"pK\": 0,\n \"surface\": 115,\n \"volume\": 89,\n \"solubility\": 5.023,\n \"hydrophobicity\": -1,\n \"property\": \"Semipolar\"\n}, {\n \"fullName\": \"Threonine\",\n \"abbreviation\": \"Thr\",\n \"symbol\": \"T\",\n \"molWeight\": 119.12,\n \"charge\": 0,\n \"hydrophobicityRB\": 2.25,\n \"pK\": 0,\n \"surface\": 140,\n \"volume\": 116.1,\n \"solubility\": 1000,\n \"hydrophobicity\": -1,\n \"property\": \"Semipolar\"\n}, {\n \"fullName\": \"Tryptophan\",\n \"abbreviation\": \"Trp\",\n \"symbol\": \"W\",\n \"molWeight\": 204.23,\n \"charge\": 0,\n \"hydrophobicityRB\": 4.11,\n \"pK\": 0,\n \"surface\": 255,\n \"volume\": 227.8,\n \"solubility\": 1.136,\n \"hydrophobicity\": 2,\n \"property\": \"Totally aromatic\"\n}, {\n \"fullName\": \"Tyrosine\",\n \"abbreviation\": \"Tyr\",\n \"symbol\": \"Y\",\n \"molWeight\": 181.19,\n \"charge\": 0,\n \"hydrophobicityRB\": 2.81,\n \"pK\": 10,\n \"surface\": 230,\n \"volume\": 193.6,\n \"solubility\": 0.045,\n \"hydrophobicity\": 1,\n \"property\": \"Hydrophobic; total aromatic\"\n}, {\n \"fullName\": \"Valine\",\n \"abbreviation\": \"Val\",\n \"symbol\": \"V\",\n \"molWeight\": 117.15,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.38,\n \"pK\": 0,\n \"surface\": 155,\n \"volume\": 140,\n \"solubility\": 8.85,\n \"hydrophobicity\": 1,\n \"property\": \"Branched chain aliphatic; hydrophobic\"\n}];\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nModule which provides convenience functions related to amino acids.\n*/\nimport aminoacidsProps from 'models/md2d/models/aminoacids-props';\n\n// Elements from 0 to 4 are typical, editable elements representing atoms.\nconst FIST_ELEMENT_ID = 5;\n\nconst RNA_CODON_TABLE = {\n \"UUU\": \"Phe\",\n \"UUC\": \"Phe\",\n\n \"UUA\": \"Leu\",\n \"UUG\": \"Leu\",\n \"CUU\": \"Leu\",\n \"CUC\": \"Leu\",\n \"CUA\": \"Leu\",\n \"CUG\": \"Leu\",\n\n \"AUU\": \"Ile\",\n \"AUC\": \"Ile\",\n \"AUA\": \"Ile\",\n\n \"AUG\": \"Met\",\n\n \"GUU\": \"Val\",\n \"GUC\": \"Val\",\n \"GUA\": \"Val\",\n \"GUG\": \"Val\",\n\n \"UCU\": \"Ser\",\n \"UCC\": \"Ser\",\n \"UCA\": \"Ser\",\n \"UCG\": \"Ser\",\n \"AGU\": \"Ser\",\n \"AGC\": \"Ser\",\n\n \"CCU\": \"Pro\",\n \"CCC\": \"Pro\",\n \"CCA\": \"Pro\",\n \"CCG\": \"Pro\",\n\n \"ACU\": \"Thr\",\n \"ACC\": \"Thr\",\n \"ACA\": \"Thr\",\n \"ACG\": \"Thr\",\n\n \"GCU\": \"Ala\",\n \"GCC\": \"Ala\",\n \"GCA\": \"Ala\",\n \"GCG\": \"Ala\",\n\n \"UAU\": \"Tyr\",\n \"UAC\": \"Tyr\",\n\n \"CAU\": \"His\",\n \"CAC\": \"His\",\n\n \"CAA\": \"Gln\",\n \"CAG\": \"Gln\",\n\n \"AAU\": \"Asn\",\n \"AAC\": \"Asn\",\n\n \"AAA\": \"Lys\",\n \"AAG\": \"Lys\",\n\n \"GAU\": \"Asp\",\n \"GAC\": \"Asp\",\n\n \"GAA\": \"Glu\",\n \"GAG\": \"Glu\",\n\n \"UGU\": \"Cys\",\n \"UGC\": \"Cys\",\n\n \"UGG\": \"Trp\",\n\n \"CGU\": \"Arg\",\n \"CGC\": \"Arg\",\n \"CGA\": \"Arg\",\n \"CGG\": \"Arg\",\n \"AGA\": \"Arg\",\n \"AGG\": \"Arg\",\n\n \"GGU\": \"Gly\",\n \"GGC\": \"Gly\",\n \"GGA\": \"Gly\",\n \"GGG\": \"Gly\",\n\n \"UAA\": \"STOP\",\n \"UAG\": \"STOP\",\n \"UGA\": \"STOP\"\n};\n\nexport default {\n /*\n ID of an element representing the first amino acid in the elements collection.\n */\n firstElementID: FIST_ELEMENT_ID,\n\n /*\n ID of an element representing the last amino acid in the elements collection.\n */\n lastElementID: (FIST_ELEMENT_ID + aminoacidsProps.length) - 1,\n\n /*\n Element ID of the cysteine amino acid.\n Note that it should be stored in this class (instead of hard-coded in the engine),\n as it can be changed in the future.\n */\n cysteineElement: 9,\n\n /*\n Converts @abbreviation of amino acid to element ID.\n */\n abbrToElement(abbreviation) {\n for (let i = 0; i < aminoacidsProps.length; i++) {\n const aminoacid = aminoacidsProps[i];\n if (aminoacid.abbreviation === abbreviation) {\n return i + this.firstElementID;\n }\n }\n },\n\n /*\n Returns properties (hash) of amino acid which is represented by a given @elementID.\n */\n getAminoAcidByElement(elementID) {\n return aminoacidsProps[elementID - this.firstElementID];\n },\n\n /*\n Checks if given @elementID represents amino acid.\n */\n isAminoAcid(elementID) {\n return (elementID >= this.firstElementID) && (elementID <= this.lastElementID);\n },\n\n /*\n Returns polar amino acids (array of their element IDs).\n */\n getPolarAminoAcids() {\n // Get element IDs representing Asparagine, Glutamine, Serine, Threonine.\n // See categorization charge for AAs with polar sidechain here:\n // http://upload.wikimedia.org/wikipedia/commons/a/a9/Amino_Acids.svg\n return [\"Asn\", \"Gln\", \"Ser\", \"Thr\"].map((abbr) => this.abbrToElement(abbr));\n },\n\n /*\n Converts RNA Codon to amino acid abbreviation\n */\n codonToAbbr(codon) {\n if (codon.length !== 3) {\n return \"STOP\";\n } else {\n return RNA_CODON_TABLE[codon];\n }\n }\n};\n","/*jshint eqnull:true */\n/**\n Simple, good-enough minimization via gradient descent.\n*/\nimport console from 'common/console';\n// Dependencies.\n\nexport default function minimize(f, x0, opts) {\n opts = opts || {};\n\n if (opts.precision == null) opts.precision = 0.01;\n\n var // stop when the absolute difference between successive values of f is this much or less\n precision = opts.precision,\n\n // array of [min, max] boundaries for each component of x\n bounds = opts.bounds,\n\n // maximum number of iterations\n maxiter = opts.maxiter || 1000,\n\n // optionally, stop when f is less than or equal to this value\n stopval = opts.stopval || -Infinity,\n\n // maximum distance to move x between steps\n maxstep = opts.maxstep || 0.01,\n\n // multiplied by the gradient\n eps = opts.eps || 0.01,\n dim = x0.length,\n x,\n res,\n f_cur,\n f_prev,\n grad,\n maxstepsq,\n gradnormsq,\n iter,\n i,\n a;\n\n maxstepsq = maxstep * maxstep;\n\n // copy x0 into x (which we will mutate)\n x = [];\n for (i = 0; i < dim; i++) {\n x[i] = x0[i];\n }\n\n // evaluate f and get the gradient\n res = f.apply(null, x);\n f_cur = res[0];\n grad = res[1];\n\n iter = 0;\n do {\n if (f_cur <= stopval) {\n break;\n }\n\n if (iter > maxiter) {\n console.log(\"maxiter reached\");\n // don't throw on error, but return some diagnostic information\n return {\n error: \"maxiter reached\",\n f: f_cur,\n iter: maxiter,\n x: x\n };\n }\n\n // Limit gradient descent step size to maxstep\n gradnormsq = 0;\n for (i = 0; i < dim; i++) {\n gradnormsq += grad[i] * grad[i];\n }\n if (eps * eps * gradnormsq > maxstepsq) {\n a = Math.sqrt(maxstepsq / gradnormsq) / eps;\n for (i = 0; i < dim; i++) {\n grad[i] = a * grad[i];\n }\n }\n\n // Take a step in the direction opposite the gradient\n for (i = 0; i < dim; i++) {\n x[i] -= eps * grad[i];\n\n // check bounds\n if (bounds && x[i] < bounds[i][0]) {\n x[i] = bounds[i][0];\n }\n if (bounds && x[i] > bounds[i][1]) {\n x[i] = bounds[i][1];\n }\n }\n\n f_prev = f_cur;\n\n res = f.apply(null, x);\n f_cur = res[0];\n grad = res[1];\n\n iter++;\n } while (Math.abs(f_cur - f_prev) > precision);\n\n return [f_cur, x];\n};\n","import $____distributions from './distributions';\nimport $____utils from './utils';\nimport minimize from './minimizer';\n\nexport default {\n normal: $____distributions.normal,\n getWindowedAverager: $____utils.getWindowedAverager,\n getAngleBetweenVec: $____utils.getAngleBetweenVec,\n minimize: minimize\n};\n","import constants from 'models/md2d/models/engine/constants/index';\n\nvar unit = constants.unit,\n\n // Classic MW uses a value for Coulomb's constant that is effectively 0.346 of the real value\n CLASSIC_MW_FUDGE_FACTOR = 0.346,\n\n COULOMB_CONSTANT_IN_METERS_PER_FARAD = constants.COULOMB_CONSTANT.as(constants.unit.METERS_PER_FARAD),\n\n NANOMETERS_PER_METER = constants.ratio(unit.NANOMETER, {\n per: unit.METER\n }),\n COULOMBS_SQ_PER_ELEMENTARY_CHARGE_SQ = Math.pow(constants.ratio(unit.COULOMB, {\n per: unit.ELEMENTARY_CHARGE\n }), 2),\n\n EV_PER_JOULE = constants.ratio(unit.EV, {\n per: unit.JOULE\n }),\n MW_FORCE_UNITS_PER_NEWTON = constants.ratio(unit.MW_FORCE_UNIT, {\n per: unit.NEWTON\n }),\n\n // Coulomb constant for expressing potential in eV given elementary charges, nanometers\n k_ePotential = CLASSIC_MW_FUDGE_FACTOR *\n COULOMB_CONSTANT_IN_METERS_PER_FARAD *\n COULOMBS_SQ_PER_ELEMENTARY_CHARGE_SQ *\n NANOMETERS_PER_METER *\n EV_PER_JOULE,\n\n // Coulomb constant for expressing force in Dalton*nm/fs^2 given elementary charges, nanometers\n k_eForce = CLASSIC_MW_FUDGE_FACTOR *\n COULOMB_CONSTANT_IN_METERS_PER_FARAD *\n COULOMBS_SQ_PER_ELEMENTARY_CHARGE_SQ *\n NANOMETERS_PER_METER *\n NANOMETERS_PER_METER *\n MW_FORCE_UNITS_PER_NEWTON,\n\n // Exports\n\n /** Input:\n r: distance in nanometers,\n q1, q2: elementary charges,\n dC: dielectric constant, unitless,\n rDE: realistic dielectric effect switch, boolean.\n\n Output units: eV\n */\n potential = function(r, q1, q2, dC, rDE) {\n if (rDE && dC > 1 && r < 1.2) {\n // \"Realistic Dielectric Effect\" mode:\n // Diminish dielectric constant value using distance between particles.\n // Function based on: http://en.wikipedia.org/wiki/Generalized_logistic_curve\n // See plot for dC = 80: http://goo.gl/7zU6a\n // For optimization purposes it returns asymptotic value when r > 1.2.\n dC = 1 + (dC - 1) / (1 + Math.exp(-12 * r + 7));\n }\n return k_ePotential * ((q1 * q2) / r) / dC;\n },\n\n\n /** Input:\n rSq: squared distance in nanometers^2,\n q1, q2: elementary charges,\n dC: dielectric constant, unitless,\n rDE: realistic dielectric effect switch, boolean.\n\n Output units: \"MW Force Units\" (Dalton * nm / fs^2)\n */\n forceFromSquaredDistance = function(rSq, q1, q2, dC, rDE) {\n var r = Math.sqrt(rSq);\n if (rDE && dC > 1 && r < 1.2) {\n // \"Realistic Dielectric Effect\" mode:\n // Diminish dielectric constant value using distance between particles.\n // Function based on: http://en.wikipedia.org/wiki/Generalized_logistic_curve\n // See plot for dC = 80: http://goo.gl/7zU6a\n // For optimization purposes it returns asymptotic value when r > 1.2.\n dC = 1 + (dC - 1) / (1 + Math.exp(-12 * r + 7));\n }\n return -k_eForce * ((q1 * q2) / rSq) / dC;\n },\n\n\n forceOverDistanceFromSquaredDistance = function(rSq, q1, q2, dC, rDE) {\n return forceFromSquaredDistance(rSq, q1, q2, dC, rDE) / Math.sqrt(rSq);\n },\n\n /** Input:\n r: distance in nanometers,\n q1, q2: elementary charges,\n dC: dielectric constant, unitless,\n rDE: realistic dielectric effect switch, boolean.\n\n Output units: \"MW Force Units\" (Dalton * nm / fs^2)\n */\n force = function(r, q1, q2, dC, rDE) {\n return forceFromSquaredDistance(r * r, q1, q2, dC, rDE);\n };\n\nexport default {\n potential,\n forceFromSquaredDistance,\n forceOverDistanceFromSquaredDistance,\n force\n};\n","/*jshint eqnull:true boss:true */\nimport constants from 'models/md2d/models/engine/constants/index';\n\nvar unit = constants.unit,\n\n NANOMETERS_PER_METER = constants.ratio(unit.NANOMETER, {\n per: unit.METER\n }),\n MW_FORCE_UNITS_PER_NEWTON = constants.ratio(unit.MW_FORCE_UNIT, {\n per: unit.NEWTON\n });\n\nconst api = {};\n\n/**\n Helper function that returns the correct pairwise epsilon value to be used\n when elements each have epsilon values epsilon1, epsilon2\n*/\napi.pairwiseEpsilon = function(epsilon1, epsilon2) {\n return 0.5 * (epsilon1 + epsilon2);\n};\n\n/**\n Helper function that returns the correct pairwise sigma value to be used\n when elements each have sigma values sigma1, sigma2\n*/\napi.pairwiseSigma = function(sigma1, sigma2) {\n return Math.sqrt(sigma1 * sigma2);\n};\n\n/**\n Helper function that returns the correct rmin value for a given sigma\n*/\napi.rmin = function(sigma) {\n return Math.pow(2, 1 / 6) * sigma;\n};\n\n/**\n Helper function that returns the correct atomic radius for a given sigma\n*/\napi.radius = function(sigma) {\n // See line 637 of Atom.java (org.concord.mw2d.models.Atom)\n // This assumes the \"VdW percentage\" is 100%. In classic MW the VdW percentage is settable.\n return 0.5 * sigma;\n};\n\n/**\n Returns a new object with methods for calculating the force and potential for a Lennard-Jones\n potential with particular values of its parameters epsilon and sigma. These can be adjusted.\n\n To avoid the needing to take square roots during calculation of pairwise forces, there are\n also methods which calculate the inter-particle potential directly from a squared distance, and\n which calculate the quantity (force/distance) directly from a squared distance.\n\n This function also accepts a callback function which will be called with a hash representing\n the new coefficients, whenever the LJ coefficients are changed for the returned calculator.\n*/\napi.newLJCalculator = function(params, cb) {\n\n var epsilon, // parameter; depth of the potential well, in eV\n sigma, // parameter: characteristic distance from particle, in nm\n\n rmin, // distance from particle at which the potential is at its minimum\n alpha_Potential, // precalculated; units are eV * nm^12\n beta_Potential, // precalculated; units are eV * nm^6\n alpha_Force, // units are \"MW Force Units\" * nm^13\n beta_Force, // units are \"MW Force Units\" * nm^7\n\n initialized = false, // skip callback during initialization\n\n setCoefficients = function(e, s) {\n // Input units:\n // epsilon: eV\n // sigma: nm\n\n epsilon = e;\n sigma = s;\n rmin = api.rmin(sigma);\n\n if (epsilon != null && sigma != null) {\n alpha_Potential = 4 * epsilon * Math.pow(sigma, 12);\n beta_Potential = 4 * epsilon * Math.pow(sigma, 6);\n\n // (1 J * nm^12) = (1 N * m * nm^12)\n // (1 N * m * nm^12) * (b nm / m) * (c MWUnits / N) = (abc MWUnits nm^13)\n alpha_Force = 12 * constants.convert(alpha_Potential, {\n from: unit.EV,\n to: unit.JOULE\n }) * NANOMETERS_PER_METER * MW_FORCE_UNITS_PER_NEWTON;\n beta_Force = 6 * constants.convert(beta_Potential, {\n from: unit.EV,\n to: unit.JOULE\n }) * NANOMETERS_PER_METER * MW_FORCE_UNITS_PER_NEWTON;\n }\n\n if (initialized && typeof cb === 'function') cb(getCoefficients(), this);\n },\n\n getCoefficients = function() {\n return {\n epsilon: epsilon,\n sigma: sigma,\n rmin: rmin\n };\n },\n\n validateEpsilon = function(e) {\n if (e == null || parseFloat(e) !== e) {\n throw new Error(\"lennardJones: epsilon value \" + e + \" is invalid\");\n }\n },\n\n validateSigma = function(s) {\n if (s == null || parseFloat(s) !== s || s <= 0) {\n throw new Error(\"lennardJones: sigma value \" + s + \" is invalid\");\n }\n },\n\n // this object\n calculator;\n\n // At creation time, there must be a valid epsilon and sigma ... we're not gonna check during\n // inner-loop force calculations!\n validateEpsilon(params.epsilon);\n validateSigma(params.sigma);\n\n // Initialize coefficients to passed-in values, skipping setCoefficients callback\n setCoefficients(params.epsilon, params.sigma);\n initialized = true;\n\n return calculator = {\n\n getCoefficients: getCoefficients,\n\n setEpsilon: function(e) {\n validateEpsilon(e);\n setCoefficients(e, sigma);\n },\n\n setSigma: function(s) {\n validateSigma(s);\n setCoefficients(epsilon, s);\n },\n\n /**\n Input units: r_sq: nm^2\n Output units: eV\n\n minimum is at r=rmin, V(rmin) = 0\n */\n potentialFromSquaredDistance: function(r_sq) {\n if (!r_sq) return -Infinity;\n return alpha_Potential * Math.pow(r_sq, -6) - beta_Potential * Math.pow(r_sq, -3);\n },\n\n /**\n Input units: r: nm\n Output units: eV\n */\n potential: function(r) {\n return calculator.potentialFromSquaredDistance(r * r);\n },\n\n /**\n Input units: r_sq: nm^2\n Output units: MW Force Units / nm (= Dalton / fs^2)\n */\n forceOverDistanceFromSquaredDistance: function(r_sq) {\n // optimizing divisions actually does appear to be *slightly* faster\n var r_minus2nd = 1 / r_sq,\n r_minus6th = r_minus2nd * r_minus2nd * r_minus2nd,\n r_minus8th = r_minus6th * r_minus2nd,\n r_minus14th = r_minus8th * r_minus6th;\n\n return alpha_Force * r_minus14th - beta_Force * r_minus8th;\n },\n\n /**\n Input units: r: nm\n Output units: MW Force Units (= Dalton * nm / fs^2)\n */\n force: function(r) {\n return r * calculator.forceOverDistanceFromSquaredDistance(r * r);\n }\n };\n};\n\nexport default api;\n","import coulomb from './coulomb';\nimport lennardJones from './lennard-jones';\n\nexport default {\n coulomb,\n lennardJones\n};\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS203: Remove `|| {}` from converted for-own loops\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nCustom pairwise Lennard Jones properties.\n*/\nimport metadata from 'models/md2d/models/metadata';\nimport validator from \"common/validator\";\n\nlet PairwiseLJProperties;\n\nexport default PairwiseLJProperties = class PairwiseLJProperties {\n\n constructor(engine) {\n this._engine = engine;\n this._data = {};\n }\n\n registerChangeHooks(changePreHook, changePostHook) {\n this._changePreHook = changePreHook;\n return this._changePostHook = changePostHook;\n }\n\n set(i, j, props) {\n props = validator.validate(metadata.pairwiseLJProperties, props);\n\n this._changePreHook();\n\n if ((this._data[i] == null)) {\n this._data[i] = {};\n }\n if ((this._data[j] == null)) {\n this._data[j] = {};\n }\n if ((this._data[i][j] == null)) {\n this._data[i][j] = (this._data[j][i] = {});\n }\n\n for (let key of Object.keys(props || {})) {\n this._data[i][j][key] = props[key];\n }\n\n this._engine.setPairwiseLJProperties(i, j);\n\n return this._changePostHook();\n }\n\n remove(i, j) {\n this._changePreHook();\n\n delete this._data[i][j];\n delete this._data[j][i];\n\n this._engine.setPairwiseLJProperties(i, j);\n\n return this._changePostHook();\n }\n\n get(i, j) {\n if (this._data[i] && this._data[i][j]) {\n return this._data[i][j];\n } else {\n return undefined;\n }\n }\n\n deserialize(array) {\n for (let props of array) {\n props = validator.validateCompleteness(metadata.pairwiseLJProperties, props);\n // Save element indices and delete them from properties object. It makes no\n // sense to store this information, as it's redundant.\n const el1 = props.element1;\n const el2 = props.element2;\n delete props.element1;\n delete props.element2;\n this.set(el1, el2, props);\n }\n\n // Avoid an unwanted comprehension.\n }\n\n serialize() {\n const result = [];\n for (let key1 of Object.keys(this._data || {})) {\n const innerObj = this._data[key1];\n for (let key2 of Object.keys(innerObj || {})) {\n if (key1 < key2) {\n const props = this.get(key1, key2);\n props.element1 = Number(key1);\n props.element2 = Number(key2);\n result.push(props);\n }\n }\n }\n\n return result;\n }\n\n /*\n Clone-Restore Interface.\n */\n clone() {\n // Use jQuery extend and return a copy.\n return $.extend(true, {}, this._data);\n }\n\n restore(state) {\n // Just overwrite @_data variable.\n this._data = state;\n\n // Enforce update of engine properties.\n for (let key1 of Object.keys(this._data || {})) {\n const innerObj = this._data[key1];\n for (let key2 of Object.keys(innerObj || {})) {\n if (key1 < key2) {\n this._engine.setPairwiseLJProperties(key1, key2);\n }\n }\n }\n\n // Avoid an unwanted comprehension.\n }\n};\n","\n// Cell lists (also sometimes referred to as Cell linked-lists) are a tool for\n// finding all atom pairs within a given cut-off distance of each other in\n// Molecular dynamics simulations.\n// See: http://en.wikipedia.org/wiki/Cell_lists\n\nexport default function CellList(width, height, cellSize) {\n var api,\n colsNum,\n rowsNum,\n cellsNum,\n cell,\n\n init = function() {\n var i;\n colsNum = Math.ceil(width / cellSize);\n rowsNum = Math.ceil(height / cellSize);\n cellsNum = colsNum * rowsNum;\n cell = new Array(cellsNum);\n for (i = 0; i < cellsNum; i++) {\n cell[i] = [];\n }\n };\n\n init();\n\n // Public API.\n api = {\n reinitialize: function(newWidth, newHeight, newCellSize) {\n var change = false;\n if (newWidth !== undefined) {\n if (newWidth !== width) {\n width = newWidth;\n change = true;\n }\n }\n if (newHeight !== undefined) {\n if (newHeight !== height) {\n height = newHeight;\n change = true;\n }\n }\n if (newCellSize !== undefined) {\n if (newCellSize !== cellSize) {\n cellSize = newCellSize;\n change = true;\n }\n }\n if (change) init();\n },\n\n addToCell: function(atomIdx, x, y) {\n var cellIdx = Math.floor(y / cellSize) * colsNum + Math.floor(x / cellSize);\n cell[cellIdx].push(atomIdx);\n },\n\n getCell: function(idx) {\n return cell[idx];\n },\n\n getRowsNum: function() {\n return rowsNum;\n },\n\n getColsNum: function() {\n return colsNum;\n },\n\n getNeighboringCells: function(rowIdx, colIdx) {\n var cellIdx = rowIdx * colsNum + colIdx,\n result = [];\n\n // Upper right.\n if (colIdx + 1 < colsNum && rowIdx + 1 < rowsNum) result.push(cell[cellIdx + colsNum + 1]);\n // Right.\n if (colIdx + 1 < colsNum) result.push(cell[cellIdx + 1]);\n // Bottom right.\n if (colIdx + 1 < colsNum && rowIdx - 1 >= 0) result.push(cell[cellIdx - colsNum + 1]);\n // Bottom.\n if (rowIdx - 1 >= 0) result.push(cell[cellIdx - colsNum]);\n\n return result;\n },\n\n clear: function() {\n var i;\n for (i = 0; i < cellsNum; i++) {\n cell[i].length = 0;\n }\n }\n };\n\n return api;\n};\n","\n// A Verlet list (named after Loup Verlet) is a data structure in molecular dynamics simulations\n// to efficiently maintain a list of all particles within a given cut-off distance of each other.\n// See: http://en.wikipedia.org/wiki/Verlet_list\n\nimport arrays from 'arrays';\nimport arrayTypes from 'common/array-types';\n// Dependencies.\n\nexport default function NeighborList(atomsNum, maxDisplacement) {\n var api,\n maxAtomsNum,\n listIdx,\n listCapacity,\n list,\n head,\n tail,\n x,\n y,\n forceUpdate,\n\n init = function() {\n // Keep maximum capacity of lists bigger than actual number of atoms.\n maxAtomsNum = atomsNum + 10;\n listIdx = 0;\n listCapacity = maxAtomsNum * (maxAtomsNum - 1) / 2;\n forceUpdate = true;\n\n list = arrays.create(listCapacity, 0, arrayTypes.int16Type);\n head = arrays.create(maxAtomsNum, -1, arrayTypes.int16Type);\n tail = arrays.create(maxAtomsNum, -1, arrayTypes.int16Type);\n // Fill x and y with Infinity, so shouldUpdate(..)\n // will return true during first call after initialization.\n x = arrays.create(maxAtomsNum, Infinity, arrayTypes.floatType);\n y = arrays.create(maxAtomsNum, Infinity, arrayTypes.floatType);\n };\n\n init();\n\n // Public API.\n api = {\n reinitialize: function(newAtomsNum, newMaxDisplacement) {\n atomsNum = newAtomsNum;\n maxDisplacement = newMaxDisplacement;\n forceUpdate = true;\n\n if (atomsNum > maxAtomsNum) {\n init();\n }\n },\n clear: function() {\n var i;\n listIdx = 0;\n for (i = 0; i < atomsNum; i++) {\n head[i] = tail[i] = -1;\n }\n },\n getList: function() {\n return list;\n },\n markNeighbors: function(i, j) {\n if (head[i] < 0) {\n head[i] = listIdx;\n }\n list[listIdx] = j;\n listIdx++;\n tail[i] = listIdx;\n },\n getStartIdxFor: function(i) {\n return head[i];\n },\n getEndIdxFor: function(i) {\n return tail[i];\n },\n saveAtomPosition: function(i, xCoord, yCoord) {\n x[i] = xCoord;\n y[i] = yCoord;\n },\n invalidate: function() {\n forceUpdate = true;\n },\n shouldUpdate: function(newX, newY) {\n var maxDx = -Infinity,\n maxDy = -Infinity,\n i;\n\n if (forceUpdate) {\n forceUpdate = false;\n return true;\n }\n\n for (i = 0; i < atomsNum; i++) {\n if (Math.abs(newX[i] - x[i]) > maxDx) {\n maxDx = Math.abs(newX[i] - x[i]);\n }\n if (Math.abs(newY[i] - y[i]) > maxDy) {\n maxDy = Math.abs(newY[i] - y[i]);\n }\n }\n\n return Math.sqrt(maxDx * maxDx + maxDy * maxDy) > maxDisplacement;\n }\n };\n\n return api;\n};\n","\n// The PluginController manages an array of plugins, and can call arbitrary functions\n// on any registered plugin that responds to that function.\n\n// TODO:\n//\n// 1. Plugins should define engine component and modeler component\n// 2. Plugins should validate their own properties\n// 3. Plugin controller should handle initialization of plugins and mixing of appropriate methods\n// and properties into the modeler layer. The main modeler and engine layers should not have to\n// know details about which plugins are available, what they're named, where they are located,\n// etc.\n// 4. Plugin controller have a 'getPluginFunction' method which accepts a function name and returns\n// a function that, when called, does the same thing as callPluginFunction(,...).\n// This avoids having to look up the plugin function by name every time it is called.\n\nexport default function PluginController() {\n var plugins = [];\n\n // Public API.\n return {\n registerPlugin: function(plugin) {\n plugins.push(plugin);\n },\n\n /**\n Calls method 'funcName' of every plugin, for those plugins which have a property 'funcName',\n in the context of the plugin (i.e., 'this' value is the plugin object) and with the elements\n of the array 'args' as the argument array of the invocation.\n\n If 'callback' is defined, it will be invoked with the callback.\n\n The callback signature is callback(returnValue, index, plugin) where returnValue is the\n return value of the method called, i is the index of the plugin, and plugin is the plugin\n object itself.\n */\n callPluginFunction: function(funcName, args, callback) {\n var i, ii, func, retVal;\n\n for (i = 0, ii = plugins.length; i < ii; i++) {\n func = plugins[i][funcName];\n if (func) {\n retVal = func.apply(plugins[i], args);\n }\n if (callback) {\n callback(retVal, i, plugins[i]);\n }\n }\n }\n };\n};\n","\nimport arrays from 'arrays';\nimport arrayTypes from 'common/array-types';\nimport console from 'common/console';\nimport constants from './constants/index';\nimport aminoacidsHelper from 'models/md2d/models/aminoacids-helper';\nimport math from './math/index';\nimport potentials from './potentials/index';\nimport PairwiseLJProperties from './pairwise-lj-properties';\nimport CloneRestoreWrapper from 'common/models/engines/clone-restore-wrapper';\nimport CellList from './cell-list';\nimport NeighborList from './neighbor-list';\nimport PluginController from 'common/models/plugin-controller';\nimport utils from './utils';\n\nvar\n unit = constants.unit,\n coulomb = potentials.coulomb,\n lennardJones = potentials.lennardJones,\n\n BOLTZMANN_CONSTANT_IN_JOULES = constants.BOLTZMANN_CONSTANT.as(unit.JOULES_PER_KELVIN),\n\n cross = function(a0, a1, b0, b1) {\n return a0 * b1 - a1 * b0;\n },\n\n sumSquare = function(a, b) {\n return a * a + b * b;\n },\n\n /**\n Convert total kinetic energy in the container of N atoms to a temperature in Kelvin.\n\n Input units:\n KE: \"MW Energy Units\" (Dalton * nm^2 / fs^2)\n Output units:\n T: K\n */\n convertKEtoT = function(totalKEinMWUnits, N) {\n if (N === 0) return 0;\n var averageKEinMWUnits = totalKEinMWUnits / N,\n averageKEinJoules = constants.convert(averageKEinMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.JOULE\n });\n return averageKEinJoules / BOLTZMANN_CONSTANT_IN_JOULES;\n },\n\n /**\n Convert a temperature in Kelvin to the total kinetic energy in the container of N atoms.\n\n Input units:\n T: K\n Output units:\n KE: \"MW Energy Units\" (Dalton * nm^2 / fs^2)\n */\n convertTtoKE = function(T, N) {\n var averageKEinJoules = T * BOLTZMANN_CONSTANT_IN_JOULES,\n averageKEinMWUnits = constants.convert(averageKEinJoules, {\n from: unit.JOULE,\n to: unit.MW_ENERGY_UNIT\n }),\n totalKEinMWUnits = averageKEinMWUnits * N;\n\n return totalKEinMWUnits;\n },\n\n validateTemperature = function(t) {\n var temperature = parseFloat(t);\n\n if (isNaN(temperature)) {\n throw new Error(\"md2d: requested temperature \" + t + \" could not be understood.\");\n }\n if (temperature < 0) {\n throw new Error(\"md2d: requested temperature \" + temperature + \" was less than zero\");\n }\n if (temperature === Infinity) {\n throw new Error(\"md2d: requested temperature was Infinity!\");\n }\n };\n\nexport const createEngine = function() {\n\n var // the object to be returned\n engine,\n\n // Whether system dimensions have been set. This is only allowed to happen once.\n sizeHasBeenInitialized = false,\n\n pluginController = new PluginController(),\n\n // Whether to simulate Coulomb forces between particles.\n useCoulombInteraction = false,\n\n // Dielectric constant, it influences Coulomb interaction.\n // E.g. a dielectric of 80 means a Coulomb force 1/80th as strong.\n dielectricConst = 1,\n\n // Whether dielectric effect should be realistic or simplified. Realistic\n // version takes into account distance between charged particles and reduces\n // dielectric constant when particles are closer to each other.\n realisticDielectricEffect = true,\n\n // Parameter that reflects the watery extent of the solvent, when an effective\n // hydrophobic/hydrophilic interaction is used. A negative value represents oil environment\n // (usually -1). A positive one represents water environment (usually 1). A zero value means vacuum.\n solventForceType = 0,\n\n // State describing whether DNA translation is in progress.\n // TODO: move all functionality connected with DNA and proteins to engine plugins!\n dnaTranslationInProgress = false,\n\n // Parameter that influences strength of force applied to amino acids by water of oil (solvent).\n solventForceFactor = 1,\n\n // Additional force applied to amino acids that depends on distance from the center of mass. It affects\n // only AAs which are pulled into the center of mass (to stabilize shape of the protein).\n additionalSolventForceMult = 25,\n additionalSolventForceThreshold = 3,\n\n // Whether to simulate Lennard Jones forces between particles.\n useLennardJonesInteraction = true,\n\n // Whether to use the thermostat to maintain the system temperature near T_target.\n useThermostat = false,\n\n // A value to use in calculating if two atoms are close enough for a VDW line to be displayed\n vdwLinesRatio = 1.67,\n\n // If a numeric value include gravitational field in force calculations,\n // otherwise value should be false\n gravitationalField = false,\n\n // Desired system temperature, in Kelvin.\n T_target,\n\n // System dimensions as [x, y] in nanometers. Default value can be changed until particles are created.\n size = [10, 10],\n\n // System dimensions as minX, minY, maxX, maxY. Default value can be changed until turles are created.\n minX = 0,\n minY = 0,\n maxX = 10,\n maxY = 10,\n\n // Viscosity of the medium of the model\n viscosity,\n\n // The current model time, in femtoseconds.\n time = 0,\n\n // The current integration time step, in femtoseconds.\n dt,\n\n // Square of integration time step, in fs^2.\n dt_sq,\n\n // ####################################################################\n // Atom Properties\n\n // Individual property arrays for the atoms, indexed by atom number\n radius, px, py, x, y, vx, vy, speed, ax, ay, charge, element, friction, radical, pinned, mass, hydrophobicity,\n // Helper array, which may be used by various engine routines traversing atoms in untypical order.\n // Make sure that you reset it before use. At the moment, it's used by updateAminoAcidForces() function.\n visited,\n\n // An object that contains references to the above atom-property arrays\n atoms,\n\n // The number of atoms in the system.\n N = 0,\n\n // ####################################################################\n // Element Properties\n\n // Individual property arrays for the elements\n elementMass,\n elementEpsilon,\n elementSigma,\n elementRadius,\n elementColor,\n\n // An object that contains references to the above element-property arrays\n elements,\n\n // Number of actual elements (may be smaller than the length of the property arrays).\n N_elements = 0,\n\n // Additional structure, keeping information if given element is represented by\n // some atom in the model. Necessary for effective max cut-off distance calculation.\n elementUsed = [],\n\n // ####################################################################\n // Custom Pairwise LJ Properties\n pairwiseLJProperties,\n\n // ####################################################################\n // Radial Bond Properties\n\n // Individual property arrays for the \"radial\" bonds, indexed by bond number\n radialBondAtom1Index,\n radialBondAtom2Index,\n radialBondLength,\n radialBondStrength,\n radialBondType,\n\n // An object that contains references to the above radial-bond-property arrays.\n // Left undefined if there are no radial bonds.\n radialBonds,\n\n // Number of actual radial bonds (may be smaller than the length of the property arrays).\n N_radialBonds = 0,\n\n // Flag indicating if some radial bonds were added or removed during the integration step.\n radialBondsChanged = false,\n\n // ####################################################################\n // Restraint Properties\n\n // Individual property arrays for the \"restraint\" bonds, indexed by bond number.\n restraintAtomIndex,\n restraintK,\n restraintX0,\n restraintY0,\n\n // An object that contains references to the above restraint-property arrays.\n // Left undefined if there are no restraints.\n restraints,\n\n // Number of actual restraint bonds (may be smaller than the length of the property arrays).\n N_restraints = 0,\n\n // ####################################################################\n // Angular Bond Properties\n\n // Individual property arrays for the \"angular\" bonds, indexed by bond number.\n angularBondAtom1Index,\n angularBondAtom2Index,\n angularBondAtom3Index,\n angularBondAngle,\n angularBondStrength,\n\n // An object that contains references to the above angular-bond-property arrays.\n // Left undefined if there are no angular bonds.\n angularBonds,\n\n // Number of actual angular bonds (may be smaller than the length of the property arrays).\n N_angularBonds = 0,\n\n // ####################################################################\n // Obstacle Properties\n\n // Individual properties for the obstacles\n obstacleX,\n obstacleY,\n obstacleWidth,\n obstacleHeight,\n obstacleVX,\n obstacleVY,\n obstacleExtAX,\n obstacleExtAY,\n obstacleFriction,\n obstacleMass,\n obstacleWestProbe,\n obstacleNorthProbe,\n obstacleEastProbe,\n obstacleSouthProbe,\n obstacleColor,\n obstacleVisible,\n obstaclePermeability,\n\n // Properties used only during internal calculations (e.g. shouldn't\n // be returned during getObstacleProperties(i) call - TODO!).\n obstacleXPrev,\n obstacleYPrev,\n\n // ### Pressure calculation ###\n // Arrays containing sum of impulses 2mv/dt from atoms hitting the probe.\n // These values are later stored in pressureBuffers object, interpolated\n // (last average of last PRESSURE_BUFFERS_LEN values) and converted\n // to value in Bar by getPressureFromProbe() function.\n obstacleWProbeValue,\n obstacleNProbeValue,\n obstacleEProbeValue,\n obstacleSProbeValue,\n\n // An object that contains references to the above obstacle-property arrays.\n // Left undefined if there are no obstacles.\n obstacles,\n\n // Number of actual obstacles\n N_obstacles = 0,\n\n // ####################################################################\n // Shape Properties\n\n // Individual properties for the shapes\n shapeType,\n shapeX,\n shapeY,\n shapeWidth,\n shapeHeight,\n shapeFence,\n shapeColor,\n shapeLineColor,\n shapeLineDashes,\n shapeLineWeight,\n shapeLayer,\n shapeLayerPosition,\n shapeVisible,\n\n // An object that contains references to the above shape-property arrays.\n // Left undefined if there are no shapes.\n shapes,\n\n // Number of actual shapes\n N_shapes = 0,\n\n\n // ####################################################################\n // Line Properties\n\n // Individual properties for the lines\n lineX1,\n lineY1,\n lineX2,\n lineY2,\n lineBeginStyle,\n lineEndStyle,\n lineFence,\n lineLineColor,\n lineLineDashes,\n lineLineWeight,\n lineLayer,\n lineLayerPosition,\n lineVisible,\n\n // An object that contains references to the above line-property arrays.\n // Left undefined if there are no lines.\n lines,\n\n // Number of actual lines\n N_lines = 0,\n\n // ####################################################################\n // Electric Field Properties\n\n // Individual properties for the electric fields.\n electricFieldIntensity,\n electricFieldOrientation,\n electricFieldShapeIdx,\n\n // An object that contains references to the above shape-property arrays.\n // Left undefined if there are no electric fields.\n electricFields,\n\n // Number of actual electric fields.\n N_electricFields = 0,\n\n // ####################################################################\n // Misc Properties\n // Hash of arrays containing VdW pairs\n vdwPairs,\n\n // Number of VdW pairs\n N_vdwPairs,\n\n // Arrays of VdW pair atom #1 and atom #2 indices\n vdwPairAtom1Index,\n vdwPairAtom2Index,\n\n // Arrays for spring forces, which are forces defined between an atom and a point in space\n springForceAtomIndex,\n springForceX,\n springForceY,\n springForceStrength,\n\n // An array whose members are the above spring-force-property arrays\n springForces,\n\n // The number of spring forces currently being applied in the model.\n N_springForces = 0,\n\n // Cell list structure.\n cellList,\n\n // Neighbor (Verlet) list structure.\n neighborList,\n\n // Information whether neighbor list should be\n // recalculated in the current integration step.\n updateNeighborList,\n\n //\n // The location of the center of mass, in nanometers.\n x_CM, y_CM,\n\n // Linear momentum of the system, in Dalton * nm / fs.\n px_CM, py_CM,\n\n // Velocity of the center of mass, in nm / fs.\n vx_CM, vy_CM,\n\n // Angular momentum of the system wrt its center of mass\n L_CM,\n\n // (Instantaneous) moment of inertia of the system wrt its center of mass\n I_CM,\n\n // Angular velocity of the system about the center of mass, in radians / fs.\n // (= angular momentum about CM / instantaneous moment of inertia about CM)\n omega_CM,\n\n // instantaneous system temperature, in Kelvin\n T,\n\n // cutoff for force calculations, as a factor of sigma\n cutoff = 4,\n cutoffDistance_LJ_sq = [],\n\n // cutoff for neighbor list calculations, as a factor of sigma\n cutoffList = 4.1,\n cutoffNeighborListSquared = [],\n\n // Each object at ljCalculator[i,j] can calculate the magnitude of the Lennard-Jones force and\n // potential between elements i and j\n ljCalculator = [],\n\n // List of particles representing cysteine amino acid, which can possibly create disulphide bonds.\n // So, each cysteine in this list is NOT already connected to other cysteine.\n freeCysteinesList = [],\n\n // Initializes basic data structures.\n initialize = function() {\n createElementsArray(0);\n createAtomsArray(0);\n createAngularBondsArray(0);\n createRadialBondsArray(0);\n createRestraintsArray(0);\n createVdwPairsArray(0);\n createSpringForcesArray(0);\n createObstaclesArray(0);\n createShapesArray(0);\n createLinesArray(0);\n createElectricFieldsArray(0);\n\n // Custom pairwise properties.\n pairwiseLJProperties = new PairwiseLJProperties(engine);\n },\n\n // Throws an informative error if a developer tries to use the setCoefficients method of an\n // in-use LJ calculator. (Hint: for an interactive LJ chart, create a new LJ calculator with\n // the desired coefficients; call setElementProperties to change the LJ properties in use.)\n ljCoefficientChangeError = function() {\n throw new Error(\"md2d: Don't change the epsilon or sigma parameters of the LJ calculator being used by MD2D. Use the setElementProperties method instead.\");\n },\n\n // Initialize epsilon, sigma, cutoffDistance_LJ_sq, cutoffNeighborListSquared, and ljCalculator\n // array elements for element pair i and j\n setPairwiseLJProperties = function(i, j) {\n var epsilon_i = elementEpsilon[i],\n epsilon_j = elementEpsilon[j],\n sigma_i = elementSigma[i],\n sigma_j = elementSigma[j],\n customProps = pairwiseLJProperties.get(i, j),\n e,\n s;\n\n if (customProps && customProps.epsilon !== undefined) {\n e = customProps.epsilon;\n } else {\n e = lennardJones.pairwiseEpsilon(epsilon_i, epsilon_j);\n }\n\n if (customProps && customProps.sigma !== undefined) {\n s = customProps.sigma;\n } else {\n s = lennardJones.pairwiseSigma(sigma_i, sigma_j);\n }\n\n // Cutoff for Lennard-Jones interactions.\n cutoffDistance_LJ_sq[i][j] = cutoffDistance_LJ_sq[j][i] = (cutoff * s) * (cutoff * s);\n // Cutoff for neighbor lists calculations.\n cutoffNeighborListSquared[i][j] = cutoffNeighborListSquared[j][i] = (cutoffList * s) * (cutoffList * s);\n\n ljCalculator[i][j] = ljCalculator[j][i] = lennardJones.newLJCalculator({\n epsilon: e,\n sigma: s\n }, ljCoefficientChangeError);\n },\n\n // Calculates maximal cut-off used in the current model. Functions checks all used\n // elements at the moment. When new atom is added, maximum cut-off distance should\n // be recalculated.\n computeMaxCutoff = function() {\n var maxCutoff = 0,\n customProps,\n sigma,\n i, j;\n\n for (i = 0; i < N_elements; i++) {\n for (j = 0; j <= i; j++) {\n if (elementUsed[i] && elementUsed[j]) {\n customProps = pairwiseLJProperties.get(i, j);\n if (customProps && customProps.sigma !== undefined) {\n sigma = customProps.sigma;\n } else {\n sigma = lennardJones.pairwiseSigma(elementSigma[i], elementSigma[j]);\n }\n // Use cutoffList, as cell lists are used to calculate neighbor lists.\n if (cutoffList * sigma > maxCutoff) {\n maxCutoff = cutoffList * sigma;\n }\n }\n }\n }\n // If maxCutoff === 0, return size of the model\n // as a default cutoff distance for empty model.\n return maxCutoff || Math.max(size[0], size[1]);\n },\n\n // Returns a minimal difference between \"real\" cutoff\n // and cutoff used in neighbor list. This can be considered\n // as a minimal displacement of atom, which triggers neighbor\n // list recalculation (or maximal allowed displacement to avoid\n // recalculation).\n computeNeighborListMaxDisplacement = function() {\n var maxDisplacement = Infinity,\n customProps,\n sigma,\n i, j;\n\n for (i = 0; i < N_elements; i++) {\n for (j = 0; j <= i; j++) {\n if (elementUsed[i] && elementUsed[j]) {\n customProps = pairwiseLJProperties.get(i, j);\n if (customProps && customProps.sigma !== undefined) {\n sigma = customProps.sigma;\n } else {\n sigma = lennardJones.pairwiseSigma(elementSigma[i], elementSigma[j]);\n }\n\n if ((cutoffList - cutoff) * sigma < maxDisplacement) {\n maxDisplacement = (cutoffList - cutoff) * sigma;\n }\n }\n }\n }\n return maxDisplacement;\n },\n\n // Initializes special structure for short-range forces calculation\n // optimization. Cell lists support neighbor list.\n initializeCellList = function() {\n if (cellList === undefined) {\n cellList = new CellList(size[0], size[1], computeMaxCutoff());\n } else {\n cellList.reinitialize(size[0], size[1], computeMaxCutoff());\n }\n },\n\n // Initializes special structure for short-range forces calculation\n // optimization. Neighbor list cooperates with cell list.\n initializeNeighborList = function() {\n if (neighborList === undefined) {\n neighborList = new NeighborList(N, computeNeighborListMaxDisplacement());\n } else {\n neighborList.reinitialize(N, computeNeighborListMaxDisplacement());\n }\n },\n\n /**\n Set up \"shortcut\" references, e.g., x = atoms.x\n */\n assignShortcutReferences = {\n\n atoms: function() {\n radius = atoms.radius;\n px = atoms.px;\n py = atoms.py;\n x = atoms.x;\n y = atoms.y;\n vx = atoms.vx;\n vy = atoms.vy;\n speed = atoms.speed;\n ax = atoms.ax;\n ay = atoms.ay;\n charge = atoms.charge;\n friction = atoms.friction;\n radical = atoms.radical;\n element = atoms.element;\n pinned = atoms.pinned;\n mass = atoms.mass;\n hydrophobicity = atoms.hydrophobicity;\n visited = atoms.visited;\n },\n\n radialBonds: function() {\n radialBondAtom1Index = radialBonds.atom1;\n radialBondAtom2Index = radialBonds.atom2;\n radialBondLength = radialBonds.length;\n radialBondStrength = radialBonds.strength;\n radialBondType = radialBonds.type;\n },\n\n restraints: function() {\n restraintAtomIndex = restraints.atomIndex;\n restraintK = restraints.k;\n restraintX0 = restraints.x0;\n restraintY0 = restraints.y0;\n },\n\n angularBonds: function() {\n angularBondAtom1Index = angularBonds.atom1;\n angularBondAtom2Index = angularBonds.atom2;\n angularBondAtom3Index = angularBonds.atom3;\n angularBondAngle = angularBonds.angle;\n angularBondStrength = angularBonds.strength;\n },\n\n elements: function() {\n elementMass = elements.mass;\n elementEpsilon = elements.epsilon;\n elementSigma = elements.sigma;\n elementRadius = elements.radius;\n elementColor = elements.color;\n },\n\n obstacles: function() {\n obstacleX = obstacles.x;\n obstacleY = obstacles.y;\n obstacleWidth = obstacles.width;\n obstacleHeight = obstacles.height;\n obstacleMass = obstacles.mass;\n obstacleVX = obstacles.vx;\n obstacleVY = obstacles.vy;\n obstacleExtAX = obstacles.externalAx;\n obstacleExtAY = obstacles.externalAy;\n obstacleFriction = obstacles.friction;\n obstacleWestProbe = obstacles.westProbe;\n obstacleNorthProbe = obstacles.northProbe;\n obstacleEastProbe = obstacles.eastProbe;\n obstacleSouthProbe = obstacles.southProbe;\n obstacleWProbeValue = obstacles.westProbeValue;\n obstacleNProbeValue = obstacles.northProbeValue;\n obstacleEProbeValue = obstacles.eastProbeValue;\n obstacleSProbeValue = obstacles.southProbeValue;\n obstacleXPrev = obstacles.xPrev;\n obstacleYPrev = obstacles.yPrev;\n obstacleColor = obstacles.color;\n obstacleVisible = obstacles.visible;\n obstaclePermeability = obstacles.permeability;\n },\n\n shapes: function() {\n shapeType = shapes.type;\n shapeX = shapes.x;\n shapeY = shapes.y;\n shapeWidth = shapes.width;\n shapeHeight = shapes.height;\n shapeFence = shapes.fence;\n shapeColor = shapes.color;\n shapeLineColor = shapes.lineColor;\n shapeLineDashes = shapes.lineDashes;\n shapeLineWeight = shapes.lineWeight;\n shapeLayer = shapes.layer;\n shapeLayerPosition = shapes.layerPosition;\n shapeVisible = shapes.visible;\n },\n\n lines: function() {\n lineX1 = lines.x1;\n lineY1 = lines.y1;\n lineX2 = lines.x2;\n lineY2 = lines.y2;\n lineBeginStyle = lines.beginStyle;\n lineEndStyle = lines.endStyle;\n lineFence = lines.fence;\n lineLineColor = lines.lineColor;\n lineLineDashes = lines.lineDashes;\n lineLineWeight = lines.lineWeight;\n lineLayer = lines.layer;\n lineLayerPosition = lines.layerPosition;\n lineVisible = lines.visible;\n },\n\n electricFields: function() {\n electricFieldIntensity = electricFields.intensity;\n electricFieldOrientation = electricFields.orientation;\n electricFieldShapeIdx = electricFields.shapeIdx;\n },\n\n springForces: function() {\n springForceAtomIndex = springForces[0];\n springForceX = springForces[1];\n springForceY = springForces[2];\n springForceStrength = springForces[3];\n },\n\n vdwPairs: function() {\n vdwPairAtom1Index = vdwPairs.atom1;\n vdwPairAtom2Index = vdwPairs.atom2;\n }\n\n },\n\n createElementsArray = function(num) {\n elements = engine.elements = {};\n\n elements.mass = arrays.create(num, 0, arrayTypes.floatType);\n elements.epsilon = arrays.create(num, 0, arrayTypes.floatType);\n elements.sigma = arrays.create(num, 0, arrayTypes.floatType);\n elements.radius = arrays.create(num, 0, arrayTypes.floatType);\n elements.color = [];\n\n assignShortcutReferences.elements();\n },\n\n createAtomsArray = function(num) {\n atoms = {};\n\n // TODO. DRY this up by letting the property list say what type each array is\n atoms.radius = arrays.create(num, 0, arrayTypes.floatType);\n atoms.px = arrays.create(num, 0, arrayTypes.floatType);\n atoms.py = arrays.create(num, 0, arrayTypes.floatType);\n atoms.x = arrays.create(num, 0, arrayTypes.floatType);\n atoms.y = arrays.create(num, 0, arrayTypes.floatType);\n atoms.vx = arrays.create(num, 0, arrayTypes.floatType);\n atoms.vy = arrays.create(num, 0, arrayTypes.floatType);\n atoms.speed = arrays.create(num, 0, arrayTypes.floatType);\n atoms.ax = arrays.create(num, 0, arrayTypes.floatType);\n atoms.ay = arrays.create(num, 0, arrayTypes.floatType);\n atoms.charge = arrays.create(num, 0, arrayTypes.floatType);\n atoms.friction = arrays.create(num, 0, arrayTypes.floatType);\n atoms.radical = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.element = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.pinned = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.mass = arrays.create(num, 0, arrayTypes.floatType);\n atoms.hydrophobicity = arrays.create(num, 0, arrayTypes.int8Type);\n atoms.visited = arrays.create(num, 0, arrayTypes.uint8Type);\n // For the sake of clarity, manage all atoms properties in one\n // place (engine). In the future, think about separation of engine\n // properties and view-oriented properties like these:\n atoms.marked = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.visible = arrays.create(num, 0, arrayTypes.floatType);\n atoms.draggable = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.draggableWhenStopped = arrays.create(num, 1, arrayTypes.uint8Type);\n\n assignShortcutReferences.atoms();\n },\n\n createRadialBondsArray = function(num) {\n radialBonds = engine.radialBonds = {};\n\n radialBonds.atom1 = arrays.create(num, 0, arrayTypes.uint16Type);\n radialBonds.atom2 = arrays.create(num, 0, arrayTypes.uint16Type);\n radialBonds.length = arrays.create(num, 0, arrayTypes.floatType);\n radialBonds.strength = arrays.create(num, 0, arrayTypes.floatType);\n radialBonds.type = arrays.create(num, 0, arrayTypes.uint8Type);\n\n assignShortcutReferences.radialBonds();\n },\n\n createRestraintsArray = function(num) {\n restraints = engine.restraints = {};\n\n restraints.atomIndex = arrays.create(num, 0, arrayTypes.uint16Type);\n restraints.k = arrays.create(num, 0, arrayTypes.floatType);\n restraints.x0 = arrays.create(num, 0, arrayTypes.floatType);\n restraints.y0 = arrays.create(num, 0, arrayTypes.floatType);\n\n assignShortcutReferences.restraints();\n },\n\n createAngularBondsArray = function(num) {\n angularBonds = engine.angularBonds = {};\n\n angularBonds.atom1 = arrays.create(num, 0, arrayTypes.uint16Type);\n angularBonds.atom2 = arrays.create(num, 0, arrayTypes.uint16Type);\n angularBonds.atom3 = arrays.create(num, 0, arrayTypes.uint16Type);\n angularBonds.angle = arrays.create(num, 0, arrayTypes.floatType);\n angularBonds.strength = arrays.create(num, 0, arrayTypes.floatType);\n\n assignShortcutReferences.angularBonds();\n },\n\n createVdwPairsArray = function(num) {\n vdwPairs = engine.vdwPairs = {};\n\n vdwPairs.count = 0;\n vdwPairs.atom1 = arrays.create(num, 0, arrayTypes.uint16Type);\n vdwPairs.atom2 = arrays.create(num, 0, arrayTypes.uint16Type);\n },\n\n createSpringForcesArray = function(num) {\n springForces = engine.springForces = [];\n\n // TODO: not very descriptive. Use hash of arrays like elsewhere.\n springForces[0] = arrays.create(num, 0, arrayTypes.uint16Type);\n springForces[1] = arrays.create(num, 0, arrayTypes.floatType);\n springForces[2] = arrays.create(num, 0, arrayTypes.floatType);\n springForces[3] = arrays.create(num, 0, arrayTypes.floatType);\n\n assignShortcutReferences.springForces();\n },\n\n createObstaclesArray = function(num) {\n obstacles = engine.obstacles = {};\n\n obstacles.x = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.y = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.width = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.height = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.mass = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.vx = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.vy = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.externalAx = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.externalAy = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.friction = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.westProbe = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.northProbe = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.eastProbe = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.southProbe = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.westProbeValue = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.northProbeValue = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.eastProbeValue = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.southProbeValue = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.xPrev = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.yPrev = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.color = [];\n obstacles.visible = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.displayExternalAcceleration = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.permeability = [];\n\n assignShortcutReferences.obstacles();\n },\n\n createShapesArray = function(num) {\n shapes = engine.shapes = {};\n\n shapes.type = [];\n shapes.x = arrays.create(num, 0, arrayTypes.floatType);\n shapes.y = arrays.create(num, 0, arrayTypes.floatType);\n shapes.width = arrays.create(num, 0, arrayTypes.floatType);\n shapes.height = arrays.create(num, 0, arrayTypes.floatType);\n shapes.color = [];\n shapes.lineColor = [];\n shapes.lineDashes = [];\n shapes.lineWeight = arrays.create(num, 0, arrayTypes.floatType);\n shapes.layer = arrays.create(num, 0, arrayTypes.uint8Type);\n shapes.layerPosition = arrays.create(num, 0, arrayTypes.uint8Type);\n shapes.visible = arrays.create(num, 0, arrayTypes.uint8Type);\n shapes.fence = arrays.create(num, 0, arrayTypes.uint8Type);\n\n assignShortcutReferences.shapes();\n },\n\n createLinesArray = function(num) {\n lines = engine.lines = {};\n\n lines.x1 = arrays.create(num, 0, arrayTypes.floatType);\n lines.y1 = arrays.create(num, 0, arrayTypes.floatType);\n lines.x2 = arrays.create(num, 0, arrayTypes.floatType);\n lines.y2 = arrays.create(num, 0, arrayTypes.floatType);\n lines.beginStyle = [];\n lines.endStyle = [];\n lines.lineColor = [];\n lines.lineDashes = [];\n lines.lineWeight = arrays.create(num, 0, arrayTypes.floatType);\n lines.layer = arrays.create(num, 0, arrayTypes.uint8Type);\n lines.layerPosition = arrays.create(num, 0, arrayTypes.uint8Type);\n lines.visible = arrays.create(num, 0, arrayTypes.uint8Type);\n lines.fence = arrays.create(num, 0, arrayTypes.uint8Type);\n\n assignShortcutReferences.lines();\n },\n\n createElectricFieldsArray = function(num) {\n electricFields = engine.electricFields = {};\n\n electricFields.intensity = arrays.create(num, 0, arrayTypes.floatType);\n electricFields.orientation = [];\n electricFields.shapeIdx = [];\n\n assignShortcutReferences.electricFields();\n },\n\n // Calculates & returns instantaneous temperature of the system.\n computeTemperature = function() {\n var twoKE = 0,\n i;\n\n // Particles.\n for (i = 0; i < N; i++) {\n twoKE += mass[i] * (vx[i] * vx[i] + vy[i] * vy[i]);\n }\n // Obstacles.\n for (i = 0; i < N_obstacles; i++) {\n if (obstacleMass[i] !== Infinity) {\n twoKE += obstacleMass[i] *\n (obstacleVX[i] * obstacleVX[i] + obstacleVY[i] * obstacleVY[i]);\n }\n }\n\n return convertKEtoT(twoKE / 2, N);\n },\n\n // Calculates & returns the instaneous temperature of a particular group of atoms\n computeTemperatureOfAtoms = function(atomIndices) {\n var twoKE = 0,\n i,\n j;\n\n // Particles.\n for (i = 0; i < atomIndices.length; i++) {\n j = atomIndices[i];\n twoKE += mass[j] * (vx[j] * vx[j] + vy[j] * vy[j]);\n }\n\n return convertKEtoT(twoKE / 2, atomIndices.length);\n },\n\n // Adds the velocity vector (vx_t, vy_t) to the velocity vector of particle i\n addVelocity = function(i, vx_t, vy_t) {\n vx[i] += vx_t;\n vy[i] += vy_t;\n\n px[i] = vx[i] * mass[i];\n py[i] = vy[i] * mass[i];\n },\n\n // Adds effect of angular velocity omega, relative to (x_CM, y_CM), to the velocity vector of particle i\n addAngularVelocity = function(i, omega) {\n vx[i] -= omega * (y[i] - y_CM);\n vy[i] += omega * (x[i] - x_CM);\n\n px[i] = vx[i] * mass[i];\n py[i] = vy[i] * mass[i];\n },\n\n // Subtracts the center-of-mass linear velocity and the system angular velocity from the velocity vectors\n removeTranslationAndRotationFromVelocities = function() {\n for (var i = 0; i < N; i++) {\n addVelocity(i, -vx_CM, -vy_CM);\n addAngularVelocity(i, -omega_CM);\n }\n },\n\n // currently unused, implementation saved here for future reference:\n\n // // Adds the center-of-mass linear velocity and the system angular velocity back into the velocity vectors\n // addTranslationAndRotationToVelocities = function() {\n // for (var i = 0; i < N; i++) {\n // addVelocity(i, vx_CM, vy_CM);\n // addAngularVelocity(i, omega_CM);\n // }\n // },\n\n // Subroutine that calculates the position and velocity of the center of mass, leaving these in x_CM, y_CM,\n // vx_CM, and vy_CM, and that then computes the system angular velocity around the center of mass, leaving it\n // in omega_CM.\n computeSystemTranslation = function() {\n var x_sum = 0,\n y_sum = 0,\n px_sum = 0,\n py_sum = 0,\n totalMass = engine.getTotalMass(),\n i;\n\n for (i = 0; i < N; i++) {\n x_sum += x[i];\n y_sum += y[i];\n px_sum += px[i];\n py_sum += py[i];\n }\n\n x_CM = x_sum / N;\n y_CM = y_sum / N;\n px_CM = px_sum;\n py_CM = py_sum;\n vx_CM = px_sum / totalMass;\n vy_CM = py_sum / totalMass;\n },\n\n // Subroutine that calculates the angular momentum and moment of inertia around the center of mass, and then\n // uses these to calculate the weighted angular velocity around the center of mass.\n // Updates I_CM, L_CM, and omega_CM.\n // Requires x_CM, y_CM, vx_CM, vy_CM to have been calculated.\n computeSystemRotation = function() {\n var L = 0,\n I = 0,\n m,\n i;\n\n for (i = 0; i < N; i++) {\n m = mass[i];\n // L_CM = sum over N of of mr_i x p_i (where r_i and p_i are position & momentum vectors relative to the CM)\n L += m * cross(x[i] - x_CM, y[i] - y_CM, vx[i] - vx_CM, vy[i] - vy_CM);\n I += m * sumSquare(x[i] - x_CM, y[i] - y_CM);\n }\n\n L_CM = L;\n I_CM = I;\n omega_CM = L_CM / I_CM;\n },\n\n computeCMMotion = function() {\n computeSystemTranslation();\n computeSystemRotation();\n },\n\n // ####################################################################\n // # Functions handling different collisions. #\n // ####################################################################\n\n // Constrain obstacle i to the area between the walls by simulating perfectly elastic collisions with the walls.\n bounceObstacleOffWalls = function(i) {\n var leftwall = 0,\n bottomwall = 0,\n width = size[0],\n height = size[1],\n rightwall = width - obstacleWidth[i],\n topwall = height - obstacleHeight[i];\n\n // Bounce off vertical walls.\n if (obstacleX[i] < leftwall) {\n while (obstacleX[i] < leftwall - width) {\n obstacleX[i] += width;\n }\n obstacleX[i] = leftwall + (leftwall - obstacleX[i]);\n obstacleVX[i] *= -1;\n } else if (obstacleX[i] > rightwall) {\n while (obstacleX[i] > rightwall + width) {\n obstacleX[i] -= width;\n }\n obstacleX[i] = rightwall - (obstacleX[i] - rightwall);\n obstacleVX[i] *= -1;\n }\n\n // Bounce off horizontal walls.\n if (obstacleY[i] < bottomwall) {\n while (obstacleY[i] < bottomwall - height) {\n obstacleY[i] += height;\n }\n obstacleY[i] = bottomwall + (bottomwall - obstacleY[i]);\n obstacleVY[i] *= -1;\n } else if (obstacleY[i] > topwall) {\n while (obstacleY[i] > topwall + width) {\n obstacleY[i] -= width;\n }\n obstacleY[i] = topwall - (obstacleY[i] - topwall);\n obstacleVY[i] *= -1;\n }\n },\n\n // Constrain particle i to the area between the walls by simulating perfectly elastic collisions with the walls.\n // Note this may change the linear and angular momentum.\n bounceParticleOffWalls = function(i) {\n var r = radius[i],\n leftwall = r,\n bottomwall = r,\n width = size[0],\n height = size[1],\n rightwall = width - r,\n topwall = height - r;\n\n // Bounce off vertical walls.\n if (x[i] < leftwall) {\n while (x[i] < leftwall - width) {\n x[i] += width;\n }\n x[i] = leftwall + (leftwall - x[i]);\n vx[i] *= -1;\n px[i] *= -1;\n } else if (x[i] > rightwall) {\n while (x[i] > rightwall + width) {\n x[i] -= width;\n }\n x[i] = rightwall - (x[i] - rightwall);\n vx[i] *= -1;\n px[i] *= -1;\n }\n\n // Bounce off horizontal walls\n if (y[i] < bottomwall) {\n while (y[i] < bottomwall - height) {\n y[i] += height;\n }\n y[i] = bottomwall + (bottomwall - y[i]);\n vy[i] *= -1;\n py[i] *= -1;\n } else if (y[i] > topwall) {\n while (y[i] > topwall + height) {\n y[i] -= height;\n }\n y[i] = topwall - (y[i] - topwall);\n vy[i] *= -1;\n py[i] *= -1;\n }\n },\n bounceParticleOffObstacles = function(i, x_prev, y_prev, updatePressure) {\n // fast path if no obstacles\n if (N_obstacles < 1) return;\n\n var r,\n xi,\n yi,\n\n j,\n\n x_left,\n x_right,\n y_top,\n y_bottom,\n x_left_prev,\n x_right_prev,\n y_top_prev,\n y_bottom_prev,\n vxPrev,\n vyPrev,\n obs_vxPrev,\n obs_vyPrev,\n atom_mass,\n obs_mass,\n atomElement,\n totalMass,\n bounceDirection;\n\n r = radius[i];\n xi = x[i];\n yi = y[i];\n atomElement = element[i];\n\n for (j = 0; j < N_obstacles; j++) {\n if (obstaclePermeability[j].indexOf(atomElement) !== -1) {\n // obstaclePermeability lists elements that are not interacting with given obstacle.\n continue;\n }\n\n x_left = obstacleX[j] - r;\n x_right = obstacleX[j] + obstacleWidth[j] + r;\n y_top = obstacleY[j] + obstacleHeight[j] + r;\n y_bottom = obstacleY[j] - r;\n\n x_left_prev = obstacleXPrev[j] - r;\n x_right_prev = obstacleXPrev[j] + obstacleWidth[j] + r;\n y_top_prev = obstacleYPrev[j] + obstacleHeight[j] + r;\n y_bottom_prev = obstacleYPrev[j] - r;\n\n // Reset bounceDirection, which indicates collision type.\n bounceDirection = 0;\n // Check all possibilities for a collision with the rectangular obstacle.\n if (xi > x_left && xi < x_right && yi > y_bottom && yi < y_top) {\n if (x_prev <= x_left_prev) {\n x[i] = x_left - (xi - x_left);\n bounceDirection = 1; // West wall collision.\n } else if (x_prev >= x_right_prev) {\n x[i] = x_right + (x_right - xi);\n bounceDirection = 2; // East wall collision.\n } else if (y_prev <= y_bottom_prev) {\n y[i] = y_bottom - (yi - y_bottom);\n bounceDirection = -1; // South wall collision.\n } else if (y_prev >= y_top_prev) {\n y[i] = y_top + (y_top - yi);\n bounceDirection = -2; // North wall collision.\n }\n }\n\n obs_mass = obstacleMass[j];\n\n if (bounceDirection !== 0) {\n if (obs_mass !== Infinity) {\n // if we have real mass, perform a perfectly-elastic collision\n atom_mass = mass[i];\n totalMass = obs_mass + atom_mass;\n if (bounceDirection > 0) {\n vxPrev = vx[i];\n obs_vxPrev = obstacleVX[j];\n\n vx[i] = (vxPrev * (atom_mass - obs_mass) + (2 * obs_mass * obs_vxPrev)) / totalMass;\n obstacleVX[j] = (obs_vxPrev * (obs_mass - atom_mass) + (2 * px[i])) / totalMass;\n } else {\n vyPrev = vy[i];\n obs_vyPrev = obstacleVY[j];\n\n vy[i] = (vyPrev * (atom_mass - obs_mass) + (2 * obs_mass * obs_vyPrev)) / totalMass;\n obstacleVY[j] = (obs_vyPrev * (obs_mass - atom_mass) + (2 * py[i])) / totalMass;\n }\n } else {\n // if we have infinite mass, just reflect (like a wall)\n if (bounceDirection > 0) {\n vx[i] *= -1;\n } else {\n vy[i] *= -1;\n }\n }\n\n if (updatePressure) {\n // Update pressure probes if there are any.\n if (obstacleWestProbe[j] && bounceDirection === 1) {\n // 1 is west wall collision.\n obstacleWProbeValue[j] += mass[i] * ((vxPrev ? vxPrev : -vx[i]) - vx[i]);\n } else if (obstacleEastProbe[j] && bounceDirection === 2) {\n // 2 is west east collision.\n obstacleEProbeValue[j] += mass[i] * (vx[i] - (vxPrev ? vxPrev : -vx[i]));\n } else if (obstacleSouthProbe[j] && bounceDirection === -1) {\n // -1 is south wall collision.\n obstacleSProbeValue[j] += mass[i] * ((vyPrev ? vyPrev : -vy[i]) - vy[i]);\n } else if (obstacleNorthProbe[j] && bounceDirection === -2) {\n // -2 is north wall collision.\n obstacleNProbeValue[j] += mass[i] * (vy[i] - (vyPrev ? vyPrev : -vy[i]));\n }\n }\n\n }\n }\n },\n\n bounceParticleOffShapes = function(i, x_prev, y_prev) {\n // fast path if no shapes\n if (N_shapes < 1) return;\n\n var r,\n xi,\n yi,\n\n j,\n\n x_inside_left,\n x_inside_right,\n y_inside_top,\n y_inside_bottom,\n x_outside_left,\n x_outside_right,\n y_outside_top,\n y_outside_bottom,\n\n shapeX_offset, shapeY_offset,\n\n tx, ty,\n tx_prev, ty_prev,\n ar, br,\n\n a, b, c,\n f1x, f1y, f1d,\n f2x, f2y, f2d,\n tvx, tvy,\n mx, my,\n nx, ny, nd;\n\n r = radius[i];\n xi = x[i];\n yi = y[i];\n\n\n for (j = 0; j < N_shapes; j++) {\n\n if (!shapeFence[j])\n continue;\n\n if (shapeType[j] === 'rectangle') {\n\n x_outside_left = shapeX[j] - r;\n x_outside_right = shapeX[j] + shapeWidth[j] + r;\n y_outside_top = shapeY[j] + shapeHeight[j] + r;\n y_outside_bottom = shapeY[j] - r;\n\n x_inside_left = shapeX[j] + r;\n x_inside_right = shapeX[j] + shapeWidth[j] - r;\n y_inside_top = shapeY[j] + shapeHeight[j] - r;\n y_inside_bottom = shapeY[j] + r;\n\n // Check all outside collisions\n if (xi > x_outside_left && xi < x_outside_right && yi > y_outside_bottom && yi < y_outside_top) {\n if (x_prev <= x_outside_left) {\n x[i] = x_outside_left - (xi - x_outside_left);\n vx[i] *= -1;\n } else if (x_prev >= x_outside_right) {\n x[i] = x_outside_right + (x_outside_right - xi);\n vx[i] *= -1;\n } else if (y_prev <= y_outside_bottom) {\n y[i] = y_outside_bottom - (yi - y_outside_bottom);\n vy[i] *= -1;\n } else if (y_prev >= y_outside_top) {\n y[i] = y_outside_top + (y_outside_top - yi);\n vy[i] *= -1;\n }\n }\n //Check all inside collisions\n if (x_prev > x_inside_left && x_prev < x_inside_right && y_prev > y_inside_bottom && y_prev < y_inside_top) {\n if (xi <= x_inside_left) {\n x[i] = x_inside_left + (x_inside_left - xi);\n vx[i] *= -1;\n } else if (xi >= x_inside_right) {\n x[i] = x_inside_right - (xi - x_inside_right);\n vx[i] *= -1;\n }\n if (yi <= y_inside_bottom) {\n y[i] = y_inside_bottom + (y_inside_bottom - yi);\n vy[i] *= -1;\n } else if (yi >= y_inside_top) {\n y[i] = y_inside_top - (yi - y_inside_top);\n vy[i] *= -1;\n }\n }\n } else if (shapeType[j] === 'ellipse') {\n a = shapeWidth[j] / 2;\n b = shapeHeight[j] / 2;\n // Transform points from model space to ellipse space\n // to facilitate collision checking\n shapeX_offset = shapeX[j] + a;\n shapeY_offset = shapeY[j] + b;\n tx = (xi - shapeX_offset) / (a + r);\n ty = (yi - shapeY_offset) / (b + r);\n tx *= tx;\n ty *= ty;\n tx_prev = (x_prev - shapeX_offset) / (a + r);\n ty_prev = (y_prev - shapeY_offset) / (b + r);\n tx_prev *= tx_prev;\n ty_prev *= ty_prev;\n ar = (a + r) / (a - r);\n br = (b + r) / (b - r);\n ar *= ar;\n br *= br;\n if (tx + ty <= 1 && tx_prev + ty_prev > 1 || tx * ar + ty * br >= 1 && tx_prev * ar + ty_prev * br < 1) {\n\n // Calculate the two foci\n if (shapeWidth[j] > shapeHeight[j]) {\n c = Math.sqrt(a * a - b * b);\n f1x = shapeX[j] + a + c;\n f2x = shapeX[j] + a - c;\n f1y = f2y = shapeY[j] + b;\n } else {\n c = Math.sqrt(b * b - a * a);\n f1x = f2x = shapeX[j] + a;\n f1y = shapeY[j] + b + c;\n f2y = shapeY[j] + b - c;\n }\n\n\n // Determine the midpoint of the atom's motion path\n // so it can be used as an approximate point of collision\n mx = (xi + x_prev) / 2;\n my = (yi + y_prev) / 2;\n\n // Determine the distance from the point of collision\n // to both foci\n f1d = Math.sqrt(sumSquare(f1x - mx, f1y - my));\n f2d = Math.sqrt(sumSquare(f2x - mx, f2x - mx));\n\n // Calculate the angle bisector which is the normal vector\n nx = mx - (f1x * f2d + f2x * f1d) / (f1d + f2d);\n ny = my - (f1y * f2d + f2y * f1d) / (f1d + f2d);\n\n // Normalize the normal vector\n nd = Math.sqrt(sumSquare(nx, ny));\n nx /= nd;\n ny /= nd;\n\n // Reflect the atom's position off the normal vector\n x[i] = (mx - x_prev) - 2 * ((mx - x_prev) * nx + (my - y_prev) * ny) * nx + mx;\n y[i] = (my - y_prev) - 2 * ((mx - x_prev) * nx + (my - y_prev) * ny) * ny + my;\n\n // Reflect the atom's velocity off the normal vector\n tvx = vx[i];\n tvy = vy[i];\n vx[i] = (tvx - 2 * (tvx * nx + tvy * ny) * nx);\n vy[i] = (tvy - 2 * (tvx * nx + tvy * ny) * ny);\n }\n }\n }\n },\n\n bounceParticleOffLines = function(i, x_prev, y_prev) {\n // fast path if no lines\n if (N_lines < 1) return;\n\n var r,\n ld,\n atom1_to_line,\n atom2_to_line,\n line1_to_atom,\n line2_to_atom,\n mx, my,\n nx, ny, nd,\n tvx, tvy,\n j,\n xi, yi;\n\n r = radius[i];\n xi = x[i];\n yi = y[i];\n\n for (j = 0; j < N_lines; j++) {\n if (!lineFence[j])\n continue;\n\n // Find a bunch of cross products to check collision\n line1_to_atom = cross(x_prev - lineX1[j], y_prev - lineY1[j], xi - lineX1[j], yi - lineY1[j]);\n line2_to_atom = cross(x_prev - lineX2[j], y_prev - lineY2[j], xi - lineX2[j], yi - lineY2[j]);\n if (line1_to_atom * line2_to_atom < 0) {\n ld = Math.sqrt(sumSquare(lineX1[j] - lineX2[j], lineY1[j] - lineY2[j]));\n atom1_to_line = cross(lineX2[j] - x_prev, lineY2[j] - y_prev, lineX1[j] - x_prev, lineY1[j] - y_prev);\n atom2_to_line = cross(lineX2[j] - xi, lineY2[j] - yi, lineX1[j] - xi, lineY1[j] - yi);\n if ((atom1_to_line < 0 && atom2_to_line > -r * ld || atom1_to_line > 0 && atom2_to_line < r * ld) &&\n atom1_to_line * line1_to_atom > 0) {\n // Collision!\n\n // Determine the midpoint of the atom's motion path\n // so it can be used as an approximate point of collision\n mx = (xi + x_prev) / 2;\n my = (yi + y_prev) / 2;\n\n // Caclulate the normal vector (just perpendicular to the line)\n nx = lineY2[j] - lineY1[j];\n ny = -(lineX2[j] - lineX1[j]);\n\n // Normalize the normal vector\n nd = Math.sqrt(sumSquare(nx, ny));\n nx /= nd;\n ny /= nd;\n\n // Reflect the atom's position off the normal vector\n x[i] = (mx - x_prev) - 2 * ((mx - x_prev) * nx + (my - y_prev) * ny) * nx + mx;\n y[i] = (my - y_prev) - 2 * ((mx - x_prev) * nx + (my - y_prev) * ny) * ny + my;\n\n // Reflect the atom's velocity off the normal vector\n tvx = vx[i];\n tvy = vy[i];\n vx[i] = (tvx - 2 * (tvx * nx + tvy * ny) * nx);\n vy[i] = (tvy - 2 * (tvx * nx + tvy * ny) * ny);\n }\n }\n }\n },\n\n // ####################################################################\n // # Functions calculating forces and accelerations. #\n // ####################################################################\n\n // Calculate distance and force (if distance < cut-off distance).\n calculateLJInteraction = function(i, j) {\n var elI = element[i],\n elJ = element[j],\n dx = x[j] - x[i],\n dy = y[j] - y[i],\n rSq = sumSquare(dx, dy),\n fOverR, fx, fy;\n\n if (updateNeighborList && rSq < cutoffNeighborListSquared[elI][elJ]) {\n neighborList.markNeighbors(i, j);\n }\n\n // Don't calculate LJ interaction between bonded atoms. However note that bonded atoms\n // will be marked as neighbors during list update - it's necessary to avoid divergence\n // when the bond is removed.\n if (radialBondMatrix && radialBondMatrix[i] && radialBondMatrix[i][j]) return;\n\n if (rSq < cutoffDistance_LJ_sq[elI][elJ]) {\n fOverR = ljCalculator[elI][elJ].forceOverDistanceFromSquaredDistance(rSq);\n fx = fOverR * dx;\n fy = fOverR * dy;\n ax[i] += fx;\n ay[i] += fy;\n ax[j] -= fx;\n ay[j] -= fy;\n }\n },\n\n updateShortRangeForces = function() {\n // Fast path if Lennard Jones interaction is disabled.\n if (!useLennardJonesInteraction) return;\n\n if (updateNeighborList) {\n console.time('cell lists');\n shortRangeForcesCellList();\n console.timeEnd('cell lists');\n } else {\n console.time('neighbor list');\n shortRangeForcesNeighborList();\n console.timeEnd('neighbor list');\n }\n },\n\n shortRangeForcesCellList = function() {\n var rows = cellList.getRowsNum(),\n cols = cellList.getColsNum(),\n i, j, temp, cellIdx, cell1, cell2,\n a, b, atom1Idx, cell1Len, cell2Len,\n n, nLen, cellNeighbors;\n\n for (i = 0; i < rows; i++) {\n temp = i * cols;\n for (j = 0; j < cols; j++) {\n cellIdx = temp + j;\n\n cell1 = cellList.getCell(cellIdx);\n cellNeighbors = cellList.getNeighboringCells(i, j);\n\n for (a = 0, cell1Len = cell1.length; a < cell1Len; a++) {\n atom1Idx = cell1[a];\n\n // Interactions inside the cell.\n for (b = 0; b < a; b++) {\n calculateLJInteraction(atom1Idx, cell1[b]);\n }\n // Interactions between neighboring cells.\n for (n = 0, nLen = cellNeighbors.length; n < nLen; n++) {\n cell2 = cellNeighbors[n];\n for (b = 0, cell2Len = cell2.length; b < cell2Len; b++) {\n calculateLJInteraction(atom1Idx, cell2[b]);\n }\n }\n }\n }\n }\n },\n\n shortRangeForcesNeighborList = function() {\n var nlist = neighborList.getList(),\n atom1Idx, atom2Idx, i, len;\n\n for (atom1Idx = 0; atom1Idx < N; atom1Idx++) {\n for (i = neighborList.getStartIdxFor(atom1Idx), len = neighborList.getEndIdxFor(atom1Idx); i < len; i++) {\n atom2Idx = nlist[i];\n calculateLJInteraction(atom1Idx, atom2Idx);\n }\n }\n },\n\n updateLongRangeForces = function() {\n // Fast path if Coulomb interaction is disabled or there are no charged atoms.\n if (!useCoulombInteraction || chargedAtomsList.length === 0) return;\n\n var i, j, len, dx, dy, rSq, fOverR, fx, fy,\n charge1, atom1Idx, atom2Idx,\n bondingPartners;\n\n for (i = 0, len = chargedAtomsList.length; i < len; i++) {\n atom1Idx = chargedAtomsList[i];\n charge1 = charge[atom1Idx];\n bondingPartners = radialBondMatrix && radialBondMatrix[atom1Idx];\n for (j = 0; j < i; j++) {\n atom2Idx = chargedAtomsList[j];\n if (bondingPartners && bondingPartners[atom2Idx]) continue;\n\n dx = x[atom2Idx] - x[atom1Idx];\n dy = y[atom2Idx] - y[atom1Idx];\n rSq = dx * dx + dy * dy;\n\n fOverR = coulomb.forceOverDistanceFromSquaredDistance(rSq, charge1, charge[atom2Idx],\n dielectricConst, realisticDielectricEffect);\n\n fx = fOverR * dx;\n fy = fOverR * dy;\n ax[atom1Idx] += fx;\n ay[atom1Idx] += fy;\n ax[atom2Idx] -= fx;\n ay[atom2Idx] -= fy;\n }\n }\n },\n\n updateFrictionForces = function() {\n if (!viscosity) return;\n\n var i,\n drag;\n\n for (i = 0; i < N; i++) {\n drag = viscosity * friction[i];\n\n ax[i] += (-vx[i] * drag);\n ay[i] += (-vy[i] * drag);\n }\n },\n\n updateRadialBondForces = function() {\n // fast path if no radial bonds have been defined\n if (N_radialBonds < 1) return;\n\n var i, i1, i2, dx, dy,\n rSq, r, k, r0,\n fOverR, fx, fy;\n\n for (i = 0; i < N_radialBonds; i++) {\n i1 = radialBondAtom1Index[i];\n i2 = radialBondAtom2Index[i];\n\n dx = x[i2] - x[i1];\n dy = y[i2] - y[i1];\n rSq = dx * dx + dy * dy;\n r = Math.sqrt(rSq);\n\n // eV/nm^2\n k = radialBondStrength[i];\n\n // nm\n r0 = radialBondLength[i];\n\n // \"natural\" Next Gen MW force units / nm\n fOverR = constants.convert(k * (r - r0), {\n from: unit.EV_PER_NM,\n to: unit.MW_FORCE_UNIT\n }) / r;\n\n fx = fOverR * dx;\n fy = fOverR * dy;\n\n ax[i1] += fx;\n ay[i1] += fy;\n ax[i2] -= fx;\n ay[i2] -= fy;\n }\n },\n\n updateAngularBondForces = function() {\n // Fast path if no angular bonds have been defined.\n if (N_angularBonds < 1) return;\n\n var i, i1, i2, i3,\n dxij, dyij, dxkj, dykj, rijSquared, rkjSquared, rij, rkj,\n k, angle, theta, cosTheta, sinTheta,\n forceInXForI, forceInYForI, forceInXForK, forceInYForK,\n commonPrefactor, temp;\n\n for (i = 0; i < N_angularBonds; i++) {\n i1 = angularBondAtom1Index[i];\n i2 = angularBondAtom2Index[i];\n i3 = angularBondAtom3Index[i];\n\n // radian\n angle = angularBondAngle[i];\n\n // (eV/nm * nm) / radian\n k = angularBondStrength[i];\n\n // Calculate angle (theta) between two vectors:\n // Atom1-Atom3 and Atom2-Atom3\n // Atom1 -> i, Atom2 -> k, Atom3 -> j\n dxij = x[i1] - x[i3];\n dxkj = x[i2] - x[i3];\n dyij = y[i1] - y[i3];\n dykj = y[i2] - y[i3];\n rijSquared = dxij * dxij + dyij * dyij;\n rkjSquared = dxkj * dxkj + dykj * dykj;\n rij = Math.sqrt(rijSquared);\n rkj = Math.sqrt(rkjSquared);\n // Calculate cos using dot product definition.\n cosTheta = (dxij * dxkj + dyij * dykj) / (rij * rkj);\n if (cosTheta > 1.0) cosTheta = 1.0;\n else if (cosTheta < -1.0) cosTheta = -1.0;\n // Pythagorean trigonometric identity.\n sinTheta = Math.sqrt(1.0 - cosTheta * cosTheta);\n // Finally:\n theta = Math.acos(cosTheta);\n\n if (sinTheta < 0.0001) sinTheta = 0.0001;\n\n // Calculate force.\n // \"natural\" Next Gen MW force units / nm\n commonPrefactor = constants.convert(k * (theta - angle) / (sinTheta * rij), {\n from: unit.EV_PER_NM,\n to: unit.MW_FORCE_UNIT\n }) / rkj;\n\n // nm^2\n temp = dxij * dxkj + dyij * dykj;\n // Terms in brackets end up with nm unit.\n // commonPrefactor is in \"natural\" Next Gen MW force units / nm,\n // so everything is correct.\n forceInXForI = commonPrefactor * (dxkj - temp * dxij / rijSquared);\n forceInYForI = commonPrefactor * (dykj - temp * dyij / rijSquared);\n forceInXForK = commonPrefactor * (dxij - temp * dxkj / rkjSquared);\n forceInYForK = commonPrefactor * (dyij - temp * dykj / rkjSquared);\n\n ax[i1] += forceInXForI;\n ay[i1] += forceInYForI;\n ax[i2] += forceInXForK;\n ay[i2] += forceInYForK;\n ax[i3] -= (forceInXForI + forceInXForK);\n ay[i3] -= (forceInYForI + forceInYForK);\n }\n },\n\n // FIXME: eliminate duplication with springForces\n updateRestraintForces = function() {\n // fast path if no restraints have been defined\n if (N_restraints < 1) return;\n\n var i,\n dx, dy,\n r, r_sq,\n k,\n f_over_r,\n fx, fy,\n a;\n\n for (i = 0; i < N_restraints; i++) {\n a = restraintAtomIndex[i];\n\n dx = restraintX0[i] - x[a];\n dy = restraintY0[i] - y[a];\n\n if (dx === 0 && dy === 0) continue; // force will be zero\n\n r_sq = dx * dx + dy * dy;\n r = Math.sqrt(r_sq);\n\n // eV/nm^2\n k = restraintK[i];\n\n f_over_r = constants.convert(k * r, {\n from: unit.EV_PER_NM,\n to: unit.MW_FORCE_UNIT\n }) / r;\n\n fx = f_over_r * dx;\n fy = f_over_r * dy;\n\n ax[a] += fx;\n ay[a] += fy;\n }\n },\n\n updateSpringForces = function() {\n if (N_springForces < 1) return;\n\n var i,\n dx, dy,\n r, r_sq,\n k,\n f_over_r,\n fx, fy,\n a;\n\n for (i = 0; i < N_springForces; i++) {\n a = springForceAtomIndex[i];\n\n dx = springForceX[i] - x[a];\n dy = springForceY[i] - y[a];\n\n if (dx === 0 && dy === 0) continue; // force will be zero\n\n r_sq = dx * dx + dy * dy;\n r = Math.sqrt(r_sq);\n\n // eV/nm^2\n k = springForceStrength[i];\n\n f_over_r = constants.convert(k * r, {\n from: unit.EV_PER_NM,\n to: unit.MW_FORCE_UNIT\n }) / r;\n\n fx = f_over_r * dx;\n fy = f_over_r * dy;\n\n ax[a] += fx;\n ay[a] += fy;\n }\n },\n\n // Returns center of mass of given atoms set (molecule).\n getMoleculeCenterOfMass = function(molecule) {\n var xcm = 0,\n ycm = 0,\n totalMass = 0,\n atomIdx, atomMass, i, len;\n\n for (i = 0, len = molecule.length; i < len; i++) {\n atomIdx = molecule[i];\n atomMass = mass[atomIdx];\n xcm += x[atomIdx] * atomMass;\n ycm += y[atomIdx] * atomMass;\n totalMass += atomMass;\n }\n xcm /= totalMass;\n ycm /= totalMass;\n return {\n x: xcm,\n y: ycm\n };\n },\n\n updateAminoAcidForces = function() {\n // Fast path if there is no solvent defined or it doesn't have impact on AAs.\n if (solventForceType === 0 || solventForceFactor === 0 || N < 2) return;\n\n var moleculeAtoms, atomIdx, cm, solventFactor,\n dx, dy, r, fx, fy, temp, i, j, len;\n\n // Reset helper array.\n for (i = 0; i < N; i++) {\n visited[i] = 0;\n }\n\n // Set multiplier of force produced by the solvent.\n // Constants used in Classic MW: 5 * 0.00001 = 0.00005.\n // Multiply it by 0.01 * 120 = 1.2 to convert from\n // 0.1A * 120amu / fs^2 to nm * amu / fs^2.\n // solventForceType is the same like in Classic MW (unitless).\n // solventForceFactor is a new variable used only in Next Gen MW.\n solventFactor = 0.00006 * solventForceType * solventForceFactor;\n\n for (i = 0; i < N; i++) {\n // Calculate forces only *once* for amino acid.\n if (visited[i] === 1) continue;\n\n moleculeAtoms = engine.getMoleculeAtoms(i);\n moleculeAtoms.push(i);\n\n cm = getMoleculeCenterOfMass(moleculeAtoms);\n\n for (j = 0, len = moleculeAtoms.length; j < len; j++) {\n atomIdx = moleculeAtoms[j];\n // Mark that atom was part of processed molecule to avoid\n // calculating its molecule again.\n visited[atomIdx] = 1;\n\n if (hydrophobicity[atomIdx] !== 0) {\n dx = x[atomIdx] - cm.x;\n dy = y[atomIdx] - cm.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r > 0) {\n temp = hydrophobicity[atomIdx] * solventFactor;\n\n // AAs being pulled into the center of mass should feel an additional force factor that depends\n // on distance from the center of mass, ranging between 1 and 25, with 1 being furthest away from the CoM\n // and 25 being the max when at the CoM or within a certain radius of the CoM. In some ways this\n // is closer to nature as the core of a protein is less exposed to solvent and thus even more stable.\n if (temp > 0 && r < additionalSolventForceThreshold) {\n // Force towards the center of mass, distance from the CoM less than a given threshold.\n // Multiply force by an additional factor defined by the linear function of 'r' defined by two points:\n // (0, additionalSolventForceMult) and (additionalSolventForceThreshold, 1).\n temp *= (1 - additionalSolventForceMult) * r / additionalSolventForceThreshold + additionalSolventForceMult;\n }\n\n fx = temp * dx / r;\n fy = temp * dy / r;\n ax[atomIdx] -= fx;\n ay[atomIdx] -= fy;\n }\n }\n }\n }\n },\n\n updateGravitationalAccelerations = function() {\n // fast path if there is no gravitationalField\n if (!gravitationalField) return;\n var i;\n\n for (i = 0; i < N; i++) {\n ay[i] -= gravitationalField;\n }\n },\n\n rectContains = function(i, x, y) {\n var rx = shapeX[i],\n ry = shapeY[i];\n return rx <= x && x <= rx + shapeWidth[i] &&\n ry <= y && y <= ry + shapeHeight[i];\n },\n\n getElFieldForce = function(i) {\n var o = electricFieldOrientation[i];\n return (o === \"N\" || o === \"E\" ? 1 : -1) * electricFieldIntensity[i];\n },\n\n updateElectricFieldsAccelerations = function() {\n // fast path if there are no electric fields\n if (!electricFields) return;\n\n var i, e, o, vertical, rect, temp;\n\n for (e = 0; e < N_electricFields; e++) {\n o = electricFieldOrientation[e];\n vertical = o === \"N\" || o === \"S\";\n temp = getElFieldForce(e) / dielectricConst;\n rect = electricFieldShapeIdx[e];\n\n for (i = 0; i < N; i++) {\n if (rect != null && !rectContains(rect, x[i], y[i])) continue;\n if (vertical) {\n ay[i] += temp * charge[i] / mass[i];\n } else {\n ax[i] += temp * charge[i] / mass[i];\n }\n }\n }\n },\n\n // Push all amino acids above some Y coordinate during DNA translation.\n // TODO: this should be part of the MD2D plug-in for proteins engine!\n updateDNATranslationAccelerations = function() {\n if (!dnaTranslationInProgress) return;\n var i, diff;\n\n for (i = 0; i < N; i++) {\n diff = Math.min(1, 2.2 - y[i]);\n if (diff > 0) {\n ay[i] += 1e-4 * diff;\n ax[i] -= 3e-6;\n }\n }\n },\n\n // ####################################################################\n // # Integration main helper functions. #\n // ####################################################################\n\n // For now, calculate only structures used by proteins engine.\n // TODO: move there calculation of various optimization structures like chargedAtomLists.\n calculateOptimizationStructures = function() {\n var cysteineEl = aminoacidsHelper.cysteineElement,\n idx, i;\n\n // Reset optimization data structure.\n freeCysteinesList.length = 0;\n\n for (i = 0; i < N; i++) {\n if (element[i] === cysteineEl) {\n // At the beginning, assume that each cysteine is \"free\" (ready to create disulfide bond).\n freeCysteinesList.push(i);\n }\n }\n\n for (i = 0; i < N_radialBonds; i++) {\n if (element[radialBondAtom1Index[i]] === cysteineEl && element[radialBondAtom2Index[i]] === cysteineEl) {\n // Two cysteines are already bonded, so remove them from freeCysteinsList.\n idx = freeCysteinesList.indexOf(radialBondAtom1Index[i]);\n if (idx !== -1) arrays.remove(freeCysteinesList, idx);\n idx = freeCysteinesList.indexOf(radialBondAtom2Index[i]);\n if (idx !== -1) arrays.remove(freeCysteinesList, idx);\n }\n }\n },\n\n // Accumulate acceleration into a(t + dt) from all possible interactions, fields\n // and forces connected with atoms.\n updateParticlesAccelerations = function() {\n var i, inverseMass;\n\n if (N === 0) return;\n\n // Zero out a(t) for accumulation of forces into a(t + dt).\n for (i = 0; i < N; i++) {\n ax[i] = ay[i] = 0;\n }\n\n // Check if the neighbor list should be recalculated.\n updateNeighborList = neighborList.shouldUpdate(x, y);\n\n if (updateNeighborList) {\n // Clear both lists.\n cellList.clear();\n neighborList.clear();\n\n for (i = 0; i < N; i++) {\n // Add particle to appropriate cell.\n cellList.addToCell(i, x[i], y[i]);\n // And save its initial position\n // (\"initial\" = position during neighbor list creation).\n neighborList.saveAtomPosition(i, x[i], y[i]);\n }\n }\n\n // ######################################\n // ax and ay are FORCES below this point\n // ######################################\n\n // Accumulate forces into a(t + dt) for all pairwise interactions between\n // particles:\n // Short-range forces (Lennard-Jones interaction).\n console.time('short-range forces');\n updateShortRangeForces();\n console.timeEnd('short-range forces');\n // Long-range forces (Coulomb interaction).\n console.time('long-range forces');\n updateLongRangeForces();\n console.timeEnd('long-range forces');\n\n // Accumulate forces from radially bonded interactions into a(t + dt).\n updateRadialBondForces();\n\n // Accumulate forces from angularly bonded interactions into a(t + dt).\n updateAngularBondForces();\n\n // Accumulate forces from restraint forces into a(t + dt).\n updateRestraintForces();\n\n // Accumulate forces from spring forces into a(t + dt).\n updateSpringForces();\n\n // Accumulate drag forces into a(t + dt).\n updateFrictionForces();\n\n // Apply forces caused by the hydrophobicity.\n // Affects only amino acids in the water or oil solvent.\n updateAminoAcidForces();\n\n // Convert ax, ay from forces to accelerations!\n for (i = 0; i < N; i++) {\n inverseMass = 1 / mass[i];\n ax[i] *= inverseMass;\n ay[i] *= inverseMass;\n }\n\n // ############################################\n // ax and ay are ACCELERATIONS below this point\n // ############################################\n\n // Accumulate optional gravitational accelerations into a(t + dt).\n updateGravitationalAccelerations();\n\n // Accumulate optional accelerations coming from electric fields into a(t + dt).\n updateElectricFieldsAccelerations();\n\n // Push all amino acids above some Y coordinate during DNA translation.\n // TODO: this should be part of the MD2D plug-in for proteins engine!\n updateDNATranslationAccelerations();\n },\n\n // Half of the update of v(t + dt) and p(t + dt) using a. During a single integration loop,\n // call once when a = a(t) and once when a = a(t+dt).\n halfUpdateVelocity = function() {\n var i, m;\n for (i = 0; i < N; i++) {\n m = mass[i];\n vx[i] += 0.5 * ax[i] * dt;\n px[i] = m * vx[i];\n vy[i] += 0.5 * ay[i] * dt;\n py[i] = m * vy[i];\n }\n },\n\n // Calculate r(t + dt, i) from v(t + 0.5 * dt).\n updateParticlesPosition = function() {\n var width100 = size[0] * 100,\n height100 = size[1] * 100,\n xPrev, yPrev, i;\n\n for (i = 0; i < N; i++) {\n xPrev = x[i];\n yPrev = y[i];\n\n x[i] += vx[i] * dt;\n y[i] += vy[i] * dt;\n\n // Simple check if model has diverged. Prevents web browser from crashing.\n // isNaN tests not only x, y, but also vx, vy, ax, ay as test is done after\n // updateParticlesPosition(). If a displacement during one step is larger than width * 100\n // (or height * 100) it means that the velocity is far too big for the current time step.\n if (isNaN(x[i]) || isNaN(y[i]) ||\n Math.abs(x[i]) > width100 || Math.abs(y[i]) > height100) {\n throw new Error(\"Model has diverged!\");\n }\n\n // Bounce off walls.\n bounceParticleOffWalls(i);\n // Bounce off obstacles, update pressure probes.\n bounceParticleOffObstacles(i, xPrev, yPrev, true);\n // Bounce off shapes\n bounceParticleOffShapes(i, xPrev, yPrev);\n // Bounce off lines\n bounceParticleOffLines(i, xPrev, yPrev);\n }\n },\n\n // Removes velocity and acceleration from pinned atoms.\n pinAtoms = function() {\n var i;\n\n for (i = 0; i < N; i++) {\n if (pinned[i]) {\n vx[i] = vy[i] = ax[i] = ay[i] = 0;\n }\n }\n },\n\n // Update speed using velocities.\n updateParticlesSpeed = function() {\n var i;\n\n for (i = 0; i < N; i++) {\n speed[i] = Math.sqrt(vx[i] * vx[i] + vy[i] * vy[i]);\n }\n },\n\n // Calculate new obstacles position using simple integration method.\n updateObstaclesPosition = function() {\n var ax, ay, vx, vy,\n drag, extFx, extFy, i;\n\n for (i = 0; i < N_obstacles; i++) {\n // Fast path when obstacle isn't movable.\n if (obstacleMass[i] === Infinity) continue;\n\n vx = obstacleVX[i];\n vy = obstacleVY[i];\n // External forces are defined per mass unit!\n // So, they are accelerations in fact.\n extFx = obstacleExtAX[i];\n extFy = obstacleExtAY[i];\n\n if (vx || vy || extFx || extFy || gravitationalField) {\n drag = viscosity * obstacleFriction[i];\n ax = extFx - drag * vx;\n ay = extFy - drag * vy - gravitationalField;\n\n obstacleXPrev[i] = obstacleX[i];\n obstacleYPrev[i] = obstacleY[i];\n\n // Update positions.\n obstacleX[i] += vx * dt + 0.5 * ax * dt_sq;\n obstacleY[i] += vy * dt + 0.5 * ay * dt_sq;\n\n // Update velocities.\n obstacleVX[i] += ax * dt;\n obstacleVY[i] += ay * dt;\n\n bounceObstacleOffWalls(i);\n }\n }\n },\n\n // Sets total momentum of each molecule to zero.\n // Useful for proteins engine.\n zeroTotalMomentumOfMolecules = function() {\n var moleculeAtoms, atomIdx, sumX, sumY, invMass,\n i, j, len;\n\n for (i = 0; i < N; i++) {\n visited[i] = 0;\n }\n\n for (i = 0; i < N; i++) {\n // Process each particular atom only *once*.\n if (visited[i] === 1) continue;\n\n moleculeAtoms = engine.getMoleculeAtoms(i);\n if (moleculeAtoms.length === 0) continue;\n moleculeAtoms.push(i);\n\n sumX = sumY = invMass = 0;\n for (j = 0, len = moleculeAtoms.length; j < len; j++) {\n atomIdx = moleculeAtoms[j];\n // Mark that atom was part of processed molecule to avoid\n // calculating its molecule again.\n visited[atomIdx] = 1;\n if (!pinned[atomIdx]) {\n sumX += vx[atomIdx] * mass[atomIdx];\n sumY += vy[atomIdx] * mass[atomIdx];\n invMass += mass[atomIdx];\n }\n }\n invMass = 1.0 / invMass;\n for (j = 0, len = moleculeAtoms.length; j < len; j++) {\n atomIdx = moleculeAtoms[j];\n if (!pinned[atomIdx]) {\n vx[atomIdx] -= sumX * invMass;\n vy[atomIdx] -= sumY * invMass;\n // Update momentum.\n px[atomIdx] = vx[atomIdx] * mass[atomIdx];\n py[atomIdx] = vy[atomIdx] * mass[atomIdx];\n }\n }\n }\n },\n\n adjustTemperature = function(target, forceAdjustment) {\n var rescalingFactor, i;\n\n if (target == null) target = T_target;\n\n T = computeTemperature();\n\n if (T === 0) {\n // Special case when T is 0.\n for (i = 0; i < N; i++) {\n if (pinned[i] === false) {\n // Add some random velocity to unpinned atoms.\n vx[i] = Math.random() * 0.02 - 0.01;\n vy[i] = Math.random() * 0.02 - 0.01;\n }\n }\n // Update temperature.\n T = computeTemperature();\n\n if (T === 0) {\n // This means that all atoms are pinned. Nothing to do.\n return;\n }\n }\n\n if (forceAdjustment || useThermostat && T > 0) {\n rescalingFactor = Math.sqrt(target / T);\n\n // Scale particles velocity.\n for (i = 0; i < N; i++) {\n vx[i] *= rescalingFactor;\n vy[i] *= rescalingFactor;\n px[i] *= rescalingFactor;\n py[i] *= rescalingFactor;\n }\n\n // Scale obstacles velocity.\n for (i = 0; i < N_obstacles; i++) {\n obstacleVX[i] *= rescalingFactor;\n obstacleVY[i] *= rescalingFactor;\n }\n\n T = target;\n }\n },\n\n // Two cysteine AAs can form a covalent bond between their sulphur atoms. We could model this such that\n // when two Cys AAs come close enough a covalent bond is formed (only one between a pair of cysteines).\n createDisulfideBonds = function() {\n var cys1Idx, cys2Idx, xDiff, yDiff, rSq, i, j, len;\n\n for (i = 0, len = freeCysteinesList.length; i < len; i++) {\n cys1Idx = freeCysteinesList[i];\n for (j = i + 1; j < len; j++) {\n cys2Idx = freeCysteinesList[j];\n\n xDiff = x[cys1Idx] - x[cys2Idx];\n yDiff = y[cys1Idx] - y[cys2Idx];\n rSq = xDiff * xDiff + yDiff * yDiff;\n\n // Check whether cysteines are close enough to each other.\n // As both are in the freeCysteinesList, they are not connected.\n if (rSq < 0.07) {\n // Connect cysteines.\n engine.addRadialBond({\n atom1: cys1Idx,\n atom2: cys2Idx,\n length: Math.sqrt(rSq),\n // Default strength of bonds between amino acids.\n strength: 10000,\n // Disulfide bond type.\n type: 109\n });\n\n // Remove both cysteines from freeCysteinesList.\n arrays.remove(freeCysteinesList, i);\n arrays.remove(freeCysteinesList, j);\n\n // Update len, cys1Idx, j as freeCysteinesList has changed.\n // Not very pretty, but probably the fastest way.\n len = freeCysteinesList.length;\n cys1Idx = freeCysteinesList[i];\n j = i + 1;\n }\n }\n }\n },\n\n // ### Pressure calculation ###\n\n // Zero values of pressure probes. It should be called\n // at the beginning of the integration step.\n zeroPressureValues = function() {\n var i;\n for (i = 0; i < N_obstacles; i++) {\n if (obstacleNorthProbe[i]) {\n obstacleNProbeValue[i] = 0;\n }\n if (obstacleSouthProbe[i]) {\n obstacleSProbeValue[i] = 0;\n }\n if (obstacleEastProbe[i]) {\n obstacleEProbeValue[i] = 0;\n }\n if (obstacleWestProbe[i]) {\n obstacleWProbeValue[i] = 0;\n }\n }\n },\n\n // Update probes values so they contain final pressure value in Bar.\n // It should be called at the end of the integration step.\n calculateFinalPressureValues = function(duration) {\n var mult, i;\n // Classic MW converts impulses 2mv/dt to pressure in Bar using constant: 1666667.\n // See: the header of org.concord.mw2d.models.RectangularObstacle.\n // However, Classic MW also uses different units for mass and length:\n // - 120amu instead of 1amu,\n // - 0.1A instead of 1nm.\n // We should convert mass, velocity and obstacle height to Next Gen units.\n // Length units reduce themselves (velocity divided by height or width), only mass is left.\n // So, divide classic MW constant 1666667 by 120 - the result is 13888.89.\n // [ There is unit module available, however for reduction of computational cost,\n // include conversion in the pressure constant, especially considering the fact that\n // conversion from 120amu to amu is quite simple. ]\n mult = 13888.89 / duration;\n for (i = 0; i < N_obstacles; i++) {\n if (obstacleNorthProbe[i]) {\n obstacleNProbeValue[i] *= mult / obstacleWidth[i];\n }\n if (obstacleSouthProbe[i]) {\n obstacleSProbeValue[i] *= mult / obstacleWidth[i];\n }\n if (obstacleEastProbe[i]) {\n obstacleEProbeValue[i] *= mult / obstacleHeight[i];\n }\n if (obstacleWestProbe[i]) {\n obstacleWProbeValue[i] *= mult / obstacleHeight[i];\n }\n }\n },\n\n // Removes all angular bonds that includes atom1 and atom2 as one of the \"arms\".\n // Function is useful when e.g. radial bond is removed.\n removeAngularBondsContaining = function(atom1, atom2, conserveEnergy) {\n var i;\n // Use such \"strange\" form of loop, as while removing one bonds,\n // other change their indexing. So, after removal of bond 5, we\n // should check bond 5 again, as it would be another bond (previously\n // indexed as 6).\n i = 0;\n while (i < N_angularBonds) {\n // Remove related angular bonds.\n if ((angularBondAtom1Index[i] === atom1 && angularBondAtom3Index[i] === atom2) ||\n (angularBondAtom1Index[i] === atom2 && angularBondAtom3Index[i] === atom1) ||\n (angularBondAtom2Index[i] === atom1 && angularBondAtom3Index[i] === atom2) ||\n (angularBondAtom2Index[i] === atom2 && angularBondAtom3Index[i] === atom1))\n engine.removeAngularBond(i, conserveEnergy);\n else\n i++;\n }\n };\n\n // A list of the indices of atoms having nonzero charge.\n // (Yes, this introduces some slightly different code patterns than are used elsewhere here, as\n // it's probably time to evolve away from this-avoidance and the onevar style.)\n var chargedAtomsList = [];\n chargedAtomsList.reset = function() {\n var i, j = 0;\n for (i = 0; i < N; i++) {\n if (atoms.charge[i]) {\n this[j++] = i;\n }\n }\n this.length = j;\n };\n\n // radialBondMatrix[i][j] === true when atoms i and j are \"radially bonded\"\n // radialBondMatrix[i][j] === undefined otherwise\n var radialBondMatrix = [];\n radialBondMatrix.reset = function() {\n var i, atom1, atom2;\n\n this.length = 0;\n\n for (i = 0; i < N_radialBonds; i++) {\n atom1 = radialBondAtom1Index[i];\n atom2 = radialBondAtom2Index[i];\n this[atom1] = this[atom1] || [];\n this[atom1][atom2] = true;\n this[atom2] = this[atom2] || [];\n this[atom2][atom1] = true;\n }\n };\n\n // bondedAtoms[i] contains a list of atoms bonded to atom \"i\".\n var bondedAtoms = [];\n bondedAtoms.reset = function() {\n var i, atom1, atom2;\n\n this.length = 0;\n\n for (i = 0; i < N_radialBonds; i++) {\n atom1 = radialBondAtom1Index[i];\n atom2 = radialBondAtom2Index[i];\n this[atom1] = this[atom1] || [];\n this[atom1].push(atom2);\n this[atom2] = this[atom2] || [];\n this[atom2].push(atom1);\n }\n };\n bondedAtoms.unset = function(atom1, atom2) {\n if (this[atom1]) {\n var atom1Idx = this[atom2].indexOf(atom1);\n var atom2Idx = this[atom1].indexOf(atom2);\n if (atom1Idx !== -1) {\n this[atom1].splice(atom2Idx, 1);\n this[atom2].splice(atom1Idx, 1);\n }\n }\n };\n bondedAtoms.set = function(atom1, atom2) {\n if (this[atom1] == null) {\n this[atom1] = [];\n }\n if (this[atom2] == null) {\n this[atom2] = [];\n }\n this[atom1].push(atom2);\n this[atom2].push(atom1);\n };\n\n // ####################################################################\n // ####################################################################\n\n engine = {\n\n // Adds a new plugin. Plugin will be initialized with the object arrys, so that\n // it can add to them as necessary, and will then be registered in the controller,\n // allowing it to respond to functions passed to the controller from arbitrary\n // points in the md2d code.\n addPlugin: function(plugin) {\n if (plugin.initialize) {\n // plugins can update the data arrays as needed so we pass in the arrays.\n // we do this as an object, so we can add new arrays as needed by the plugins\n // without needing to update all existing plugins\n plugin.initialize({\n atoms: atoms,\n elements: elements,\n radialBonds: radialBonds,\n angularBonds: angularBonds\n });\n }\n\n pluginController.registerPlugin(plugin);\n },\n\n useCoulombInteraction: function(v) {\n useCoulombInteraction = !!v;\n },\n\n useLennardJonesInteraction: function(v) {\n useLennardJonesInteraction = !!v;\n },\n\n useThermostat: function(v) {\n useThermostat = !!v;\n },\n\n setVDWLinesRatio: function(vdwlr) {\n if (typeof vdwlr === \"number\" && vdwlr !== 0) {\n vdwLinesRatio = vdwlr;\n }\n },\n\n setGravitationalField: function(gf) {\n if (typeof gf === \"number\" && gf !== 0) {\n gravitationalField = gf;\n } else {\n gravitationalField = false;\n }\n },\n\n setTemperatureOfAtoms: function(atomIndices, targetT) {\n\n var i, j, vxtmp, vytmp, smallT, smallKE, scale, s, groupT,\n nGroup = atomIndices.length;\n\n // Assign a random direction and speed to atoms with velocity exactly equal to 0 (e.g.\n // cooled drastically or newly created). This ensures that we don't just rescale the\n // velocities of the (possibly small or nonexistent) group of atoms that already have some\n // velocity. After rescaling, the net effect is to transfer some velocity from moving atoms\n // to non-moving atoms.\n\n // Pick a small temperature to assign to non-moving atoms\n smallT = (computeTemperatureOfAtoms(atomIndices) || targetT) * 0.0001;\n smallKE = convertTtoKE(smallT, 1);\n\n // Assign moveable, non-moving atoms a small temperature\n for (i = 0; i < nGroup; i++) {\n j = atomIndices[i];\n if (!pinned[j] && vx[j] === 0 && vy[j] === 0) {\n vxtmp = Math.random() - 0.5;\n vytmp = Math.random() - 0.5;\n s = Math.sqrt((2 * smallKE / mass[j]) / (vxtmp * vxtmp + vytmp * vytmp));\n vx[j] = vxtmp * s;\n vy[j] = vytmp * s;\n }\n }\n\n T = computeTemperature();\n groupT = computeTemperatureOfAtoms(atomIndices);\n\n scale = Math.sqrt(targetT / groupT);\n\n for (i = 0; i < nGroup; i++) {\n j = atomIndices[i];\n engine.setAtomProperties(j, {\n vx: vx[j] * scale,\n vy: vy[j] * scale\n });\n }\n },\n\n getTemperatureOfAtoms: function(atomIndices) {\n return computeTemperatureOfAtoms(atomIndices);\n },\n\n setTargetTemperature: function(v) {\n validateTemperature(v);\n T_target = v;\n },\n\n setDielectricConstant: function(dc) {\n dielectricConst = dc;\n },\n\n setRealisticDielectricEffect: function(r) {\n realisticDielectricEffect = r;\n },\n\n setSolventForceType: function(sft) {\n solventForceType = sft;\n },\n\n setDNAState: function(s) {\n // Don't store DNAState, it's not necessary. Just\n // information whether translation is in progress is useful.\n dnaTranslationInProgress = s.indexOf(\"translation:\") === 0;\n },\n\n setSolventForceFactor: function(sff) {\n solventForceFactor = sff;\n },\n\n setAdditionalSolventForceMult: function(asfm) {\n additionalSolventForceMult = asfm;\n },\n\n setAdditionalSolventForceThreshold: function(asft) {\n additionalSolventForceThreshold = asft;\n },\n\n // Our timekeeping is really a convenience for users of this lib, so let them reset time at will\n setTime: function(t) {\n time = t;\n },\n\n setDimensions: function(v) {\n // NB. We may want to create a simple state diagram for the md engine (as well as for the 'modeler' defined in\n // lab.molecules.js)\n if (sizeHasBeenInitialized) {\n throw new Error(\"The molecular model's size has already been set, and cannot be reset.\");\n }\n minX = v[0];\n minY = v[1];\n maxX = v[2];\n maxY = v[3];\n size = [maxX - minX, maxY - minY];\n sizeHasBeenInitialized = true;\n },\n\n getDimensions: function() {\n return [minX, minY, maxX, maxY];\n },\n\n getLJCalculator: function() {\n return ljCalculator;\n },\n\n setAtomProperties: function(i, props) {\n var cysteineEl = aminoacidsHelper.cysteineElement,\n key, amino, j;\n\n if (props.element !== undefined) {\n if (props.element < 0 || props.element >= N_elements) {\n throw new Error(\"md2d: Unknown element \" + props.element + \", an atom can't be created.\");\n }\n\n // Special case when cysteine AA is morphed into other AA type,\n // which can't create disulphide bonds. Remove a connected\n // disulphide bond if it exists.\n if (element[i] === cysteineEl && props.element !== cysteineEl) {\n for (j = 0; j < N_radialBonds; j++) {\n if ((radialBondAtom1Index[j] === i || radialBondAtom2Index[j] === i) &&\n radialBondType[j] === 109) {\n // Remove the radial bond representing disulphide bond.\n engine.removeRadialBond(j);\n // One cysteine can create only one disulphide bond so there is no need to continue the loop.\n break;\n }\n }\n }\n\n // Mark element as used by some atom (used by performance optimizations).\n elementUsed[props.element] = true;\n\n // Update mass and radius when element is changed.\n props.mass = elementMass[props.element];\n props.radius = elementRadius[props.element];\n\n if (aminoacidsHelper.isAminoAcid(props.element)) {\n amino = aminoacidsHelper.getAminoAcidByElement(props.element);\n // Setup properties which are relevant to amino acids.\n props.charge = amino.charge;\n // Note that we overwrite value set explicitly in the hash.\n // So, while setting element of atom, it's impossible to set also its charge.\n props.hydrophobicity = amino.hydrophobicity;\n }\n }\n\n // Update charged atoms list (performance optimization).\n if (!charge[i] && props.charge) {\n // !charge[i] => shortcut for charge[i] === 0 || charge[i] === undefined (both cases can occur).\n // props.charge => shortcut for props.charge !== undefined && props.charge !== 0.\n // Save index of charged atom.\n chargedAtomsList.push(i);\n } else if (charge[i] && props.charge === 0) {\n // charge[i] => shortcut for charge[i] !== undefined && charge[i] !== 0 (both cases can occur).\n // Remove index from charged atoms list.\n chargedAtomsList.splice(chargedAtomsList.indexOf(i), 1);\n }\n\n // Set all properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n atoms[key][i] = props[key];\n }\n }\n\n // Update properties which depend on other properties.\n px[i] = vx[i] * mass[i];\n py[i] = vy[i] * mass[i];\n speed[i] = Math.sqrt(vx[i] * vx[i] + vy[i] * vy[i]);\n },\n\n setRadialBondProperties: function(i, props, conserveAngularBondsEnergy) {\n var key, atom1, atom2;\n\n // Unset current radial bond matrix entry.\n // Matrix will be updated when new properties are set.\n atom1 = radialBondAtom1Index[i];\n atom2 = radialBondAtom2Index[i];\n if (radialBondMatrix[atom1] && radialBondMatrix[atom1][atom2])\n radialBondMatrix[atom1][atom2] = false;\n if (radialBondMatrix[atom2] && radialBondMatrix[atom2][atom1])\n radialBondMatrix[atom2][atom1] = false;\n\n bondedAtoms.unset(atom1, atom2);\n\n // If atom1 or atom2 properties are changed, remove related angular bonds.\n if ((props.atom1 !== undefined && props.atom1 !== atom1) ||\n (props.atom2 !== undefined && props.atom2 !== atom2)) {\n removeAngularBondsContaining(atom1, atom2, conserveAngularBondsEnergy);\n }\n\n // Set all properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n radialBonds[key][i] = props[key];\n }\n }\n\n // Update radial bond matrix.\n atom1 = radialBondAtom1Index[i];\n atom2 = radialBondAtom2Index[i];\n if (!radialBondMatrix[atom1]) radialBondMatrix[atom1] = [];\n radialBondMatrix[atom1][atom2] = true;\n if (!radialBondMatrix[atom2]) radialBondMatrix[atom2] = [];\n radialBondMatrix[atom2][atom1] = true;\n\n bondedAtoms.set(atom1, atom2);\n },\n\n setAngularBondProperties: function(i, props) {\n var key;\n // Set all properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n angularBonds[key][i] = props[key];\n }\n }\n },\n\n setRestraintProperties: function(i, props) {\n var key;\n // Set all properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n restraints[key][i] = props[key];\n }\n }\n },\n\n setElementProperties: function(i, properties) {\n var j, newRadius;\n // FIXME we cached mass into its own array, which is now probably unnecessary (position-update\n // calculations have since been speeded up by batching the computation of accelerations from\n // forces.) If we remove the mass[] array we also remove the need for the loop below:\n\n if (properties.mass != null && properties.mass !== elementMass[i]) {\n elementMass[i] = properties.mass;\n for (j = 0; j < N; j++) {\n if (element[j] === i) mass[j] = properties.mass;\n }\n }\n\n if (properties.sigma != null) {\n elementSigma[i] = properties.sigma;\n newRadius = lennardJones.radius(properties.sigma);\n\n if (elementRadius[i] !== newRadius) {\n elementRadius[i] = newRadius;\n for (j = 0; j < N; j++) {\n if (element[j] === i) radius[j] = newRadius;\n }\n }\n }\n\n if (properties.epsilon != null) elementEpsilon[i] = properties.epsilon;\n\n if (properties.color != null) {\n elementColor[i] = properties.color;\n }\n\n for (j = 0; j < N_elements; j++) {\n setPairwiseLJProperties(i, j);\n }\n // Reinitialize optimization structures, as sigma can be changed.\n initializeCellList();\n initializeNeighborList();\n },\n\n setPairwiseLJProperties: function(i, j) {\n // Call private (closure) version of this funcion.\n setPairwiseLJProperties(i, j);\n // Reinitialize optimization structures, as sigma can be changed.\n initializeCellList();\n initializeNeighborList();\n },\n\n setObstacleProperties: function(i, props) {\n var key;\n\n if (!engine.canPlaceObstacle(props.x, props.y, props.width, props.height, i))\n throw new Error(\"Obstacle can't be placed at \" + props.x + \", \" + props.y);\n\n // If position is manually changed, update previous\n // position also.\n if (props.x !== undefined) {\n props.xPrev = props.x;\n }\n if (props.y !== undefined) {\n props.yPrev = props.y;\n }\n // Try to parse mass, as it may be string \"Infinity\".\n if (typeof props.mass === 'string') {\n props.mass = parseFloat(props.mass);\n }\n\n // Set properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n obstacles[key][i] = props[key];\n }\n }\n },\n\n setShapeProperties: function(i, props) {\n var key;\n // Set properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n shapes[key][i] = props[key];\n }\n }\n },\n\n setLineProperties: function(i, props) {\n var key;\n // Set properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n lines[key][i] = props[key];\n }\n }\n },\n\n setElectricFieldProperties: function(i, props) {\n var key;\n // Set properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n electricFields[key][i] = props[key];\n }\n }\n },\n\n /**\n The canonical method for adding an atom to the collections of atoms.\n\n If there isn't enough room in the 'atoms' array, it (somewhat inefficiently)\n extends the length of the typed arrays by ten to have room for more atoms.\n\n @returns the index of the new atom\n */\n addAtom: function(props) {\n if (N + 1 > atoms.x.length) {\n utils.extendArrays(atoms, Math.round(N * 1.5 + 10));\n assignShortcutReferences.atoms();\n }\n\n // Set acceleration of new atom to zero.\n props.ax = props.ay = 0;\n\n // Remove any stray value from charge--setAtomProperties updates chargedAtomsList based on\n // whether the atom was charged previously.\n charge[N] = 0;\n\n // Set provided properties of new atom.\n engine.setAtomProperties(N, props);\n\n // Increase number of atoms.\n N++;\n\n // Initialize helper structures for optimizations.\n initializeCellList();\n initializeNeighborList();\n },\n\n removeAtom: function(idx) {\n var i, len, prop,\n l, list, lists;\n\n if (idx >= N) {\n throw new Error(\"Atom \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n // Start from removing all bonds connected to this atom.\n // Note that we are removing only radial bonds. Angular bonds\n // will be removed while removing radial bond, not atom!\n\n // Use such \"strange\" form of loop, as while removing one bonds,\n // other change their indexing. So, after removal of bond 5, we\n // should check bond 5 again, as it would be another bond (previously\n // indexed as 6).\n i = 0;\n while (i < N_radialBonds) {\n if (radialBondAtom1Index[i] === idx || radialBondAtom2Index[i] === idx)\n engine.removeRadialBond(i);\n else\n i++;\n }\n\n // Try to remove atom from charged atoms list.\n i = chargedAtomsList.indexOf(idx);\n if (i !== -1) {\n arrays.remove(chargedAtomsList, i);\n }\n\n // Finally, remove atom.\n\n // Shift atoms properties and zero last element.\n // It can be optimized by just replacing the last\n // atom with atom 'i', however this approach\n // preserves more expectable atoms indexing.\n for (i = idx; i < N; i++) {\n for (prop in atoms) {\n if (atoms.hasOwnProperty(prop)) {\n if (i === N - 1)\n atoms[prop][i] = 0;\n else\n atoms[prop][i] = atoms[prop][i + 1];\n }\n }\n }\n\n // Update number of atoms!\n N--;\n\n // Shift indices of atoms in various lists.\n lists = [\n chargedAtomsList,\n radialBondAtom1Index, radialBondAtom2Index,\n angularBondAtom1Index, angularBondAtom2Index, angularBondAtom3Index\n ];\n\n for (l = 0; l < lists.length; l++) {\n list = lists[l];\n for (i = 0, len = list.length; i < len; i++) {\n if (list[i] > idx)\n list[i]--;\n }\n }\n\n // Recalculate radial bond matrix and bonded atoms lists, as indices have changed.\n radialBondMatrix.reset();\n bondedAtoms.reset();\n\n // (Re)initialize helper structures for optimizations.\n initializeCellList();\n initializeNeighborList();\n\n neighborList.invalidate();\n\n // Update accelerations of atoms.\n updateParticlesAccelerations();\n },\n\n /**\n The canonical method for adding an element.\n */\n addElement: function(props) {\n var i;\n\n if (N_elements >= elementEpsilon.length) {\n utils.extendArrays(elements, N_elements + 10);\n assignShortcutReferences.elements();\n }\n\n elementMass[N_elements] = props.mass;\n elementEpsilon[N_elements] = props.epsilon;\n elementSigma[N_elements] = props.sigma;\n elementRadius[N_elements] = lennardJones.radius(props.sigma);\n elementColor[N_elements] = props.color;\n\n ljCalculator[N_elements] = [];\n cutoffDistance_LJ_sq[N_elements] = [];\n cutoffNeighborListSquared[N_elements] = [];\n\n for (i = 0; i <= N_elements; i++) {\n setPairwiseLJProperties(N_elements, i);\n }\n // Note that we don't have to reinitialize optimization\n // structures (cell lists and neighbor list). They are\n // based only on the properties of *used* elements, so\n // adding a new atom should trigger reinitialization instead.\n\n N_elements++;\n },\n\n /**\n The canonical method for adding a radial bond to the collection of radial bonds.\n */\n addRadialBond: function(props) {\n if (N_radialBonds + 1 > radialBondAtom1Index.length) {\n utils.extendArrays(radialBonds, N_radialBonds + 10);\n assignShortcutReferences.radialBonds();\n }\n\n N_radialBonds++;\n\n // Set new radial bond properties.\n engine.setRadialBondProperties(N_radialBonds - 1, props);\n\n radialBondsChanged = true;\n },\n\n removeRadialBond: function(idx, conserveAngularBondsEnergy) {\n var i, prop;\n\n if (idx >= N_radialBonds) {\n throw new Error(\"Radial bond \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n // Start from removing angular bonds.\n removeAngularBondsContaining(radialBondAtom1Index[idx], radialBondAtom2Index[idx], conserveAngularBondsEnergy);\n\n // Update optimization structure.\n bondedAtoms.unset(radialBondAtom1Index[idx], radialBondAtom2Index[idx]);\n\n // Shift radial bonds properties and zero last element.\n // It can be optimized by just replacing the last\n // radial bond with radial bond 'i', however this approach\n // preserves more expectable indexing.\n // TODO: create some general function for that, as it's duplicated\n // in each removeObject method.\n for (i = idx; i < N_radialBonds; i++) {\n for (prop in radialBonds) {\n if (radialBonds.hasOwnProperty(prop)) {\n if (i === N_radialBonds - 1)\n radialBonds[prop][i] = 0;\n else\n radialBonds[prop][i] = radialBonds[prop][i + 1];\n }\n }\n }\n\n N_radialBonds--;\n\n // Recalculate radial bond matrix as bond indices have changed.\n radialBondMatrix.reset();\n\n radialBondsChanged = true;\n },\n\n /**\n The canonical method for adding an 'restraint' bond to the collection of restraints.\n\n If there isn't enough room in the 'restraints' array, it (somewhat inefficiently)\n extends the length of the typed arrays by ten to have room for more bonds.\n */\n addRestraint: function(props) {\n if (N_restraints + 1 > restraints.atomIndex.length) {\n utils.extendArrays(restraints, N_restraints + 10);\n assignShortcutReferences.restraints();\n }\n\n N_restraints++;\n\n // Set new restraint properties.\n engine.setRestraintProperties(N_restraints - 1, props);\n },\n\n /**\n The canonical method for adding an angular bond to the collection of angular bonds.\n\n If there isn't enough room in the 'angularBonds' array, it (somewhat inefficiently)\n extends the length of the typed arrays by ten to have room for more bonds.\n */\n addAngularBond: function(props) {\n if (N_angularBonds + 1 > angularBonds.atom1.length) {\n utils.extendArrays(angularBonds, N_angularBonds + 10);\n assignShortcutReferences.angularBonds();\n }\n\n N_angularBonds++;\n\n // Set new angular bond properties.\n engine.setAngularBondProperties(N_angularBonds - 1, props);\n },\n\n removeAngularBond: function(idx, conserveEnergy) {\n var i, prop, a1, a2, a3, angleDiff;\n\n if (idx >= N_angularBonds) {\n throw new Error(\"Angular bond \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n if (conserveEnergy) {\n a1 = angularBondAtom1Index[idx];\n a2 = angularBondAtom2Index[idx];\n a3 = angularBondAtom3Index[idx];\n angleDiff = angularBondAngle[idx] - math.getAngleBetweenVec(x[a1], y[a1],\n x[a2], y[a2],\n x[a3], y[a3]);\n engine.addKEToAtoms(0.5 * angularBondStrength[idx] * angleDiff * angleDiff, a1, a2, a3);\n }\n\n // Shift angular bonds properties and zero last element.\n // It can be optimized by just replacing the last\n // angular bond with angular bond 'i', however this approach\n // preserves more expectable indexing.\n // TODO: create some general function for that, as it's duplicated\n // in each removeObject method.\n for (i = idx; i < N_angularBonds; i++) {\n for (prop in angularBonds) {\n if (angularBonds.hasOwnProperty(prop)) {\n if (i === N_angularBonds - 1)\n angularBonds[prop][i] = 0;\n else\n angularBonds[prop][i] = angularBonds[prop][i + 1];\n }\n }\n }\n\n N_angularBonds--;\n },\n\n /**\n Adds a spring force between an atom and an x, y location.\n\n @returns the index of the new spring force.\n */\n addSpringForce: function(atomIndex, x, y, strength) {\n // conservatively just add one spring force\n if (N_springForces + 1 > springForces[0].length) {\n utils.extendArrays(springForces, N_springForces + 1);\n assignShortcutReferences.springForces();\n }\n\n springForceAtomIndex[N_springForces] = atomIndex;\n springForceX[N_springForces] = x;\n springForceY[N_springForces] = y;\n springForceStrength[N_springForces] = strength;\n\n return N_springForces++;\n },\n\n updateSpringForce: function(i, x, y) {\n springForceX[i] = x;\n springForceY[i] = y;\n },\n\n removeSpringForce: function(idx) {\n var i, j;\n\n if (idx >= N_springForces) {\n throw new Error(\"Spring force \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n N_springForces--;\n\n // Shift spring forces properties.\n for (i = idx; i < N_springForces; i++) {\n for (j = 0; j < 4; j++) {\n springForces[j][i] = springForces[j][i + 1];\n }\n }\n },\n\n springForceAtomIndex: function(i) {\n return springForceAtomIndex[i];\n },\n\n addObstacle: function(props) {\n if (!engine.canPlaceObstacle(props.x, props.y, props.width, props.height))\n throw new Error(\"Obstacle can't be placed at \" + props.x + \", \" + props.y + \".\");\n\n if (N_obstacles + 1 > obstacles.x.length) {\n // Extend arrays each time (as there are only\n // a few obstacles in typical model).\n utils.extendArrays(obstacles, N_obstacles + 1);\n assignShortcutReferences.obstacles();\n }\n\n N_obstacles++;\n\n // Set properties of new obstacle.\n engine.setObstacleProperties(N_obstacles - 1, props);\n },\n\n removeObstacle: function(idx) {\n var i, prop;\n\n if (idx >= N_obstacles) {\n throw new Error(\"Obstacle \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n N_obstacles--;\n\n // Shift obstacles properties.\n // It can be optimized by just replacing the last\n // obstacle with obstacle 'i', however this approach\n // preserves more expectable obstacles indexing.\n for (i = idx; i < N_obstacles; i++) {\n for (prop in obstacles) {\n if (obstacles.hasOwnProperty(prop)) {\n obstacles[prop][i] = obstacles[prop][i + 1];\n }\n }\n }\n\n // FIXME: This shouldn't be necessary, however various modules\n // (e.g. views) use obstacles.x.length as the real number of obstacles.\n utils.extendArrays(obstacles, N_obstacles);\n assignShortcutReferences.obstacles();\n },\n\n addShape: function(props) {\n if (N_shapes + 1 > shapes.x.length) {\n // Extend arrays each time (as there are only\n // a few shapes in typical model).\n utils.extendArrays(shapes, N_shapes + 1);\n assignShortcutReferences.shapes();\n }\n\n N_shapes++;\n\n // Set properties of new shape.\n engine.setShapeProperties(N_shapes - 1, props);\n },\n\n removeShape: function(idx) {\n var i, prop;\n\n if (idx >= N_shapes) {\n throw new Error(\"Shape \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n // Remove all electric fields connected with this shape.\n\n // Use such \"strange\" form of loop, as while removing one electric field,\n // other change their indexing. So, after removal of field 5, we\n // should check field 5 again, as it would be another field (previously\n // indexed as 6).\n i = 0;\n while (i < N_electricFields) {\n if (electricFieldShapeIdx[i] === idx)\n engine.removeElectricField(i);\n else\n i++;\n }\n\n N_shapes--;\n\n // Shift shapes properties.\n // It can be optimized by just replacing the last\n // shape with shape 'i', however this approach\n // preserves more expectable shapes indexing.\n for (i = idx; i < N_shapes; i++) {\n for (prop in shapes) {\n if (shapes.hasOwnProperty(prop)) {\n shapes[prop][i] = shapes[prop][i + 1];\n }\n }\n }\n\n // Shift indices of shapes referenced by electric fields.\n for (i = 0; i < N_electricFields; i++) {\n if (electricFieldShapeIdx[i] > idx)\n electricFieldShapeIdx[i]--;\n }\n\n // FIXME: This shouldn't be necessary, however various modules\n // (e.g. views) use shapes.x.length as the real number of shapes.\n utils.extendArrays(shapes, N_shapes);\n assignShortcutReferences.shapes();\n },\n\n addLine: function(props) {\n if (N_lines + 1 > lines.x1.length) {\n // Extend arrays each time (as there are only\n // a few lines in typical model).\n utils.extendArrays(lines, N_lines + 1);\n assignShortcutReferences.lines();\n }\n\n N_lines++;\n\n // Set properties of new line.\n engine.setLineProperties(N_lines - 1, props);\n },\n\n removeLine: function(idx) {\n var i, prop;\n\n if (idx >= N_lines) {\n throw new Error(\"Line \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n // Shift lines properties.\n // It can be optimized by just replacing the last\n // shape with shape 'i', however this approach\n // preserves more expectable lines indexing.\n for (i = idx; i < N_lines; i++) {\n for (prop in lines) {\n if (lines.hasOwnProperty(prop)) {\n lines[prop][i] = lines[prop][i + 1];\n }\n }\n }\n\n N_lines--;\n\n // FIXME: This shouldn't be necessary, however various modules\n // (e.g. views) use lines.x1.length as the real number of lines.\n utils.extendArrays(lines, N_lines);\n assignShortcutReferences.lines();\n },\n\n addElectricField: function(props) {\n if (N_electricFields + 1 > electricFields.intensity.length) {\n // Extend arrays each time (as there are only\n // a few electricFields in typical model).\n utils.extendArrays(electricFields, N_electricFields + 1);\n assignShortcutReferences.electricFields();\n }\n\n N_electricFields++;\n\n // Set properties of new shape.\n engine.setElectricFieldProperties(N_electricFields - 1, props);\n },\n\n removeElectricField: function(idx) {\n var i, prop;\n\n if (idx >= N_electricFields) {\n throw new Error(\"Electric field \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n N_electricFields--;\n\n // Shift electric fields properties.\n for (i = idx; i < N_electricFields; i++) {\n for (prop in electricFields) {\n if (electricFields.hasOwnProperty(prop)) {\n electricFields[prop][i] = electricFields[prop][i + 1];\n }\n }\n }\n\n // Follow convention of other engine objects whose array is reduced after removal.\n utils.extendArrays(electricFields, N_electricFields);\n assignShortcutReferences.electricFields();\n },\n\n atomInBounds: function(_x, _y, i) {\n var r = radius[i],\n j;\n\n if (_x < r || _x > size[0] - r || _y < r || _y > size[1] - r) {\n return false;\n }\n for (j = 0; j < N_obstacles; j++) {\n if (_x > (obstacleX[j] - r) && _x < (obstacleX[j] + obstacleWidth[j] + r) &&\n _y > (obstacleY[j] - r) && _y < (obstacleY[j] + obstacleHeight[j] + r)) {\n return false;\n }\n }\n return true;\n },\n\n /**\n Checks to see if an uncharged atom could be placed at location x,y\n without increasing the PE (i.e. overlapping with another atom), and\n without being on an obstacle or past a wall.\n\n Optionally, an atom index i can be included which will tell the function\n to ignore the existance of atom i. (Used when moving i around.)\n */\n canPlaceAtom: function(element, _x, _y, i, skipPECheck) {\n var orig_x,\n orig_y,\n PEAtLocation,\n testX, testY, testXMax, testYMax,\n j;\n\n // first do the simpler check to see if we're outside the walls\n if (!engine.atomInBounds(_x, _y, i)) {\n return false;\n }\n\n // Check collision with obstacles.\n for (j = 0; j < N_obstacles; j++) {\n testX = obstacleX[j];\n testY = obstacleY[j];\n testXMax = testX + obstacleWidth[j];\n testYMax = testY + obstacleHeight[j];\n if ((_x > testX && _x < testXMax) &&\n (_y > testY && _y < testYMax)) {\n return false;\n }\n }\n\n if (skipPECheck) {\n return true;\n }\n\n // then check PE at location\n if (typeof i === \"number\") {\n orig_x = x[i];\n orig_y = y[i];\n x[i] = y[i] = Infinity; // move i atom away\n }\n\n PEAtLocation = engine.newPotentialCalculator(element, 0, false)(_x, _y);\n\n if (typeof i === \"number\") {\n x[i] = orig_x;\n y[i] = orig_y;\n }\n\n return PEAtLocation <= 0;\n },\n\n /**\n Checks to see if an obstacle could be placed at location x, y\n without being on an atom, another obstacle or past a wall.\n\n idx parameter is optional. It should be defined and equal to id\n of an existing obstacle when the existing obstacle should be checked.\n It prevents an algorithm from comparing the obstacle with itself during\n collisions detection.\n */\n canPlaceObstacle: function(obsX, obsY, obsWidth, obsHeight, idx) {\n var obsXMax = obsX + obsWidth,\n obsYMax = obsY + obsHeight,\n testX, testY, testXMax, testYMax,\n r, i;\n\n // Check collision with walls.\n if (obsX < 0 || obsXMax > size[0] || obsY < 0 || obsYMax > size[0]) {\n return false;\n }\n\n // Check collision with atoms.\n for (i = 0; i < N; i++) {\n r = radius[i];\n if (x[i] > (obsX - r) && x[i] < (obsXMax + r) &&\n y[i] > (obsY - r) && y[i] < (obsYMax + r)) {\n return false;\n }\n }\n\n // Check collision with other obstacles.\n for (i = 0; i < N_obstacles; i++) {\n if (idx !== undefined && idx === i) {\n // If we are checking existing obstacle,\n // avoid comparing it with itself.\n continue;\n }\n testX = obstacleX[i];\n testY = obstacleY[i];\n testXMax = testX + obstacleWidth[i];\n testYMax = testY + obstacleHeight[i];\n if ((obsXMax > testX && obsX < testXMax) &&\n (obsYMax > testY && obsY < testYMax)) {\n return false;\n }\n }\n\n return true;\n },\n\n setupAtomsRandomly: function(options) {\n\n var // if a temperature is not explicitly requested, we just need any nonzero number\n temperature = options.temperature || 100,\n\n nrows = Math.floor(Math.sqrt(N)),\n ncols = Math.ceil(N / nrows),\n\n i, r, c, rowSpacing, colSpacing,\n vMagnitude, vDirection, props;\n\n validateTemperature(temperature);\n\n colSpacing = size[0] / (1 + ncols);\n rowSpacing = size[1] / (1 + nrows);\n\n // Arrange molecules in a lattice. Not guaranteed to have CM exactly on center, and is an artificially low-energy\n // configuration. But it works OK for now.\n i = -1;\n\n for (r = 1; r <= nrows; r++) {\n for (c = 1; c <= ncols; c++) {\n i++;\n if (i === N) break;\n vMagnitude = math.normal(1, 1 / 4);\n vDirection = 2 * Math.random() * Math.PI;\n\n props = {\n element: Math.floor(Math.random() * options.userElements), // random element\n x: c * colSpacing,\n y: r * rowSpacing,\n vx: vMagnitude * Math.cos(vDirection),\n vy: vMagnitude * Math.sin(vDirection),\n charge: 2 * (i % 2) - 1 // alternate negative and positive charges\n };\n engine.setAtomProperties(i, props);\n }\n }\n\n // now, remove all translation of the center of mass and rotation about the center of mass\n computeCMMotion();\n removeTranslationAndRotationFromVelocities();\n\n // Scale randomized velocities to match the desired initial temperature.\n //\n // Note that although the instantaneous temperature will be 'temperature' exactly, the temperature will quickly\n // settle to a lower value because we are initializing the atoms spaced far apart, in an artificially low-energy\n // configuration.\n //\n adjustTemperature(temperature, true);\n },\n\n getVdwPairsArray: function() {\n var i,\n j,\n dx,\n dy,\n r_sq,\n x_i,\n y_i,\n sigma_i,\n epsilon_i,\n sigma_j,\n epsilon_j,\n index_i,\n index_j,\n sig,\n eps,\n distanceCutoff_sq = vdwLinesRatio * vdwLinesRatio;\n\n N_vdwPairs = 0;\n\n for (i = 0; i < N; i++) {\n // pairwise interactions\n index_i = element[i];\n sigma_i = elementSigma[index_i];\n epsilon_i = elementSigma[index_i];\n x_i = x[i];\n y_i = y[i];\n\n for (j = i + 1; j < N; j++) {\n if (N_radialBonds !== 0 && (radialBondMatrix[i] && radialBondMatrix[i][j])) continue;\n\n index_j = element[j];\n sigma_j = elementSigma[index_j];\n epsilon_j = elementSigma[index_j];\n\n if (charge[i] * charge[j] <= 0) {\n dx = x[j] - x_i;\n dy = y[j] - y_i;\n r_sq = dx * dx + dy * dy;\n\n\n sig = 0.5 * (sigma_i + sigma_j);\n sig *= sig;\n eps = epsilon_i * epsilon_j;\n\n if (r_sq < sig * distanceCutoff_sq && eps > 0) {\n if (N_vdwPairs + 1 > vdwPairs.atom1.length) {\n utils.extendArrays(vdwPairs, (N_vdwPairs + 1) * 2);\n assignShortcutReferences.vdwPairs();\n }\n vdwPairAtom1Index[N_vdwPairs] = i;\n vdwPairAtom2Index[N_vdwPairs] = j;\n N_vdwPairs++;\n }\n }\n }\n }\n\n vdwPairs.count = N_vdwPairs;\n return vdwPairs;\n },\n\n // Velocity Verlet integration scheme.\n // See: http://en.wikipedia.org/wiki/Verlet_integration#Velocity_Verlet\n // The current implementation is:\n // 1. Calculate: v(t + 0.5 * dt) = v(t) + 0.5 * a(t) * dt\n // 2. Calculate: r(t + dt) = r(t) + v(t + 0.5 * dt) * dt\n // 3. Derive a(t + dt) from the interaction potential using r(t + dt)\n // 4. Calculate: v(t + dt) = v(t + 0.5 * dt) + 0.5 * a(t + dt) * dt\n integrate: function(duration, _dt) {\n var steps, iloop, tStart = time;\n\n // How much time to integrate over, in fs.\n if (duration === undefined) duration = 100;\n\n // The length of an integration timestep, in fs.\n if (_dt === undefined) _dt = 1;\n\n dt = _dt; // dt is a closure variable that helpers need access to\n dt_sq = dt * dt; // the squared time step is also needed by some helpers.\n\n // Clear flag indicating if some radial bonds were added or removed during the integration\n // step.\n radialBondsChanged = false;\n\n // Prepare optimization structures to ensure that they are valid during integration.\n // Note that when user adds or removes various objects (like atoms, bonds), such structures\n // can become invalid. That's why we update them each time before integration.\n // It's also safer and easier to do recalculate each structure than to modify it while\n // engine state is changed by user.\n calculateOptimizationStructures();\n\n // Calculate accelerations a(t), where t = 0.\n // Later this is not necessary, as a(t + dt) from\n // previous step is used as a(t) in the current step.\n if (time === 0) {\n updateParticlesAccelerations();\n }\n\n // Number of steps.\n steps = Math.floor(duration / dt);\n\n // Zero values of pressure probes at the beginning of\n // each integration step.\n zeroPressureValues();\n\n // Clear the acceleration and velocity for pinned atoms, as we may have updated\n // acceleration prior to entering integrate() (e.g. in readModelState).\n pinAtoms();\n\n for (iloop = 1; iloop <= steps; iloop++) {\n time = tStart + iloop * dt;\n\n // Calculate v(t + 0.5 * dt) using v(t) and a(t).\n halfUpdateVelocity();\n\n // Update r(t + dt) using v(t + 0.5 * dt).\n updateParticlesPosition();\n\n // Accumulate accelerations into a(t + dt) from all possible interactions, fields\n // and forces connected with atoms.\n updateParticlesAccelerations();\n\n // Clear the acceleration and velocity for pinned atoms before moving them.\n pinAtoms();\n\n // Calculate v(t + dt) using v(t + 0.5 * dt) and a(t + dt).\n halfUpdateVelocity();\n\n // Now that we have velocity v(t + dt), update speed.\n updateParticlesSpeed();\n\n // Move obstacles using very simple integration.\n updateObstaclesPosition();\n\n // If solvent is different from vacuum (water or oil), ensure that\n // the total momentum of each molecule is equal to zero. This\n // prevents amino acids chains from drifting towards one boundary of\n // the model. Don't do it during translation process to let the protein\n // freely fold.\n if (solventForceType !== 0 && !dnaTranslationInProgress) {\n zeroTotalMomentumOfMolecules();\n }\n\n pluginController.callPluginFunction('performActionWithinIntegrationLoop', [neighborList, dt, time]);\n\n // Adjust temperature, e.g. when heat bath is enabled.\n adjustTemperature();\n } // end of integration loop\n\n // Collisions between particles and obstacles are collected during\n // updateParticlesPosition() execution. This function takes into account\n // time which passed and converts raw data from pressure probes to value\n // in Bars.\n calculateFinalPressureValues(duration);\n\n // After each integration loop try to create new disulfide bonds between cysteines.\n // It's enough to do it outside the inner integration loop (performance).\n createDisulfideBonds();\n },\n\n updateParticlesAccelerations: updateParticlesAccelerations,\n\n // Minimize energy using steepest descend method.\n minimizeEnergy: function() {\n // Maximal length of displacement during one step of minimization.\n var stepLength = 1e-3,\n // Maximal acceleration allowed.\n accThreshold = 1e-4,\n // Maximal number of iterations allowed.\n iterLimit = 3000,\n maxAcc, delta, xPrev, yPrev, i, iter;\n\n // Calculate accelerations.\n updateParticlesAccelerations();\n pinAtoms();\n // Get maximum value.\n maxAcc = 0;\n for (i = 0; i < N; i++) {\n if (maxAcc < Math.abs(ax[i]))\n maxAcc = Math.abs(ax[i]);\n if (maxAcc < Math.abs(ay[i]))\n maxAcc = Math.abs(ay[i]);\n }\n\n iter = 0;\n while (maxAcc > accThreshold && iter < iterLimit) {\n iter++;\n\n delta = stepLength / maxAcc;\n for (i = 0; i < N; i++) {\n xPrev = x[i];\n yPrev = y[i];\n x[i] += ax[i] * delta;\n y[i] += ay[i] * delta;\n\n // Keep atoms in bounds.\n bounceParticleOffWalls(i);\n // Bounce off obstacles, but DO NOT update pressure probes.\n bounceParticleOffObstacles(i, xPrev, yPrev, false);\n // Bounce off shapes\n bounceParticleOffShapes(i, xPrev, yPrev);\n // Bounce off lines\n bounceParticleOffLines(i, xPrev, yPrev);\n }\n\n // Calculate accelerations.\n updateParticlesAccelerations();\n pinAtoms();\n // Get maximum value.\n maxAcc = 0;\n for (i = 0; i < N; i++) {\n if (maxAcc < Math.abs(ax[i]))\n maxAcc = Math.abs(ax[i]);\n if (maxAcc < Math.abs(ay[i]))\n maxAcc = Math.abs(ay[i]);\n }\n }\n },\n\n getRadialBondsForAtom: function(index) {\n var rbonds = [],\n i,\n i1,\n i2;\n\n for (i = 0; i < N_radialBonds; i++) {\n i1 = radialBondAtom1Index[i];\n i2 = radialBondAtom2Index[i];\n if (index === i1 || index === i2) {\n rbonds.push(i);\n }\n }\n return rbonds;\n },\n\n getAngularBondsForAtom: function(index) {\n var abonds = [],\n i,\n i1,\n i2,\n i3;\n\n for (i = 0; i < N_angularBonds; i++) {\n i1 = angularBondAtom1Index[i];\n i2 = angularBondAtom2Index[i];\n i3 = angularBondAtom3Index[i];\n if (index === i1 || index === i2 || index === i3) {\n abonds.push(i);\n }\n }\n return abonds;\n },\n\n // Total mass of all particles in the system, in Dalton (atomic mass units).\n getTotalMass: function() {\n var totalMass = 0,\n i;\n for (i = 0; i < N; i++) {\n totalMass += mass[i];\n }\n return totalMass;\n },\n\n getRadiusOfElement: function(el) {\n return elementRadius[el];\n },\n\n getNumberOfAtoms: function() {\n return N;\n },\n\n getNumberOfElements: function() {\n return N_elements;\n },\n\n getNumberOfObstacles: function() {\n return N_obstacles;\n },\n\n getNumberOfShapes: function() {\n return N_shapes;\n },\n\n getNumberOfLines: function() {\n return N_lines;\n },\n\n getNumberOfRadialBonds: function() {\n return N_radialBonds;\n },\n\n getNumberOfAngularBonds: function() {\n return N_angularBonds;\n },\n\n getNumberOfRestraints: function() {\n return N_restraints;\n },\n\n getNumberOfSpringForces: function() {\n return N_springForces;\n },\n\n getNumberOfElectricFields: function() {\n return N_electricFields;\n },\n\n /**\n Compute the model state and store into the passed-in 'state' object.\n (Avoids GC hit of throwaway object creation.)\n */\n // TODO: [refactoring] divide this function into smaller chunks?\n computeOutputState: function(state) {\n var i, j, e,\n i1, i2, i3,\n el1, el2,\n dx, dy,\n dxij, dyij, dxkj, dykj,\n cosTheta, theta, rect,\n r_sq, rij, rkj,\n k, dr, angleDiff,\n elInMWUnits,\n gravPEInMWUnits,\n // Total kinetic energy, in MW units.\n KEinMWUnits,\n // Potential energy, in eV.\n PE;\n\n // Calculate potentials in eV. Note that we only want to do this once per call to integrate(), not once per\n // integration loop!\n PE = 0;\n KEinMWUnits = 0;\n\n for (i = 0; i < N; i++) {\n\n // gravitational PE\n if (gravitationalField) {\n gravPEInMWUnits = mass[i] * gravitationalField * y[i];\n PE += constants.convert(gravPEInMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n }\n\n // electric field PE\n for (e = 0; e < N_electricFields; e++) {\n rect = electricFieldShapeIdx[e];\n if (rect != null && !rectContains(rect, x[i], y[i])) continue;\n elInMWUnits = charge[i] * getElFieldForce(e);\n switch (electricFieldOrientation[e]) {\n case \"N\":\n case \"S\":\n elInMWUnits *= (rect != null ? shapeY[rect] : minY) - y[i];\n break;\n case \"W\":\n case \"E\":\n elInMWUnits *= (rect != null ? shapeX[rect] : minX) - x[i];\n break;\n }\n PE += constants.convert(elInMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n }\n\n KEinMWUnits += 0.5 * mass[i] * (vx[i] * vx[i] + vy[i] * vy[i]);\n\n // pairwise interactions\n for (j = i + 1; j < N; j++) {\n dx = x[j] - x[i];\n dy = y[j] - y[i];\n\n r_sq = dx * dx + dy * dy;\n\n // FIXME the signs here don't really make sense\n if (useLennardJonesInteraction) {\n PE -= ljCalculator[element[i]][element[j]].potentialFromSquaredDistance(r_sq);\n }\n if (useCoulombInteraction && chargedAtomsList.length > 0) {\n PE += coulomb.potential(Math.sqrt(r_sq), charge[i], charge[j], dielectricConst, realisticDielectricEffect);\n }\n }\n }\n\n // radial bonds\n for (i = 0; i < N_radialBonds; i++) {\n i1 = radialBondAtom1Index[i];\n i2 = radialBondAtom2Index[i];\n el1 = element[i1];\n el2 = element[i2];\n\n dx = x[i2] - x[i1];\n dy = y[i2] - y[i1];\n r_sq = dx * dx + dy * dy;\n\n // eV/nm^2\n k = radialBondStrength[i];\n\n // nm\n dr = Math.sqrt(r_sq) - radialBondLength[i];\n\n PE += 0.5 * k * dr * dr;\n\n // Remove the Lennard Jones potential for the bonded pair\n if (useLennardJonesInteraction) {\n PE += ljCalculator[el1][el2].potentialFromSquaredDistance(r_sq);\n }\n if (useCoulombInteraction && charge[i1] && charge[i2]) {\n PE -= coulomb.potential(Math.sqrt(r_sq), charge[i1], charge[i2], dielectricConst, realisticDielectricEffect);\n }\n }\n\n // Angular bonds.\n for (i = 0; i < N_angularBonds; i++) {\n i1 = angularBondAtom1Index[i];\n i2 = angularBondAtom2Index[i];\n i3 = angularBondAtom3Index[i];\n\n // Calculate angle (theta) between two vectors:\n // Atom1-Atom3 and Atom2-Atom3\n // Atom1 -> i, Atom2 -> k, Atom3 -> j\n dxij = x[i1] - x[i3];\n dxkj = x[i2] - x[i3];\n dyij = y[i1] - y[i3];\n dykj = y[i2] - y[i3];\n rij = Math.sqrt(dxij * dxij + dyij * dyij);\n rkj = Math.sqrt(dxkj * dxkj + dykj * dykj);\n // Calculate cos using dot product definition.\n cosTheta = (dxij * dxkj + dyij * dykj) / (rij * rkj);\n if (cosTheta > 1.0) cosTheta = 1.0;\n else if (cosTheta < -1.0) cosTheta = -1.0;\n theta = Math.acos(cosTheta);\n\n // Finally, update PE.\n // radian\n angleDiff = theta - angularBondAngle[i];\n // angularBondStrength unit: eV/radian^2\n PE += 0.5 * angularBondStrength[i] * angleDiff * angleDiff;\n }\n\n // update PE for 'restraint' bonds\n for (i = 0; i < N_restraints; i++) {\n i1 = restraintAtomIndex[i];\n el1 = element[i1];\n\n dx = restraintX0[i] - x[i1];\n dy = restraintY0[i] - y[i1];\n r_sq = dx * dx + dy * dy;\n\n // eV/nm^2\n k = restraintK[i];\n\n // nm\n dr = Math.sqrt(r_sq);\n\n PE += 0.5 * k * dr * dr;\n }\n\n // Process all obstacles.\n for (i = 0; i < N_obstacles; i++) {\n\n if (obstacleMass[i] !== Infinity) {\n // Gravitational potential energy.\n if (gravitationalField) {\n gravPEInMWUnits = obstacleMass[i] * gravitationalField * obstacleY[i];\n PE += constants.convert(gravPEInMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n }\n // Kinetic energy.\n KEinMWUnits += 0.5 * obstacleMass[i] *\n (obstacleVX[i] * obstacleVX[i] + obstacleVY[i] * obstacleVY[i]);\n }\n }\n\n // Update temperature.\n T = convertKEtoT(KEinMWUnits, N);\n\n // \"macro\" state\n state.time = time;\n state.PE = PE;\n state.KE = constants.convert(KEinMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n state.temperature = T;\n state.pCM = [px_CM, py_CM]; // TODO: GC optimization? New array created each time.\n state.CM = [x_CM, y_CM];\n state.vCM = [vx_CM, vy_CM];\n state.omega_CM = omega_CM;\n\n // \"micro\" state. TODO: put radial bonds, etc here.\n // TODO2: do we really need to put all objects here? Can't modeler ask about interesting\n // arrays using just some getter or property, e.g.: engine.getAtoms() or engine.atoms?\n state.atoms = atoms;\n state.radialBonds = radialBonds;\n\n // Let plugins modify output state, e.g. PE, KE etc.\n pluginController.callPluginFunction('processOutputState', [state]);\n },\n\n\n /**\n Given a test element and charge, returns a function that returns for a location (x, y) in nm:\n * the potential energy, in eV, of an atom of that element and charge at location (x, y)\n * optionally, if calculateGradient is true, the gradient of the potential as an\n array [gradX, gradY]. (units: eV/nm)\n */\n newPotentialCalculator: function(testElement, testCharge, calculateGradient) {\n\n return function(testX, testY) {\n var PE = 0,\n fx = 0,\n fy = 0,\n gradX,\n gradY,\n ljTest = ljCalculator[testElement],\n i,\n dx,\n dy,\n r_sq,\n r,\n f_over_r,\n lj;\n\n for (i = 0; i < N; i++) {\n dx = testX - x[i];\n dy = testY - y[i];\n r_sq = dx * dx + dy * dy;\n f_over_r = 0;\n\n if (useLennardJonesInteraction) {\n lj = ljTest[element[i]];\n PE += -lj.potentialFromSquaredDistance(r_sq, testElement, element[i]);\n if (calculateGradient) {\n f_over_r += lj.forceOverDistanceFromSquaredDistance(r_sq);\n }\n }\n\n if (useCoulombInteraction && chargedAtomsList.length > 0 && testCharge) {\n r = Math.sqrt(r_sq);\n PE += -coulomb.potential(r, testCharge, charge[i], dielectricConst, realisticDielectricEffect);\n if (calculateGradient) {\n f_over_r += coulomb.forceOverDistanceFromSquaredDistance(r_sq, testCharge, charge[i],\n dielectricConst, realisticDielectricEffect);\n }\n }\n\n if (f_over_r) {\n fx += f_over_r * dx;\n fy += f_over_r * dy;\n }\n }\n\n if (calculateGradient) {\n gradX = constants.convert(fx, {\n from: unit.MW_FORCE_UNIT,\n to: unit.EV_PER_NM\n });\n gradY = constants.convert(fy, {\n from: unit.MW_FORCE_UNIT,\n to: unit.EV_PER_NM\n });\n return [PE, [gradX, gradY]];\n }\n\n return PE;\n };\n },\n\n\n // Adds a kinetic energy (defined in eV) to a group of atoms defined as optional arguments.\n // e.g. .addKEToAtoms(2, 1, 2, 3) will add 2eV to atoms 1, 2 and 3. When no atom index is\n // specified, the function will use all available atoms.\n // Returns false when it's impossible (e.g. it can happen when provided energy is negative\n // and atoms can't be cooled down more), true otherwise.\n addKEToAtoms: function(energyChange) {\n var atoms = Array.prototype.slice.call(arguments, 1),\n oldKE = 0,\n newKE,\n ratio,\n i, len, idx;\n\n if (atoms.length === 0) {\n for (i = 0; i < N; i++) {\n atoms.push(i);\n }\n }\n\n for (i = 0, len = atoms.length; i < len; i++) {\n oldKE += engine.getAtomKineticEnergy(atoms[i]);\n }\n\n newKE = oldKE + energyChange;\n\n if (newKE <= 0) {\n // Energy can't be conserved using a given set of atoms.\n return false;\n }\n if (oldKE === 0) {\n idx = atoms[0];\n vx[idx] = Math.random() * 2 - 1 * 1e-5;\n vy[idx] = Math.random() * 2 - 1 * 1e-5;\n oldKE = engine.getAtomKineticEnergy(idx);\n }\n\n ratio = Math.sqrt(newKE / oldKE);\n\n for (i = 0, len = atoms.length; i < len; i++) {\n idx = atoms[i];\n vx[idx] *= ratio;\n vy[idx] *= ratio;\n // TODO: probably we shouldn't store (px, py) at all, but calculate it when needed.\n px[idx] *= ratio;\n py[idx] *= ratio;\n }\n\n return true;\n },\n\n addKEToAtomPairAndConserveMomentum: function(deltaKE, atom1, atom2) {\n\n // rotate into x-axis to simplify the quadratic equation below and to avoid numerical\n // problems when dx is small\n\n var dx = x[atom2] - x[atom1];\n var dy = y[atom2] - y[atom1];\n var theta = -Math.atan2(dy, dx);\n var cosTheta = Math.cos(theta);\n var sinTheta = Math.sin(theta);\n\n var v1x = cosTheta * vx[atom1] - sinTheta * vy[atom1];\n var v2x = cosTheta * vx[atom2] - sinTheta * vy[atom2];\n var v1y = sinTheta * vx[atom1] + cosTheta * vy[atom1];\n var v2y = sinTheta * vx[atom2] + cosTheta * vy[atom2];\n\n var m1 = mass[atom1];\n var m2 = mass[atom2];\n\n // use MW units here\n var oldKE = 0.5 * m1 * (v1x * v1x + v1y * v1y) + 0.5 * m2 * (v2x * v2x + v2y * v2y);\n var newKE = oldKE + constants.convert(deltaKE, {\n from: unit.EV,\n to: unit.MW_ENERGY_UNIT\n });\n\n if (newKE < 0) {\n return false;\n }\n\n // We require m1 * dv1x = -m2 * dv2x (momentum conservation)\n // and m1 * ((v1x + dv1)^2 + v1y^2) + m2 * ((v2x + dv2x)^2 + v2y^2) = 2 * newKE\n // This results in a quadratic equation in dv1x; solve it:\n var a = m1 + m1 * m1 / m2;\n var b = 2 * m1 * (v1x - v2x);\n var c = 2 * (oldKE - newKE);\n var disc = b * b - 4 * a * c;\n\n if (disc < 0) {\n // Momentum can't be conserved.\n return false;\n }\n\n // Of the two roots, choose the solution that minimizes the changes to the individual\n // momenta (which are equal and opposite, so we only need to check v1x)\n disc = Math.sqrt(disc);\n var dv1xPlus = (-b + disc) / (2 * a);\n var dv1xMinus = (-b - disc) / (2 * a);\n var dv1x = Math.abs(dv1xPlus) < Math.abs(dv1xMinus) ? dv1xPlus : dv1xMinus;\n\n v1x += dv1x;\n v2x += (-m1 / m2 * dv1x);\n\n // reverse sign of rotation\n sinTheta *= -1;\n\n vx[atom1] = v1x * cosTheta - v1y * sinTheta;\n px[atom1] = m1 * vx[atom1];\n vy[atom1] = v1x * sinTheta + v1y * cosTheta;\n py[atom1] = m1 * vy[atom1];\n\n vx[atom2] = v2x * cosTheta - v2y * sinTheta;\n px[atom2] = m2 * vx[atom2];\n vy[atom2] = v2x * sinTheta + v2y * cosTheta;\n py[atom2] = m2 * vy[atom2];\n\n return true;\n },\n\n /**\n Starting at (x,y), try to find a position which minimizes the potential energy change caused\n by adding at atom of element el.\n */\n findMinimumPELocation: function(el, x, y, charge) {\n var pot = engine.newPotentialCalculator(el, charge, true),\n radius = elementRadius[el],\n\n res = math.minimize(pot, [x, y], {\n bounds: [\n [radius, size[0] - radius],\n [radius, size[1] - radius]\n ]\n });\n\n if (res.error) return false;\n return res[1];\n },\n\n /**\n Starting at (x,y), try to find a position which minimizes the square of the potential energy\n change caused by adding at atom of element el, i.e., find a \"farthest from everything\"\n position.\n */\n findMinimumPESquaredLocation: function(el, x, y, charge) {\n var pot = engine.newPotentialCalculator(el, charge, true),\n\n // squared potential energy, with gradient\n potsq = function(x, y) {\n var res, f, grad;\n\n res = pot(x, y);\n f = res[0];\n grad = res[1];\n\n // chain rule\n grad[0] *= (2 * f);\n grad[1] *= (2 * f);\n\n return [f * f, grad];\n },\n\n radius = elementRadius[el],\n\n res = math.minimize(potsq, [x, y], {\n bounds: [\n [radius, size[0] - radius],\n [radius, size[1] - radius]\n ],\n stopval: 1e-4,\n precision: 1e-6\n });\n\n if (res.error) return false;\n return res[1];\n },\n\n /**\n Returns all atoms in the same molecule as atom idx\n (not including idx itself)\n */\n getMoleculeAtoms: function(idx) {\n // Use simple DFS algorithm.\n var result = [];\n var stack = [];\n var visited = {};\n var bondedAtoms, bondedAtom, i, len;\n\n stack.push(idx);\n visited[idx] = true;\n while (stack.length > 0) {\n bondedAtoms = engine.getBondedAtoms(stack.pop());\n for (i = 0, len = bondedAtoms.length; i < len; i++) {\n bondedAtom = bondedAtoms[i];\n if (!visited[bondedAtom]) {\n visited[bondedAtom] = true;\n stack.push(bondedAtom);\n result.push(bondedAtom);\n }\n }\n }\n return result;\n },\n\n /**\n Returns all atoms directly bonded to atom idx\n */\n getBondedAtoms: function(idx) {\n return bondedAtoms[idx] || [];\n },\n\n getCoulombForceAt: function(testX, testY, resultObj) {\n // Let client code reuse objects.\n resultObj = resultObj || {};\n // Fast path if Coulomb interaction is disabled or there are no charged atoms.\n if (!useCoulombInteraction || chargedAtomsList.length === 0) {\n resultObj.fx = resultObj.fy = 0;\n return resultObj;\n }\n\n var fx = 0,\n fy = 0,\n i, len, dx, dy, rSq, fOverR, atomCharge, atomIdx, rect, o;\n\n for (i = 0, len = chargedAtomsList.length; i < len; i++) {\n atomIdx = chargedAtomsList[i];\n atomCharge = charge[atomIdx];\n\n dx = x[atomIdx] - testX;\n dy = y[atomIdx] - testY;\n rSq = dx * dx + dy * dy;\n\n fOverR = coulomb.forceOverDistanceFromSquaredDistance(rSq, 1, atomCharge,\n dielectricConst, realisticDielectricEffect);\n\n fx += fOverR * dx;\n fy += fOverR * dy;\n }\n\n for (i = 0; i < N_electricFields; i++) {\n rect = electricFieldShapeIdx[i];\n if (rect != null && !rectContains(rect, testX, testY)) continue;\n o = electricFieldOrientation[i];\n if (o === \"N\" || o === \"S\") {\n fy += getElFieldForce(i); // * 1 Coulomb (test charge)\n } else {\n fx += getElFieldForce(i); // * 1 Coulomb (test charge)\n }\n }\n\n\n resultObj.fx = constants.convert(fx, {\n from: unit.MW_FORCE_UNIT,\n to: unit.EV_PER_NM\n });\n resultObj.fy = constants.convert(fy, {\n from: unit.MW_FORCE_UNIT,\n to: unit.EV_PER_NM\n });\n return resultObj;\n },\n\n /**\n Returns Kinetic Energy of single atom i, in eV.\n */\n getAtomKineticEnergy: function(i) {\n var KEinMWUnits = 0.5 * mass[i] * (vx[i] * vx[i] + vy[i] * vy[i]);\n return constants.convert(KEinMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n },\n\n getAtomNeighbors: function(idx) {\n var res = [],\n list = neighborList.getList(),\n i, len;\n\n for (i = neighborList.getStartIdxFor(idx), len = neighborList.getEndIdxFor(idx); i < len; i++) {\n res.push(list[i]);\n }\n return res;\n },\n\n getNeighborList: function() {\n return neighborList;\n },\n\n setViscosity: function(v) {\n viscosity = v;\n },\n\n get ljCalculator() {\n return ljCalculator;\n },\n\n /**\n Indicates whether some radial bonds were added or removed during the last integration step.\n This flag is cleared at the beginning of the integration.\n */\n get radialBondsChanged() {\n return radialBondsChanged;\n },\n\n /**\n * Returns true when atoms i and j are \"radially bonded\", false otherwise.\n */\n atomsBonded: function(i, j) {\n return !!(radialBondMatrix && radialBondMatrix[i] && radialBondMatrix[i][j]);\n },\n\n // ######################################################################\n // State definition of the engine\n\n // Return array of objects defining state of the engine.\n // Each object in this list should implement following interface:\n // * .clone() - returning complete state of that object.\n // * .restore(state) - restoring state of the object, using 'state'\n // as input (returned by clone()).\n getState: function() {\n var state = [\n // Use wrapper providing clone-restore interface to save the hashes-of-arrays\n // that represent model state.\n new CloneRestoreWrapper(elements),\n new CloneRestoreWrapper(atoms),\n new CloneRestoreWrapper(obstacles),\n new CloneRestoreWrapper(shapes),\n new CloneRestoreWrapper(lines),\n new CloneRestoreWrapper(radialBonds),\n new CloneRestoreWrapper(angularBonds),\n new CloneRestoreWrapper(restraints),\n new CloneRestoreWrapper(springForces),\n // PairwiseLJProperties class implements Clone-Restore Interface.\n pairwiseLJProperties,\n\n // Also save toplevel state (time, number of atoms, etc):\n {\n clone: function() {\n return {\n time: time,\n N: N,\n N_elements: N_elements,\n N_obstacles: N_obstacles,\n N_shapes: N_shapes,\n N_lines: N_lines,\n N_radialBonds: N_radialBonds,\n N_angularBonds: N_angularBonds,\n N_restraints: N_restraints,\n N_springForces: N_springForces\n };\n },\n restore: function(state) {\n time = state.time;\n N = state.N;\n N_elements = state.N_elements;\n N_shapes = state.N_shapes;\n N_lines = state.N_lines;\n N_radialBonds = state.N_radialBonds;\n N_angularBonds = state.N_angularBonds;\n N_restraints = state.N_restraints;\n N_springForces = state.N_springForces;\n\n neighborList.invalidate();\n radialBondMatrix.reset();\n bondedAtoms.reset();\n chargedAtomsList.reset();\n }\n }\n ];\n\n pluginController.callPluginFunction('getState', [], function(pluginState) {\n state = state.concat(pluginState);\n });\n\n return state;\n },\n\n // FIXME. Not a sustainable pattern. This is just a temporary pass-through of modeler-level\n // methods that are implemented in the quantumDynamics plugin, because for now the plugin is\n // only callable from the engine.\n callPluginAccessor: function(accessorMethodName, args) {\n var returnValue;\n args = args || [];\n pluginController.callPluginFunction(accessorMethodName, args, function(_) {\n returnValue = _;\n });\n return returnValue;\n }\n };\n\n\n\n // Initialization\n initialize();\n\n // Export initialized objects to Public API.\n // To ensure that client code always has access to these public properties,\n // they should be initialized only once during the engine lifetime (in the initialize method).\n engine.pairwiseLJProperties = pairwiseLJProperties;\n\n // Finally, return Public API.\n return engine;\n};\n","\n// Definitions of the default MD2D units. Every model property exposed by md2d/models/modeler.js is\n// in one of the unit types below.\n\n// This particular set of definitions is for reference and for generating the correct labels on\n// output properties; it's not used for computation. Unit conversions that need to happen during\n// calculations in the MD2D engine itself are \"baked in\" using the engine's internal constants and\n// units module 'md2d/models/engine/constants/index.js')\n\n// Additionally, since we don't yet offer user-facing methods which do unit conversions (e.g.,\n// allowing a property setter to accept an argument containing a value and a unit) there is no\n// need for quantitative information in this definition.\n\nexport default {\n name: \"md2d\",\n translated: false,\n units: {\n\n length: {\n name: \"nanometer\",\n pluralName: \"nanometers\",\n symbol: \"nm\"\n },\n\n // Internally, we've referred to \"Dalton\" but amu is probably more common. Dalton is\n // officially more correct but it still seems mostly to be used for protein masses, etc.\n mass: {\n name: \"atomic mass unit\",\n pluralName: \"atomic mass units\",\n symbol: \"amu\"\n },\n\n time: {\n name: \"femtosecond\",\n pluralName: \"femtoseconds\",\n symbol: \"fs\",\n displayValue: {\n unitsPerBaseUnit: 1e-3,\n pluralName: \"picoseconds\",\n name: \"picosecond\",\n symbol: \"ps\"\n }\n },\n\n // For unclear reasons, Classic MW scales the damping coefficient of obstacles linearly with\n // the obstacle's mass, so the acceleration due to friction is a constant times the velocity:\n // a(friction) = -cv\n // For compatibility, MD2D does the same.\n // The units of the constant c (called \"obstacle friction\") are therefore 1 / time.\n inverseTime: {\n name: \"1/femtosecond\",\n pluralName: \"1/femtoseconds\",\n symbol: \"1/fs\"\n },\n\n velocity: {\n name: \"nanometer per femtosecond\",\n pluralName: \"nanometers per second\",\n symbol: \"nm/s\"\n },\n\n acceleration: {\n name: \"nanometer per femtosecond squared\",\n pluralName: \"nanometers per femtosecond squared\",\n symbol: \"nm/fs²\"\n },\n\n momentum: {\n name: \"amu nanometer per femtosecond\",\n pluralName: \"amu nanometers per femtosecond\",\n symbol: \"amu⋅nm/fs\"\n },\n\n // Forces haven't typically been exposed to Classic MW users in a quantitative way, and indeed\n // they aren't yet exposed in Next Gen MW, so MD2D doesn't try to translate the\n // (computationally convenient) amu nm/fs² to \"user friendly\" units. That said, Classic MW\n // could be said to use eV/nm implicitly, since spring constants are in eV/nm².\n force: {\n name: \"amu nanometer per femtosecond squared\",\n pluralName: \"amu nanometers per femtosecond squared\",\n symbol: \"amu⋅nm/fs²\"\n },\n\n energy: {\n name: \"electron volt\",\n pluralName: \"electron volts\",\n symbol: \"eV\"\n },\n\n // force / velocity = mass / time; given the composite force unit we use, this is much simpler\n // to write as amu/fs than anything else.\n dampingCoefficient: {\n name: \"amu per femtosecond\",\n pluralName: \"amu per femtoseconds\",\n symbol: \"amu/fs\"\n },\n\n // aka spring constant (= eV/nm per nm)\n stiffness: {\n name: \"electron volt per nanometer squared\",\n pluralName: \"electron volts per nanometer squared\",\n symbol: \"eV/nm²\"\n },\n\n // aka torsional spring constant.\n // Dimensions are torque / angle = force (eV/nm) x lever arm (nm) / angle (radians). This is\n // dimensionally equivalent to energy / angle (eV/radians) but the interpretation of force x\n // distance is different for energy than it is for torque.\n rotationalStiffness: {\n name: \"electron volt per radian\",\n pluralName: \"electron volts per radian\",\n symbol: \"eV/rad\"\n },\n\n charge: {\n name: \"elementary charge\",\n pluralName: \"elementary charges\",\n symbol: \"e\"\n },\n\n temperature: {\n // Not \"degrees Kelvin\", just \"Kelvin\".\n name: \"Kelvin\",\n // Not \"Kelvins\", just \"Kelvin\".\n pluralName: \"Kelvin\",\n symbol: \"K\"\n },\n\n pressure: {\n name: \"bar\",\n // e.g., \"50 bar\"\n pluralName: \"bar\",\n symbol: \"bar\"\n },\n\n angle: {\n name: \"radian\",\n pluralName: \"radians\",\n symbol: \"rad\"\n }\n }\n};\n","\n// Definitions of the MKS units used for macroscopic models. We simulate macroscopic models by\n// declaring that some value in (microscopic) MD2D units actually represents one macroscopic-scale\n// unit of the same type, e.g., we choose 1 nm (a value of 1 in any MD2D property that has unitType\n// \"length\") to represent 1 m.\n//\n// Such microscopic:macroscopic ratios as 1nm:1m can only be freely chosen for three unit types:\n// length, mass, and time. The remaining unit ratios are computed by the UnitsTranslation module.\n// See http://lab.dev.concord.org/doc/models/md2d/macroscopic-units/ for an overview of the\n// calculations.\n//\n// In order to compute these ratios, the UnitsTranslation requires two pieces of\n// data about each unit:\n//\n// (1) for mass, length, and time only, the \"representationInMD2DUnits\" property, which tells\n// how many MD2D units of the same type represent 1 macroscopic unit.\n// (2) for each unit type, the \"valueInSIUnits\" property, which tells the value of that unit in\n// SI units. This is required, for example, if we wanted to have a unit system that represented\n// acceleration in g (multiples of Earth gravity.) We can automatically translate from the MD2D\n// system of units (nm/fs²) to SI/MKS, but without further information relating the value of 1g\n// to units of m/s² we cannot translate MD2D units to g.\n//\n// Additionally, angle, pressure, and temperature are not included below. That is because angle\n// units require no translation, and temperature, while nominally applicable to macroscale models,\n// is computed from kinetic energy in a way that is not really applicable to, e.g., a macroscopic\n// mass-spring model. Moreover pressure units in Classic MW are somewhat fake, and we don't really\n// anticipate trying to compute the pressure exerted by a box of bouncing macroscopic balls.\n\nexport default {\n name: \"mks\",\n translated: true,\n units: {\n\n length: {\n name: \"meter\",\n pluralName: \"meters\",\n symbol: \"m\",\n representationInMD2DUnits: 1,\n valueInSIUnits: 1\n },\n\n mass: {\n name: \"kilogram\",\n pluralName: \"kilograms\",\n symbol: \"kg\",\n representationInMD2DUnits: 1,\n valueInSIUnits: 1\n },\n\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\",\n representationInMD2DUnits: 1e4,\n valueInSIUnits: 1\n },\n\n inverseTime: {\n name: \"1/second\",\n pluralName: \"1/seconds\",\n symbol: \"1/s\",\n valueInSIUnits: 1\n },\n\n velocity: {\n name: \"meter per second\",\n pluralName: \"meters per second\",\n symbol: \"m/s\",\n valueInSIUnits: 1\n },\n\n acceleration: {\n name: \"meter per second squared\",\n pluralName: \"meters per second squared\",\n symbol: \"m/s²\",\n valueInSIUnits: 1\n },\n\n force: {\n name: \"Newton\",\n pluralName: \"Newtons\",\n symbol: \"N\",\n valueInSIUnits: 1\n },\n\n energy: {\n name: \"Joule\",\n pluralName: \"Joules\",\n symbol: \"J\",\n valueInSIUnits: 1\n },\n\n dampingCoefficient: {\n name: \"Newton second per meter\",\n pluralName: \"Newton seconds per meter\",\n symbol: \"N⋅s/m\",\n valueInSIUnits: 1\n },\n\n // aka spring constant\n stiffness: {\n name: \"Newton per meter\",\n pluralName: \"Newtons per meter\",\n symbol: \"N/m\",\n valueInSIUnits: 1\n },\n\n // aka torsional spring constant\n rotationalStiffness: {\n name: \"Newton-meter per radian\",\n pluralName: \"Newton-meters per radian\",\n symbol: \"N⋅m/rad\",\n valueInSIUnits: 1\n },\n\n charge: {\n name: \"Coulomb\",\n pluralName: \"Coulombs\",\n symbol: \"C\",\n valueInSIUnits: 1\n }\n }\n};\n","import md2dUnits from \"models/md2d/models/unit-definitions/md2d\";\nimport mksUnits from \"models/md2d/models/unit-definitions/mks\";\nimport _ from \"underscore\";\n\nvar defs = {\n md2d: md2dUnits,\n mks: mksUnits\n};\n\nexport default {\n get: function (name) {\n var ret;\n if (name === \"md2d\") return defs.md2d;\n\n // For any unit type not in defs[name].units (e.g., temperature does not need to be redefined\n // in MKS), fall back to the MD2D unit definition.\n ret = _.extend({}, defs[name]);\n ret.units = _.extend({}, defs.md2d.units, defs[name].units);\n return ret;\n }\n};\n","/*jshint eqnull: true*/\n\nimport _ from 'underscore';\nimport constants from 'models/md2d/models/engine/constants/index';\nimport coulomb from 'models/md2d/models/engine/potentials/coulomb';\n\nvar COULOMB_CONSTANT = constants.COULOMB_CONSTANT.as(constants.unit.METERS_PER_FARAD),\n baseUnitTypes = ['length', 'mass', 'time'];\n\nexport default function UnitsTranslation(unitsDefinition) {\n\n var // multiply MD2D-units value by this to get the value in SI units\n siFactor = {},\n\n // multiply MD2D-units value by this to get the value in translated (macroscopic) units\n factor = {},\n\n force;\n\n _.each(baseUnitTypes, function(unitType) {\n var u = unitsDefinition.units[unitType];\n siFactor[unitType] = u.valueInSIUnits / u.representationInMD2DUnits;\n });\n\n siFactor.inverseTime = 1 / siFactor.time;\n siFactor.velocity = siFactor.length / siFactor.time;\n siFactor.acceleration = siFactor.velocity / siFactor.time;\n siFactor.force = siFactor.mass * siFactor.acceleration;\n\n // The factor should first convert an MD2D value, which is in *eV*, to amu nm/fs^2:\n siFactor.energy = constants.ratio(constants.unit.MW_ENERGY_UNIT, {\n per: constants.unit.EV\n });\n // Then it should convert amu/fs^2 to N and nm to m, yielding Joules:\n siFactor.energy *= siFactor.force * siFactor.length;\n\n siFactor.dampingCoefficient = siFactor.force / siFactor.velocity;\n // stiffness is eV/nm^2; convert eV -> J and 1/nm^2 -> 1/m^2 (yielding N/m)\n siFactor.stiffness = siFactor.energy / siFactor.length / siFactor.length;\n // rotational stiffness is in eV/rad; convert eV -> N⋅m -- no need to convert radians\n siFactor.rotationalStiffness = siFactor.energy / siFactor.length;\n\n // Force between charge +1 and -1, 1 distance unit apart, with dielectric constant 1\n force = coulomb.force(1, -1, 1, 1);\n // See disdcussion at http://lab.dev.concord.org/doc/models/md2d/macroscopic-units/\n siFactor.charge = Math.sqrt(force * siFactor.force * siFactor.length * siFactor.length / COULOMB_CONSTANT);\n\n _.each(_.keys(siFactor), function(unitType) {\n factor[unitType] = siFactor[unitType] / unitsDefinition.units[unitType].valueInSIUnits;\n });\n\n return {\n translateToModelUnits: function(translatedUnitsValue, unitType) {\n if (factor[unitType] == null) {\n return translatedUnitsValue;\n }\n return translatedUnitsValue / factor[unitType];\n },\n\n translateFromModelUnits: function(md2dUnitsValue, unitType) {\n if (factor[unitType] == null) {\n return md2dUnitsValue;\n }\n return md2dUnitsValue * factor[unitType];\n }\n };\n};\n","import aminoacidsHelper from 'models/md2d/models/aminoacids-helper';\nimport alert from 'common/alert';\n\nvar\n STATES = [\n \"undefined\",\n \"intro-cells\",\n \"intro-zoom1\",\n \"intro-zoom2\",\n \"intro-zoom3\",\n \"intro-polymerase\",\n \"dna\",\n \"transcription\",\n \"transcription-end\",\n \"after-transcription\",\n \"before-translation\",\n \"translation\",\n \"translation-end\"\n ],\n STATE_INDEX = {},\n\n NUCLEO_LAST_ID = 0,\n\n PROMOTER_SEQ = \"TGACCTCTCCGCGCCATCTATAAACCGAAGCGCTAGCTACA\",\n TERMINATOR_SEQ = \"ACCACAGGCCGCCAGTTCCGCTGGCGGCATTTT\",\n PROMOTER_COMP_SEQ = complementarySequence(PROMOTER_SEQ),\n TERMINATOR_COMP_SEQ = complementarySequence(TERMINATOR_SEQ),\n JUNK_SEQ,\n JUNK_COMP_SEQ,\n\n DEF_EVENT = \"change\";\n\nfunction complementarySequence(DNA) {\n // A-T (A-U)\n // G-C\n // T-A (U-A)\n // C-G\n\n // Use lower case during conversion to\n // avoid situation when you change A->T,\n // and later T->A again.\n return DNA\n .replace(/A/g, \"t\")\n .replace(/G/g, \"c\")\n .replace(/T/g, \"a\")\n .replace(/C/g, \"g\")\n .toUpperCase();\n}\n// Generates junk DNA sequence.\nfunction junkSequence(len) {\n var letters = [\"A\", \"G\", \"T\", \"C\"],\n lettersLen = letters.length,\n seq = \"\",\n i;\n for (i = 0; i < len; i++) {\n seq += letters[Math.floor(Math.random() * lettersLen)];\n }\n return seq;\n}\n\nfunction getNucleoID() {\n return NUCLEO_LAST_ID++;\n}\n\n(function() {\n var i, len;\n for (i = 0, len = STATES.length; i < len; i++) {\n STATE_INDEX[STATES[i]] = i;\n }\n JUNK_SEQ = junkSequence(50);\n JUNK_COMP_SEQ = complementarySequence(JUNK_SEQ);\n}());\n\nexport default function GeneticProperties(model) {\n var api,\n // Do not change this variable manually. It's changed in set() private\n // function. It decides what type of event should be dispatched when\n // DNA or DNAState is updated.\n eventMode = DEF_EVENT,\n // List of transitions, which are currently ongoing (index 0)\n // or scheduled (index > 0).\n ongoingTransitions = [],\n // DNA complementary sequence.\n DNAComp = \"\",\n // Complete mRNA based on current DNA. Useful for codon() method,\n // which needs to know the whole sequence in advance.\n mRNA = \"\",\n // Stop codons.\n stopCodonsHash,\n // Index of the first stop codon.\n lastTranslationStep,\n\n dispatch = d3.dispatch(\"change\", \"transition\"),\n\n calculatemRNA = function() {\n var newCode = mRNACode(0),\n mRNA = \"\";\n while (newCode) {\n mRNA += newCode;\n newCode = mRNACode(mRNA.length);\n }\n return mRNA;\n },\n\n calculateStopCodonsHash = function() {\n var codon, i, len;\n\n stopCodonsHash = {};\n lastTranslationStep = null;\n for (i = 0, len = mRNA.length; i < len; i += 3) {\n codon = mRNA.substr(i, 3);\n if (aminoacidsHelper.codonToAbbr(codon) === \"STOP\") {\n if (lastTranslationStep === null) {\n lastTranslationStep = i / 3;\n }\n // Note that codonToAbbr returns \"STOP\" also when codon length is\n // smaller than 3. In this case, we want to mark only codons which\n // are a \"real\" STOP codons, so check their length.\n if (codon.length === 3) {\n stopCodonsHash[i] = stopCodonsHash[i + 1] = stopCodonsHash[i + 2] = true;\n }\n }\n }\n if (lastTranslationStep === null) {\n // No stop codon found.\n lastTranslationStep = Math.floor(mRNA.length / 3);\n }\n },\n\n mRNACode = function(index) {\n if (index >= DNAComp.length) {\n // No more DNA to transcribe, return null.\n return null;\n }\n switch (DNAComp[index]) {\n case \"A\":\n return \"U\";\n case \"G\":\n return \"C\";\n case \"T\":\n return \"A\";\n case \"C\":\n return \"G\";\n }\n },\n\n generateMRNAViewModel = function(array, sequence) {\n var i, len, nucleo;\n // Set size of the existing array to the size of new DNA sequence.\n array.length = sequence.length;\n for (i = 0, len = sequence.length; i < len; i++) {\n nucleo = array[i] || {}; // reuse existing objects.\n nucleo.idx = i;\n // Note that only nucleotides whose type doesn't match sequence\n // will receive new ID. It lets you to update this array manually,\n // so the ID as prevented in case of need (e.g. single insertion\n // or deletion during mutation).\n if (nucleo.type !== sequence[i]) {\n nucleo.type = sequence[i];\n nucleo.id = getNucleoID();\n // This block will be also executed when we insert objects for\n // the first time so update the array[i] reference.\n array[i] = nucleo;\n }\n }\n return array;\n },\n\n generateDNAViewModel = function(array, DNA, comp) {\n var sequence = !comp ? JUNK_SEQ + PROMOTER_SEQ + DNA + TERMINATOR_SEQ + JUNK_SEQ :\n JUNK_COMP_SEQ + PROMOTER_COMP_SEQ + DNA + TERMINATOR_COMP_SEQ + JUNK_COMP_SEQ,\n junkBound = JUNK_SEQ.length,\n promoterBound = junkBound + PROMOTER_SEQ.length,\n codingBound = promoterBound + DNA.length,\n terminatorBound = codingBound + TERMINATOR_SEQ.length,\n i, len, nucleo;\n\n // Set size of the existing array to the size of new DNA sequence.\n array.length = sequence.length;\n for (i = 0, len = sequence.length; i < len; i++) {\n nucleo = array[i] || {}; // reuse existing objects.\n nucleo.idx = i;\n if (i < junkBound) nucleo.region = \"j\";\n else if (i < promoterBound) nucleo.region = \"p\";\n else if (i < codingBound) nucleo.region = \"c\";\n else if (i < terminatorBound) nucleo.region = \"t\";\n else nucleo.region = \"j\";\n // Note that only nucleotides whose type doesn't match sequence\n // will receive new ID. It lets you to update this array manually,\n // so the ID as prevented in case of need (e.g. single insertion\n // or deletion during mutation).\n if (nucleo.type !== sequence[i]) {\n nucleo.type = sequence[i];\n nucleo.id = getNucleoID();\n // This block will be also executed when we insert objects for\n // the first time so update the array[i] reference.\n array[i] = nucleo;\n }\n }\n return array;\n },\n\n updateGeneticProperties = function() {\n var DNA = model.get(\"DNA\");\n\n generateDNAViewModel(api.viewModel.DNA, DNA, false);\n\n DNAComp = complementarySequence(DNA);\n generateDNAViewModel(api.viewModel.DNAComp, DNAComp, true);\n\n mRNA = calculatemRNA();\n calculateStopCodonsHash();\n // mRNA view array is also based on the current state.\n if (api.stateBefore(\"transcription:0\")) {\n generateMRNAViewModel(api.viewModel.mRNA, \"\");\n } else if (api.state().name === \"transcription\") {\n generateMRNAViewModel(api.viewModel.mRNA, mRNA.substr(0, api.state().step));\n } else if (api.stateAfter(\"transcription\")) {\n // So, the first state which triggers it is \"transcription-end\".\n generateMRNAViewModel(api.viewModel.mRNA, mRNA);\n }\n\n if (eventMode !== \"transition\") {\n // While jumping between states, ensure that user can see a valid\n // number of amino acids.\n if (api.stateBefore(\"translation:1\")) {\n removeAminoAcids();\n } else if (api.stateEqual(\"translation-end\")) {\n generateFinalProtein();\n }\n }\n },\n\n removeAminoAcids = function() {\n var aaCount;\n\n aaCount = model.getNumberOfAtoms();\n if (aaCount > 0) {\n model.startBatch();\n while (aaCount > 0) {\n model.removeAtom(aaCount - 1);\n aaCount--;\n }\n model.endBatch();\n }\n model.stop();\n },\n\n generateFinalProtein = function() {\n var aaSequenece = [],\n i = 0,\n abbr = aminoacidsHelper.codonToAbbr(api.codon(0));\n\n while (abbr !== \"STOP\") {\n aaSequenece.push(abbr);\n abbr = aminoacidsHelper.codonToAbbr(api.codon(++i));\n }\n api.generateProtein(aaSequenece, undefined, 2.3, 0.3);\n api.centerProtein();\n model.start();\n },\n\n nextState = function(state) {\n var name = state.name,\n next, abbr;\n\n if (name === \"transcription\") {\n if (state.step < model.get(\"DNA\").length - 1) {\n return \"transcription:\" + (state.step + 1);\n } else {\n return \"transcription-end\";\n }\n } else if (name === \"translation\") {\n abbr = aminoacidsHelper.codonToAbbr(api.codon(state.step));\n if (abbr !== \"STOP\") {\n return \"translation:\" + (state.step + 1);\n } else {\n return \"translation-end\";\n }\n } else {\n // \"Typical\" state.\n next = STATES[STATE_INDEX[state.name] + 1];\n if (next === \"transcription\" || next === \"translation\") {\n next += \":0\";\n }\n return next;\n }\n },\n\n prevState = function(state) {\n var name = state.name,\n step = state.step;\n\n if (name === \"transcription\" && step > 0) {\n return \"transcription:\" + (step - 1);\n } else if (name === \"transcription-end\") {\n return \"transcription:\" + (model.get(\"DNA\").length - 1);\n } else if (name === \"translation-end\" || (name === \"translation\" && step > 0)) {\n // Note that we always return state translation:0,\n // as jumping between translation steps is not allowed.\n return \"translation:0\";\n } else {\n return STATES[STATE_INDEX[name] - 1];\n }\n },\n\n // DNA states comparator.\n stateComp = function(stateA, stateB) {\n if (stateA === stateB) {\n return 0;\n }\n stateA = api.parseState(stateA);\n stateB = api.parseState(stateB);\n if (stateA.name === stateB.name) {\n if (isNaN(stateA.step) || isNaN(stateB.step)) {\n // Note that when you compare e.g. \"translate\"\n // and \"translate:5\" these steps are considered to be equal.\n return 0;\n }\n return stateA.step < stateB.step ? -1 : 1;\n }\n return STATE_INDEX[stateA.name] < STATE_INDEX[stateB.name] ? -1 : 1;\n },\n\n transitionToState = function(name) {\n if (typeof name === \"undefined\") return;\n if (ongoingTransitions.length > 0) {\n // Some transition are in progress, so only enqueue a new state.\n ongoingTransitions.push(name);\n } else {\n // Mark transition as ongoing (by adding it to the list)\n // and do transition.\n ongoingTransitions.push(name);\n doStateTransition(name);\n }\n },\n\n doStateTransition = function(name) {\n set(\"DNAState\", name, \"transition\");\n },\n\n doDNATransition = function(newDNA) {\n set(\"DNA\", newDNA, \"transition\");\n },\n\n dispatchChange = function(suppressViewportUpdate) {\n // Cancel transitions when we are going to dispatch \"change\" event.\n ongoingTransitions.length = 0;\n model.cancelTransitions();\n\n dispatch.change(suppressViewportUpdate);\n },\n\n // Use this function if you want to change DNA or DNAState\n // and dispatch event different than \"change\" (which causes immediate\n // rendering). Options are:\n // - \"change\",\n // - \"transition\",\n // - \"suppress\".\n set = function(name, value, eventType) {\n eventMode = eventType || DEF_EVENT;\n model.properties[name] = value;\n eventMode = DEF_EVENT;\n },\n\n stateUpdated = function() {\n var state = model.get(\"DNAState\");\n\n if (eventMode === \"suppress\") {\n return;\n }\n\n updateGeneticProperties();\n\n if (eventMode === \"transition\") {\n dispatch.transition(state);\n } else {\n\n if (api.stateAfter(\"translation:0\") && api.stateBefore(\"translation-end\")) {\n // It means that state was set to 'translation:x', where x > 0.\n // Use the last safe state ('translation:0') instead.\n alert(\"'\" + state + \"' cannot be set explicitly. \" +\n \"'translation:0' should be set and then animation to '\" +\n state + \"' should be triggered.\");\n set(\"DNAState\", \"translation:0\");\n return;\n }\n\n dispatchChange();\n }\n },\n\n DNAUpdated = function() {\n if (eventMode === \"suppress\") {\n return;\n }\n\n if (api.stateAfter(\"translation:0\") && api.stateBefore(\"translation-end\")) {\n // Reset translation if DNA is changed. This will remove all\n // existing amino acids and notify renderer (via stateUpdated\n // callback).\n set(\"DNAState\", \"translation:0\");\n return;\n }\n\n updateGeneticProperties();\n\n if (eventMode === \"transition\") {\n dispatch.transition(\"dna-updated\", true);\n } else {\n dispatchChange(true);\n }\n };\n\n // Public API.\n api = {\n /**\n * Number of nucleotides before coding region (so, in junk and promoter regions).\n * @type {number}\n */\n PRECODING_LEN: JUNK_SEQ.length + PROMOTER_SEQ.length,\n\n /**\n * Hash of arrays containing nucleotides objects. Each array can be\n * consumed by the view. References to arrays are guaranteed to be\n * untouched during whole life cycle of the GeneticEngine instance.\n * Only arrays' lengths and content can be changed.\n *\n * Each nucleotide is defined by:\n * type - letter (\"A\", \"T\", \"U\", \"G\" or \"C\"),\n * idx - its position,\n * id - unique id,\n * coding - true if nucleotide is a part of coding region (not junk, terminator or promoter).\n */\n viewModel: {\n mRNA: [],\n DNA: [],\n DNAComp: []\n },\n\n /**\n * Registers listener for given event type. Supported events\n * are: \"change\" and \"transition\".\n * @param {string} type\n * @param {function} listener\n */\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n /**\n * Performs substitution mutation on DNA coding region.\n * @param {number} idx position in DNA.\n * @param {string} newType \"A\", \"T\", \"G\" or \"C\".\n * @param {boolean} DNAComplement if true, mutation is performed\n * on DNA complementary strand.\n */\n mutate: function(idx, newType, DNAComplement) {\n var DNA = model.get(\"DNA\"),\n pos = idx - api.PRECODING_LEN;\n\n if (pos < 0 || pos >= DNA.length) {\n throw new Error(\"Mutation can be performed only on DNA coding region.\");\n }\n\n DNA = DNA.substr(0, pos) +\n (DNAComplement ? complementarySequence(newType) : newType) +\n DNA.substr(pos + 1);\n // Update DNA. This will also call updateGeneticProperties(), so\n // other, related properties will be also updated.\n set(\"DNA\", DNA);\n },\n\n /**\n * Performs insertion mutation on DNA coding region.\n * @param {number} idx position in DNA.\n * @param {string} type \"A\", \"T\", \"G\" or \"C\".\n * @param {boolean} DNAComplement if true, mutation is performed\n * on DNA complementary strand.\n */\n insert: function(idx, type, DNAComplement) {\n var newDNANucleo = {\n type: DNAComplement ? complementarySequence(type) : type,\n id: getNucleoID(),\n region: \"c\"\n },\n newDNACompNucleo = {\n type: DNAComplement ? type : complementarySequence(type),\n id: getNucleoID(),\n region: \"c\"\n },\n newMRNANucleo = {\n type: DNAComplement ? complementarySequence(type) : type,\n id: getNucleoID(),\n region: \"c\"\n },\n DNA = model.get(\"DNA\"),\n state = api.state(),\n pos = idx - api.PRECODING_LEN;\n\n if (pos < 0 || pos >= DNA.length) {\n throw new Error(\"Mutation can be performed only on DNA coding region.\");\n }\n\n // Update view model arrays. It isn't necessary, but as we update them\n // correctly, nucleotides will preserve their IDs and view will know\n // exactly what part of DNA have been changed.\n api.viewModel.DNA.splice(idx, 0, newDNANucleo);\n api.viewModel.DNAComp.splice(idx, 0, newDNACompNucleo);\n api.viewModel.mRNA.splice(pos, 0, newMRNANucleo);\n\n // Update DNA. This will also call updateGeneticProperties(), so\n // other, related properties will be also updated.\n DNA = DNA.substr(0, pos) + newDNANucleo.type + DNA.substr(pos);\n\n // Special case for transcription process (and state):\n // If we keep the same DNAState and we insert something\n // before state.step position, it would cause that the last\n // transcribed nucleotide would be removed. Avoid that, as this can be\n // confusing for users.\n if (state.name === \"transcription\" && pos < state.step) {\n // Note that we can't use nextState(state), as in that case, as\n // state can be changed to transcription-end too fast (as DNA isn't\n // updated yet).\n set(\"DNAState\", state.name + \":\" + (state.step + 1), \"suppress\");\n }\n doDNATransition(DNA);\n },\n\n /**\n * Performs deletion mutation on DNA coding region.\n * @param {number} idx position in DNA.\n */\n delete: function(idx) {\n var DNA = model.get(\"DNA\"),\n state = api.state(),\n pos = idx - api.PRECODING_LEN;\n\n if (pos < 0 || pos >= DNA.length) {\n throw new Error(\"Mutation can be performed only on DNA coding region.\");\n }\n\n // Update view model arrays. It isn't necessary, but as we update them\n // correctly, nucleotides will preserve their IDs and view will know\n // exactly what part of DNA have been changed.\n api.viewModel.DNA.splice(idx, 1);\n api.viewModel.DNAComp.splice(idx, 1);\n api.viewModel.mRNA.splice(pos, 1);\n\n // Update DNA. This will also call updateGeneticProperties(), so\n // other, related properties will be also updated.\n DNA = DNA.substr(0, pos) + DNA.substr(pos + 1);\n\n // Special case for transcription process (and state):\n // If we keep the same DNAState and we delete something\n // before state.step position, it would cause that new transcribed\n // mRNA nucleotide will be added. Avoid that, as this can be\n // confusing for users.\n if (state.name === \"transcription\" && pos < state.step) {\n set(\"DNAState\", prevState(state), \"suppress\");\n }\n doDNATransition(DNA);\n },\n\n /**\n * Triggers transition to the next DNA state.\n *\n * If any transition was ongoing, it's canceled.\n */\n transitionToNextState: function() {\n api.stopTransition();\n if (ongoingTransitions.length === 0) {\n transitionToState(nextState(api.lastState()));\n }\n },\n\n /**\n * Stops current animation.\n * @return {boolean} true when some transitions are canceled, false otherwise.\n */\n stopTransition: function() {\n if (ongoingTransitions.length > 1) {\n // Cleanup queue of waiting transitions. ongoingTransitions[0] is\n // the current transition, don't remove it.\n ongoingTransitions.length = 1;\n }\n },\n\n jumpToNextState: function() {\n if (api.stateBefore(\"translation:0\")) {\n set(\"DNAState\", nextState(api.state()));\n } else if (api.stateBefore(\"translation-end\")) {\n set(\"DNAState\", \"translation-end\");\n }\n },\n\n jumpToPrevState: function() {\n if (api.stateAfter(\"intro-cells\")) {\n set(\"DNAState\", prevState(api.state()));\n }\n },\n\n /**\n * Triggers transition to the given DNA state.\n * e.g. transitionTo(\"transcription-end\")\n *\n * @param {string} stateName name of the state.\n */\n transitionTo: function(stateName) {\n while (api.lastStateBefore(stateName)) {\n transitionToState(nextState(api.lastState()));\n }\n },\n\n /**\n * Triggers only one step of DNA transcription.\n * This method also accepts optional parameter - expected nucleotide.\n * When it's available, transcription step will be performed only\n * when passed nucleotide code matches nucleotide, which should\n * be actually joined to mRNA in this transcription step. When\n * expected nucleotide code is wrong, this method does nothing.\n *\n * e.g.\n * transcribeStep(\"A\") will perform transcription step only\n * if \"A\" nucleotide should be added to mRNA in this step.\n *\n * @param {string} expectedNucleotide code of the expected nucleotide (\"U\", \"C\", \"A\" or \"G\").\n */\n transcribeStep: function(expectedNucleotide) {\n var state, newCode;\n\n state = api.state();\n if (state.name === \"dna\" && typeof expectedNucleotide === \"undefined\") {\n api.transitionToNextState();\n } else if (state.name === \"transcription\") {\n newCode = mRNACode(state.step);\n if (expectedNucleotide && expectedNucleotide.toUpperCase() !== newCode) {\n // Expected nucleotide is wrong, so simply do nothing.\n return;\n }\n api.transitionToNextState();\n }\n },\n\n // Helper methods used mainly by the genetic renderer.\n\n /**\n * Returns parsed *current* DNA state.\n * e.g.\n * {\n * name: \"translation\",\n * step: 5\n * }\n *\n * @return {Object} current state object (see above).\n */\n state: function() {\n return api.parseState(model.get(\"DNAState\"));\n },\n\n stateBefore: function(name) {\n return stateComp(model.get(\"DNAState\"), name) === -1;\n },\n\n stateEqual: function(name) {\n return stateComp(model.get(\"DNAState\"), name) === 0;\n },\n\n stateAfter: function(name) {\n return stateComp(model.get(\"DNAState\"), name) === 1;\n },\n\n /**\n * Returns parsed *last* enqueued state.\n * When there is no state enqueued or in progress,\n * it returns simply current state.\n *\n * e.g.\n * {\n * name: \"translation\",\n * step: 5\n * }\n *\n * @return {Object} last enqueued state object (see above).\n */\n lastState: function() {\n var queueLen = ongoingTransitions.length;\n if (queueLen > 0) {\n return api.parseState(ongoingTransitions[queueLen - 1]);\n }\n return api.state();\n },\n\n lastStateBefore: function(name) {\n var queueLen = ongoingTransitions.length,\n lastStateName = queueLen ? ongoingTransitions[queueLen - 1] : model.get(\"DNAState\");\n return stateComp(lastStateName, name) === -1 ? true : false;\n },\n\n lastStateAfter: function(name) {\n var queueLen = ongoingTransitions.length,\n lastStateName = queueLen ? ongoingTransitions[queueLen - 1] : model.get(\"DNAState\");\n return stateComp(lastStateName, name) === 1 ? true : false;\n },\n\n parseState: function(state) {\n // State can contain \":\" and info about step.\n // e.g. translation:0, translation:1 etc.\n state = state.split(\":\");\n return {\n name: state[0],\n step: Number(state[1]) // can be NaN when step is undefined.\n };\n },\n\n codon: function(index) {\n return mRNA.substr(3 * index, 3);\n },\n\n codonComplement: function(index) {\n return api.codon(index)\n .replace(/A/g, \"u\")\n .replace(/G/g, \"c\")\n .replace(/U/g, \"a\")\n .replace(/C/g, \"g\")\n .toUpperCase();\n },\n\n translationStepStarted: function(codonIdx, x, y, xEnd, yEnd, duration) {\n var abbr = aminoacidsHelper.codonToAbbr(api.codon(codonIdx)),\n elID = aminoacidsHelper.abbrToElement(abbr);\n\n // Add some entropy to y position to avoid perfectly straight line of\n // amino acids what can affect folding process.\n yEnd += Math.random() * 0.02 - 0.01;\n model.addAtom({\n x: x,\n y: y,\n element: elID,\n visible: true,\n pinned: true\n }, {\n suppressCheck: true\n });\n // Transition new amino acid to its final position.\n model.atomTransition().id(codonIdx).duration(duration).prop(\"x\", xEnd);\n model.atomTransition().id(codonIdx).duration(duration).prop(\"y\", yEnd);\n // Ensure that the simulation is started.\n model.start();\n },\n\n shiftAminoAcids: function(count, xShift, duration) {\n if (count < 1) return;\n var i, x, y;\n // Shift amino acids to the right.\n for (i = 0; i < count; i++) {\n x = model.getAtomProperties(i).x + xShift;\n y = model.getAtomProperties(i).y;\n model.atomTransition().id(i).duration(duration).prop(\"x\", x);\n // This is required to keep Y coordinate constant during this\n // transition, some forces applied by the MD2D engine can\n // change trajectory of the particle.\n model.atomTransition().id(i).duration(duration).prop(\"y\", y);\n }\n },\n\n centerProtein: function(duration) {\n model.batch(function() {\n var cm = api.proteinCenterOfMass(),\n xDiff = model.properties.viewPortX +\n model.properties.viewPortWidth / 2 - cm.x,\n yDiff = model.properties.viewPortY +\n model.properties.viewPortHeight / 2 - cm.y,\n minX = model.properties.minX + 0.1,\n maxX = model.properties.maxX - 0.1,\n minY = model.properties.minY + 0.1,\n maxY = model.properties.maxY - 0.1,\n len = model.getNumberOfAtoms(),\n i, x, y;\n\n for (i = 0; i < len; i++) {\n x = model.getAtomProperties(i).x;\n y = model.getAtomProperties(i).y;\n if (x + xDiff > maxX) xDiff = maxX - x;\n if (x + xDiff < minX) xDiff = minX - x;\n if (y + yDiff > maxY) yDiff = maxY - y;\n if (y + yDiff < minY) yDiff = minY - y;\n }\n for (i = 0; i < len; i++) {\n x = model.getAtomProperties(i).x + xDiff;\n y = model.getAtomProperties(i).y + yDiff;\n if (duration) {\n model.atomTransition().id(i).duration(duration).prop(\"x\", x);\n model.atomTransition().id(i).duration(duration).prop(\"y\", y);\n } else {\n model.setAtomProperties(i, {\n x: x,\n y: y\n });\n }\n }\n });\n model.tickInPlace();\n },\n\n connectAminoAcid: function(codonIdx) {\n if (codonIdx < 1) return;\n var r1 = model.getAtomProperties(codonIdx - 1).radius,\n r2 = model.getAtomProperties(codonIdx).radius,\n // Length of bond is based on the radii of AAs.\n bondLen = (r1 + r2) * 1.25;\n // 10000 is a typical strength for bonds between AAs.\n model.addRadialBond({\n atom1: codonIdx,\n atom2: codonIdx - 1,\n length: bondLen,\n strength: 10000\n });\n model.setAtomProperties(codonIdx - 1, {\n pinned: false\n });\n },\n\n translationCompleted: function() {\n var atomsCount = model.getNumberOfAtoms();\n if (atomsCount > 0) {\n // Unpin the last atom. Note that sometimes translation\n // can end without any atom.\n model.setAtomProperties(atomsCount - 1, {\n pinned: false\n });\n }\n },\n\n transitionEnded: function() {\n // Transition has just ended so remove it\n // from transitions list.\n ongoingTransitions.shift();\n if (ongoingTransitions.length > 0) {\n doStateTransition(ongoingTransitions[0]);\n }\n },\n\n stopCodonsHash: function() {\n return stopCodonsHash;\n },\n\n lastTranslationStep: function() {\n return lastTranslationStep;\n },\n\n /**\n * Returns center of mass coridantes of the whole protein.\n * When there are no amino acids, returns null.\n *\n * @return {Object|null} protein's center of mass, e.g. {x: 1, y: 2}\n * or null when there are no amino acids.\n */\n proteinCenterOfMass: function() {\n var totalMass = 0,\n xcm = 0,\n ycm = 0,\n len = model.getNumberOfAtoms(),\n atom, i;\n\n if (len === 0) {\n return null;\n }\n\n // Note that there is a strong asumption that there are *only* amino\n // acids in the model.\n for (i = 0, len = model.getNumberOfAtoms(); i < len; i++) {\n atom = model.getAtomProperties(i);\n xcm += atom.x * atom.mass;\n ycm += atom.y * atom.mass;\n totalMass += atom.mass;\n }\n xcm /= totalMass;\n ycm /= totalMass;\n return {\n x: xcm,\n y: ycm\n };\n },\n\n /**\n * Generates a new protein (and removes all existing atoms before).\n *\n * @param {array} aaSequence defines expected sequence of amino acids. Pass undefined and provide\n * 'expectedLength' if you want to generate a random protein.\n * @param {Number} expectedLength controls the maximum (and expected) number of amino\n * acids of the resulting protein. Provide this parameter only when 'aaSequence'\n * is undefined. When expected length is too big (due to limited area of the model),\n * the protein will be truncated and its real length returned.\n * @return {Number} number of created amino acids (<= expectedLength).\n */\n generateProtein: function(aaSequence, expectedLength, paddingTop, paddingBottom) {\n // Process arguments.\n expectedLength = aaSequence ? aaSequence.length : expectedLength;\n paddingTop = paddingTop || 0;\n paddingBottom = paddingBottom || 0;\n\n var minX = model.properties.minX,\n minY = model.properties.minY + paddingBottom,\n maxX = model.properties.maxX,\n maxY = model.properties.maxY - paddingTop,\n createdAA = 0;\n\n // First, make sure that model is empty.\n removeAminoAcids();\n\n model.batch(function() {\n // Options for .addAtom modeler's method.\n var opt = {\n suppressCheck: true\n },\n width = maxX - minX,\n height = maxY - minY,\n aaCount = aminoacidsHelper.lastElementID - aminoacidsHelper.firstElementID + 1,\n xPos, yPos, xStep, yStep, el, props, radius, prevRadius, bondLen, i,\n\n // This function controls how X coordinate is updated,\n // using current Y coordinate as input.\n turnHeight = 0.6,\n xStepFunc = function(y) {\n if (y > height - turnHeight || y < turnHeight) {\n // Close to the boundary increase X step.\n return 0.1;\n }\n return 0.02 - Math.random() * 0.04;\n },\n\n // This function controls how Y coordinate is updated,\n // using current Y coordinate and previous result as input.\n changeHeight = 0.3,\n yStepFunc = function(y, prev) {\n if (prev === 0) {\n // When previously 0 was returned,\n // now it's time to switch direction of Y step.\n if (y > 0.5 * maxY) {\n return -0.1;\n }\n return 0.1;\n }\n if (yPos > maxY - changeHeight || yPos < changeHeight) {\n // Close to the boundary return 0 to make smoother turn.\n return 0;\n }\n // In a typical situation, just return previous value.\n return prev;\n },\n\n getRandomAA = function() {\n return Math.floor(aaCount * Math.random()) + aminoacidsHelper.firstElementID;\n };\n\n // Add the first amino acid. Start from the lower-left corner of\n // model area.\n xPos = minX + 0.1;\n yPos = minY + 0.1;\n xStep = 0;\n yStep = 0;\n el = aaSequence ? aminoacidsHelper.abbrToElement(aaSequence[0]) : getRandomAA();\n radius = model.getElementProperties(el).radius;\n props = {\n x: xPos,\n y: yPos,\n element: el,\n visible: true\n };\n\n model.addAtom(props, opt);\n createdAA += 1;\n\n // Add remaining amino acids.\n for (i = 1; i < expectedLength; i++) {\n xPos = props.x;\n yPos = props.y;\n\n // Update step.\n xStep = xStepFunc(yPos);\n yStep = yStepFunc(yPos, yStep);\n\n // Update coordinates of new AA.\n xPos += xStep * 1.7;\n yPos += yStep * 1.7;\n\n if (xPos > width - 0.1) {\n // No space left for new AA.\n return;\n }\n\n el = aaSequence ? aminoacidsHelper.abbrToElement(aaSequence[i]) : getRandomAA();\n props = {\n x: xPos,\n y: yPos,\n element: el,\n visible: true\n };\n model.addAtom(props, opt);\n createdAA += 1;\n\n // Length of bond is based on the radii of AAs.\n prevRadius = radius;\n radius = model.getElementProperties(el).radius;\n bondLen = (radius + prevRadius) * 1.25;\n // 10000 is a typical strength for bonds between AAs.\n model.addRadialBond({\n atom1: i,\n atom2: i - 1,\n length: bondLen,\n strength: 10000\n });\n }\n });\n // We have to use a new batch so atoms array will be updated and we\n // can use getAtomProperties for recently added atoms.\n model.batch(function() {\n // Center protein (X coords only) in the viewport. Make sure\n // that we don't exceed model boundaries.\n var proteinsMaxX = model.getAtomProperties(createdAA - 1).x,\n proteinsCenter = (proteinsMaxX - minX) / 2,\n viewPortCenter = model.properties.viewPortX + model.properties.viewPortWidth / 2,\n spaceOnRight = maxX - proteinsMaxX,\n shift = Math.max(0, Math.min(viewPortCenter - proteinsCenter, spaceOnRight)),\n i;\n\n // Shift all AAs.\n for (i = 0; i < expectedLength; i++) {\n model.setAtomProperties(i, {\n x: model.getAtomProperties(i).x + shift\n });\n }\n });\n\n // Minize energy so the protein will look better.\n model.minimizeEnergy();\n\n // Return number of created AA.\n return createdAA;\n }\n };\n\n model.addPropertiesListener([\"DNA\"], DNAUpdated);\n model.addPropertiesListener([\"DNAState\"], stateUpdated);\n updateGeneticProperties();\n return api;\n}\n","\nvar MIN_FPS = 2.5;\n\nfunction PerformanceOptimizer(model) {\n /** @private */\n this._model = model;\n /** @private */\n this._initialTimeStep = this._model.get('timeStep');\n /** @private */\n this._maxTimeStep = this._initialTimeStep * 2;\n /** @private */\n this._targetProgressRate = this._initialTimeStep * this._model.get('timeStepsPerTick') * 60; // 60fps\n /**\n * Indicates whether performance optimizer is enabled or not.\n * @type {Boolean}\n */\n this.enabled = false;\n}\n\nPerformanceOptimizer.prototype._assessPerformance = function() {\n if (!this.enabled || this._model.isStopped()) {\n return;\n }\n\n var progressRate = this._model.getSimulationProgressRate(),\n fps = this._model.getFPS(),\n timeStep = this._model.get('timeStep'),\n timeStepsPerTick = this._model.get('timeStepsPerTick'),\n currentMaxTimeStep = this._model.get('temperatureControl') ? this._maxTimeStep * 2.5 : this._maxTimeStep;\n\n if (progressRate < 0.9 * this._targetProgressRate) {\n // Try to increase timeStep and if it's impossible,\n // touch timeStepsPerTick (what probably decrease FPS and\n // animation smoothness).\n if (1.1 * timeStep < currentMaxTimeStep) {\n this._model.set('timeStep', 1.1 * timeStep);\n } else if (fps > MIN_FPS) {\n this._model.set('timeStepsPerTick', Math.round(1.1 * timeStepsPerTick + 0.5));\n }\n } else if (progressRate > 1.1 * this._targetProgressRate) {\n // If simulation is going to fast, decrease timeStepsPerTick\n // what should make animations smoother.\n this._model.set('timeStepsPerTick', Math.round(0.9 * timeStepsPerTick - 0.5));\n }\n setTimeout($.proxy(this._assessPerformance, this), 250);\n};\n\nPerformanceOptimizer.prototype.enable = function() {\n if (this.enabled) {\n return;\n }\n this._model.start();\n this.enabled = true;\n this._model.set('timeStepsPerTick', 5);\n setTimeout($.proxy(this._assessPerformance, this), 250);\n};\n\nPerformanceOptimizer.prototype.disable = function() {\n this.enabled = false;\n};\n\nexport default PerformanceOptimizer;\n","\n/**\n * Abstract class, which defines basic interface for property transition.\n * It allows to smoothly change property over desired time period.\n *\n * Note that this class *can't* be instantiated. It should be used\n * as a base class for other classes, which should implement following\n * interface:\n * - getObjectProperties(id)\n * - setObjectProperties(id, props)\n *\n * Note that under the hood D3 ease and interpolate methods are used.\n * Also interface is similar to D3 transitions.\n */\nfunction PropertyTransition() {\n this.isFinished = false;\n this._duration = 0;\n this._easeFunc = d3.ease(\"cubic-in-out\"); // also default in d3\n this._elapsedTime = 0;\n this._id = null;\n this._propName = null;\n this._endValue = null;\n this._interpolator = null;\n\n // Check whether required methods are implemented.\n // This class can't be instantiated, only subclasses\n // implementing specified interface:\n if (this.getObjectProperties == null) {\n throw new Error(\"getObjectProperties method must be implemented by descendant!\");\n }\n if (this.setObjectProperties == null) {\n throw new Error(\"setObjectProperties method must be implemented by descendant!\");\n }\n}\n\n/**\n * Sets ID of processed object. It will be passed to\n * getObjectProperties and setObjectProperties.\n * @param {*} id\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.id = function(id) {\n this._id = id;\n return this;\n};\n\n/**\n * Sets property name and its final value.\n * @param {String} propName\n * @param {*} endValue\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.prop = function(propName, endValue) {\n this._propName = propName;\n this._endValue = endValue;\n return this;\n};\n\n/**\n * Sets transition duration.\n * @param {number} duration Transition duration.\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.duration = function(duration) {\n this._duration = duration;\n return this;\n};\n\n/**\n * Sets transition delay.\n * @param {number} delay Transition delay.\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.delay = function(delay) {\n this._elapsedTime = -delay;\n return this;\n};\n\n/**\n * Sets easing function duration. Note that under the hood\n * d3.ease function is used to generate easing function.\n * Please see:\n * https://github.com/mbostock/d3/wiki/Transitions#wiki-d3_ease\n *\n * @param {string} funcName Function name.\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.ease = function(funcName) {\n this._easeFunc = d3.ease(funcName);\n return this;\n};\n\n/**\n * Processes the transition. This should be used by the model\n * implementing transitions support. When transition is finished,\n * isFinished field will be set to true.\n * @param {number} elapsedTime elapsed time, units have to be\n * consistent with duration time.\n */\nPropertyTransition.prototype.process = function(elapsedTime) {\n if (this.isFinished || this._incompleteSpec()) {\n return;\n }\n var t, props;\n\n this._elapsedTime += elapsedTime;\n if (this._elapsedTime < 0) {\n // Elapsed time can be negative when there was a delay specified (which\n // sets elapsedTime to -delay).\n return;\n }\n if (this._interpolator == null) {\n this._interpolator = d3.interpolate(this.getObjectProperties(this._id)[this._propName], this._endValue);\n }\n t = Math.min(1, this._elapsedTime / this._duration);\n t = this._easeFunc(t);\n props = {};\n props[this._propName] = this._interpolator(t);\n // Update object properties.\n this.setObjectProperties(this._id, props);\n if (t >= 1) {\n // This ensures that 1 value is always reached.\n this.isFinished = true;\n }\n};\n\n/**\n * getObjectProperties method must be implemented by descendant!\n * Required interface:\n * @param {*} id Object ID, value passed\n * to .id() method will be used.\n * @return {Object} Properties hash.\n */\nPropertyTransition.prototype.getObjectProperties = null;\n\n/**\n * setObjectProperties method must be implemented by descendant!\n * Required interface:\n * @param {*} id Object ID, value passed\n * to .id() method will be used.\n * @param {Object} props Properties hash.\n */\nPropertyTransition.prototype.setObjectProperties = null;\n\n/**\n * @private\n * @return {boolean} true when transition specification is incomplete.\n */\nPropertyTransition.prototype._incompleteSpec = function() {\n return this._id == null || this._propName == null || this._endValue == null;\n};\n\nexport default PropertyTransition;","\nimport inherit from \"common/inherit\";\nimport PropertyTransition from \"common/models/property-transition\";\n\n\nfunction AtomTransition(model) {\n // Call super constructor.\n PropertyTransition.call(this);\n this._model = model;\n}\ninherit(AtomTransition, PropertyTransition);\n\n\nAtomTransition.prototype.setObjectProperties = function(id, props) {\n this._model.setAtomProperties(id, props);\n};\n\nAtomTransition.prototype.getObjectProperties = function(id) {\n return this._model.getAtomProperties(id);\n};\n\nexport default AtomTransition;\n","/**\n This plugin adds chemical reactions functionality to the MD2D engine.\n\n Datatable changes:\n atoms:\n sharedElectrons: an int representing the number of valence electrons currently shared\n with other atom. When sharedElectrons + valenceElectrons == 8 (or == 2 for helium), atom\n will no longer participate in chemical reactions.\n*/\n\nimport arrays from 'arrays';\nimport arrayTypes from 'common/array-types';\nimport metadata from 'models/md2d/models/metadata';\nimport validator from 'common/validator';\nimport constants from 'models/md2d/models/engine/constants/index';\nimport { getAngleBetweenVec } from 'models/md2d/models/engine/math/utils';\n\nvar\n unit = constants.unit,\n\n BOND_LEN_RATIO = 0.6, // follows Classic MW constant.\n // Based on the Classic MW constants defining bond style.\n BOND_TYPE = {\n 1: 101, // single bond\n 2: 107, // double bond\n 3: 108 // tripe bond\n },\n BOND_TYPE_INV = (function() {\n var result = {};\n Object.keys(BOND_TYPE).forEach(function(key) {\n result[BOND_TYPE[key]] = key;\n });\n return result;\n }()),\n\n ANGULAR_BOND_STRENGTH = 50; // follows Classic MW default value.\n\n// Dot product of [x1, y1] and [x2, y2] vectors.\nfunction dot(x1, y1, x2, y2) {\n return x1 * x2 + y1 * y2;\n}\n\n// Returns true if array1 and array2 have at least one common element, false otherwise.\nfunction commonElement(array1, array2) {\n var len1 = array1.length,\n len2 = array2.length,\n i, j, el1;\n // It's a brutal force approach, but note that maximum length of the array is 4. We use that\n // function to compare if two atoms have a common bonded atom. In chemical reactions, only\n // 4 bonds can be formed per atom.\n for (i = 0; i < len1; i++) {\n el1 = array1[i];\n for (j = 0; j < len2; j++) {\n if (el1 === array2[j]) return true;\n }\n }\n return false;\n}\n\nexport default function ChemicalReactions(engine, _properties) {\n var api,\n\n properties = validator.validateCompleteness(metadata.chemicalReactions, _properties),\n updateInterval = properties.updateInterval,\n createAngularBonds = properties.createAngularBonds,\n noLoops = properties.noLoops,\n valenceElectrons = properties.valenceElectrons,\n bondEnergy = properties.bondEnergy,\n activationEnergy = properties.activationEnergy,\n bondProbability = properties.bondProbability,\n\n // Helper array used only during bonds exchange process. When atom has radial bonds (one or\n // more), one of them (random) will be stored in this array. It will be exchanged with\n // free radical in case of collision.\n bondToExchange = [],\n\n // Flag indicating whether bonds were changed during last calculations. If so, forces\n // recalculation should be triggered.\n bondsChanged = false,\n\n // Set of modified atoms, so atoms that have bonds added or removed.\n modifiedAtoms = {},\n\n atoms,\n elements,\n radialBonds,\n angularBonds;\n\n function updateAtomsTable() {\n var length = atoms.x.length;\n atoms.sharedElectrons = arrays.create(length, 0, arrayTypes.int8Type);\n }\n\n function updateRadialBondsTable() {\n var length = radialBonds.atom1.length;\n radialBonds.creationPotential = arrays.create(length, 0, arrayTypes.floatType);\n }\n\n function isRadical(i) {\n var v = valenceElectrons[atoms.element[i]],\n s = atoms.sharedElectrons[i];\n return (s < v) && (v + s < 8);\n }\n\n // Returns length of bond between elements i and j.\n function getBondLength(i, j) {\n return BOND_LEN_RATIO * (elements.sigma[i] + elements.sigma[j]);\n }\n\n // Returns strength of bond between elements i and j.\n function getBondStrength(i, j) {\n // In Classic MW bond strength is in units of eV per 0.01 nm. Convert to eV/nm (x 1e4) and use\n // the same method to calculate bond strength.\n return 2e4 * Math.sqrt(elements.epsilon[i] * elements.epsilon[j]);\n }\n\n function getUnpairedElectrons(i) {\n // Don't support quadruple bonds, as they are unrealistic and can cause problems\n // (e.g. there is :C=C:, but not C==C).\n var v = valenceElectrons[atoms.element[i]];\n return Math.min(Math.min(8 - v, v) - atoms.sharedElectrons[i]);\n }\n\n // Returns a number indicating whether a bond between atoms atom1 and atom2 would be\n // a single (1), double (2) or triple (3) bond.\n // Bond type will be based on two factors:\n // - available electron slots,\n // - probability, e.g. it's more likely than single bond will be formed instead of double or\n // triple (see: bondProbability option)\n function getPossibleBondType(atom1, atom2, atom2Mod) {\n if (atom2Mod === undefined) atom2Mod = 0;\n var maxType = Math.min(3, getUnpairedElectrons(atom1), getUnpairedElectrons(atom2) + atom2Mod);\n // Only single bond is possible or no bond at all.\n if (maxType <= 1) {\n return maxType;\n } else {\n // Use probabilistic approach to choose a bond type.\n var prob = getBondTypeProbability(atoms.element[atom1], atoms.element[atom2]),\n randomValue = Math.random();\n\n if (maxType === 3) {\n if (randomValue < prob[0]) {\n return 1;\n } else if (randomValue < prob[0] + prob[1]) {\n return 2;\n } else {\n return 3;\n }\n } else { // maxType === 2\n // Note that when only single or double bond can be created, we add triple bond\n // likelihood to single bond likelihood! So for default 80% - 15% - 5% configuration,\n // we will end up with 85% for single bond and 15% for double bond.\n if (randomValue < prob[0] + prob[2]) {\n return 1;\n } else {\n return 2;\n }\n }\n }\n }\n\n // Returns a number indicating type of existing radial bond.\n function getBondType(bondIdx) {\n // Convert 101, 107, 108 into 1, 2, 3.\n var type = radialBonds.type[bondIdx] - 105;\n // We will get -4 for 101 and 2, 3 for 107, 108.\n return type < 0 ? 1 : type;\n }\n\n // TODO: (micro-)optimize functions below (?). They can be more elegant and require less work.\n\n // Returns bond chemical energy between elements i and j. Type indicates whether it's a single\n // (1 or undefined), double (2) or triple (3) bond.\n function getBondEnergy(i, j, type) {\n if (type === undefined) type = 1;\n switch (type) {\n case 1:\n return bondEnergy[i + \"-\" + j] != null ? bondEnergy[i + \"-\" + j] :\n bondEnergy[j + \"-\" + i] != null ? bondEnergy[j + \"-\" + i] :\n bondEnergy[\"default\"];\n case 2:\n return bondEnergy[i + \"=\" + j] != null ? bondEnergy[i + \"=\" + j] :\n bondEnergy[j + \"=\" + i] != null ? bondEnergy[j + \"=\" + i] :\n getBondEnergy(i, j, 1) * 2;\n case 3:\n return bondEnergy[i + \"#\" + j] != null ? bondEnergy[i + \"#\" + j] :\n bondEnergy[j + \"#\" + i] != null ? bondEnergy[j + \"#\" + i] :\n getBondEnergy(i, j, 1) * 3;\n }\n }\n\n // Returns activation energy when element i collides with j-k pair.\n function getActivationEnergy(i, j, k) {\n // order of j-k pair doesn't matter.\n return activationEnergy[i + \"+\" + j + \"-\" + k] != null ? activationEnergy[i + \"+\" + j + \"-\" + k] :\n activationEnergy[i + \"+\" + k + \"-\" + j] != null ? activationEnergy[i + \"+\" + k + \"-\" + j] :\n activationEnergy[\"default\"];\n }\n\n // Returns bond probability when element i collides with j.\n function getBondTypeProbability(i, j) {\n // order of j-k pair doesn't matter.\n return bondProbability[i + \"-\" + j] != null ? bondProbability[i + \"-\" + j] :\n bondProbability[j + \"-\" + i] != null ? bondProbability[j + \"+\" + i] :\n bondProbability[\"default\"];\n }\n\n\n // Returns energy needed to exchange bond between element i and j-k pair. So when collision\n // has bigger energy than returned value, bond should transform from j-k to i-j.\n function getEnergyForBondExchange(i, j, k, oldType, newType) {\n var oldEnergy = getBondEnergy(j, k, oldType),\n newEnergy = getBondEnergy(i, j, newType);\n\n if (newEnergy > oldEnergy) {\n // The final state is more stable, i-j bond (new) has more chemical energy than j-k (old).\n // Such transition should be easy, return just activation energy.\n return getActivationEnergy(i, j, k);\n } else {\n // The final state is less stable, i-j bond (new) is has less chemical energy than j-k (old).\n // Such transition should be harder, return activation energy and chemical energies\n // difference.\n return getActivationEnergy(i, j, k) + oldEnergy - newEnergy;\n }\n }\n\n function addRadialBond(props, a1, a2, bondType) {\n props.atom1 = a1;\n props.atom2 = a2;\n props.type = BOND_TYPE[bondType];\n engine.addRadialBond(props);\n bondsChanged = true;\n modifiedAtoms[a1] = true;\n modifiedAtoms[a2] = true;\n // Update shared electrons count.\n atoms.sharedElectrons[a1] += bondType;\n atoms.sharedElectrons[a2] += bondType;\n // In theory we can update bondToExchange with the newly created bond. However if we don't\n // do it, we won't exchange the bond in the same step we created it. It makes sense - things\n // will be clearer when e.g. user observes simulation in slow motion and tries to analyze\n // single step of chemical reaction.\n }\n\n function removeRadialBond(i, a1, a2, bondType) {\n engine.removeRadialBond(i, true);\n bondsChanged = true;\n modifiedAtoms[a1] = true;\n modifiedAtoms[a2] = true;\n // Update shared electrons count.\n atoms.sharedElectrons[a1] -= bondType;\n atoms.sharedElectrons[a2] -= bondType;\n }\n\n function transferRadialBond(i, props, a1, a2, a3, newType, oldType) {\n props.atom1 = a1;\n props.atom2 = a2;\n props.type = BOND_TYPE[newType];\n engine.setRadialBondProperties(i, props, true);\n bondsChanged = true;\n modifiedAtoms[a1] = true;\n modifiedAtoms[a2] = true;\n modifiedAtoms[a3] = true;\n // Update shared electrons count.\n atoms.sharedElectrons[a1] += newType;\n atoms.sharedElectrons[a2] += newType - oldType;\n atoms.sharedElectrons[a3] -= oldType;\n // a3 is no longer connected to bond with ID = bondIdx.\n if (bondToExchange[a3] === i) bondToExchange[a3] = undefined;\n // a2 is still connected to bond with ID = bondIdx, however if we set bondToExchange[a2]\n // to undefined, the same bond won't be transfered again during this step. It's not\n // necessary, but it will limit number of reactions during single step, making things\n // easier to observe and follow (otherwise the bond can exchanged multiple times during\n // one step, what can be confusing for users that will see only the final result).\n bondToExchange[a2] = undefined;\n }\n\n function addAngularBond(props) {\n engine.addAngularBond(props);\n bondsChanged = true;\n }\n\n function setAngularBondProperties(i, props) {\n engine.setAngularBondProperties(i, props);\n bondsChanged = true;\n }\n\n function cleanupModifiedAtomsAndFlags() {\n bondsChanged = false;\n Object.keys(modifiedAtoms).forEach(function(key) {\n delete modifiedAtoms[key];\n });\n }\n\n // TODO: we shouldn't have to do it explicitely at each step. Perhaps we should just modify add\n // and remove radial bond operations to make sure that sharedElectron count is always correct\n // (e.g. listen on approprieate events, but it's impossible at the moment).\n function validateSharedElectronsCount() {\n var type, i, len;\n for (i = 0, len = engine.getNumberOfAtoms(); i < len; i++) {\n atoms.sharedElectrons[i] = 0;\n }\n for (i = 0, len = engine.getNumberOfRadialBonds(); i < len; i++) {\n type = getBondType(i);\n atoms.sharedElectrons[radialBonds.atom1[i]] += type;\n atoms.sharedElectrons[radialBonds.atom2[i]] += type;\n }\n }\n\n function updateBondToExchangeArray() {\n var i, len;\n bondToExchange.length = 0;\n for (i = 0, len = engine.getNumberOfRadialBonds(); i < len; i++) {\n // Of course when a1 or a2 has more than one radial bond, only one will be saved.\n // However that's perfectly fine, as it's enough for bonds exchange mechanism.\n bondToExchange[radialBonds.atom1[i]] = bondToExchange[radialBonds.atom2[i]] = i;\n }\n }\n\n // When forcedCleanup equals to true, all bonds will be removed.\n function destroyBonds(forcedCleanup) {\n var i, a1, a2, el1, el2, dpot,\n xij, yij, ijsq, bondLen, bondType, chemEnergy,\n ljAdjustment,\n bondRemoved;\n\n i = 0;\n while (i < engine.getNumberOfRadialBonds()) {\n bondRemoved = false;\n\n a1 = radialBonds.atom1[i];\n a2 = radialBonds.atom2[i];\n bondLen = radialBonds.length[i];\n\n xij = atoms.x[a1] - atoms.x[a2];\n yij = atoms.y[a1] - atoms.y[a2];\n ijsq = xij * xij + yij * yij;\n\n dpot = Math.sqrt(ijsq) - bondLen;\n if (dpot > 0 || forcedCleanup) {\n // Bond is longer than its basic length, there is potential energy.\n dpot = 0.5 * radialBonds.strength[i] * dpot * dpot;\n // Bond chemical energy.\n el1 = atoms.element[a1];\n el2 = atoms.element[a2];\n bondType = getBondType(i);\n\n // increase in LJ potential energy caused by moving from (spot where bond formed)\n // to (spot where bond broken)\n ljAdjustment = -radialBonds.creationPotential[i] - engine.ljCalculator[el1][el2].potentialFromSquaredDistance(ijsq);\n chemEnergy = getBondEnergy(el1, el2, bondType);\n\n if (dpot - ljAdjustment > chemEnergy || forcedCleanup) {\n // Potential energy is larger than chemical energy, destroy bond.\n dpot -= chemEnergy;\n // LJ potential will now be calculated, take it into account.\n dpot -= ljAdjustment;\n\n if (engine.addKEToAtomPairAndConserveMomentum(dpot, a1, a2)) {\n removeRadialBond(i, a1, a2, bondType);\n bondRemoved = true;\n } else if (forcedCleanup) {\n // If it is impossible to add given amount of KE to just two atoms, try to add it\n // to all atoms. It's best what we can do to try to conserve energy during forced\n // cleanup.\n engine.addKEToAtoms(dpot);\n removeRadialBond(i, a1, a2, bondType);\n bondRemoved = true;\n }\n }\n }\n // After bond removal, all other bonds are re-indexed!\n if (!bondRemoved) i++;\n }\n }\n\n function createBonds(neighborList) {\n var N = engine.getNumberOfAtoms(),\n nlist = neighborList.getList(),\n i, len,\n a1, a2,\n el1, el2,\n xi, yi, xij, yij, ijsq, bondLen;\n\n // Get all proximal pairs of atoms, using neighborList.\n for (a1 = 0; a1 < N; a1++) {\n el1 = atoms.element[a1];\n xi = atoms.x[a1];\n yi = atoms.y[a1];\n\n for (i = neighborList.getStartIdxFor(a1), len = neighborList.getEndIdxFor(a1); i < len; i++) {\n a2 = nlist[i];\n\n // Ignore bonded atoms.\n if (engine.atomsBonded(a1, a2)) continue;\n\n el2 = atoms.element[a2];\n xij = xi - atoms.x[a2];\n yij = yi - atoms.y[a2];\n\n ijsq = xij * xij + yij * yij;\n bondLen = BOND_LEN_RATIO * (elements.sigma[el1] + elements.sigma[el2]);\n\n if (ijsq < bondLen * bondLen) {\n // Distance is less than possible bond length, check if there will be a collision.\n collide(a1, a2, xij, yij, ijsq);\n }\n }\n }\n }\n\n function willCollide(a1, a2, xij, yij) {\n // Dot product is used to calculate cosinus of angle. Atoms are considered to be colliding\n // when they are going towards each other and angle between velocity vectors and vector that\n // connects both atoms is less than 90 degrees.\n return !(dot(atoms.vx[a1], atoms.vy[a1], xij, yij) >= 0.0 &&\n dot(atoms.vx[a2], atoms.vy[a2], xij, yij) <= 0.0);\n }\n\n function collide(a1, a2, xij, yij, ijsq) {\n var a1Radical, a2Radical, bothRadical, a1a2Exchange, a2a1Exchange;\n\n if (willCollide(a1, a2, xij, yij)) {\n a1Radical = isRadical(a1);\n a2Radical = isRadical(a2);\n bothRadical = a1Radical && a2Radical;\n a1a2Exchange = a1Radical && bondToExchange[a2] !== undefined;\n a2a1Exchange = a2Radical && bondToExchange[a1] !== undefined;\n\n if (bothRadical || a1a2Exchange || a2a1Exchange) {\n // Check if there is a common element in directly bonded atoms. If so, don't let the\n // chemical reaction happen, as we don't want to form triangles. Note that we defer\n // this check as much as it's possible, as it can be little bit expensive.\n if (commonElement(engine.getBondedAtoms(a1), engine.getBondedAtoms(a2))) return;\n // If \"noLoops\" mode is enabled, check whether a1 is a part of the same molecule as a2.\n if (noLoops && engine.getMoleculeAtoms(a2).indexOf(a1) !== -1) return;\n\n if (bothRadical) {\n // Simple case, two radicals, just create a new bond.\n makeBond(a1, a2, ijsq);\n } else if (a1a2Exchange) {\n tryToExchangeBond(a1, a2, bondToExchange[a2], xij, yij, ijsq);\n } else if (a2a1Exchange) {\n tryToExchangeBond(a2, a1, bondToExchange[a1], xij, yij, ijsq);\n }\n }\n }\n }\n\n function makeBond(a1, a2, ijsq) {\n var el1 = atoms.element[a1],\n el2 = atoms.element[a2],\n bondType = getPossibleBondType(a1, a2),\n en = getBondEnergy(el1, el2, bondType),\n length, strength, dpot, creationPotential;\n\n if (en <= 0) return; // Fast path when bond energy is less than 0.\n\n length = getBondLength(el1, el2);\n strength = getBondStrength(el1, el2);\n\n // Energy conservation:\n // 1. Radial bond potential energy.\n dpot = Math.sqrt(ijsq) - length;\n dpot = -0.5 * strength * dpot * dpot;\n // 2. Bond chemical energy.\n dpot += en;\n\n // Account for LJ potential \"removed\" from the system by bond creation (because the engine\n // doesn't compute LJ force between bonded pairs)\n creationPotential = -engine.ljCalculator[el1][el2].potentialFromSquaredDistance(ijsq);\n\n if (creationPotential > 0) {\n // If creationPotential is > 0, a1 and a2 are impinging on the \"LJ core\". If we create\n // the bond, then when the bond breaks that potential will be released all at once via\n // addKEToAtoms and this eventually leads to model divergence.\n return;\n }\n\n if (engine.addKEToAtomPairAndConserveMomentum(dpot, a1, a2)) {\n addRadialBond({\n length: length,\n strength: strength,\n creationPotential: creationPotential\n }, a1, a2, bondType);\n }\n }\n\n function tryToExchangeBond(a1, a2, bondIdx, xij, yij, ijsq) {\n var el1 = atoms.element[a1],\n el2 = atoms.element[a2],\n a1Old = radialBonds.atom1[bondIdx],\n a2Old = radialBonds.atom2[bondIdx],\n el1Old = atoms.element[a1Old],\n el2Old = atoms.element[a2Old],\n // Atom that can lose the bond, it has to be different from a1 and a2.\n a3 = a1Old !== a1 && a1Old !== a2 ? a1Old : a2Old,\n el3 = atoms.element[a3],\n\n oldType = getBondType(bondIdx),\n // Take into account that a2 shared electron count is now affected by old bond!\n newType = getPossibleBondType(a1, a2, oldType),\n\n minCollisionEnergy = getEnergyForBondExchange(el1, el2, el3, oldType, newType),\n\n // Calculate the line-of-centers energy.\n ijsr = 1.0 / Math.sqrt(ijsq),\n vxij = atoms.vx[a1] - atoms.vx[a2],\n vyij = atoms.vy[a1] - atoms.vy[a2],\n vxy = vxij * xij * ijsr + vyij * yij * ijsr,\n\n a1Mass = atoms.mass[a1],\n a2Mass = atoms.mass[a2],\n\n collisionEnergy = constants.convert(a1Mass * a2Mass / (a1Mass + a2Mass) * vxy * vxy, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n }),\n\n newLength, newStrength, oldLength, oldStrength,\n lenDiff, dpot,\n ljAdjustment, creationPotential;\n\n // Use reduced mass to compute head-on kinetic energy.\n if (collisionEnergy > minCollisionEnergy) {\n // Kinetic energy is big enough to transfer radial bond.\n\n newLength = getBondLength(el1, el2);\n newStrength = getBondStrength(el1, el2);\n oldLength = radialBonds.length[bondIdx];\n oldStrength = radialBonds.strength[bondIdx];\n\n // Conserve energy.\n // New bond configuration.\n // 1. Radial bond potential energy.\n lenDiff = Math.sqrt(ijsq) - newLength;\n dpot = -0.5 * newStrength * lenDiff * lenDiff;\n // 2. Bond chemical energy.\n dpot += getBondEnergy(el1, el2, newType);\n creationPotential = -engine.ljCalculator[el1][el2].potentialFromSquaredDistance(ijsq);\n\n if (creationPotential > 0) {\n // as noted in makeBond, allowing the bond to be created now would cause trouble later\n return;\n }\n\n // Old bond configuration.\n xij = atoms.x[a1Old] - atoms.x[a2Old];\n yij = atoms.y[a1Old] - atoms.y[a2Old];\n ijsq = xij * xij + yij * yij;\n // 1. Radial bond potential energy.\n lenDiff = Math.sqrt(ijsq) - oldLength;\n dpot += 0.5 * oldStrength * lenDiff * lenDiff;\n // 2. Bond chemical energy.\n dpot -= getBondEnergy(el1Old, el2Old, oldType);\n\n // Account for difference in LJ potential between creation and release of old bond\n // (remember LJ force is not calculated between bonded pair)\n ljAdjustment = -radialBonds.creationPotential[bondIdx] - engine.ljCalculator[el1Old][el2Old].potentialFromSquaredDistance(ijsq);\n dpot -= ljAdjustment;\n\n if (engine.addKEToAtoms(dpot, a1, a2, a3)) {\n // Update bond, change it from a2-d3 to a1-a2.\n transferRadialBond(bondIdx, {\n length: newLength,\n strength: newStrength,\n creationPotential: creationPotential\n }, a1, a2, a3, newType, oldType);\n }\n }\n }\n\n function removeAngularBondOfModfiedAtoms() {\n // Remove all angular bonds that have modified atoms as a central atom (atom3 prop).\n // Use such \"strange\" form of loop, as while removing one bonds, other change their indexing.\n // So, after removal of bond 5, we should check bond 5 again, as it would be another bond\n // (previously indexed as 6).\n var i = 0;\n while (i < engine.getNumberOfAngularBonds()) {\n if (modifiedAtoms[angularBonds.atom3[i]]) {\n engine.removeAngularBond(i, true);\n } else {\n i++;\n }\n }\n }\n\n function tryToMakeAngularBondsStronger() {\n var i, len, a1, a2, a3, dpot;\n // Try to make angular bonds with strength equal to 0 stronger (if we can conserve energy).\n // Such bonds were added earlier when kinetic energy of atoms was too small to compensate\n // potential energy of angular bond. It's very likely to happen when bond between atoms is\n // much smaller or bigger than expected.\n for (i = 0, len = engine.getNumberOfAngularBonds(); i < len; i++) {\n if (angularBonds.strength[i] === 0) {\n a1 = angularBonds.atom1[i];\n a2 = angularBonds.atom2[i];\n a3 = angularBonds.atom3[i];\n dpot = angularBonds.angle[i] - getAngleBetweenAtoms(a1, a2, a3);\n dpot = -0.5 * ANGULAR_BOND_STRENGTH * dpot * dpot;\n\n if (engine.addKEToAtoms(dpot, a1, a2, a3)) {\n setAngularBondProperties(i, {\n strength: ANGULAR_BOND_STRENGTH\n });\n }\n }\n }\n }\n\n // Returns angle between a1-a3 and a2-a3 vectors.\n function getAngleBetweenAtoms(a1, a2, a3) {\n return getAngleBetweenVec(atoms.x[a1], atoms.y[a1],\n atoms.x[a2], atoms.y[a2],\n atoms.x[a3], atoms.y[a3]);\n }\n\n function getMoleculeAngle(valenceElectrons, sharedElectrons, bondsCount) {\n // Angle depends on number of regions of electric charge around atom. A region of electric\n // charge could be either an unshared pair of electrons or a shared pair (in a bond).\n // The regions of electron density will repel each other to minimize energy, so the following\n // angles are associated with regions of electron density:\n //\n // 4 regions = 90 degree angle\n // 3 regions = 120 degree angle\n // 2 regions = 180 degree angle\n //\n // There calculation about regions of electron density needs to consider the valence setting\n // for the central atom in a triplet grouping. Assuming single bonds this is what we get:\n // valence 1 = n/a (can't be a central atom in a triplet)\n // valence 2 = 2 regions\n // valence 3 = 3 regions\n // valence 4 = 4 regions\n // valence 5 = 4 regions (Two electrons will pair to become a shared pair and not bond. Three bonds possible.)\n // valence 6 = 4 regions (Two pairs of unshared electrons will occur. Two bonds possible.)\n // valence 7 = n/a (can't be a central atom in a triplet)\n // valence 8 = n/a (no bonds can form - this is a noble gas element)\n //\n // If double or triple bonds form then regions of electron density become merged, reducing\n // the total number of regions. Only atoms with valence 3 - 5 could be central atoms and\n // form double or triple bonds.\n // valence 3 with one double bond = 2 regions of electron density\n // valence 4 with one double bond = 3 regions of electron density\n // valence 4 with two double bonds = 2 regions of electron density\n // valence 4 with one triple bond = 2 regions of electron density\n // valence 5 with one double bond = 3 regions of electron density\n //\n // See related PT story: https://www.pivotaltracker.com/story/show/58090710\n //\n // Actually we can implement the whole algorithm using this simple formula:\n return 2 * Math.PI / (Math.min(4, valenceElectrons) - (sharedElectrons - bondsCount));\n }\n\n function setupNewAngularBonds() {\n var i, len, a1, a2, type, angle, ba, possibleBonds;\n // Construct helper structure containing bonded atoms.\n var bondedAtoms = [];\n for (i = 0, len = engine.getNumberOfRadialBonds(); i < len; i++) {\n a1 = radialBonds.atom1[i];\n a2 = radialBonds.atom2[i];\n type = BOND_TYPE_INV[radialBonds.type];\n if (modifiedAtoms[a1]) {\n if (!bondedAtoms[a1]) {\n bondedAtoms[a1] = [a2];\n } else {\n bondedAtoms[a1].push(a2);\n }\n }\n if (modifiedAtoms[a2]) {\n if (!bondedAtoms[a2]) {\n bondedAtoms[a2] = [a1];\n } else {\n bondedAtoms[a2].push(a1);\n }\n }\n }\n\n // Finally construct new angular bonds.\n for (i = 0, len = bondedAtoms.length; i < len; i++) {\n ba = bondedAtoms[i];\n if (!ba || ba.length < 2) continue;\n\n angle = getMoleculeAngle(valenceElectrons[atoms.element[i]], atoms.sharedElectrons[i], ba.length);\n\n if (ba.length === 2) {\n // e.g. A -- B -- A\n a1 = ba[0];\n a2 = ba[1];\n addAngularBondBetween(a1, a2, i, angle);\n } else {\n possibleBonds = [];\n if (ba.length === 3) {\n // e.g. A -- B -- A\n // |\n // A\n pushPossibleBond(possibleBonds, ba[0], ba[1], i);\n pushPossibleBond(possibleBonds, ba[0], ba[2], i);\n pushPossibleBond(possibleBonds, ba[1], ba[2], i);\n } else if (ba.length === 4) {\n // e.g. A\n // |\n // A -- B -- A\n // |\n // A\n pushPossibleBond(possibleBonds, ba[0], ba[1], i);\n pushPossibleBond(possibleBonds, ba[0], ba[2], i);\n pushPossibleBond(possibleBonds, ba[0], ba[3], i);\n pushPossibleBond(possibleBonds, ba[1], ba[2], i);\n pushPossibleBond(possibleBonds, ba[1], ba[3], i);\n pushPossibleBond(possibleBonds, ba[2], ba[3], i);\n }\n possibleBonds.sort(comparePossibleBonds);\n createFirstNPossibleBonds(possibleBonds, ba.length - 1, angle);\n }\n }\n }\n\n function pushPossibleBond(arr, a1, a2, aCentral) {\n arr.push({\n angle: getAngleBetweenAtoms(a1, a2, aCentral),\n a1: a1,\n a2: a2,\n aCentral: aCentral\n });\n }\n\n function comparePossibleBonds(a, b) {\n if (a.angle < b.angle) return -1;\n if (a.angle > b.angle) return 1;\n return 0;\n }\n\n function createFirstNPossibleBonds(array, N, bondAngle) {\n var i, bondDef;\n for (i = 0; i < N; i++) {\n bondDef = array[i];\n addAngularBondBetween(bondDef.a1, bondDef.a2, bondDef.aCentral, bondAngle, bondDef.angle);\n }\n }\n\n function addAngularBondBetween(a1, a2, aCentral, bondAngle, currentAngle) {\n if (!currentAngle) {\n currentAngle = getAngleBetweenAtoms(a1, a2, aCentral);\n }\n var props = {\n atom1: a1,\n atom2: a2,\n atom3: aCentral,\n angle: bondAngle\n };\n // Calculate potential energy of angular bond.\n var dpot = bondAngle - currentAngle;\n dpot = -0.5 * ANGULAR_BOND_STRENGTH * dpot * dpot;\n // If we can't conserve energy, add a \"fake\" angular bond with strength equal to 0.\n // During next steps we will try to make it stronger when the angular bond potential\n // energy will be smaller of kinetic energy of atoms bigger.\n if (engine.addKEToAtoms(dpot, a1, a2, aCentral)) {\n props.strength = ANGULAR_BOND_STRENGTH;\n } else {\n props.strength = 0;\n }\n addAngularBond(props);\n }\n\n // Gets chemical potential energy stored in radial bonds.\n function getBondsChemicalPE() {\n var PE = 0,\n i, len;\n\n for (i = 0, len = engine.getNumberOfRadialBonds(); i < len; ++i) {\n PE -= (getBondEnergy(atoms.element[radialBonds.atom1[i]],\n atoms.element[radialBonds.atom2[i]],\n getBondType(i)) - radialBonds.creationPotential[i]);\n }\n\n return PE;\n }\n\n // Public API.\n api = {\n initialize: function(dataTables) {\n atoms = dataTables.atoms;\n elements = dataTables.elements;\n radialBonds = dataTables.radialBonds;\n angularBonds = dataTables.angularBonds;\n updateAtomsTable();\n updateRadialBondsTable();\n },\n\n performActionWithinIntegrationLoop: function(neighborList, dt, time) {\n // Below there is a stateless way to check if we should perform calculations or not.\n // Calculations should be performed every femtoseconds. In theory we could just\n // remember the last time we did calculations and then check if the current time is larger\n // (or equal) than the last + . However, due to tick history seeking, we can't make\n // an assumption that time value will be always bigger than during the previous function\n // execution.\n var mod = time % updateInterval;\n if (mod === 0 || (mod < dt && Math.floor(time / updateInterval) === Math.round(time / updateInterval))) {\n cleanupModifiedAtomsAndFlags();\n validateSharedElectronsCount();\n destroyBonds();\n // Update bondToExchange array after .destroyBonds() call! bondToExchange array is used\n // only by .createBonds() function anyway.\n updateBondToExchangeArray();\n createBonds(neighborList);\n\n if (createAngularBonds) {\n if (Object.keys(modifiedAtoms).length > 0) {\n // Some reaction took place, update angular bonds.\n removeAngularBondOfModfiedAtoms();\n tryToMakeAngularBondsStronger();\n setupNewAngularBonds();\n } else {\n // In fact this call can be placed before the whole if-else statement. However this\n // is a small optimization, as we can setup optimal order of function calls.\n tryToMakeAngularBondsStronger();\n }\n }\n\n if (bondsChanged) {\n // Update forces coming from new bonds configuration (!).\n engine.updateParticlesAccelerations();\n }\n }\n },\n\n // This function is required by the MD2D engine, so return empty array as\n // nothing has to be serialized in this plugin.\n getState: function() {\n return [];\n },\n\n processOutputState: function(state) {\n state.PE += getBondsChemicalPE();\n },\n\n /**\n * Sets bond energy (dissociation energy) of a bond.\n * @param {string} bondDescription e.g. \"1-1\" means single bond between element 1 and 1,\n * \"1=2\" means double bond between element 1 and 2 etc.\n * @param {number} value bond energy in eV..\n */\n setBondEnergy: function(bondDescription, value) {\n bondEnergy[bondDescription] = value;\n },\n\n /**\n * Sets valence electrons count of the given element.\n * @param {number} element\n * @param {number} value\n */\n setValenceElectrons: function(element, value) {\n valenceElectrons[element] = value;\n // Cleanup all bonds.\n destroyBonds(true);\n validateSharedElectronsCount();\n }\n };\n\n return api;\n};\n"," import performance from 'common/performance';\nimport serialize from 'common/serialize';\nimport validator from 'common/validator';\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport OutputSupport from 'common/output-support';\nimport TickHistory from 'common/models/tick-history';\nimport { createEngine } from 'models/md2d/models/engine/md2d';\nimport metadata from 'models/md2d/models/metadata';\nimport units from 'models/md2d/models/engine/constants/units';\nimport unitDefinitions from 'models/md2d/models/unit-definitions/index';\nimport UnitsTranslation from 'models/md2d/models/units-translation';\nimport PropertyDescription from 'common/property-description';\nimport Solvent from 'models/md2d/models/solvent';\nimport aminoacids from 'models/md2d/models/aminoacids-props';\nimport aminoacidsHelper from 'models/md2d/models/aminoacids-helper';\nimport GeneticEngine from 'models/md2d/models/engine/genetic-engine';\nimport PerformanceOptimizer from 'models/md2d/models/performance-optimizer';\nimport AtomTransition from 'models/md2d/models/atom-transition';\nimport _ from 'underscore';\nimport QuantumDynamics from 'models/md2d/models/engine/plugins/quantum-dynamics';\nimport ChemicalReactions from 'models/md2d/models/engine/plugins/chemical-reactions';\n// Dependencies.\nvar // plugins\n \n \n\n md2dModelCount = 0;\n\nexport default function Model(initialProperties, initializationOptions, i18n) {\n\n // all models created with this constructor will be of type: \"md2d\"\n this.constructor.type = \"md2d\";\n\n initializationOptions = initializationOptions || {};\n\n var model = {},\n namespace = \"md2dModel\" + (++md2dModelCount),\n\n customSetters = {\n targetTemperature: function(value) {\n engine.setTargetTemperature(value);\n },\n\n temperatureControl: function(value) {\n engine.useThermostat(value);\n },\n\n lennardJonesForces: function(value) {\n engine.useLennardJonesInteraction(value);\n },\n\n coulombForces: function(value) {\n engine.useCoulombInteraction(value);\n },\n\n solventForceType: function(value) {\n engine.setSolventForceType(value);\n },\n\n DNAState: function(value) {\n engine.setDNAState(value);\n },\n\n solventForceFactor: function(value) {\n engine.setSolventForceFactor(value);\n },\n\n additionalSolventForceMult: function(value) {\n engine.setAdditionalSolventForceMult(value);\n },\n\n additionalSolventForceThreshold: function(value) {\n engine.setAdditionalSolventForceThreshold(value);\n },\n\n dielectricConstant: function(value) {\n engine.setDielectricConstant(value);\n },\n\n realisticDielectricEffect: function(value) {\n engine.setRealisticDielectricEffect(value);\n },\n\n VDWLinesCutoff: function(value) {\n var ratio = VDWLinesCutoffMap[value];\n if (ratio) {\n engine.setVDWLinesRatio(ratio);\n }\n },\n\n gravitationalField: function(value) {\n engine.setGravitationalField(value);\n },\n\n modelSampleRate: function() {\n if (!model.isStopped()) model.restart();\n },\n\n viscosity: function(value) {\n engine.setViscosity(value);\n },\n\n polarAAEpsilon: function(value) {\n var polarAAs, element1, element2,\n i, j, len;\n\n // Set custom pairwise LJ properties for polar amino acids.\n // They should attract stronger to better mimic nature.\n polarAAs = aminoacidsHelper.getPolarAminoAcids();\n for (i = 0, len = polarAAs.length; i < len; i++) {\n element1 = polarAAs[i];\n for (j = i + 1; j < len; j++) {\n element2 = polarAAs[j];\n // Set custom pairwise LJ epsilon (default one for AA is -0.1).\n engine.pairwiseLJProperties.set(element1, element2, {\n epsilon: value\n });\n }\n }\n },\n\n electricFieldDensity: function(value) {\n electricField.length = 0; // reuse existing array!\n if (!value) return;\n var minX = 0,\n minY = 0,\n maxX = model.properties.width,\n maxY = model.properties.height,\n diff = model.properties.width / value,\n yOffset = ((maxY / diff) % 1) * diff,\n y = minY + 0.5 * (yOffset + (diff <= maxY ? diff : 0)),\n x;\n while (y < maxY) {\n x = minX + 0.5 * diff;\n while (x < maxX) {\n electricField.push({\n x: x,\n y: y\n });\n x += diff;\n }\n y += diff;\n }\n }\n },\n\n // The set of units currently in effect. (Determined by the 'unitsScheme' property of the\n // model; default value is 'md2d')\n unitsDefinition = unitDefinitions.get(initialProperties.unitsScheme || 'md2d'),\n\n // Object that translates between 'native' md2d units and the units defined\n // by unitsDefinition.\n unitsTranslation = (function() {\n var scheme = initialProperties.unitsScheme || 'md2d';\n // If we're not using MD2D units, we need a translation (which, for each unit type, allows some\n // number of \"native\" MD2D units to stand for 1 translated unit, e.g., 1 nm represents 1m, with\n // the relationships between these ratios set up so that the calculations reamin physically\n // consistent.\n if (scheme !== 'md2d') {\n return new UnitsTranslation(unitsDefinition);\n }\n return undefined;\n }()),\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: customSetters,\n unitsDefinition: unitsDefinition,\n unitsTranslation: unitsTranslation,\n initialProperties: initialProperties\n }),\n\n dispatch = (function() {\n var d = labModelerMixin.dispatchSupport;\n d.addEventTypes(\"tick\",\n \"addAtom\", \"removeAtom\", \"addRadialBond\", \"removeRadialBond\",\n \"addElectricField\", \"removeElectricField\", \"changeElectricField\",\n \"removeAngularBond\", \"textBoxesChanged\", \"imagesChanged\");\n return d;\n }()),\n\n propertySupport = labModelerMixin.propertySupport,\n\n outputSupport,\n\n VDWLinesCutoffMap = {\n \"short\": 1.33,\n \"medium\": 1.67,\n \"long\": 2.0\n },\n defaultMaxTickHistory = 1000,\n newStep = false,\n lastSampleTime,\n sampleTimes = [],\n\n // FIXME: do we need global reference?\n modelState = window.state = {},\n tickHistory,\n\n // Transitions list.\n transitions = [],\n\n // Molecular Dynamics engine.\n engine = (function() {\n var e = createEngine();\n // Register invalidating change hooks.\n // pairwiseLJProperties object allows to change state which defines state of the whole simulation.\n e.pairwiseLJProperties.registerChangeHooks(propertySupport.invalidatingChangePreHook, propertySupport.invalidatingChangePostHook);\n return e;\n }()),\n\n // Genetic engine.\n geneticEngine,\n\n // An array of elements object.\n editableElements,\n\n // ######################### Main Data Structures #####################\n // They are initialized at the end of this function. These data strucutres\n // are mainly managed by the engine.\n\n // A hash of arrays consisting of arrays of element property values\n elements,\n\n // A hash of arrays consisting of arrays of obstacle property values\n obstacles,\n\n // A hash of arrays consisting of arrays of shape property values\n shapes,\n\n // A hash of arrays consisting of arrays of line property values\n lines,\n\n // A hash of arrays consisting of arrays of electric field property values\n electricFields,\n\n // A hash of arrays consisting of arrays of radial bond property values\n radialBonds,\n\n // A hash of arrays consisting of arrays of angular bond property values\n angularBonds,\n\n // A hash of arrays consisting of arrays of restraint property values\n // (currently atom-only)\n restraints,\n\n // ####################################################################\n\n // An array of objects consisting of atom index numbers and atom property values, for easy\n // consumption by the view. It is updated conservatively from the \"unrolled\" form used for\n // speedy computation by the engine.\n viewAtoms = [],\n\n // An array of objects consisting of radial bond index numbers and radial bond property\n // values, for easy consumption by the view.\n viewRadialBonds = [],\n\n // An array of objects consisting of photon index numbers and property values, for easy\n // consumption by the view. Only defined if the quantum dynamics plugin is used.\n viewPhotons,\n\n // An array of objects consisting of point coordinates and electric field force at that point\n // (e.g. [{ x: 1, y: 2, fx: 0.1, fy: 0.3 }, ...]).\n electricField = [],\n\n // The index of the \"spring force\" used to implement dragging of atoms in a running model\n liveDragSpringForceIndex = null,\n\n // Cached value of the 'friction' property of the atom being dragged in a running model\n liveDragSavedFriction,\n\n // Properties hashes for use by plugins\n pluginProperties;\n\n function processTransitions(timeDiff) {\n var i, len;\n model.startBatch();\n for (i = 0, len = transitions.length; i < len; i++) {\n transitions[i].process(timeDiff);\n }\n // Cleanup finished transitions.\n i = 0;\n while (i < transitions.length) {\n if (transitions[i].isFinished) {\n transitions.splice(i, 1);\n } else {\n i++;\n }\n }\n model.endBatch();\n }\n\n // Returns a copy of 'obj' with value replaced by fn(key, value) for every (key, value) pair.\n // (Underscore doesn't do this: https://github.com/documentcloud/underscore/issues/220)\n function mapValues(obj, fn) {\n obj = _.extend({}, obj);\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) obj[k] = fn(k, obj[k]);\n }\n return obj;\n }\n\n // Modifies a properties hash which has translated units to have MD2D units. Leaves properties\n // without a unitType (or with an unrecognized unitType) unmodified.\n // Returns 'properties' unmodified (not a copy) if there is no units translation in effect.\n function translateToMD2DUnits(properties, metadata) {\n if (!unitsTranslation) return properties;\n return mapValues(properties, function(key, value) {\n return unitsTranslation.translateToModelUnits(value, metadata[key] && metadata[key].unitType);\n });\n }\n\n // Modifies a properties hash which has MD2D units to have translated units. Leaves properties\n // without a unitType (or with an unrecognized unitType) unmodified.\n // Returns 'properties' unmodified (not a copy) if there is no units translation in effect.\n function translateFromMD2DUnits(properties, metadata) {\n if (!unitsTranslation) return properties;\n return mapValues(properties, function(key, value) {\n return unitsTranslation.translateFromModelUnits(value, metadata[key] && metadata[key].unitType);\n });\n }\n\n /**\n Executes the closure 'extract' which extracts from the tick history, then dispatches\n addAtom/removeAtom, etc, events as needed.\n\n This prevents unneessary creation and removal of atoms.\n */\n var runAndDispatchObjectNumberChanges = (function() {\n var objects = [{\n getNum: 'getNumberOfAtoms',\n addEvent: 'addAtom',\n removeEvent: 'removeAtom'\n }, {\n getNum: 'getNumberOfRadialBonds',\n addEvent: 'addRadialBond',\n removeEvent: 'removeRadialBond'\n }];\n\n return function(extract) {\n var i, o, newNum;\n for (i = 0; i < objects.length; i++) {\n o = objects[i];\n o.num = engine[o.getNum]();\n }\n\n extract();\n\n for (i = 0; i < objects.length; i++) {\n o = objects[i];\n newNum = engine[o.getNum]();\n if (newNum > o.num) {\n dispatch[o.addEvent]();\n } else if (newNum < o.num) {\n dispatch[o.removeEvent]();\n }\n }\n };\n })();\n\n /**\n This method is called to refresh the viewAtoms array and macrostate variables (KE, PE,\n temperature) whenever an engine integration occurs or the model state is otherwise changed.\n\n Normally, you should call the methods updateOutputPropertiesAfterChange or\n updateAllOutputProperties rather than calling this method. Calling this method directly does\n not cause output-property listeners to be notified, and calling it prematurely will confuse\n the detection of changed properties.\n */\n function readModelState() {\n engine.updateParticlesAccelerations();\n engine.computeOutputState(modelState);\n // remember that getViewPhotons will eventually be a modeler-layer method that ingests a raw\n // representation provided by modelState.photons\n viewPhotons = engine.callPluginAccessor('getViewPhotons');\n updateViewAtoms(modelState.atoms);\n updateViewRadialBonds(modelState.radialBonds, modelState.atoms);\n updateViewElectricField();\n }\n\n // Transpose 'atoms' object into 'viewAtoms' for consumption by view code\n function updateViewAtoms(atoms) {\n var n = engine.getNumberOfAtoms(),\n i,\n prop,\n amino,\n viewAtom;\n\n // TODO: refactor whole approach to creation of objects from flat arrays.\n // Think about more general way of detecting and representing amino acids.\n // However it would be reasonable to perform such refactoring later, when all requirements\n // related to proteins engine are clearer.\n\n viewAtoms.length = n;\n\n for (i = 0, n; i < n; i++) {\n if (!viewAtoms[i]) {\n viewAtoms[i] = {\n idx: i\n };\n }\n viewAtom = viewAtoms[i];\n\n for (prop in atoms) {\n if (atoms.hasOwnProperty(prop)) {\n viewAtom[prop] = atoms[prop][i];\n }\n }\n\n viewAtom.aminoAcid = aminoacidsHelper.isAminoAcid(atoms.element[i]);\n if (viewAtom.aminoAcid) {\n amino = aminoacidsHelper.getAminoAcidByElement(atoms.element[i]);\n viewAtom.symbol = amino.symbol;\n viewAtom.label = amino.abbreviation;\n }\n }\n }\n\n function updateViewRadialBonds(radialBonds, atoms) {\n var n = engine.getNumberOfRadialBonds(),\n viewBond, prop, i;\n\n viewRadialBonds.length = n;\n\n for (i = 0; i < n; i++) {\n if (!viewRadialBonds[i]) {\n viewRadialBonds[i] = {\n idx: i\n };\n }\n viewBond = viewRadialBonds[i];\n\n for (prop in radialBonds) {\n viewBond[prop] = radialBonds[prop][i];\n }\n\n // Additionally calculate x1, y1, x2, y2 properties that are useful for view.\n viewBond.x1 = atoms.x[viewBond.atom1];\n viewBond.y1 = atoms.y[viewBond.atom1];\n viewBond.x2 = atoms.x[viewBond.atom2];\n viewBond.y2 = atoms.y[viewBond.atom2];\n }\n }\n\n function updateViewElectricField() {\n // It may seem strange that model reads \"viewOption\"\n // (\"showElectricField\"), but this is definitely reasonable\n // optimization.\n if (!electricField.length || !model.properties.showElectricField) return;\n var i, len, p;\n for (i = 0, len = electricField.length; i < len; i++) {\n p = electricField[i];\n engine.getCoulombForceAt(p.x, p.y, p);\n }\n }\n\n /**\n return a random element index ... which is *not* an amino acid element\n */\n function randomElement() {\n var len = engine.getNumberOfElements(),\n el = Math.floor(Math.random() * len);\n while (aminoacidsHelper.isAminoAcid(el)) {\n el = Math.floor(Math.random() * len);\n }\n return el;\n }\n\n /**\n Create set of amino acids elements. Use descriptions\n provided in 'aminoacids' array.\n */\n function createAminoAcids() {\n var sigmaIn01Angstroms,\n sigmaInNm,\n i, len;\n\n // Note that amino acids ALWAYS have IDs from\n // AMINO_ELEMENT_FIRST_IDX (= 5) to AMINO_ELEMENT_LAST_IDX (= 24).\n // This is enforced by backward compatibility with Classic MW.\n\n // At the beginning, ensure that elements from 0 to 24 exists.\n for (i = engine.getNumberOfElements(); i <= aminoacidsHelper.lastElementID; i++) {\n model.addElement({\n id: i\n });\n }\n\n // Set amino acids properties using elements from 5 to 24.\n for (i = 0, len = aminoacids.length; i < len; i++) {\n // Note that sigma is calculated using Classic MW approach.\n // See: org.concord.mw2d.models.AminoAcidAdapter\n // Basic length unit in Classic MW is 0.1 Angstrom.\n sigmaIn01Angstroms = 18 * Math.pow(aminoacids[i].volume / aminoacids[0].volume, 0.3333333333333);\n sigmaInNm = units.convert(sigmaIn01Angstroms / 10, {\n from: units.unit.ANGSTROM,\n to: units.unit.NANOMETER\n });\n // Use engine's method instead of modeler's method to avoid validation.\n // Modeler's wrapper ensures that amino acid is immutable, so it won't allow\n // to set properties of amino acid.\n engine.setElementProperties(aminoacidsHelper.firstElementID + i, {\n mass: aminoacids[i].molWeight,\n sigma: sigmaInNm\n // Don't provide epsilon, as default value should be used.\n // Classic MW uses epsilon 0.1 for all amino acids, which is default one.\n // See: org.concord.mw2d.models.AtomicModel.resetElements()\n });\n }\n }\n\n // ------------------------------------------------------------\n //\n // Public functions\n //\n // ------------------------------------------------------------\n\n /**\n Current seek position\n */\n model.stepCounter = function() {\n return tickHistory.get(\"counter\");\n };\n\n /**\n Current position of first value in tick history, normally this will be 0.\n This will be greater than 0 if maximum size of tick history has been exceeded.\n */\n model.stepStartCounter = function() {\n return tickHistory.get(\"startCounter\");\n };\n\n /** Total number of ticks that have been run & are stored, regardless of seek\n position\n */\n model.steps = function() {\n return tickHistory.get(\"length\");\n };\n\n model.isNewStep = function() {\n return newStep;\n };\n\n model.seek = function(location) {\n if (!arguments.length) {\n location = 0;\n }\n if (!model.isStopped()) {\n model.stop();\n }\n newStep = false;\n runAndDispatchObjectNumberChanges(function() {\n tickHistory.seekExtract(location);\n readModelState();\n model.updateAllOutputProperties();\n dispatch.seek();\n });\n return tickHistory.get(\"counter\");\n };\n\n model.stepBack = function(num) {\n if (!arguments.length) {\n num = 1;\n }\n if (!model.isStopped()) {\n model.stop();\n }\n newStep = false;\n runAndDispatchObjectNumberChanges(function() {\n var i, index;\n i = -1;\n while (++i < num) {\n index = tickHistory.get(\"index\");\n if (index > 0) {\n tickHistory.decrementExtract();\n readModelState();\n model.updateAllOutputProperties();\n dispatch.stepBack();\n }\n }\n });\n return tickHistory.get(\"counter\");\n };\n\n model.stepForward = function(num) {\n if (!arguments.length) {\n num = 1;\n }\n if (!model.isStopped()) {\n model.stop();\n }\n runAndDispatchObjectNumberChanges(function() {\n var i, index, size;\n i = -1;\n while (++i < num) {\n index = tickHistory.get(\"index\");\n size = tickHistory.get(\"length\");\n if (index < size - 1) {\n tickHistory.incrementExtract();\n readModelState();\n model.updateAllOutputProperties();\n dispatch.stepForward();\n } else {\n model.tick();\n }\n }\n });\n return tickHistory.get(\"counter\");\n };\n\n /**\n Initialize minX, minYm, maxX, maxY from width and height\n when these options are undefined.\n */\n function initializeDimensions(properties) {\n var minX = properties.minX,\n minY = properties.minY,\n maxX = properties.maxX,\n maxY = properties.maxY;\n\n properties.minX = minX != null ? minX : 0;\n properties.maxX = maxX != null ? maxX : properties.width;\n properties.minY = minY != null ? minY : 0;\n properties.maxY = maxY != null ? maxY : properties.height;\n }\n\n /**\n Creates a new md2d engine and leaves it in 'engine'.\n */\n function initializeEngine(properties, pluginProperties) {\n engine.setDimensions([properties.minX, properties.minY, properties.maxX, properties.maxY]);\n\n if (pluginProperties.quantumDynamics) {\n properties.useQuantumDynamics = true;\n engine.addPlugin(new QuantumDynamics(engine, pluginProperties.quantumDynamics));\n } else {\n properties.useQuantumDynamics = false;\n }\n\n if (pluginProperties.chemicalReactions) {\n properties.useChemicalReactions = true;\n engine.addPlugin(new ChemicalReactions(engine, pluginProperties.chemicalReactions));\n } else {\n properties.useChemicalReactions = false;\n }\n\n // Copy reference to basic properties.\n // FIXME. This should go away. https://www.pivotaltracker.com/story/show/50086079\n elements = engine.elements;\n radialBonds = engine.radialBonds;\n angularBonds = engine.angularBonds;\n restraints = engine.restraints;\n obstacles = engine.obstacles;\n shapes = engine.shapes;\n lines = engine.lines;\n electricFields = engine.electricFields;\n }\n\n model.createElements = function(_elements) {\n var i, num, prop, elementProps;\n\n // Start batch process\n model.startBatch();\n\n if (_elements === undefined) {\n // Special case when elements are not defined.\n // Empty object will be filled with default values.\n model.addElement({\n id: 0\n });\n model.endBatch();\n return;\n }\n\n // _elements is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // element 'i'. Later, use these properties to add element\n // using basic addElement method.\n for (i = 0, num = _elements.mass.length; i < num; i++) {\n elementProps = {};\n for (prop in _elements) {\n if (_elements.hasOwnProperty(prop)) {\n elementProps[prop] = _elements[prop][i];\n }\n }\n model.addElement(elementProps);\n }\n\n // End batch process\n model.endBatch();\n\n return model;\n };\n\n /**\n Creates a new set of atoms.\n\n config: a hash specifying the x,y,vx,vy properties of the atoms\n */\n model.createAtoms = function(config) {\n // Options for addAtom method.\n var options = {\n // Do not check the position of atom, assume that it's valid.\n suppressCheck: true\n },\n i, num, prop, atomProps;\n\n dispatch.willReset();\n\n // Start batch process\n model.startBatch();\n\n num = config.x.length;\n\n // config is hash of arrays (as specified in JSON model). So, for each index, create object\n // containing properties of atom 'i'. Later, use these properties to add atom using basic\n // addAtom method.\n for (i = 0; i < num; i++) {\n atomProps = {};\n for (prop in config) {\n if (config.hasOwnProperty(prop)) {\n atomProps[prop] = config[prop][i];\n }\n }\n model.addAtom(atomProps, options);\n }\n\n // End batch process\n model.endBatch();\n\n // Listeners should consider resetting the atoms a 'reset' event\n dispatch.reset();\n };\n\n model.createRadialBonds = function(_radialBonds) {\n var num = _radialBonds.strength.length,\n i, prop, radialBondProps;\n\n // Start batch process\n model.startBatch();\n\n // _radialBonds is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // radial bond 'i'. Later, use these properties to add radial bond\n // using basic addRadialBond method.\n for (i = 0; i < num; i++) {\n radialBondProps = {};\n for (prop in _radialBonds) {\n if (_radialBonds.hasOwnProperty(prop)) {\n radialBondProps[prop] = _radialBonds[prop][i];\n }\n }\n model.addRadialBond(radialBondProps);\n }\n\n // End batch process\n model.endBatch();\n\n return model;\n };\n\n model.createAngularBonds = function(_angularBonds) {\n var num = _angularBonds.strength.length,\n i, prop, angularBondProps;\n\n // Start batch process\n model.startBatch();\n\n // _angularBonds is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // angular bond 'i'. Later, use these properties to add angular bond\n // using basic addAngularBond method.\n for (i = 0; i < num; i++) {\n angularBondProps = {};\n for (prop in _angularBonds) {\n if (_angularBonds.hasOwnProperty(prop)) {\n angularBondProps[prop] = _angularBonds[prop][i];\n }\n }\n model.addAngularBond(angularBondProps);\n }\n\n // End batch process\n model.endBatch();\n\n return model;\n };\n\n model.createRestraints = function(_restraints) {\n var num = _restraints.atomIndex.length,\n i, prop, restraintsProps;\n\n // _restraints is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // restraint 'i'. Later, use these properties to add restraint\n // using basic addRestraint method.\n for (i = 0; i < num; i++) {\n restraintsProps = {};\n for (prop in _restraints) {\n if (_restraints.hasOwnProperty(prop)) {\n restraintsProps[prop] = _restraints[prop][i];\n }\n }\n model.addRestraint(restraintsProps);\n }\n\n return model;\n };\n\n model.createObstacles = function(_obstacles) {\n var numObstacles = _obstacles.x.length,\n i, prop, obstacleProps;\n\n // _obstacles is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // obstacle 'i'. Later, use these properties to add obstacle\n // using basic addObstacle method.\n for (i = 0; i < numObstacles; i++) {\n obstacleProps = {};\n for (prop in _obstacles) {\n if (_obstacles.hasOwnProperty(prop)) {\n obstacleProps[prop] = _obstacles[prop][i];\n }\n }\n model.addObstacle(obstacleProps);\n }\n\n return model;\n };\n\n model.createShapes = function(_shapes) {\n var numShapes = _shapes.x.length,\n i, prop, shapeProps;\n\n // See function above\n for (i = 0; i < numShapes; i++) {\n shapeProps = {};\n for (prop in _shapes) {\n if (_shapes.hasOwnProperty(prop)) {\n shapeProps[prop] = _shapes[prop][i];\n }\n }\n model.addShape(shapeProps);\n }\n\n return model;\n };\n\n model.createLines = function(_lines) {\n var numLines = _lines.x1.length,\n i, prop, lineProps;\n\n // See function above\n for (i = 0; i < numLines; i++) {\n lineProps = {};\n for (prop in _lines) {\n if (_lines.hasOwnProperty(prop)) {\n lineProps[prop] = _lines[prop][i];\n }\n }\n model.addLine(lineProps);\n }\n\n return model;\n };\n\n model.createElectricFields = function(_eFields) {\n model.batch(function() {\n var count = _eFields.intensity.length,\n i, prop, eFieldProps;\n\n for (i = 0; i < count; i++) {\n eFieldProps = {};\n for (prop in _eFields) {\n if (_eFields.hasOwnProperty(prop)) {\n eFieldProps[prop] = _eFields[prop][i];\n }\n }\n model.addElectricField(eFieldProps);\n }\n });\n return model;\n };\n\n // Beware. The \"reset\" button in Lab interactives do not call this method. Instead they \"reload\"\n // the model, discarding this model object and creating a new one from the model JSON.\n model.reset = function() {\n dispatch.willReset();\n propertySupport.invalidatingChangePreHook();\n engine.setTime(0);\n tickHistory.restoreInitialState();\n propertySupport.invalidatingChangePostHook();\n model.resetAllOutputProperties();\n dispatch.reset();\n };\n\n model.getTotalMass = function() {\n return engine.getTotalMass();\n };\n\n model.getAtomKineticEnergy = function(i) {\n return engine.getAtomKineticEnergy(i);\n };\n\n /**\n Attempts to add an 0-velocity atom to a random location. Returns false if after 10 tries it\n can't find a location. (Intended to be exposed as a script API method.)\n\n Optionally allows specifying the element (default is to randomly select from all editableElements) and\n charge (default is neutral).\n */\n model.addRandomAtom = function(el, charge) {\n if (el == null) el = randomElement();\n if (charge == null) charge = 0;\n\n var width = model.get('width'),\n height = model.get('height'),\n minX = model.get('minX'),\n minY = model.get('minY'),\n radius = engine.getRadiusOfElement(el),\n x,\n y,\n loc,\n numTries = 0,\n // try at most ten times.\n maxTries = 10;\n\n do {\n x = minX + Math.random() * width - 2 * radius;\n y = minY + Math.random() * height - 2 * radius;\n\n // findMinimimuPELocation will return false if minimization doesn't converge, in which case\n // try again from a different x, y\n loc = engine.findMinimumPELocation(el, x, y, 0, 0, charge);\n if (loc && model.addAtom({\n element: el,\n x: loc[0],\n y: loc[1],\n charge: charge\n })) return true;\n } while (++numTries < maxTries);\n\n return false;\n };\n\n /**\n Adds a new atom defined by properties.\n Intended to be exposed as a script API method also.\n\n Adjusts (x,y) if needed so that the whole atom is within the walls of the container.\n\n Returns false and does not add the atom if the potential energy change of adding an *uncharged*\n atom of the specified element to the specified location would be positive (i.e, if the atom\n intrudes into the repulsive region of another atom), or if atom is placed inside an obstacle\n\n Otherwise, returns true.\n\n silent = true disables this check.\n */\n model.addAtom = function(props, options) {\n var minX = model.get('minX'),\n minY = model.get('minY'),\n maxX = model.get('maxX'),\n maxY = model.get('maxY'),\n radius;\n\n options = options || {};\n\n // Validate properties, provide default values.\n props = validator.validateCompleteness(metadata.atom, props);\n\n // As a convenience to script authors, bump the atom within bounds\n radius = engine.getRadiusOfElement(props.element);\n if (props.x < (minX + radius)) props.x = minX + radius;\n if (props.x > (maxX - radius)) props.x = maxX - radius;\n if (props.y < (minY + radius)) props.y = minY + radius;\n if (props.y > (maxY - radius)) props.y = maxY - radius;\n\n // check the potential energy change caused by adding an *uncharged* atom at (x,y)\n if (!options.suppressCheck && !engine.canPlaceAtom(props.element, props.x, props.y, null, model.get('skipPECheckOnAddAtom'))) {\n // return false on failure\n return false;\n }\n\n propertySupport.invalidatingChangePreHook();\n\n engine.addAtom(props);\n\n propertySupport.invalidatingChangePostHook();\n\n dispatch.addAtom();\n\n return true;\n };\n\n model.removeAtom = function(i) {\n var prevRadBondsCount = engine.getNumberOfRadialBonds(),\n prevAngBondsCount = engine.getNumberOfAngularBonds();\n\n propertySupport.invalidatingChangePreHook();\n engine.removeAtom(i);\n // Enforce modeler to recalculate viewAtoms array.\n viewAtoms.length = 0;\n propertySupport.invalidatingChangePostHook();\n\n // Notify listeners that atoms is removed.\n dispatch.removeAtom();\n\n // Removing of an atom can also cause removing of\n // the connected radial bond. Detect it and notify listeners.\n if (engine.getNumberOfRadialBonds() !== prevRadBondsCount) {\n dispatch.removeRadialBond();\n }\n if (engine.getNumberOfAngularBonds() !== prevAngBondsCount) {\n dispatch.removeAngularBond();\n }\n };\n\n model.addElement = function(props) {\n // Validate properties, use default values if there is such need.\n props = validator.validateCompleteness(metadata.element, props);\n // Finally, add radial bond.\n engine.addElement(props);\n };\n\n model.addObstacle = function(props) {\n var validatedProps;\n // Validate properties, use default values if there is such need.\n validatedProps = validator.validateCompleteness(metadata.obstacle, props);\n // Finally, add obstacle.\n propertySupport.invalidatingChangePreHook();\n engine.addObstacle(validatedProps);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.removeObstacle = function(idx) {\n propertySupport.invalidatingChangePreHook();\n engine.removeObstacle(idx);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.addShape = function(props) {\n var validatedProps;\n // Validate properties, use default values if there is such need.\n validatedProps = validator.validateCompleteness(metadata.shape, props);\n // Finally, add shape.\n propertySupport.invalidatingChangePreHook();\n engine.addShape(validatedProps);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.removeShape = function(idx) {\n var prevElFieldsCount = engine.getNumberOfElectricFields();\n\n propertySupport.invalidatingChangePreHook();\n engine.removeShape(idx);\n propertySupport.invalidatingChangePostHook();\n\n if (engine.getNumberOfElectricFields() !== prevElFieldsCount) {\n dispatch.removeElectricField();\n }\n //TODO FIXME: also .removeShape() event should be dispatched.\n };\n\n model.addLine = function(props) {\n var validatedProps;\n // Validate properties, use default values if there is such need.\n validatedProps = validator.validateCompleteness(metadata.line, props);\n // Finally, add line.\n propertySupport.invalidatingChangePreHook();\n engine.addLine(validatedProps);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.removeLine = function(idx) {\n //var prevElFieldsCount = engine.getNumberOfElectricFields();\n\n propertySupport.invalidatingChangePreHook();\n engine.removeLine(idx);\n propertySupport.invalidatingChangePostHook();\n //TODO FIXME: also .removeLine() event should be dispatched.\n };\n\n model.addElectricField = function(props) {\n var validatedProps;\n // Validate properties, use default values if there is such need.\n validatedProps = validator.validateCompleteness(metadata.electricField, props);\n // Finally, add shape.\n propertySupport.invalidatingChangePreHook();\n engine.addElectricField(validatedProps);\n propertySupport.invalidatingChangePostHook();\n dispatch.addElectricField();\n };\n\n model.removeElectricField = function(idx) {\n propertySupport.invalidatingChangePreHook();\n engine.removeElectricField(idx);\n propertySupport.invalidatingChangePostHook();\n dispatch.removeElectricField();\n };\n\n model.addRadialBond = function(props) {\n props = validator.validateCompleteness(metadata.radialBond, props);\n propertySupport.invalidatingChangePreHook();\n engine.addRadialBond(props);\n propertySupport.invalidatingChangePostHook();\n dispatch.addRadialBond();\n };\n\n model.removeRadialBond = function(idx) {\n propertySupport.invalidatingChangePreHook();\n engine.removeRadialBond(idx);\n propertySupport.invalidatingChangePostHook();\n dispatch.removeRadialBond();\n };\n\n model.addAngularBond = function(props) {\n props = validator.validateCompleteness(metadata.angularBond, props);\n propertySupport.invalidatingChangePreHook();\n engine.addAngularBond(props);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.removeAngularBond = function(idx) {\n propertySupport.invalidatingChangePreHook();\n engine.removeAngularBond(idx);\n propertySupport.invalidatingChangePostHook();\n dispatch.removeAngularBond();\n };\n\n model.addRestraint = function(props) {\n // Validate properties, use default values if there is such need.\n props = validator.validateCompleteness(metadata.restraint, props);\n // Finally, add restraint.\n propertySupport.invalidatingChangePreHook();\n engine.addRestraint(props);\n propertySupport.invalidatingChangePostHook();\n };\n\n /** Return the bounding box of the molecule containing atom 'atomIndex', with atomic radii taken\n into account.\n\n @returns an object with properties 'left', 'right', 'top', and 'bottom'. These are translated\n relative to the center of atom 'atomIndex', so that 'left' represents (-) the distance in nm\n between the leftmost edge and the center of atom 'atomIndex'.\n */\n model.getMoleculeBoundingBox = function(atomIndex) {\n\n var atoms = modelState.atoms,\n moleculeAtoms,\n i,\n x,\n y,\n r,\n top = -Infinity,\n left = Infinity,\n bottom = Infinity,\n right = -Infinity,\n cx,\n cy;\n\n moleculeAtoms = engine.getMoleculeAtoms(atomIndex);\n moleculeAtoms.push(atomIndex);\n\n for (i = 0; i < moleculeAtoms.length; i++) {\n x = atoms.x[moleculeAtoms[i]];\n y = atoms.y[moleculeAtoms[i]];\n r = atoms.radius[moleculeAtoms[i]];\n\n if (x - r < left) left = x - r;\n if (x + r > right) right = x + r;\n if (y - r < bottom) bottom = y - r;\n if (y + r > top) top = y + r;\n }\n\n cx = atoms.x[atomIndex];\n cy = atoms.y[atomIndex];\n\n return {\n top: top - cy,\n left: left - cx,\n bottom: bottom - cy,\n right: right - cx\n };\n };\n\n model.setTemperatureOfAtoms = function(atomIndices, T) {\n propertySupport.invalidatingChangePreHook();\n engine.setTemperatureOfAtoms(atomIndices, T);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.addKEToAtoms = function(energy, atomIndices) {\n propertySupport.invalidatingChangePreHook();\n\n if (atomIndices == null) {\n engine.addKEToAtoms(energy);\n } else {\n // This function inside engine has a slightly different API.\n engine.addKEToAtoms.apply(engine, [energy].concat(atomIndices));\n }\n\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getTemperatureOfAtoms = function(atomIndices) {\n return engine.getTemperatureOfAtoms(atomIndices);\n };\n\n /**\n A generic method to set properties on a single existing atom.\n\n Example: setAtomProperties(3, {x: 5, y: 8, px: 0.5, charge: -1})\n\n This can optionally check the new location of the atom to see if it would\n overlap with another another atom (i.e. if it would increase the PE).\n\n This can also optionally apply the same dx, dy to any atoms in the same\n molecule (if x and y are being changed), and check the location of all\n the bonded atoms together.\n */\n model.setAtomProperties = function(i, props, checkLocation, moveMolecule, skipPECheck) {\n var atoms = modelState.atoms,\n moleculeAtoms,\n dx, dy,\n new_x, new_y,\n j, jj;\n\n // Validate properties.\n props = validator.validate(metadata.atom, props);\n\n if (moveMolecule) {\n moleculeAtoms = engine.getMoleculeAtoms(i);\n if (moleculeAtoms.length > 0) {\n dx = typeof props.x === \"number\" ? props.x - atoms.x[i] : 0;\n dy = typeof props.y === \"number\" ? props.y - atoms.y[i] : 0;\n for (j = 0, jj = moleculeAtoms.length; j < jj; j++) {\n new_x = atoms.x[moleculeAtoms[j]] + dx;\n new_y = atoms.y[moleculeAtoms[j]] + dy;\n if (!model.setAtomProperties(moleculeAtoms[j], {\n x: new_x,\n y: new_y\n }, checkLocation, false)) {\n return false;\n }\n }\n }\n }\n\n if (checkLocation) {\n var x = typeof props.x === \"number\" ? props.x : atoms.x[i],\n y = typeof props.y === \"number\" ? props.y : atoms.y[i],\n el = typeof props.element === \"number\" ? props.y : atoms.element[i];\n\n if (!engine.canPlaceAtom(el, x, y, i, skipPECheck)) {\n return false;\n }\n }\n\n propertySupport.invalidatingChangePreHook();\n engine.setAtomProperties(i, translateToMD2DUnits(props, metadata.atom));\n propertySupport.invalidatingChangePostHook();\n return true;\n };\n\n model.getAtomProperties = function(i) {\n var atoms = modelState.atoms,\n atomMetaData = metadata.atom,\n props = {},\n propName;\n\n for (propName in atomMetaData) {\n if (atomMetaData.hasOwnProperty(propName) && atoms[propName]) {\n props[propName] = atoms[propName][i];\n }\n }\n return translateFromMD2DUnits(props, atomMetaData);\n };\n\n model.getRadialBondsForAtom = function(i) {\n return engine.getRadialBondsForAtom(i);\n };\n\n model.getBondedAtoms = function(i) {\n return engine.getBondedAtoms(i);\n };\n\n model.getAngularBondsForAtom = function(i) {\n return engine.getAngularBondsForAtom(i);\n };\n\n model.getMoleculeAtoms = function(i) {\n return engine.getMoleculeAtoms(i);\n };\n\n model.setElementProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.element, props);\n if (aminoacidsHelper.isAminoAcid(i)) {\n throw new Error(\"Elements: elements with ID \" + i + \" cannot be edited, as they define amino acids.\");\n }\n propertySupport.invalidatingChangePreHook();\n engine.setElementProperties(i, translateToMD2DUnits(props, metadata.element));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getElementProperties = function(i) {\n var elementMetaData = metadata.element,\n props = {},\n propName;\n for (propName in elementMetaData) {\n if (elementMetaData.hasOwnProperty(propName)) {\n props[propName] = elements[propName][i];\n }\n }\n return translateFromMD2DUnits(props, elementMetaData);\n };\n\n model.getAminoAcidByElement = function(i) {\n if (aminoacidsHelper.isAminoAcid(i)) {\n return aminoacidsHelper.getAminoAcidByElement(i);\n } else {\n return undefined;\n }\n }\n\n model.setObstacleProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.obstacle, props);\n propertySupport.invalidatingChangePreHook();\n engine.setObstacleProperties(i, translateToMD2DUnits(props, metadata.obstacle));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getObstacleProperties = function(i) {\n var obstacleMetaData = metadata.obstacle,\n props = {},\n propName;\n for (propName in obstacleMetaData) {\n if (obstacleMetaData.hasOwnProperty(propName)) {\n props[propName] = obstacles[propName][i];\n }\n }\n return translateFromMD2DUnits(props, obstacleMetaData);\n };\n\n model.setShapeProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.shape, props);\n propertySupport.invalidatingChangePreHook();\n engine.setShapeProperties(i, translateToMD2DUnits(props, metadata.shape));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getShapeProperties = function(i) {\n var shapeMetaData = metadata.shape,\n props = {},\n propName;\n for (propName in shapeMetaData) {\n if (shapeMetaData.hasOwnProperty(propName)) {\n props[propName] = shapes[propName][i];\n }\n }\n return translateFromMD2DUnits(props, shapeMetaData);\n };\n\n model.setLineProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.line, props);\n propertySupport.invalidatingChangePreHook();\n engine.setLineProperties(i, translateToMD2DUnits(props, metadata.line));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getLineProperties = function(i) {\n var lineMetaData = metadata.line,\n props = {},\n propName;\n for (propName in lineMetaData) {\n if (lineMetaData.hasOwnProperty(propName)) {\n props[propName] = lines[propName][i];\n }\n }\n return translateFromMD2DUnits(props, lineMetaData);\n };\n\n model.setElectricFieldProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.electricField, props);\n propertySupport.invalidatingChangePreHook();\n engine.setElectricFieldProperties(i, translateToMD2DUnits(props, metadata.electricField));\n propertySupport.invalidatingChangePostHook();\n dispatch.changeElectricField();\n };\n\n model.getElectricFieldProperties = function(i) {\n var elFieldMetaData = metadata.electricField,\n props = {},\n propName;\n for (propName in elFieldMetaData) {\n if (elFieldMetaData.hasOwnProperty(propName)) {\n props[propName] = electricFields[propName][i];\n }\n }\n return translateFromMD2DUnits(props, elFieldMetaData);\n };\n\n model.setRadialBondProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.radialBond, props);\n propertySupport.invalidatingChangePreHook();\n engine.setRadialBondProperties(i, translateToMD2DUnits(props, metadata.radialBond));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getRadialBondProperties = function(i) {\n var radialBondMetaData = metadata.radialBond,\n props = {},\n propName;\n for (propName in radialBondMetaData) {\n if (radialBondMetaData.hasOwnProperty(propName)) {\n props[propName] = radialBonds[propName][i];\n }\n }\n return translateFromMD2DUnits(props, radialBondMetaData);\n };\n\n model.setRestraintProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.restraint, props);\n propertySupport.invalidatingChangePreHook();\n engine.setRestraintProperties(i, translateToMD2DUnits(props, metadata.restraint));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getRestraintProperties = function(i) {\n var restraintMetaData = metadata.restraint,\n props = {},\n propName;\n for (propName in restraintMetaData) {\n if (restraintMetaData.hasOwnProperty(propName)) {\n props[propName] = restraints[propName][i];\n }\n }\n return translateFromMD2DUnits(props, restraintMetaData);\n };\n\n model.setAngularBondProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.angularBond, props);\n propertySupport.invalidatingChangePreHook();\n engine.setAngularBondProperties(i, translateToMD2DUnits(props, metadata.angularBond));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getAngularBondProperties = function(i) {\n var angularBondMetaData = metadata.angularBond,\n props = {},\n propName;\n for (propName in angularBondMetaData) {\n if (angularBondMetaData.hasOwnProperty(propName)) {\n props[propName] = angularBonds[propName][i];\n }\n }\n return translateFromMD2DUnits(props, angularBondMetaData);\n };\n\n model.setSolvent = function(solventName) {\n var solvent = new Solvent(solventName),\n props = {\n solventForceType: solvent.forceType,\n dielectricConstant: solvent.dielectricConstant,\n backgroundColor: solvent.color\n };\n model.set(props);\n };\n\n /** A \"spring force\" is used to pull atom `atomIndex` towards (x, y). We expect this to be used\n to drag atoms interactively using the mouse cursor (in which case (x,y) is the mouse cursor\n location.) In these cases, use the liveDragStart, liveDrag, and liveDragEnd methods instead\n of this one.\n\n The optional springConstant parameter (measured in eV/nm^2) is used to adjust the strength\n of the \"spring\" pulling the atom toward (x, y)\n\n @returns ID (index) of the spring force among all spring forces\n */\n model.addSpringForce = function(atomIndex, x, y, springConstant) {\n if (springConstant == null) springConstant = 500;\n\n if (unitsTranslation) {\n springConstant = unitsTranslation.translateToModelUnits(springConstant, 'stiffness');\n }\n return engine.addSpringForce(atomIndex, x, y, springConstant);\n };\n\n /**\n Update the (x, y) position of a spring force.\n */\n model.updateSpringForce = function(springForceIndex, x, y) {\n engine.updateSpringForce(springForceIndex, x, y);\n };\n\n /**\n Remove a spring force.\n */\n model.removeSpringForce = function(springForceIndex) {\n engine.removeSpringForce(springForceIndex);\n };\n\n model.addTextBox = function(props) {\n props = validator.validateCompleteness(metadata.textBox, props);\n model.get('textBoxes').push(props);\n dispatch.textBoxesChanged();\n };\n\n model.removeTextBox = function(i) {\n var text = model.get('textBoxes');\n if (i >= 0 && i < text.length) {\n model.set('textBoxes', text.slice(0, i).concat(text.slice(i + 1)));\n dispatch.textBoxesChanged();\n } else {\n throw new Error(\"Text box \\\"\" + i + \"\\\" does not exist, so it cannot be removed.\");\n }\n };\n\n model.setTextBoxProperties = function(i, props) {\n var textBox = model.get('textBoxes')[i],\n prop;\n\n if (textBox) {\n props = validator.validate(metadata.textBox, props);\n for (prop in props) {\n if (props.hasOwnProperty(prop)) {\n textBox[prop] = props[prop];\n }\n }\n dispatch.textBoxesChanged();\n } else {\n throw new Error(\"Text box \\\"\" + i + \"\\\" does not exist, so it cannot have properties set.\");\n }\n };\n\n model.addImage = function(props) {\n props = validator.validateCompleteness(metadata.image, props);\n model.get('images').push(props);\n dispatch.imagesChanged();\n };\n\n model.removeImage = function(i) {\n var images = model.get('images');\n if (i >= 0 && i < images.length) {\n model.set('images', images.slice(0, i).concat(images.slice(i + 1)));\n dispatch.imagesChanged();\n } else {\n throw new Error(\"Image \\\"\" + i + \"\\\" does not exist, so it cannot be removed.\");\n }\n };\n\n model.setImageProperties = function(i, props) {\n var image = model.get('images')[i],\n prop;\n\n if (image) {\n props = validator.validate(metadata.image, props);\n for (prop in props) {\n if (props.hasOwnProperty(prop)) {\n image[prop] = props[prop];\n }\n }\n dispatch.imagesChanged();\n } else {\n throw new Error(\"Image \\\"\" + i + \"\\\" does not exist, so it cannot have properties set.\");\n }\n };\n\n model.getTextBoxProperties = function(i) {\n return model.get('textBoxes')[i];\n };\n\n model.getImageProperties = function(i) {\n return model.get('images')[i];\n };\n\n /**\n Implements dragging of an atom in a running model, by creating a spring force that pulls the\n atom towards the mouse cursor position (x, y) and damping the resulting motion by temporarily\n adjusting the friction of the dragged atom.\n */\n model.liveDragStart = function(atomIndex, x, y) {\n if (liveDragSpringForceIndex != null) return; // don't add a second liveDrag force\n\n if (x == null) x = modelState.atoms.x[atomIndex];\n if (y == null) y = modelState.atoms.y[atomIndex];\n\n liveDragSavedFriction = model.getAtomProperties(atomIndex).friction;\n\n // Use setAtomProperties so that we handle things correctly if a web worker is integrating\n // the model. (Here we follow the rule that we must assume that an integration might change\n // any property of an atom, and therefore cause changes to atom properties in the main thread\n // to be be lost. This is true even though common sense tells us that the friction property\n // won't change during an integration.)\n\n model.setAtomProperties(atomIndex, {\n friction: model.LIVE_DRAG_FRICTION\n });\n\n liveDragSpringForceIndex = model.addSpringForce(atomIndex, x, y, 500);\n };\n\n /**\n Updates the drag location after liveDragStart\n */\n model.liveDrag = function(x, y) {\n model.updateSpringForce(liveDragSpringForceIndex, x, y);\n };\n\n /**\n Cancels a live drag by removing the spring force that is pulling the atom, and restoring its\n original friction property.\n */\n model.liveDragEnd = function() {\n var atomIndex = engine.springForceAtomIndex(liveDragSpringForceIndex);\n\n model.setAtomProperties(atomIndex, {\n friction: liveDragSavedFriction\n });\n model.removeSpringForce(liveDragSpringForceIndex);\n liveDragSpringForceIndex = null;\n };\n\n /**\n * Returns number of frames per second.\n * @return {number} frames per second.\n */\n model.getFPS = function() {\n var s = 0,\n n = sampleTimes.length,\n i = -1;\n\n while (++i < n) {\n s += sampleTimes[i];\n }\n s /= n;\n return (s ? 1 / s * 1000 : 0);\n };\n\n /**\n * Returns \"simulation progress rate\".\n * It indicates how much of simulation time is calculated for\n * one second of real time.\n * @return {number} simulation progress rate.\n */\n model.getSimulationProgressRate = function() {\n return model.getFPS() * model.get('timeStep') * model.get('timeStepsPerTick');\n };\n\n model.get_elements = function() {\n return elements;\n };\n\n model.getAtoms = function() {\n return viewAtoms;\n };\n\n model.getRadialBonds = function() {\n return viewRadialBonds;\n };\n\n model.getElectricField = function() {\n return electricField;\n };\n\n model.getPhotons = function() {\n return viewPhotons;\n };\n\n // *really* need a way for the QD plugin to add these methods to modeler-layer\n model.turnOnLightSource = function() {\n // Note the current, very temporary, implementation ignores index and isn't an\n // accessor. But this is for prototyping.\n engine.callPluginAccessor('turnOnLightSource');\n };\n\n model.turnOffLightSource = function() {\n engine.callPluginAccessor('turnOffLightSource');\n };\n\n model.setLightSourceAngle = function(angle) {\n engine.callPluginAccessor('setLightSourceAngle', [angle]);\n };\n\n model.setLightSourceFrequency = function(freq) {\n engine.callPluginAccessor('setLightSourceFrequency', [freq]);\n };\n\n model.setLightSourcePeriod = function(period) {\n engine.callPluginAccessor('setLightSourcePeriod', [period]);\n };\n\n model.setLightSourceNumber = function(number) {\n engine.callPluginAccessor('setLightSourceNumber', [number]);\n };\n\n model.setBondEnergy = function(bondDescription, value) {\n engine.callPluginAccessor('setBondEnergy', [bondDescription, value]);\n };\n\n model.setValenceElectrons = function(element, value) {\n engine.callPluginAccessor('setValenceElectrons', [element, value]);\n };\n\n var _photonAbsorbedHandlersCount = 0;\n model.onPhotonAbsorbed = function(handler) {\n // Lab's DispatchSupport requires unique namespace for each different handler.\n engine.callPluginAccessor('on', ['photonAbsorbed.external-handler-' + _photonAbsorbedHandlersCount, handler]);\n };\n\n /**\n Returns the total number of atoms, or else the number of atoms matching some criterion.\n\n If the argument 'f' is present, it is called once for each atom, passing the atom as the\n argument to f. The number of atoms for which f evaluates to true is returned.\n\n Example\n\n model.getNumberOfAtoms(function(atom) { return atom.mass < 50; })\n\n returns the number of atoms having mass < 50\n */\n model.getNumberOfAtoms = function(f) {\n if (!f) {\n return viewAtoms.length;\n }\n return viewAtoms.reduce(function(total, atom) {\n return f(atom) ? total + 1 : total;\n }, 0);\n };\n\n model.get_obstacles = function() {\n return obstacles;\n };\n\n model.get_shapes = function() {\n return shapes;\n };\n\n model.get_lines = function() {\n return lines;\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfElements = function() {\n return engine.getNumberOfElements();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfObstacles = function() {\n return engine.getNumberOfObstacles();\n };\n\n model.getNumberOfShapes = function() {\n return engine.getNumberOfShapes();\n };\n\n model.getNumberOfLines = function() {\n return engine.getNumberOfLines();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfRadialBonds = function() {\n return engine.getNumberOfRadialBonds();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfAngularBonds = function() {\n return engine.getNumberOfAngularBonds();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfSpringForces = function() {\n return engine.getNumberOfSpringForces();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfElectricFields = function() {\n return engine.getNumberOfElectricFields();\n };\n\n model.getNumberOfTextBoxes = function() {\n return model.get('textBoxes').length;\n };\n\n model.get_restraints = function() {\n return restraints;\n };\n\n model.getPairwiseLJProperties = function() {\n return engine.pairwiseLJProperties;\n };\n\n model.geneticEngine = function() {\n return geneticEngine;\n };\n\n model.get_vdw_pairs = function() {\n return engine.getVdwPairsArray();\n };\n\n model.tickInPlace = function() {\n dispatch.tick();\n return model;\n };\n\n model.tick = function() {\n var timeStep = model.get('timeStep'),\n t, sampleTime;\n\n if (unitsTranslation) {\n timeStep = unitsTranslation.translateToModelUnits(timeStep, 'time');\n }\n\n if (!model.isStopped()) {\n t = performance.now();\n if (lastSampleTime) {\n sampleTime = t - lastSampleTime;\n lastSampleTime = t;\n sampleTimes.push(sampleTime);\n sampleTimes.splice(0, sampleTimes.length - 64);\n\n // Process all transitions which are in progress\n // and remove finished.\n processTransitions(sampleTime);\n } else {\n lastSampleTime = t;\n }\n }\n\n performance.enterScope(\"engine\");\n // timeStepsPerTick is defined in Classic MW as the number of timesteps per view update.\n // However, in MD2D we prefer the more physical notion of integrating for a particular\n // length of time.\n engine.integrate(model.get('timeStepsPerTick') * timeStep, timeStep);\n performance.leaveScope(\"engine\");\n\n readModelState();\n model.updateAllOutputProperties();\n tickHistory.push();\n\n newStep = true;\n\n // TODO: we should just dispatch \"radialBondsChanged\" event, as there is no code interested\n // whether we really added or removed radial bond.\n if (engine.radialBondsChanged) dispatch.addRadialBond();\n\n dispatch.tick();\n };\n\n model.minimizeEnergy = function() {\n propertySupport.invalidatingChangePreHook();\n engine.minimizeEnergy();\n propertySupport.invalidatingChangePostHook();\n // Positions of atoms could change, so\n // dispatch tick event.\n dispatch.tick();\n return model;\n };\n\n model.dimensions = function() {\n return engine.getDimensions();\n };\n\n model.format = function(property, opts) {\n opts = opts || {};\n\n var desc = model.getPropertyDescription(property);\n if (desc) {\n return desc.format(model.get(property), opts);\n }\n return d3.format(opts.format || 'g')(model.get(property));\n };\n\n /**\n Return a unitDefinition in the current unitScheme for a quantity\n such as 'length', 'mass', etc.\n */\n model.getUnitDefinition = function(name) {\n return unitsDefinition.units[name];\n };\n\n /**\n * Returns atom transition object. It can be used to smoothly change\n * atom properties over specified time. It's similar to D3 transitions.\n *\n * Atom transition object provides following methods:\n * id(id) - sets ID of the atom (required!).\n * duration(d) - sets duration in ms (required!).\n * prop(name, val) - sets property name and its final value (required!).\n * delay(d) - sets delay in ms (default is 0).\n * ease(name) - sets easing function (default is \"cubic-in-out\").\n * Please see:\n * https://github.com/mbostock/d3/wiki/Transitions#wiki-d3_ease\n *\n * e.g.\n * atomTransition().id(0).duration(1000).ease(\"linear\").prop(\"x\", 10);\n *\n * This will change \"x\" property of the atom with ID=0\n * to value 10 over 1000ms using linear easing function.\n *\n * @return {AtomTransition} AtomTransition instance.\n */\n model.atomTransition = function() {\n var t = new AtomTransition(model);\n transitions.push(t);\n return t;\n };\n\n /**\n * Cancels all transitions which are currently in progress.\n */\n model.cancelTransitions = function() {\n transitions.length = 0;\n };\n\n /**\n Call before running a function that would otherwise trigger a number\n of invalidatingChangePre/PostHooks, which would slow down the model when\n each change causes a recalculation. This can be used whenever you can\n safely assume that all actions executed between startBatch and endBatch\n will not depend on triggered property changes.\n\n endBatch() *must* be called after the actions are complete, or output\n properties will no longer be updated.\n */\n model.startBatch = function() {\n propertySupport.startBatch();\n // Suppress events dispatching. They will be dispatched during\n // .endBatch() execution.\n dispatch.startBatch();\n };\n\n model.endBatch = function() {\n propertySupport.endBatch();\n // All events will be dispatched now (but just once per event type).\n dispatch.endBatch();\n };\n\n /**\n * Executes function between .startBatch() and .endBatch() calls.\n * @param {Function} action function that should be executed.\n */\n model.batch = function(action) {\n model.startBatch();\n action();\n model.endBatch();\n };\n\n // Convert array of hashes to a hash of arrays\n // TODO. Move to a new utils module, share with mml parser\n function unroll(array) {\n var ret = {};\n\n if (array.length === 0) {\n return {};\n }\n\n Object.keys(array[0]).forEach(function(key) {\n ret[key] = [];\n });\n\n array.forEach(function(object) {\n Object.keys(object).forEach(function(key) {\n ret[key].push(object[key]);\n });\n });\n return ret;\n }\n\n function serializeQuantumDynamics() {\n var photons = model.getPhotons(),\n data = {\n photons: serialize(metadata.photon, unroll(photons), photons.length),\n elementEnergyLevels: engine.callPluginAccessor('getElementEnergyLevels'),\n radiationlessEmissionProbability: engine.callPluginAccessor('getRadiationlessEmissionProbability'),\n lightSource: engine.callPluginAccessor('getLightSource')\n };\n\n if (!data.lightSource) delete data.lightSource;\n\n return data;\n }\n\n function serializeChemicalReactions() {\n return {};\n }\n\n model.serialize = function() {\n var propCopy = {},\n ljProps, i, len,\n rawProperties = propertySupport.rawValues,\n\n removeAtomsArrayIfDefault = function(name, defaultVal) {\n if (propCopy.atoms[name].every(function(i) {\n return i === defaultVal;\n })) {\n delete propCopy.atoms[name];\n }\n };\n\n propCopy = serialize(metadata.mainProperties, rawProperties);\n propCopy.viewOptions = serialize(metadata.viewOptions, rawProperties);\n propCopy.atoms = serialize(metadata.atom, modelState.atoms, engine.getNumberOfAtoms());\n\n if (engine.getNumberOfRadialBonds()) {\n propCopy.radialBonds = serialize(metadata.radialBond, radialBonds, engine.getNumberOfRadialBonds());\n }\n if (engine.getNumberOfAngularBonds()) {\n propCopy.angularBonds = serialize(metadata.angularBond, angularBonds, engine.getNumberOfAngularBonds());\n }\n if (engine.getNumberOfObstacles()) {\n propCopy.obstacles = serialize(metadata.obstacle, obstacles, engine.getNumberOfObstacles());\n for (i = 0, len = propCopy.obstacles.x.length; i < len; i++) {\n // Silly, but allows to pass current serialization tests.\n // FIXME: try to create more flexible tests for serialization.\n propCopy.obstacles.westProbe[i] = Boolean(propCopy.obstacles.westProbe[i]);\n propCopy.obstacles.northProbe[i] = Boolean(propCopy.obstacles.northProbe[i]);\n propCopy.obstacles.eastProbe[i] = Boolean(propCopy.obstacles.eastProbe[i]);\n propCopy.obstacles.southProbe[i] = Boolean(propCopy.obstacles.southProbe[i]);\n }\n }\n if (engine.getNumberOfShapes()) {\n propCopy.shapes = serialize(metadata.shape, shapes, engine.getNumberOfShapes());\n }\n if (engine.getNumberOfLines()) {\n propCopy.lines = serialize(metadata.line, lines, engine.getNumberOfLines());\n }\n if (engine.getNumberOfElectricFields()) {\n propCopy.electricFields = serialize(metadata.electricField, electricFields, engine.getNumberOfElectricFields());\n }\n if (engine.getNumberOfRestraints()) {\n propCopy.restraints = serialize(metadata.restraint, restraints, engine.getNumberOfRestraints());\n }\n\n // FIXME: for now Amino Acid elements are *not* editable and should not be serialized\n // -- only copy first five elements\n propCopy.elements = serialize(metadata.element, elements, 5);\n\n // The same situation for Custom LJ Properties. Do not serialize properties for amino acids.\n propCopy.pairwiseLJProperties = [];\n ljProps = engine.pairwiseLJProperties.serialize();\n for (i = 0, len = ljProps.length; i < len; i++) {\n if (ljProps[i].element1 <= 5 && ljProps[i].element2 <= 5) {\n propCopy.pairwiseLJProperties.push(ljProps[i]);\n }\n }\n\n // Do the weird post processing of the JSON, which is also done by MML parser.\n // Remove targetTemperature when heat-bath is disabled.\n if (propCopy.temperatureControl === false) {\n delete propCopy.targetTemperature;\n }\n // Remove atomTraceId when atom tracing is disabled.\n if (propCopy.viewOptions.showAtomTrace === false) {\n delete propCopy.viewOptions.atomTraceId;\n }\n if (propCopy.modelSampleRate === \"default\") {\n delete propCopy.modelSampleRate;\n }\n\n // TODO. Should be able to ask plugins to serialize their data.\n if (model.properties.useQuantumDynamics) {\n propCopy.quantumDynamics = serializeQuantumDynamics();\n }\n\n if (model.properties.useChemicalReactions) {\n propCopy.chemicalReactions = serializeChemicalReactions();\n } else {\n delete propCopy.atoms.radical;\n }\n\n ['marked', 'visible', 'draggable', 'draggableWhenStopped'].forEach(function(prop) {\n removeAtomsArrayIfDefault(prop, metadata.atom[prop].defaultValue);\n });\n\n return propCopy;\n };\n\n // ------------------------------\n // finish setting up the model\n // ------------------------------\n\n // Friction parameter temporarily applied to the live-dragged atom.\n model.LIVE_DRAG_FRICTION = 10;\n\n // ------------------------------\n // Process initialProperties before setting properties on the model\n // ------------------------------\n\n // Ensure that model, which includes DNA (=> so DNA animation too) has\n // correct, constant dimensions. This is very significant, as if model\n // dimensions are too big or too small, DNA elements can be unreadable. It\n // also ensures that aspect ratio of the model is reasonable for\n // animation.\n // TODO: move this to better place.\n if (initialProperties.DNA) {\n // Overwrite width and height options.\n initialProperties.width = 200;\n initialProperties.height = 5;\n // View options are optional, make sure that they are defined.\n initialProperties.viewOptions = initialProperties.viewOptions || {};\n initialProperties.viewOptions.viewPortX = 0;\n initialProperties.viewOptions.viewPortY = 0;\n initialProperties.viewOptions.viewPortWidth = 5;\n initialProperties.viewOptions.viewPortHeight = 3;\n }\n\n (function() {\n if (!initialProperties.viewOptions) {\n return;\n }\n\n // Temporal workaround to provide text boxes and images validation.\n // Note that text boxes and images are handled completely different from other objects\n // like atoms or obstacles. There is much of inconsistency and probably\n // it should be refactored anyway.\n var textBoxes = initialProperties.viewOptions.textBoxes || [],\n images = initialProperties.viewOptions.images || [],\n i, len;\n\n for (i = 0, len = textBoxes.length; i < len; i++) {\n textBoxes[i] = validator.validateCompleteness(metadata.textBox, textBoxes[i]);\n }\n for (i = 0, len = images.length; i < len; i++) {\n images[i] = validator.validateCompleteness(metadata.image, images[i]);\n }\n }());\n\n // TODO. Implement a pattern whereby the pluginController lets each plugins examine the initial\n // properties and extract the relevant plugin properties. *However*, don't do it in a way that\n // requires changing the model JSON schema when functionality is moved out of the main engine\n // and into a plugin, or vice-versa.\n pluginProperties = {\n quantumDynamics: initialProperties.quantumDynamics,\n chemicalReactions: initialProperties.chemicalReactions\n };\n\n // TODO: Elements are stored and treated different from other objects. This was enforced by\n // createNewAtoms() method which has been removed. Change also editableElements handling.\n editableElements = initialProperties.elements;\n // Create editable elements.\n model.createElements(editableElements);\n // Create elements which specify amino acids also.\n createAminoAcids();\n\n // This will extend model API to support standard Lab model features. We\n // have to do it know, as this will also set initial properties, so the\n // engine has to be already defined (see custom setters).\n labModelerMixin.mixInto(model);\n\n // Initialize minX, minY, maxX, maxY from model width and height if they are undefined.\n initializeDimensions(model.properties);\n\n model.on(\"stop.last-sample-time-reset\", function() {\n // This has to be done, as otherwise if user stops and then starts the\n // model, there will be an incorrect sample time reported (equal to time\n // period between starting and stopping the model).\n lastSampleTime = null;\n });\n propertySupport.on(\"afterInvalidatingChange.read-model-state\", readModelState);\n propertySupport.on(\"afterInvalidatingChangeSequence.tick-history\", function() {\n if (tickHistory) tickHistory.invalidateFollowingState();\n dispatch.invalidation();\n });\n\n // Setup MD2D engine object.\n initializeEngine(model.properties, pluginProperties);\n\n // Setup genetic engine.\n geneticEngine = new GeneticEngine(model);\n\n // Finally, if provided, set up the model objects (elements, atoms, bonds, obstacles and the rest).\n // However if these are not provided, client code can create atoms, etc piecemeal.\n\n // Trigger setter of polarAAEpsilon again when engine is initialized and\n // amino acids crated.\n // TODO: initialize engine before set_properties calls, so properties\n // will be injected to engine automatically.\n model.set({\n polarAAEpsilon: model.get('polarAAEpsilon')\n });\n\n if (initialProperties.atoms) model.createAtoms(initialProperties.atoms);\n if (initialProperties.radialBonds) model.createRadialBonds(initialProperties.radialBonds);\n if (initialProperties.angularBonds) model.createAngularBonds(initialProperties.angularBonds);\n if (initialProperties.restraints) model.createRestraints(initialProperties.restraints);\n if (initialProperties.obstacles) model.createObstacles(initialProperties.obstacles);\n if (initialProperties.shapes) model.createShapes(initialProperties.shapes);\n if (initialProperties.lines) model.createLines(initialProperties.lines);\n if (initialProperties.electricFields) model.createElectricFields(initialProperties.electricFields);\n // Basically, this #deserialize method is more or less similar to other #create... methods used\n // above. However, this is the first step to delegate some functionality from modeler to smaller classes.\n if (initialProperties.pairwiseLJProperties)\n engine.pairwiseLJProperties.deserialize(initialProperties.pairwiseLJProperties);\n\n // Initialize tick history.\n tickHistory = new TickHistory({\n getProperties: function() {\n return propertySupport.historyStateRawValues;\n },\n restoreProperties: propertySupport.setRawValues,\n state: engine.getState()\n }, model, defaultMaxTickHistory);\n\n // Since we can't provide tickHistory to the mixed-in methods at the time we create\n // labModelerMixin (see below comment), provide it now.\n labModelerMixin.tickHistory = tickHistory;\n\n // FIXME: ugly workaround - mixin OutputSupport again, this time providing\n // tickHistory, so filtered outputs will use it. We couldn't pass\n // tickHistory directly to LabModelerMixin, as tickHistory depends on\n // propertySupport ...returned by LabModelrMixin. It has to be cleaned up.\n outputSupport = new OutputSupport({\n propertySupport: propertySupport,\n unitsDefinition: unitsDefinition,\n tickHistory: tickHistory\n });\n outputSupport.mixInto(model);\n\n newStep = true;\n\n // Define some default output properties.\n model.defineOutput('time', {\n label: \"Time\",\n unitType: 'time',\n format: 'f'\n }, function() {\n // Output getters are expected to return values in translated units, since authored outputs\n // can only read values already in translated units to start with.\n var value = modelState.time;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'time');\n }\n return value;\n });\n\n model.defineOutput('timePerTick', {\n label: \"Model time per tick\",\n unitType: 'time',\n format: 'f'\n }, function() {\n return model.get('timeStep') * model.get('timeStepsPerTick');\n });\n\n (function() {\n var displayTimeUnits;\n var displayTimePropertyDescription;\n\n // Allow units definition to declare a \"Display time\"; specifically, let MD2D units definition\n // define a \"displayValue\" section in the time unit that returns ps instead of fs.\n\n if (unitsDefinition.units.time.displayValue) {\n displayTimeUnits = unitsDefinition.units.time.displayValue;\n } else {\n displayTimeUnits = _.extend({}, unitsDefinition.units.time);\n displayTimeUnits.unitsPerBaseUnit = 1;\n }\n\n displayTimePropertyDescription = new PropertyDescription(displayTimeUnits, {\n unitName: displayTimeUnits.name,\n unitPluralName: displayTimeUnits.pluralName,\n unitAbbreviation: displayTimeUnits.symbol,\n format: '.1f'\n });\n\n model.defineOutput('displayTime', {\n label: \"Time\",\n unitName: displayTimeUnits.name,\n unitPluralName: displayTimeUnits.pluralName,\n unitAbbreviation: displayTimeUnits.symbol,\n format: '.1f'\n }, function() {\n return model.get('time') * displayTimeUnits.unitsPerBaseUnit;\n });\n\n model.defineOutput('displayTimePerTick', {\n label: \"Model time per tick\",\n unitName: displayTimeUnits.name,\n unitPluralName: displayTimeUnits.pluralName,\n unitAbbreviation: displayTimeUnits.symbol,\n format: '.3f'\n }, function() {\n return model.get('timePerTick') * displayTimeUnits.unitsPerBaseUnit;\n });\n\n model.formatTime = function(time) {\n return displayTimePropertyDescription.format(time * displayTimeUnits.unitsPerBaseUnit);\n };\n }());\n\n model.defineOutput('tickCounter', {\n label: \"Tick Counter\",\n unitType: '',\n format: '4g'\n }, function() {\n return tickHistory.get('counter');\n });\n\n model.defineOutput('newStep', {\n label: \"New Step\",\n unitType: '',\n format: ''\n }, function() {\n return newStep;\n });\n\n model.defineOutput('kineticEnergy', {\n label: \"Kinetic Energy\",\n unitType: 'energy',\n format: '.4g'\n }, function() {\n var value = modelState.KE;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'energy');\n }\n return value;\n });\n\n model.defineOutput('potentialEnergy', {\n label: \"Potential Energy\",\n unitType: 'energy',\n format: '.4g'\n }, function() {\n var value = modelState.PE;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'energy');\n }\n return value;\n });\n\n model.defineOutput('totalEnergy', {\n label: \"Total Energy\",\n unitType: 'energy',\n format: '.4g'\n }, function() {\n var value = modelState.KE + modelState.PE;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'energy');\n }\n return value;\n });\n\n model.defineOutput('temperature', {\n label: \"Temperature\",\n unitType: 'temperature',\n format: 'f'\n }, function() {\n var value = modelState.temperature;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'temperature');\n }\n return value;\n });\n\n // FIXME. More yuck: We still need a pattern for recompute model properties which don't depend\n // on physics (and which therefore can be recomputed without invalidating and recomputing all\n // the physics based properties) while still making them (1) observable and (2) read-only.\n\n // used to triggers recomputation of isPlayable property based on isStopped and isReady:\n model.on('play.model', recomputeProperties);\n model.on('stop.model', recomputeProperties);\n\n function recomputeProperties() {\n propertySupport.invalidatingChangePreHook();\n propertySupport.invalidatingChangePostHook();\n }\n\n model.defineOutput('isPlayable', {\n label: \"Playable\"\n }, function() {\n // FIXME: isStopped predates the use of ES5 getters, therefore it must be invoked\n return model.isReady && model.isStopped();\n });\n\n model.defineOutput('hasPlayed', {\n label: \"has Played\"\n }, function() {\n return model.hasPlayed;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return model.isStopped();\n });\n\n readModelState();\n model.updateAllOutputProperties();\n\n if (!initializationOptions.waitForSetup) {\n model.ready();\n }\n\n model.performanceOptimizer = new PerformanceOptimizer(model);\n\n model.namespace = namespace;\n\n return model;\n};\n","/**\n * Views can require this function to get next available tab index.\n */\nvar tabIndex = 0;\n\nexport default function getNextTabIndex() {\n return tabIndex++;\n};\n","\n// Cache results of feature tests, as e.g. two different modules can ask about the same thing.\nvar CACHE = {};\n\nexport default {\n /**\n * Returns true if CSS pointer-events: none style can be used to make an element transparent\n * for mouse events and document.elementFromPoint() function.\n */\n get cssPointerEvents() {\n if (CACHE.cssPointerEvents === undefined) {\n CACHE.cssPointerEvents = (function() {\n var $div1, $div2, $svg, result;\n // Using \"fixed\" positioning we can avoid thinking about scrollTop / scrollLeft values,\n // test elements will be always inside the current viewport.\n $div1 = $(\"
\").css({\n \"position\": \"fixed\",\n \"left\": 0,\n \"top\": 0,\n \"width\": \"10px\",\n \"height\": \"10px\"\n }).appendTo(\"body\");\n $div2 = $(\"
\").css({\n \"position\": \"fixed\",\n \"left\": 0,\n \"top\": 0,\n \"width\": \"10px\",\n \"height\": \"10px\",\n \"pointer-events\": \"none\" // !!!\n }).appendTo(\"body\");\n $svg = $(\"\").css({\n \"position\": \"fixed\",\n \"left\": 0,\n \"top\": 0,\n \"width\": \"10px\",\n \"height\": \"10px\",\n \"pointer-events\": \"none\" // !!!\n }).appendTo(\"body\");\n\n result = $(document.elementFromPoint(5, 5)).attr(\"class\");\n\n $svg.remove();\n $div2.remove();\n $div1.remove();\n\n switch (result) {\n case \"supported\":\n return true;\n case \"unsupported\":\n return false;\n default:\n console.warn(\"CSS pointer-events feature test failed\");\n return false;\n }\n }());\n }\n return CACHE.cssPointerEvents;\n }\n};\n","/**\n Forward mouse events to the view's stack of overlaid visual layers to simulate the \"hit\n testing\" that would occur natively if the visual layers were all implemented as descendants of\n a single, common svg element.\n\n In that scenario, native hit-testing is used: a mouse event at any point is forwarded to the\n topmost visible element at that point; the layers above it are effectively transparent to the\n event. This is subject to control by the 'pointer-events' property. See\n http://www.w3.org/TR/SVG/interact.html#pointer-processing\n\n However, in order to allow some layers to be implemented as elements (or perhaps\n or rootmost elements, to which hardware-accelerated css transforms apply), and to\n allow those layers to be above some layers and below others, our layers cannot in fact be\n children of a common svg element.\n\n This means that the topmost layer always becomes the target of any mouseevent on the view,\n regardless of whether it has an element at that point, and it hides the event from the layers\n below.\n\n What we need, therefore, is to simulate svg's hit testing. This can be achieved by listening\n to events that bubble to the topmost layer and successively hiding the layers below, applying\n document.elementFromPoint to determine whether there is an element within that layer at that\n event's coordinates. (Where the layer in question is a with its own hit testing\n implemented in Javascript, we must defer to the layer's own hit-testing algorithm instead\n of using elementFromPoint.)\n\n CSS pointer-events (as distinct from SVG pointer events) cannot completely capture the\n semantics we need because they simply turn pointer \"transparency\" on or off rather than\n responding to the presence or absence of an element inside the layer at the event coordinates;\n and besides they do not work in IE9 or IE10.\n\n Note that to the extent we do use CSS pointer-events, document.elementFromPoint correctly\n respects the \"none\" value.\n\n What this means for event handling:\n\n * Mousedown, mouseup, and any custom mouse events such as those created by the jQuery\n ContextMenu plugin, are captured by a click shield element and prevented from bubbling.\n However, a clone event is dispatched to the element that passed the hit test and allowed\n to bubble to the window.\n\n * Click events on the click shield are captured and canceled because they are inherently not\n meaningful--the browser cannot tell if the mouseup and mousedown targets are \"really\" the\n same so it dispatches click events anytime a mousedown and mouseup occur on the view.\n Instead, if the mousedown and mouseup occur on the same element or sprite (e.g., same\n atom) we dispatch a synthetic click event targeted at the element. In the case that the\n mouseup occurs on a sprite in the canvas layer, the click event is only emitted if the\n same sprite was under the previous mousedown. Additionally, the target of a click on a\n sprite is the canvas layer itself since to DOM gives us no way to be any more specific.\n (Notice this means the same canvas can successfully hit test a mousedown followed by a\n mouseup, but still not cause a click to be issued, if the mousedown and mouseup were over\n two different sprites.)\n\n * Canvas elements should not listen for click events. They are responsible instead for\n performing a click action, if appropriate, when they receive a mouseup, and notifying the\n parent whether a DOM click event should be issued. (This prevents them from having to\n hit-test the same coordinates twice, once for the mouseup and then once for a click.)\n\n * Single-touch containing touch events will be captured and canceled, and synthetic mouse\n events corresponding to the touches will be issued and routed through the above-discussed\n hit test exactly as if they were mouse events. This is a reasonable choice because we do\n not use any multitouch gestures and must retain compatibility with desktop browsers.\n\n * Note that mouseover/mouseout/mousenter/mouseleave events are not handled in any way!\n*/\nimport featureTests from 'common/feature-tests';\n// Dependencies.\nvar EVENT_TYPES = ['mousedown', 'mouseup', 'contextmenu'],\n\n // Keep track of window listeners, so helper can cleanup previous listeners. Note that it\n // means that only one event translation per window is allowed for now!\n windowListeners = [];\n\nfunction addWindowEventListener(type, listener, useCapture) {\n window.addEventListener(type, listener, useCapture);\n\n windowListeners.push({\n type: type,\n func: listener,\n capture: useCapture\n });\n}\n\nfunction cleanupWindowListeners() {\n var l;\n while (windowListeners.length > 0) {\n l = windowListeners.pop();\n window.removeEventListener(l.type, l.func, l.capture);\n }\n}\n\nfunction noop() {}\n\n/**\n * @param {Element} foregroundNode the top-most layer.\n */\nexport default function HitTestingHelper(foregroundNode) {\n var api;\n\n // A list of all outermost svg/canvas/div containers which may have clickable or touchable child\n // elements, ordered from topmost to bottom-most. Because the layers are siblings, not\n // ancestors, the upper layers prevent mouse and touch events from reaching the lower layers\n // even when no element within the upper layers is actually being clicked/touched.\n var layersToHitTest;\n\n // We need to hide HTML layers from mouse events. It can be achieved by setting\n // \"pointer-events\" style to \"none\", however it isn't supported by all browsers\n // (e.g. IE9, IE10, Safari 5). The fallback method is to set layer's visibility to \"hidden\".\n var propName = featureTests.cssPointerEvents ? \"pointerEvents\" : \"visibility\";\n var propHidden = featureTests.cssPointerEvents ? \"none\" : \"hidden\";\n var propBackup;\n\n var mousedownTarget;\n var targetForCreatedClick;\n var defaultPreventedFlag;\n var cancelClickFlag;\n\n // Return a cloned version of 'e' having 'target' as its target property; cancel the original\n // event.\n function retargetMouseEvent(e, target) {\n var clonedEvent = document.createEvent(\"MouseEvent\");\n clonedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n // Object.defineProperty(clonedEvent, \"target\", {value: target});\n clonedEvent.forwardedTouchEvent = e.forwardedTouchEvent;\n // IE 9+ creates events with pageX and pageY set to 0.\n // Trying to modify the properties throws an error,\n // so we define getters to return the correct values.\n // Solution based on the approach used in: https://github.com/jquery/jquery-simulate\n if (clonedEvent.pageX === 0 && clonedEvent.pageY === 0 && Object.defineProperty) {\n var doc = document.documentElement;\n var body = document.body;\n var clientX = e.clientX;\n var clientY = e.clientY;\n\n Object.defineProperty(clonedEvent, \"pageX\", {\n get: function() {\n return clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n }\n });\n Object.defineProperty(clonedEvent, \"pageY\", {\n get: function() {\n return clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n });\n }\n return clonedEvent;\n }\n\n // Create a click event from a mouse event (presumably mouseup). Leaves original event as-is.\n function createClick(e) {\n // TODO. Does copying the properties adequately capture all the semantics of the click event?\n var clonedEvent = document.createEvent(\"MouseEvent\");\n clonedEvent.initMouseEvent('click', true, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n return clonedEvent;\n }\n\n // Hide layer from mouse events using visibility or pointer-events styles.\n function hideLayer(i) {\n var layer = layersToHitTest[i];\n propBackup[i] = layer.style[propName];\n layer.style[propName] = propHidden;\n }\n\n // Restore original visibility or pointer-events styles of layers n to 0, inclusive.\n function unhideLayers(n) {\n for (var i = n; i >= 0; i--) {\n layersToHitTest[i].style[propName] = propBackup[i];\n }\n }\n\n function hitTest(e) {\n // Remember style rules of the layers we peel back\n propBackup = [];\n\n var layer;\n var target;\n var mouseEvent;\n var hitTestSucceeded;\n var isCanvasObjectClick;\n var layerBgColor;\n\n // Must be set, as we test it after calling hitTest()\n targetForCreatedClick = null;\n\n for (var i = 0, len = layersToHitTest.length; i < len; i++) {\n layer = layersToHitTest[i];\n\n if (i > 0) {\n hideLayer(i - 1);\n }\n\n if (layer.tagName.toLowerCase() === \"canvas\") {\n // For now we have to dispatch an event first, *then* see if the Canvas-based view\n // considered it a hit -- we stopPropagation and keep going if it does not report a hit.\n mouseEvent = retargetMouseEvent(e, layer);\n\n // Need to ask the Canvas-based view to perform custom hit-testing.\n // TODO: make this a static function rather than rebinding to closure each time.\n api.hitTestCallback = function(isHit) {\n hitTestSucceeded = isHit;\n if (!isHit) {\n mouseEvent.stopPropagation();\n mouseEvent.preventDefault();\n }\n };\n api.mouseupCallback = function(isClick) {\n isCanvasObjectClick = isClick;\n };\n\n layer.dispatchEvent(mouseEvent);\n\n // Restore safe noop functions. It ensures that even if client code calls one of them\n // unnecessarily, it won't have unwanted, side effects like .preventDefault() or\n // .stopPropagation() calls.\n api.hitTestCallback = noop;\n api.mouseupCallback = noop;\n\n if (isCanvasObjectClick) {\n // The canvas view itself won't listen to this click, but let the click bubble.\n targetForCreatedClick = layer;\n }\n\n if (hitTestSucceeded) {\n unhideLayers(i - 1);\n defaultPreventedFlag = mouseEvent.defaultPrevented;\n return layer;\n }\n } else {\n // IE bug: without background color layer will be transparent for .elementFromPoint(),\n // underlying canvas (if any) will become a target. See:\n // https://www.pivotaltracker.com/story/show/58418116\n layerBgColor = layer.style.backgroundColor;\n layer.style.backgroundColor = \"rgba(0,0,0,0)\";\n\n // clientX and clientY report the event coords in CSS pixels relative to the viewport\n // (ie they aubtract the x, y the page is scrolled to). This is what elementFromPoint\n // requires in Chrome, Safari 5+, IE 8+, and Firefox 3+.\n // http://www.quirksmode.org/dom/tests/elementfrompoint.html\n // http://www.quirksmode.org/blog/archives/2010/06/new_webkit_test.html\n // http://www.quirksmode.org/mobile/tableViewport_desktop.html\n target = document.elementFromPoint(e.clientX, e.clientY);\n\n // Restore original background color.\n layer.style.backgroundColor = layerBgColor;\n\n // FIXME? Since we nominally allow target layers to be hidden or have pointer-events: none\n // we would have to replace this simplistic test. In the case that the layer is\n // transparent to events even before we hide it, target !== layer not because target is an\n // element in the layer that received the hit but because the target is below the layer.\n if (target !== layer) {\n unhideLayers(i - 1);\n mouseEvent = retargetMouseEvent(e, target);\n target.dispatchEvent(mouseEvent);\n defaultPreventedFlag = mouseEvent.defaultPrevented;\n // There was an element in the layer at the event target. This hides the event from all\n // layers below, so we're done.\n return target;\n }\n }\n }\n // If no element is hit, make sure that all layer properties are restored.\n unhideLayers(layersToHitTest.length - 2); // -2 because the last layer is never hidden\n }\n\n // Translate any touch events on the foreground which have only a single touch point (\"finger\")\n // when started, to the corresponding mouse events. Does not attempt to initiate a cancel action\n // for touchcancel; just issues mouseup stops tracking the touch.\n function setupTouchEventTranslation(foregroundNode) {\n // Identifier of the touch point we are tracking; set to null when touch not in progress.\n var touchId = null;\n var touchStartX;\n var touchStartY;\n\n function createMouseEvent(touch, type) {\n var mouseEvent = document.createEvent(\"MouseEvent\");\n mouseEvent.initMouseEvent(type, true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);\n // This flag prevents FastClick from trying to pre-emptively cancel the event\n mouseEvent.forwardedTouchEvent = true;\n return mouseEvent;\n }\n\n // Detect whether the touch was moved >10 device pixels between start and end; if the touch\n // moved we may infer that the user performed a scroll.\n //\n // Contra @ppk (http://www.quirksmode.org/mobile/viewports2.html), screenX and screenY *are*\n // useful here because we're in an iframe. clientX/Y and pageX/Y are relative to our page and\n // visual viewport, respectively, *but those both move in rough synchrony with the touch* (and\n // we can't detect the scroll itself because the iframe's page and visual viewport offsets\n // don't change! The *outer* page changes but we may not be allowed to measure that.)\n // Fortunately, screenX and screenY are relative to the device, which lets us know if the\n // viewport moved \"physically\" (bonus: measurements in device pixels correspond to actual\n // physical distances in the user's world, and don't change with zoom).\n function didTouchMove(touch) {\n return Math.abs(touch.screenX - touchStartX) > 10 || Math.abs(touch.screenY - touchStartY) > 10;\n }\n\n // listener for touchstart\n function touchStarted(e) {\n var touch = e.changedTouches[0];\n\n if (e.touches.length > 1 || touch.target !== foregroundNode) {\n return;\n }\n\n cancelClickFlag = false;\n touchStartX = touch.screenX;\n touchStartY = touch.screenY;\n\n // Remember which touch point--later touch events may or may not include this touch point\n // but we have to listen to them all to make sure we update dragging state correctly.\n touchId = touch.identifier;\n foregroundNode.dispatchEvent(createMouseEvent(touch, 'mousedown'));\n\n if (defaultPreventedFlag) {\n e.preventDefault();\n }\n e.stopPropagation();\n }\n\n // Listener for touchmove, touchend, and touchcancel:\n function touchChanged(e) {\n\n if (touchId === null) {\n return;\n }\n\n // Don't translate touch events to mouse events when there are more than two fingers\n // on the screen. This lets us to support pinch-zoom even if user started gesture only\n // with one finger and added second later.\n if (e.type === \"touchmove\" && e.touches.length > 1) {\n // User added a second finger, perhaps he wants to do pinch-zoom or pan rather than\n // trigger \"click\" action at the end.\n cancelClickFlag = true;\n // In theory this isn't 100% correct, but... it ensures that no handler will be able\n // to call .preventDefault() on this event (e.q. D3 does that for touch events), so we\n // will always native browser behavior like panning or pinch-zoom. This is reasonable\n // assumption that 2-finger gestures are always used for navigation.\n e.stopPropagation();\n return;\n }\n\n var i;\n var len;\n var touch;\n var target;\n var mouseMoveEvent;\n\n for (i = 0, len = e.changedTouches.length; i < len; i++) {\n touch = e.changedTouches[i];\n\n if (touch.identifier !== touchId) {\n continue;\n }\n\n if (len === 1) {\n e.stopPropagation();\n }\n\n // touch's target will always be the element that received the touchstart. But since\n // we're creating a pretend mousemove, let its target be the target the browser would\n // report for an actual mousemove/mouseup (Remember that the--expensive--hitTest() is not\n // called for mousemove, though; drag handlers should and do listen for mousemove on the\n // window). Note that clientX can be off the document, so report window in that case!\n target = document.elementFromPoint(touch.clientX, touch.clientY) || window;\n\n if (e.type === 'touchmove') {\n if (!cancelClickFlag) {\n // Cancel \"click\" event when finger has moved (> 10px at the moment).\n cancelClickFlag = didTouchMove(touch);\n }\n mouseMoveEvent = createMouseEvent(touch, 'mousemove');\n target.dispatchEvent(mouseMoveEvent);\n // mousemove events can be captured and replaced by synthetic events (see .passMouseMove\n // method). In such case 'defaultPreventedFlag' will be automatically set to correct\n // value. However when event isn't captured and replaced by synthetic one, we have to\n // check .defaultPrevented property manually.\n if (!mouseMoveEvent.replacedBySynthetic) {\n defaultPreventedFlag = mouseMoveEvent.defaultPrevented;\n }\n } else if (e.type === 'touchend') {\n target.dispatchEvent(createMouseEvent(touch, 'mouseup'));\n touchId = null;\n } else if (e.type === 'touchcancel') {\n // Do not dispatch click event on touchcancel.\n cancelClickFlag = true;\n target.dispatchEvent(createMouseEvent(touch, 'mouseup'));\n touchId = null;\n }\n\n // .preventDefault() on touchend will prevent the browser from generating a events like\n // mousedown, mouseup and click. It's necessary as we already translated touchstart\n // to mousedown and touchend to mouseup. Our hit testing intentionally ignores\n // browser-generated click events anyway, and generates its own when appropriate.\n if (e.type === 'touchend' || defaultPreventedFlag) {\n e.preventDefault();\n }\n\n return;\n }\n }\n\n addWindowEventListener('touchstart', touchStarted, true);\n ['touchmove', 'touchend', 'touchcancel'].forEach(function(eventType) {\n addWindowEventListener(eventType, touchChanged, true);\n });\n\n // TODO implement cancel semantics for atom dragging?\n // see http://alxgbsn.co.uk/2011/12/23/different-ways-to-trigger-touchcancel-in-mobile-browsers/\n // until then we have to observe touchcancel to stop in-progress drags.\n }\n\n function init() {\n cleanupWindowListeners();\n\n layersToHitTest = [foregroundNode];\n\n EVENT_TYPES.forEach(function(eventType) {\n // Use a capturing handler on window so we can swallow the event\n addWindowEventListener(eventType, function(e) {\n var target;\n\n if (e.target !== foregroundNode) {\n return;\n }\n\n e.stopPropagation();\n // Chrome (and Safari?) bug: http://crbug.com/269917\n // If we call .preventDefault() on the original mousedown event, it will break handling of\n // events outside the iframe. It can cause issues like this one:\n // https://www.pivotaltracker.com/story/show/58446862\n if (e.type !== 'mousedown') {\n e.preventDefault();\n }\n\n target = hitTest(e);\n\n if (e.type === 'mousedown') {\n mousedownTarget = target;\n } else if (e.type === 'mouseup') {\n // Note that cancelClickFlag can be set to true if e.g. there was significant\n // touchmove between touchstart (mousedown) and touchend (mouseup). It means that\n // user was panning the viewport rather than trying to perform \"click\". Other case can\n // be when second finger was added between touchstart and touchend what can be used to\n // perform pinch-zoom rather than click.\n if (target && target === mousedownTarget &&\n target.tagName.toLowerCase() !== 'canvas' && !cancelClickFlag) {\n target.dispatchEvent(createClick(e));\n }\n if (targetForCreatedClick && !cancelClickFlag) {\n targetForCreatedClick.dispatchEvent(createClick(e));\n }\n }\n }, true);\n });\n\n // Completely swallow \"click\" events on the foregroundNode. The browser can't issue these\n // correctly; we have to issue them ourselves after a mouseup.\n addWindowEventListener('click', function(e) {\n if (e.target === foregroundNode) {\n e.stopPropagation();\n e.preventDefault();\n }\n }, true);\n\n setupTouchEventTranslation(foregroundNode);\n }\n\n api = {\n /**\n * Setups fast, simplified hit testing for mousemove events. 'mousemove' will be dispatched\n * only to the specified target element. Because of that we can avoid very expensive\n * .elementFromPoint() calls. Target will receive mouseover and mouseout events too.\n * @param {Element} mmoveSource\n * @param {Element} mmoveTarget\n */\n passMouseMove: function(mmoveSource, mmoveTarget) {\n var prevTarget;\n\n // Return a cloned version of 'e' but with a different 'type', and 'relatedTarget'.\n function createMouseEvent(e, type, relatedTarget) {\n var clonedEvent = document.createEvent(\"MouseEvent\");\n clonedEvent.initMouseEvent(type, e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, relatedTarget || e.relatedTarget);\n return clonedEvent;\n }\n\n addWindowEventListener('mousemove', function(e) {\n // Note that we have to check if 'e' is not a synthetic event that can be be dispatched by\n // this handler. Otherwise we will enter infinite loop.\n if (!e.synthetic) {\n var target, mouseEvent;\n if (e.target !== mmoveSource) {\n // Target is different from desired source, we can only dispatch mouseout and return.\n if (prevTarget === mmoveTarget) {\n mmoveTarget.dispatchEvent(createMouseEvent(e, \"mouseout\", e.target));\n }\n prevTarget = e.target;\n return;\n }\n target = mmoveTarget;\n if (target !== prevTarget) {\n mmoveTarget.dispatchEvent(createMouseEvent(e, \"mouseover\", prevTarget));\n }\n e.stopPropagation();\n e.preventDefault();\n e.replacedBySynthetic = true;\n mouseEvent = retargetMouseEvent(e, target);\n mouseEvent.synthetic = true; // !!!\n // We don't support more sophisticated mousemove event passing, e.g. based on the hit\n // test results (yet?), so just set noop callback.\n api.hitTestCallback = noop;\n target.dispatchEvent(mouseEvent);\n // Set the defaultPreventedFlag.\n defaultPreventedFlag = mouseEvent.defaultPrevented;\n prevTarget = target;\n }\n }, true);\n },\n\n /**\n * Registers a new layer that will receive mouse events.\n * @param {Element} element\n */\n addLayer: function(element) {\n // Add new element *after* foreground element.\n layersToHitTest.splice(1, 0, element);\n },\n\n /**\n * Lets the code responsible for interaction inside canvas notify this helper whether a hit\n * really occurred inside canvas (e.g. some drawn element was hit or not). If this callback\n * isn't called (or is called with false argument), an event will be passed to the layers\n * below canvas.\n * @param {Boolean} isHit\n */\n hitTestCallback: noop,\n\n /**\n * Lets canvas notify this helper whether 'click' event should be dispatched.\n * @param {Boolean} isClick\n */\n mouseupCallback: noop\n };\n\n init();\n\n return api;\n}\n"," // ------------------------------------------------------------\n//\n// SVG View Container\n//\n// ------------------------------------------------------------\nimport performance from 'common/performance';\nimport benchmark from 'common/benchmark/benchmark';\nimport getNextTabIndex from 'common/views/tab-index';\nimport HitTestingHelper from 'common/views/hit-testing-helper';\nimport console from 'common/console';\nimport PIXI from 'pixi.js';\n// Dependencies.\nvar CANVAS_OVERSAMPLING = 2,\n\n MAX_Z_INDEX = 1000;\n\n// Assume that we can have *only one* Pixi renderer.\n// This is caused by the Pixi bug: https://github.com/GoodBoyDigital/pixi.js/issues/181\nfunction getPixiRenderer(w, h) {\n if (getPixiRenderer.instance == null) {\n var browser = benchmark.browser;\n var newRenderer;\n if (browser.browser === 'Firefox' && browser.oscpu.match(/Mac OS X 10.6/)) {\n // Work around GPU driver brokenness on some hardware running OS X 10.6 by not using\n // WebGL. Note Chrome automatically disables WebGL when using the problematic driver.\n // (Note that sometimes the separator between 10 and 6 is a '.' and sometimes a '_' so\n // use of the '.' matcher works is required)\n newRenderer = function(w, h, view, transparent) {\n return new PIXI.CanvasRenderer(w, h, view, transparent);\n };\n } else {\n newRenderer = PIXI.autoDetectRenderer;\n }\n getPixiRenderer.instance = newRenderer(w * CANVAS_OVERSAMPLING, h * CANVAS_OVERSAMPLING, null, true);\n } else {\n getPixiRenderer.instance.resize(w, h);\n }\n return getPixiRenderer.instance;\n}\ngetPixiRenderer.instance = null;\n\nexport default function SVGContainer(model, modelUrl, Renderer, opt) {\n // Public API object to be returned.\n var api,\n\n i18n = opt && opt.i18n || null,\n\n // Coordinate system origin. Supported values are 'bottom-left' and 'top-left'.\n origin = opt && opt.origin || 'bottom-left',\n\n $el,\n node,\n\n plotContainer, backgroundContainer, foregroundContainer,\n\n backgroundRect, backgroundGroup, foregroundGroup, brushContainer,\n\n pixiRenderers, pixiStages, pixiContainers,\n\n hitTestingHelper,\n viewportZIndex = 0,\n\n cx, cy,\n viewport, viewPortZoom,\n\n model2canvas = d3.scale.linear(),\n model2canvasInv = d3.scale.linear(),\n\n // Basic scaling functions for position, it transforms model units to \"pixels\".\n // Use it for positions of objects rendered inside the view.\n //\n // This function is exposed in public API. Never ever recreated it, as\n // renderers and sub-renders will loose reference to valid scale\n // function.\n model2px = d3.scale.linear(),\n\n // Inverted scaling function for position transforming model units to \"pixels\".\n // Use it for Y coordinates, as Y axis in model coordinate system increases\n // from bottom to top, while but SVG has increases from top to bottom.\n //\n // This function is exposed in public API. Never ever recreated it, as\n // renderers and sub-renders will loose reference to valid scale\n // function.\n model2pxInv = d3.scale.linear(),\n\n clickHandler,\n dragHandler,\n // d3.svg.brush object used to implement select action. It should be\n // updated each time model2px and model2pxInv functions are changed!\n selectBrush,\n\n dispatch = d3.dispatch(\"viewportDrag\"),\n\n renderer;\n\n function nextViewportZIndex() {\n return viewportZIndex++;\n }\n\n function getFontSizeInPixels() {\n return parseFloat($el.css('font-size')) || 18;\n }\n\n function scale() {\n var viewPortWidth = model.get(\"viewPortWidth\"),\n viewPortHeight = model.get(\"viewPortHeight\"),\n viewPortX = model.get(\"viewPortX\"),\n viewPortY = model.get(\"viewPortY\"),\n aspectRatio, modelSize;\n\n viewPortZoom = model.get(\"viewPortZoom\") || 1;\n\n // Model size in model units.\n modelSize = {\n \"minX\": model.get('minX'),\n \"minY\": model.get('minY'),\n \"maxX\": model.get('maxX'),\n \"maxY\": model.get('maxY')\n };\n\n // Note that viewPort specification can be undefined and then viewport\n // should fit the model.\n viewport = {\n width: viewPortWidth != null ? viewPortWidth : modelSize.maxX - modelSize.minX,\n height: viewPortHeight != null ? viewPortHeight : modelSize.maxY - modelSize.minY,\n x: viewPortX != null ? viewPortX : modelSize.minX,\n y: viewPortY != null ? viewPortY : modelSize.minY\n };\n\n viewport.scaledWidth = viewport.width / viewPortZoom;\n viewport.scaledHeight = viewport.height / viewPortZoom;\n if (origin === 'bottom-left') {\n viewport.y += viewport.scaledHeight;\n }\n\n aspectRatio = viewport.width / viewport.height;\n\n cx = $el.width();\n cy = cx / aspectRatio;\n node.style.height = cy + \"px\";\n\n // Basic model2px scaling function for position.\n model2px\n .domain([0, viewport.width])\n .range([0, cx]);\n\n model2canvas\n .domain([0, viewport.scaledWidth])\n .range([0, cx * CANVAS_OVERSAMPLING]);\n\n // Inverted model2px scaling function for position (for y-coordinates, domain can be inverted).\n model2pxInv\n .domain([viewport.height, 0])\n .range(origin === 'bottom-left' ? [0, cy] : [cy, 0]);\n\n model2canvasInv\n .domain([viewport.scaledHeight, 0])\n .range(origin === 'bottom-left' ? [0, cy * CANVAS_OVERSAMPLING] : [cy * CANVAS_OVERSAMPLING, 0]);\n\n if (selectBrush) {\n // Update brush to use new scaling functions.\n selectBrush\n .x(model2px)\n .y(model2pxInv);\n }\n }\n\n function redrawGridLinesAndLabels() {\n var fsize = 0.7 * getFontSizeInPixels(),\n // Overwrite default model2px and model2pxInv to display correct units.\n model2px = d3.scale.linear().domain([viewport.x + 0.07 * viewport.scaledWidth, viewport.x + viewport.scaledWidth]).range([0.07 * cx, cx]),\n model2pxInv = d3.scale.linear().domain([viewport.y, viewport.y - 0.93 * viewport.scaledHeight]).range([0, 0.93 * cy]),\n tx = function(d) {\n return \"translate(\" + model2px(d) + \",0)\";\n },\n ty = function(d) {\n return \"translate(0,\" + model2pxInv(d) + \")\";\n },\n stroke = function(d) {\n return d ? \"#ccc\" : \"#666\";\n },\n fx = model2px.tickFormat(5),\n fy = model2pxInv.tickFormat(5),\n lengthUnits = model.getUnitDefinition ? model.getUnitDefinition('length') : \"\",\n drawXunits = model.get(\"xunits\"),\n drawYunits = model.get(\"yunits\"),\n drawXLabel = model.get(\"xlabel\"),\n drawYLabel = model.get(\"ylabel\"),\n xlabel,\n ylabel;\n\n if (d3.event && d3.event.transform) {\n d3.event.transform(model2px, model2pxInv);\n }\n\n plotContainer.selectAll(\"g.x, g.y\").remove();\n\n // Regenerate x-ticks…\n var gx = plotContainer.selectAll(\"g.x\")\n .data(model2px.ticks(5), String)\n .attr(\"transform\", tx)\n .classed(\"axes\", true);\n\n gx.select(\"text\").text(fx);\n\n var gxe = gx.enter().append(\"g\")\n .attr(\"class\", \"x\")\n .attr(\"transform\", tx);\n\n if (model.get(\"gridLines\")) {\n gxe.append(\"line\")\n .attr(\"stroke\", stroke)\n .attr(\"y1\", 0)\n .attr(\"y2\", cy - (drawXLabel ? fsize : 0) - (drawXunits ? fsize : 0));\n } else {\n gxe.selectAll(\"line\").remove();\n }\n\n // x-axis label\n xlabel = plotContainer.selectAll(\"text.xlabel\").data(drawXLabel ? [lengthUnits.pluralName] : []);\n xlabel.enter().append(\"text\");\n xlabel\n .attr(\"class\", \"axis\")\n .attr(\"class\", \"xlabel\")\n .attr(\"x\", cx / 2)\n .attr(\"y\", cy)\n .attr(\"dy\", \"-0.1em\")\n .style(\"text-anchor\", \"middle\")\n .text(String);\n xlabel.exit().remove();\n\n // x-axis units\n if (drawXunits) {\n gxe.append(\"text\")\n .attr(\"class\", \"xunits\")\n .attr(\"y\", cy)\n .attr(\"dy\", model.get(\"xlabel\") ? \"-1em\" : \"-0.1em\")\n .attr(\"text-anchor\", \"middle\")\n .text(fx);\n } else {\n gxe.select(\"text.xunits\").remove();\n }\n\n // Regenerate y-ticks…\n var gy = plotContainer.selectAll(\"g.y\")\n .data(model2pxInv.ticks(5), String)\n .attr(\"transform\", ty)\n .classed(\"axes\", true);\n\n gy.select(\"text\")\n .text(fy);\n\n var gye = gy.enter().append(\"g\")\n .attr(\"class\", \"y\")\n .attr(\"transform\", ty)\n .attr(\"background-fill\", \"#FFEEB6\");\n\n if (model.get(\"gridLines\")) {\n gye.append(\"line\")\n .attr(\"stroke\", stroke)\n .attr(\"x1\", (drawYLabel ? fsize : 0) + (drawYunits ? 2 * fsize : 0))\n .attr(\"x2\", cx);\n } else {\n gye.selectAll(\"line\").remove();\n }\n\n // y-axis label\n ylabel = plotContainer.selectAll(\"text.ylabel\").data(drawYLabel ? [lengthUnits.pluralName] : []);\n ylabel.enter().append(\"text\");\n ylabel\n .attr(\"class\", \"axis\")\n .attr(\"class\", \"ylabel\")\n .attr(\"transform\", \"translate(0 \" + (cy * 0.5) + \") rotate(-90)\")\n .attr(\"dy\", \"0.75em\")\n .style(\"text-anchor\", \"middle\")\n .text(String);\n ylabel.exit().remove();\n\n // y-axis units\n if (drawYunits) {\n gye.append(\"text\")\n .attr(\"class\", \"yunits\")\n .attr(\"dy\", \"0.34em\")\n .attr(\"dx\", model.get(\"ylabel\") ? \"1em\" : \"0.1em\")\n .text(fy);\n } else {\n gxe.select(\"text.yunits\").remove();\n }\n }\n\n // Setup background.\n function setupBackground() {\n var color = model.get(\"backgroundColor\") || \"rgba(0, 0, 0, 0)\";\n backgroundRect.attr(\"fill\", color);\n // Set color of PIXI.Stage to fix an issue with outlines around the objects that are visible\n // when WebGL renderer is being used. It only happens when PIXI.Stage background is different\n // from model container background. It's necessary to convert color into number, as PIXI\n // accepts only numbers. D3 helps us handle color names like \"red\", \"green\" etc. It doesn't\n // support rgba values, so ingore alpha channel.\n pixiStages.forEach(function(pixiStage) {\n pixiStage.setBackgroundColor(parseInt(d3.rgb(color.replace(\"rgba\", \"rgb\")).toString().substr(1), 16));\n });\n }\n\n function mousedown() {\n setFocus();\n }\n\n function setFocus() {\n if (model.get(\"enableKeyboardHandlers\")) {\n node.focus();\n }\n }\n\n function basicSVGAttrs() {\n return this.attr({\n // TODO confirm xmlns def is required?\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xmlns:xlink': 'http://www.w3.org/1999/xlink', // hack: doubling xmlns: so it doesn't disappear once in the DOM\n 'overflow': 'hidden' // Important in IE! Otherwise content won't be clipped by SVG container\n });\n }\n\n function layeredOnTop() {\n return this.style({\n position: \"absolute\",\n top: 0,\n left: 0\n });\n }\n\n function renderContainer() {\n var viewBox;\n\n // Create container, or update properties if it already exists.\n if (plotContainer === undefined) {\n\n plotContainer = d3.select(node).append(\"svg\")\n .attr(\"class\", \"root-layer container plot-container\")\n .style(\"z-index\", nextViewportZIndex())\n .call(basicSVGAttrs);\n\n backgroundRect = plotContainer.append(\"rect\")\n .attr(\"class\", \"container-background background\");\n\n backgroundContainer = d3.select(node).append(\"svg\")\n .attr(\"class\", \"root-layer container background-container svg-viewport\")\n .style(\"z-index\", nextViewportZIndex())\n .call(basicSVGAttrs);\n\n backgroundGroup = backgroundContainer.append(\"g\");\n\n foregroundContainer = d3.select(node).append(\"svg\")\n .attr(\"class\", \"root-layer container foreground-container svg-viewport\")\n .style(\"z-index\", MAX_Z_INDEX)\n // IE bug: without background color the layer will be transparent for mouse events\n // when there is some underlying canvas. See:\n // https://www.pivotaltracker.com/story/show/58418116\n .style(\"background-color\", \"rgba(0,0,0,0)\")\n .on(\"contextmenu\", function() {\n // Disable default context menu on foreground container, as otherwise it covers all\n // possible context menu that can be used by layers beneath.\n d3.event.preventDefault();\n })\n .call(basicSVGAttrs);\n\n foregroundGroup = foregroundContainer.append(\"g\");\n\n brushContainer = foregroundContainer.append(\"g\")\n .attr(\"class\", \"brush-container\");\n\n // Root layers should overlap each other.\n d3.select(node).selectAll(\".root-layer\").call(layeredOnTop);\n\n if (model.get(\"enableKeyboardHandlers\")) {\n d3.select(node)\n .attr(\"tabindex\", 0)\n .on(\"mousedown\", mousedown);\n }\n\n pixiRenderers = [];\n pixiStages = [];\n pixiContainers = [];\n\n // Setup custom hit testing similar to one provided natively by SVG. So layers can overlap,\n // but only real objects (elements inside layer) will block mouse events.\n hitTestingHelper = new HitTestingHelper(foregroundContainer.node());\n hitTestingHelper.addLayer(plotContainer.node());\n hitTestingHelper.addLayer(backgroundContainer.node());\n }\n\n // Update cx, cy, size, viewport and modelSize variables.\n scale();\n\n // Dimension/position of all the root layers\n d3.select(node).selectAll('.root-layer')\n .attr({\n width: cx,\n height: cy\n })\n // Update style values too, as otherwise SVG isn't clipped correctly e.g. in Safari.\n .style({\n width: cx + \"px\",\n height: cy + \"px\"\n });\n\n pixiRenderers.forEach(function(pixiRenderer) {\n pixiRenderer.resize(cx * CANVAS_OVERSAMPLING, cy * CANVAS_OVERSAMPLING);\n $(pixiRenderer.view).css({\n width: cx,\n height: cy\n });\n });\n\n viewBox = model2px(viewport.x) + \" \" +\n model2pxInv(viewport.y) + \" \" +\n model2px(viewport.scaledWidth) + \" \" +\n model2px(viewport.scaledHeight);\n\n // Apply the viewbox to all \"viewport\" layers we have created\n d3.select(node).selectAll(\".svg-viewport\").attr({\n viewBox: viewBox,\n x: 0,\n y: 0,\n width: model2px(viewport.width),\n height: model2px(viewport.height)\n });\n\n pixiContainers.forEach(function(pixiContainer) {\n // It would be nice to set position of PIXI.Stage object, but it doesn't work. We have\n // to use nested PIXI.DisplayObjectContainer:\n pixiContainer.pivot.x = model2canvas(viewport.x);\n pixiContainer.pivot.y = model2canvasInv(viewport.y);\n // This would also work:\n // pixiContainer.scale.x = pixiContainer.scale.y = (modelSize.maxX - modelSize.minX) /\n // viewport.scaledWidth;\n // and would be pretty fast, however sprites will be pixelated. To ensure that quality isn't\n // affected it's better to modify .model2canvas() functions.\n });\n\n // Update padding, as it can be changed after rescaling.\n // TODO move this up to where other attrs are set on 'layers'. It doesn't look like 'padding'\n // is changed between here and there (and if it *is*, that needs to be made more explicit.)\n\n // Rescale main plot.\n backgroundRect\n .attr({\n width: model2px(viewport.width),\n height: model2px(viewport.height),\n x: 0,\n y: 0\n });\n\n redrawGridLinesAndLabels();\n api.renderCanvas();\n }\n\n // Support viewport dragging behavior.\n function viewportDragging() {\n var xs = [],\n ys = [],\n ts = [],\n samples = 8,\n newDrag = false,\n dragOpt = model.properties.viewPortDrag || false,\n vx, vy, t,\n dragBehavior;\n\n if (dragOpt === false) {\n // This causes that drag behavior will be removed and dragging of\n // other nodes will work again. It's based on the d3 implementation,\n // please see drag() function here:\n // https://github.com/mbostock/d3/blob/master/src/behavior/drag.js\n plotContainer.on(\"mousedown.drag\", null)\n .on(\"touchstart.drag\", null)\n .classed(\"draggable\", false);\n return;\n }\n\n dragBehavior = d3.behavior.drag();\n dragBehavior.on(\"dragstart\", function() {\n newDrag = true;\n xs.length = 0;\n ys.length = 0;\n ts.length = 0;\n updateArrays();\n\n // Prevent default on mousemove. It's necessary when we deal with synthetic mouse\n // events translated from touch events. Then we have to prevent default action (panning,\n // zooming etc.).\n d3.select(window).on(\"mousemove.viewport-drag\", function() {\n d3.event.preventDefault();\n });\n }).on(\"drag\", function() {\n var dx = dragOpt === \"y\" ? 0 : model2px.invert(d3.event.dx),\n dy = dragOpt === \"x\" ? 0 : model2px.invert(d3.event.dy);\n model.properties.viewPortX -= dx;\n model.properties.viewPortY += dy;\n dispatch.viewportDrag();\n updateArrays();\n }).on(\"dragend\", function() {\n d3.select(window).on(\"mousemove.viewport-drag\", null);\n\n updateArrays();\n var last = xs.length - 1,\n dt = ts[last] - ts[0];\n // Prevent from division by 0.\n if (dt < 1e-5) return;\n // When time difference between last 'drag' and 'dragend' events is\n // bigger than 100ms assume that there should be no interia (it means\n // that pointer was staying in one place > 100ms just before 'mouseup').\n if (ts[last] - ts[last - 1] > 100) return;\n vx = (xs[last] - xs[0]) / dt;\n vy = (ys[last] - ys[0]) / dt;\n t = ts[last];\n newDrag = false;\n d3.timer(step);\n });\n\n plotContainer.call(dragBehavior).classed(\"draggable\", true);\n\n function updateArrays() {\n xs.push(model.properties.viewPortX);\n ys.push(model.properties.viewPortY);\n ts.push(performance.now());\n if (xs.length > samples) {\n xs.shift();\n ys.shift();\n ts.shift();\n }\n }\n\n function step() {\n if (newDrag) return true;\n\n var now = performance.now(),\n dt = now - t,\n ax = -0.003 * vx,\n ay = -0.003 * vy;\n\n // Update positions.\n model.properties.viewPortX += vx * dt + 0.5 * ax * dt * dt;\n model.properties.viewPortY += vy * dt + 0.5 * ay * dt * dt;\n dispatch.viewportDrag();\n // Update velocities.\n vx += ax * dt;\n vy += ay * dt;\n // Update last time.\n t = now;\n\n if (Math.abs(vx) < 1e-5 && Math.abs(vy) < 1e-5) {\n return true;\n }\n return false;\n }\n }\n\n function removeClickHandlers() {\n var selector;\n for (selector in clickHandler) {\n if (clickHandler.hasOwnProperty(selector)) {\n plotContainer.selectAll(selector).on(\"click.custom\", null);\n }\n }\n }\n\n function init() {\n // Setup model view state.\n renderContainer();\n viewportDragging();\n\n clickHandler = {};\n dragHandler = {};\n\n // Register listeners.\n // Redraw container each time when some visual-related property is changed.\n model.addPropertiesListener([\"backgroundColor\"], api.repaint);\n model.addPropertiesListener([\"gridLines\", \"xunits\", \"yunits\", \"xlabel\", \"ylabel\",\n \"viewPortX\", \"viewPortY\", \"viewPortZoom\"\n ],\n renderContainer);\n model.addPropertiesListener([\"viewPortDrag\"],\n viewportDragging);\n\n }\n\n api = {\n get $el() {\n return $el;\n },\n get node() {\n return node;\n },\n get foregroundContainer() {\n return foregroundContainer;\n },\n get model2px() {\n return model2px;\n },\n get model2canvas() {\n return model2canvas;\n },\n get model2pxInv() {\n return model2pxInv;\n },\n get model2canvasInv() {\n return model2canvasInv;\n },\n get i18n() {\n return i18n;\n },\n get setFocus() {\n return setFocus;\n },\n get fontFamily() {\n // Note that we intentionally return font-family of the model container instead of\n // the interactive container. Custom theme may apply some font to interactive container,\n // but it may want to keep fonts inside model unchanged.\n return this.$el.css('font-family');\n },\n get getFontSizeInPixels() {\n return getFontSizeInPixels;\n },\n get url() {\n return modelUrl;\n },\n get clickHandler() {\n return clickHandler;\n },\n get dragHandler() {\n return dragHandler;\n },\n\n get hitTestCallback() {\n return hitTestingHelper.hitTestCallback;\n },\n\n get mouseupCallback() {\n return hitTestingHelper.mouseupCallback;\n },\n\n repaint: function() {\n setupBackground();\n if (renderer.repaint) renderer.repaint();\n\n api.updateClickHandlers();\n\n api.renderCanvas();\n },\n\n /**\n Renderers call this method to append a \"viewport\" svg element on behalf of a renderer.\n\n Viewport svgs are drawn to the exact same dimensions at the exact same screen coordinates\n (they overlap each other exactly.) Viewports added later are drawn above viewports added\n earlier, but are transparent.\n\n Viewports can contain layering elements;\n\n What makes the viewports special is that their viewBox attribute is automatically adjusted\n when the model viewport (visible part of the model) is adjusted. Renderers can just draw to\n the viewport element without needing to think about\n\n Viewports are added in front of all viewports previously added. At the moment, they cannot\n be reordered.\n */\n appendViewport: function() {\n var parent = pixiRenderers.length > 0 ? foregroundGroup : backgroundGroup;\n return parent.append(\"g\");\n },\n\n /**\n Please see .appendViewport() docs.\n The main difference is that it returns PIXI.DisplayObjectContainer object and related\n canvas (where container will be rendered) instead of SVG group element.\n\n Note that mousemove events will be always passed to this viewport.\n */\n appendPixiViewport: function() {\n var pixiRenderer, pixiStage;\n var browser;\n var newRenderer;\n\n if (pixiRenderers.length === 0) {\n pixiRenderer = getPixiRenderer(cx, cy);\n pixiStage = new PIXI.Stage(null);\n\n node.appendChild(pixiRenderer.view);\n d3.select(pixiRenderer.view)\n .attr(\"class\", \"pixi-viewport\")\n .style(\"z-index\", nextViewportZIndex())\n .call(layeredOnTop);\n\n pixiRenderers.push(pixiRenderer);\n pixiStages.push(pixiStage);\n\n // Cascade events into this viewport.\n hitTestingHelper.addLayer(pixiRenderer.view);\n hitTestingHelper.passMouseMove(foregroundContainer.node(), pixiRenderers[0].view);\n }\n\n var pixiContainer = new PIXI.DisplayObjectContainer();\n pixiStages[0].addChild(pixiContainer);\n pixiContainers.push(pixiContainer);\n\n // We return container instead of stage, as we can apply view port transformations to it.\n // Stage transformations seem to be ignored by the PIXI renderer.\n return {\n pixiContainer: pixiContainer,\n canvas: pixiRenderers[0].view\n };\n },\n\n resize: function() {\n renderContainer();\n api.repaint();\n\n if (selectBrush) {\n brushContainer.select(\"g.select-area\").call(selectBrush);\n }\n\n if (renderer.resize) renderer.resize();\n\n api.renderCanvas();\n },\n\n setup: function() {\n if (renderer.setup) renderer.setup(model);\n\n api.renderCanvas();\n },\n\n update: function() {\n if (renderer.update) renderer.update();\n\n api.renderCanvas();\n },\n\n renderCanvas: function() {\n var i, len;\n // For now we follow that each Pixi viewport has just one PIXI.Stage.\n for (i = 0, len = pixiRenderers.length; i < len; i++) {\n pixiRenderers[i].render(pixiStages[i]);\n }\n },\n\n getHeightForWidth: function(width) {\n var aspectRatio = viewport.width / viewport.height;\n return width / aspectRatio;\n },\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n removeClickHandlers();\n api.setSelectHandler(null);\n init();\n\n if (renderer.bindModel) renderer.bindModel(newModel, newModelUrl);\n },\n\n pos: function() {\n // Add a pos() function so the model renderer can more easily\n // manipulate absolutely positioned dom elements it may create or\n // manage.\n var rect = {\n bottom: 0,\n top: 0,\n height: 0,\n left: 0,\n right: 0,\n width: 0\n };\n if ($el) {\n rect.top = $el.position().top;\n rect.left = $el.position().left;\n rect.width = $el.width();\n rect.height = $el.height();\n rect.bottom = rect.top + rect.height;\n rect.right = rect.left + rect.width;\n }\n return rect;\n },\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n /**\n * Sets custom click handler.\n *\n * @param {string} selector Selector string defining clickable objects.\n * @param {Function} handler Custom click handler. It will be called\n * when object is clicked with (x, y, d, i) arguments:\n * x - x coordinate in model units,\n * y - y coordinate in model units,\n * d - data associated with a given object (can be undefined!),\n * i - ID of clicked object (usually its value makes sense if d is defined).\n */\n setClickHandler: function(selector, handler) {\n if (typeof handler !== \"function\") {\n throw new Error(\"Click handler should be a function.\");\n }\n clickHandler[selector] = handler;\n api.updateClickHandlers();\n },\n\n /**\n * Applies all custom click handlers to objects matching selector\n * Note that this function should be called each time when possibly\n * clickable object is added or repainted!\n */\n updateClickHandlers: function() {\n var selector;\n\n function getClickHandler(handler) {\n return function(d, i) {\n if (d3.event.defaultPrevented) return;\n // Get current coordinates relative to the plot area!\n var coords = d3.mouse(backgroundRect.node()),\n x = model2px.invert(coords[0]),\n y = model2pxInv.invert(coords[1]);\n console.log(\"[view] click at (\" + x.toFixed(3) + \", \" + y.toFixed(3) + \")\");\n handler(x, y, d, i);\n };\n }\n\n for (selector in clickHandler) {\n if (clickHandler.hasOwnProperty(selector)) {\n // Use 'custom' namespace to don't overwrite other click handlers which\n // can be added by default.\n d3.selectAll(selector).on(\"click.custom\", getClickHandler(clickHandler[selector]));\n }\n }\n },\n\n /**\n * Sets custom select handler. When you provide function as a handler, select action\n * is enabled and the provided handler executed when select action is finished.\n * To disable select action, pass 'null' as an argument.\n *\n * @param {Function} handler Custom select handler. It will be called\n * when select action is finished with (x, y, w, h) arguments:\n * x - x coordinate of lower left selection corner (in model units),\n * y - y coordinate of lower left selection corner (in model units),\n * width - width of selection rectangle (in model units),\n * height - height of selection rectangle (in model units).\n *\n * Pass 'null' to disable select action.\n */\n setSelectHandler: function(handler) {\n if (typeof handler !== \"function\" && handler !== null) {\n throw new Error(\"Select handler should be a function or null.\");\n }\n // Remove previous select handler.\n brushContainer.select(\"g.select-area\").remove();\n if (handler === null) {\n // Previous handler removed, so just return.\n selectBrush = null;\n return;\n }\n selectBrush = d3.svg.brush()\n .x(model2px)\n .y(model2pxInv)\n .on(\"brushstart.select\", function() {\n // Prevent default on mousemove. It's necessary when we deal with synthetic mouse\n // events translated from touch events. Then we have to prevent default action (panning,\n // zooming etc.).\n d3.select(window).on(\"mousemove.select\", function() {\n d3.event.preventDefault();\n });\n })\n .on(\"brushend.select\", function() {\n d3.select(window).on(\"mousemove.select\", null);\n\n var r = selectBrush.extent(),\n x = r[0][0],\n y = r[0][1],\n width = r[1][0] - x,\n height = r[1][1] - y;\n\n console.log(\"[view] selection area (\" + x.toFixed(3) + \", \" +\n y.toFixed(3) + \"), width: \" + width + \", height: \" + height);\n\n // Call the user defined callback, passing selected area, as\n // rectangle defined by:\n // x, y, width, height\n // where (x, y) defines its lower left corner in model units.\n handler(x, y, width, height);\n // Clear and hide the brush.\n selectBrush.clear();\n // Redraw brush (which is now empty).\n brushContainer.select(\"g.select-area\").call(selectBrush);\n });\n // Add a new \"g\" to easily remove it while\n // disabling / reseting select action.\n brushContainer.append(\"g\").classed(\"select-area\", true).call(selectBrush);\n },\n /**\n * Sets custom drag handler. Note that dragging behavior is very specific for implementation\n * and it's done in the particular renderers. That's why this functions only provides handler\n * for renderers in .dragHandler property (plain object). Renderers that implement dragging\n * behavior can tests whether drag handler for a given object type is available, e.g.:\n * if (svgContainer.dragHandler.someObject) {\n * svgContainer.dragHandler.someObject(x, y, d, i);\n * }\n * This method is mostly about convention, it doesn't provide any special behavior.\n *\n * @param {string} selector String defining draggable objects.\n * @param {Function} handler Custom drag handler. It will be called\n * when object is dragged with (x, y, d, i) arguments:\n * x - x coordinate in model units,\n * y - y coordinate in model units,\n * d - data associated with a given object (can be undefined!),\n * i - ID of an object (usually its value makes sense if d is defined).\n */\n setDragHandler: function(type, handler) {\n dragHandler[type] = handler;\n }\n };\n\n // Initialization.\n // jQuery object with model container.\n $el = $(\"
\")\n .attr({\n \"id\": \"model-container\",\n \"class\": \"container\",\n \"tabindex\": getNextTabIndex\n })\n // Set initial dimensions.\n .css({\n \"width\": \"50px\",\n \"height\": \"50px\"\n });\n // DOM element.\n node = $el[0];\n\n // REF TODO ugly\n if (model) {\n init();\n }\n renderer = new Renderer(api, model);\n\n return api;\n};\n","\n/**\n * Tiny module providing useful functions for color manipulation.\n */\nfunction d3rgba(color) {\n // Use regexp to parse rgba if it's necessary.\n var rgba = color.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\)/i);\n if (rgba !== null) {\n return {\n rgb: d3.rgb(rgba[1], rgba[2], rgba[3]),\n a: Number(rgba[4])\n };\n } else {\n return {\n rgb: d3.rgb(color),\n a: 1\n };\n }\n}\n\nexport default {\n /**\n * d3.rgb is handy, however it cannot parse RGBA colors.\n * @param {string} color Web-compatible color definition (e.g. \"red\", \"#ff0012\", \"#000\", rgba(10,10,10,0.5).\n * @return {object} Object containing two properties: `rgb` - d3.rgb color and `a` - alpha value.\n */\n d3rgba: d3rgba,\n\n /**\n * Returns color contrasting to specified background color (black or white).\n * Note that if background color specifies alpha channel (e.g. rgba(0,0,0,0.5)),\n * it will be ignored!\n * @param {string} bg Web-compatible color definition (e.g. \"red\", \"#ff0012\", \"#000\").\n * @return {string} Contrasting color - \"#000\" or \"#fff\".\n */\n contrastingColor: function(bg) {\n bg = d3rgba(bg).rgb;\n // Calculate luminance in YIQ color space.\n // This ensures that color will be visible on background.\n // This simple algorithm is described here:\n // http://www.w3.org/TR/AERT#color-contrast\n return (bg.r * 299 + bg.g * 587 + bg.b * 114) / 1000 >= 128 ? '#000' : '#fff';\n },\n\n /**\n * Converts color string to number.\n * @param {string} colorString Web-compatible color definition (e.g. \"red\", \"#ff0012\", \"#000\").\n * @return {number} Numeric value, e.g. 0xff000 when argument is \"#f00\", \"#ff0000\" or \"red\".\n */\n color2number: function(colorString) {\n return parseInt(d3rgba(colorString).rgb.toString().substr(1), 16);\n }\n};\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nSimple module which provides context menu for amino acids. It allows\nto dynamically change type of amino acids in a convenient way.\nIt uses jQuery.contextMenu plug-in.\n\nCSS style definition: sass/lab/_context-menu.sass\n*/\nimport aminoacids from 'models/md2d/models/aminoacids-helper';\n\n// Classes for styling. Note that CSS is used for styling, see header.\nconst MENU_CLASS = \"aminoacids-menu\";\nconst HYDROPHOBIC_CLASS = \"hydrophobic\";\nconst HYDROPHOBIC_CAT_CLASS = \"hydrophobic-category\";\nconst HYDROPHILIC_CLASS = \"hydrophilic\";\nconst HYDROPHILIC_CAT_CLASS = \"hydrophilic-category\";\nconst POS_CHARGE_CLASS = \"pos-charge\";\nconst NEG_CHARGE_CLASS = \"neg-charge\";\nconst MARKED_CLASS = \"marked\";\n\n// Shows given category.\nconst showCategory = function(type, animate) {\n const func = {\n show: animate ? \"slideDown\" : \"show\",\n hide: animate ? \"slideUp\" : \"hide\"\n };\n if (type === \"hydrophobic\") {\n $(`.${HYDROPHOBIC_CLASS}`)[func.show]();\n $(`.${HYDROPHILIC_CLASS}`)[func.hide]();\n $(`.${HYDROPHOBIC_CAT_CLASS}`).addClass(\"expanded\");\n return $(`.${HYDROPHILIC_CAT_CLASS}`).removeClass(\"expanded\");\n } else {\n $(`.${HYDROPHOBIC_CLASS}`)[func.hide]();\n $(`.${HYDROPHILIC_CLASS}`)[func.show]();\n $(`.${HYDROPHOBIC_CAT_CLASS}`).removeClass(\"expanded\");\n return $(`.${HYDROPHILIC_CAT_CLASS}`).addClass(\"expanded\");\n }\n};\n\nexport default {\n /*\n Register context menu for DOM elements defined by @selector.\n @model, @view are associated model and view, used to set\n properties and redraw view. @getClickedAtom should return data\n of the clicked atom.\n */\n register(model, view, selector, getClickedAtom) {\n const {\n i18n\n } = view;\n // Unregister the same menu first.\n $.contextMenu(\"destroy\", selector);\n // Register new one.\n $.contextMenu({\n // Selector defines DOM elements which can trigger this menu.\n selector,\n // Append to \".lab-responsive-content\" to enable dynamic font-scaling.\n appendTo: \".lab-responsive-content\",\n // Class of the menu.\n className: MENU_CLASS,\n // Disable animation of the whole menu. Use standard show/hide instead\n // of slideDown/slideUp.\n animation: {\n show: \"show\",\n hide: \"hide\"\n },\n // Left click.\n trigger: \"left\",\n // Default callback for every item.\n callback(key, options) {\n // Get properties of atom representing amino acid.\n const props = getClickedAtom();\n // Remove current selection. It won't be handled by events.#hide callback defined below,\n // because we modify element property. Also, do not setup new selection, as it makes\n // no sense - after click the menu is hidden.\n const marked = aminoacids.getAminoAcidByElement(props.element).abbreviation;\n options.items[marked].$node.removeClass(MARKED_CLASS);\n // Translate abbreviation to element ID.\n const elemId = aminoacids.abbrToElement(key);\n // Set amino acid type.\n model.setAtomProperties(props.idx, {\n element: elemId\n });\n // Redraw view.\n // TODO: model should dispatch appropriate event, which should trigger repaint automatically.\n return view.repaint();\n },\n\n // Note that this function is almost the same as the default implementation\n // in jQuery.contextMenu. However, there is a small fix. Very often the height of menu was\n // reported incorrectly what was causing incorrect positioning.\n // For example menu was rendered at the bottom of the screen and truncated or scrollbars were needed,\n // when there was a lot of free place above.\n position(opt, x, y) {\n let offset;\n const $win = $(window);\n // determine contextMenu position\n if (!x && !y) {\n opt.determinePosition.call(this, opt.$menu);\n return;\n } else if ((x === \"maintain\") && (y === \"maintain\")) {\n // x and y must not be changed (after re-show on command click)\n offset = opt.$menu.position();\n } else {\n // x and y are given (by mouse event)\n const triggerIsFixed = opt.$trigger.parents().andSelf()\n .filter(function() {\n return $(this).css('position') === \"fixed\";\n }).length;\n\n if (triggerIsFixed) {\n y -= $win.scrollTop();\n x -= $win.scrollLeft();\n }\n\n offset = {\n top: y,\n left: x\n };\n }\n\n // correct offset if viewport demands it\n const bottom = $win.scrollTop() + $win.height();\n const right = $win.scrollLeft() + $win.width();\n\n /*\n !!! Workaround for the correct positioning:\n Use scrollHeight / scrollWidth as these functions return correct height / width\n in contrast to opt.$menu.height() / opt.$menu.width().\n */\n const height = opt.$menu[0].scrollHeight;\n const width = opt.$menu[0].scrollWidth;\n\n if ((offset.top + height) > bottom) {\n offset.top -= height;\n }\n\n if ((offset.left + width) > right) {\n offset.left -= width;\n }\n\n // Increase offset to prevent accidental clicks.\n offset.left += 1;\n return opt.$menu.css(offset);\n },\n\n events: {\n // Mark currently selected AA type.\n show(options) {\n const atom = getClickedAtom();\n const aminoAcidProps = atom && aminoacids.getAminoAcidByElement(atom.element);\n if (!atom || !aminoAcidProps) {\n return false;\n }\n\n const key = aminoAcidProps.abbreviation;\n const {\n $node\n } = options.items[key];\n $node.addClass(MARKED_CLASS);\n if ($node.hasClass(HYDROPHOBIC_CLASS)) {\n showCategory(\"hydrophobic\");\n } else {\n showCategory(\"hydrophilic\");\n }\n // Ensure that this callback returns true (required to show menu).\n return true;\n },\n\n // Remove marker added above.\n hide(options) {\n const props = getClickedAtom();\n const key = aminoacids.getAminoAcidByElement(props.element).abbreviation;\n options.items[key].$node.removeClass(MARKED_CLASS);\n // Ensure that this callback returns true (required to hide menu).\n return true;\n }\n },\n\n items: {\n // Category header.\n \"Hydrophobic\": {\n name: i18n.t(\"md2d.aminoacid_menu.hydrophobic\"),\n className: `${HYDROPHOBIC_CAT_CLASS}`,\n callback() {\n showCategory(\"hydrophobic\", true);\n // Return false to prevent menu from being hidden.\n return false;\n }\n },\n // Items below use default callback.\n \"Gly\": {\n name: i18n.t(\"md2d.aminoacid_menu.glycine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Ala\": {\n name: i18n.t(\"md2d.aminoacid_menu.alanine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Val\": {\n name: i18n.t(\"md2d.aminoacid_menu.valine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Leu\": {\n name: i18n.t(\"md2d.aminoacid_menu.leucine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Ile\": {\n name: i18n.t(\"md2d.aminoacid_menu.isoleucine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Phe\": {\n name: i18n.t(\"md2d.aminoacid_menu.phenylalanine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Pro\": {\n name: i18n.t(\"md2d.aminoacid_menu.proline\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Trp\": {\n name: i18n.t(\"md2d.aminoacid_menu.tryptophan\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Met\": {\n name: i18n.t(\"md2d.aminoacid_menu.methionine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Cys\": {\n name: i18n.t(\"md2d.aminoacid_menu.cysteine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Tyr\": {\n name: i18n.t(\"md2d.aminoacid_menu.tyrosine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n // Category header.\n \"Hydrophilic\": {\n name: i18n.t(\"md2d.aminoacid_menu.hydrophilic\"),\n className: `${HYDROPHILIC_CAT_CLASS}`,\n callback() {\n showCategory(\"hydrophilic\", true);\n // Return false to prevent menu from being hidden.\n return false;\n }\n },\n // Items below use default callback.\n \"Asn\": {\n name: i18n.t(\"md2d.aminoacid_menu.asparagine\"),\n className: `${HYDROPHILIC_CLASS}`\n },\n \"Gln\": {\n name: i18n.t(\"md2d.aminoacid_menu.glutamine\"),\n className: `${HYDROPHILIC_CLASS}`\n },\n \"Ser\": {\n name: i18n.t(\"md2d.aminoacid_menu.serine\"),\n className: `${HYDROPHILIC_CLASS}`\n },\n \"Thr\": {\n name: i18n.t(\"md2d.aminoacid_menu.threonine\"),\n className: `${HYDROPHILIC_CLASS}`\n },\n \"Asp\": {\n name: i18n.t(\"md2d.aminoacid_menu.asparticacid\"),\n className: `${HYDROPHILIC_CLASS} ${NEG_CHARGE_CLASS}`\n },\n \"Glu\": {\n name: i18n.t(\"md2d.aminoacid_menu.glutamicacid\"),\n className: `${HYDROPHILIC_CLASS} ${NEG_CHARGE_CLASS}`\n },\n \"Lys\": {\n name: i18n.t(\"md2d.aminoacid_menu.lysine\"),\n className: `${HYDROPHILIC_CLASS} ${POS_CHARGE_CLASS}`\n },\n \"Arg\": {\n name: i18n.t(\"md2d.aminoacid_menu.arginine\"),\n className: `${HYDROPHILIC_CLASS} ${POS_CHARGE_CLASS}`\n },\n \"His\": {\n name: i18n.t(\"md2d.aminoacid_menu.histidine\"),\n className: `${HYDROPHILIC_CLASS} ${POS_CHARGE_CLASS}`\n }\n }\n });\n\n // Initially show only one category (longer) to ensure that menu has a real-life height.\n // It can be useful for determining of position.\n return showCategory(\"hydrophobic\");\n }\n};\n","\nimport alert from 'common/alert';\nimport amniacidContextMenu from 'models/md2d/views/aminoacid-context-menu';\n// Dependencies.\nvar POINT_CACHE = {},\n\n TRANSLATE = 'translate',\n ROTATE = 'rotate';\n\nfunction getAngle(cx, cy, x, y) {\n return Math.atan2(x - cx, y - cy);\n}\n\nfunction rotate(x, y, angle) {\n return {\n x: x * Math.cos(angle) - y * Math.sin(angle),\n y: x * Math.sin(angle) + y * Math.cos(angle)\n };\n}\n\nexport default function AtomsInteractions(modelView, model, target) {\n var api,\n\n m2px,\n m2pxInv,\n\n atoms,\n modelWidth,\n modelHeight,\n\n $target,\n targetOffset,\n targetOversampling,\n viewportX,\n viewportY,\n\n downAtom,\n contextMenuAtom,\n dragging, dragged;\n\n //**********************************************************************************************\n // Event handlers related to particular atom:\n function mouseDownHandler(x, y, atom, e) {\n // Dragging is only allowed when user touches an atom or uses *left* mouse button (== 0).\n // Right mouse button can interfere with context menus.\n if (e.button === 0) {\n var mode = null;\n if (isAtomRotatable(atom)) {\n // When atom can be rotated (which means it's part of the molecule) we have more options.\n // 'onAtomDrag' model property defines preferred drag behavior.\n var modes = model.get('onAtomDrag') === TRANSLATE ? [TRANSLATE, ROTATE] : [ROTATE, TRANSLATE];\n // Option key can activate non-default drag behavior.\n mode = e.altKey ? modes[1] : modes[0];\n } else if (isAtomDraggable(atom)) {\n mode = TRANSLATE;\n }\n if (mode !== null) {\n dragBehavior(downAtom, mode);\n }\n }\n }\n\n function mouseOverHandler(x, y, atom, e) {\n // noop\n }\n\n function mouseOutHandler(x, y, e) {\n // noop\n }\n\n function mouseUpHandler(x, y, atom, e) {\n // noop\n }\n\n function clickHandler(x, y, atom, e) {\n // Custom click handlers for atoms are not supposed to be triggered if the atom was dragged\n if (!dragged && modelView.clickHandler[\".atom\"]) {\n modelView.clickHandler[\".atom\"](x, y, atom, atom.idx);\n }\n }\n\n function contextMenuHandler(x, y, atom, e) {\n // noop\n }\n\n //**********************************************************************************************\n // Event handlers related to whole target element (canvas):\n function mouseDownCanvas(e) {\n var p = getClickCoords(e);\n\n downAtom = getAtomUnder(p.x, p.y);\n contextMenuAtom = null;\n dragged = false;\n\n modelView.hitTestCallback(!!downAtom);\n if (downAtom) {\n mouseDownHandler(p.x, p.y, downAtom, e);\n }\n }\n\n function mouseMoveCanvas(e) {\n var p = getClickCoords(e),\n atom = getAtomUnder(p.x, p.y);\n\n modelView.hitTestCallback(!!atom);\n if (atom) {\n mouseOverHandler(p.x, p.y, atom, e);\n } else {\n mouseOutHandler(p.x, p.y, e);\n }\n if (!dragging) {\n setCursorForAtom(atom);\n }\n }\n\n function mouseUpCanvas(e) {\n var p = getClickCoords(e),\n upAtom = getAtomUnder(p.x, p.y),\n isDOMClick = false;\n\n modelView.hitTestCallback(!!upAtom);\n\n if (upAtom) {\n mouseUpHandler(p.x, p.y, upAtom, e);\n if (upAtom === downAtom) {\n // Regardless of whether or not the atom was dragged, if mouseup target == mousedown\n // target we should issue a DOM click event.\n isDOMClick = true;\n clickHandler(p.x, p.y, downAtom);\n }\n }\n\n modelView.mouseupCallback(isDOMClick);\n downAtom = null;\n }\n\n function mouseOverCanvas(e) {\n // noop\n }\n\n function mouseOutCanvas(e) {\n var p = getClickCoords(e);\n mouseOutHandler(p.x, p.y, e);\n setCursor(\"auto\");\n }\n\n function contextMenuCanvas(e) {\n var p = getClickCoords(e);\n\n contextMenuAtom = !dragged && getAtomUnder(p.x, p.y);\n\n modelView.hitTestCallback(!!contextMenuAtom);\n if (contextMenuAtom) {\n contextMenuHandler(p.x, p.y, contextMenuAtom);\n }\n }\n //**********************************************************************************************\n\n function setCursorFromEvent(e) {\n // If pointer is over some other element just restore the \"auto\" pointer.\n if (e.target !== target) {\n setCursor(\"auto\");\n return;\n }\n var p = getClickCoords(e);\n setCursorForAtom(getAtomUnder(p.x, p.y));\n }\n\n function isAtomDraggable(atom) {\n if (!atom) {\n return false;\n }\n if (model.isStopped()) {\n return atom.draggableWhenStopped || model.properties.isBeingEdited;\n }\n return atom.draggable;\n }\n\n function isAtomRotatable(atom) {\n if (!atom) {\n return false;\n }\n // Note that getMoleculeAtoms doesn't include atom index that we provide, so > 0 means it's part of the molecule.\n // We also require atom to be draggable since the rotation is triggered by dragging.\n return isAtomDraggable(atom) && model.isStopped() && model.getMoleculeAtoms(atom.idx).length > 0;\n }\n\n function setCursorForAtom(atom) {\n if (isAtomDraggable(atom)) {\n setCursor(\"move\");\n } else {\n setCursor(\"auto\");\n }\n }\n\n var cursorVal;\n\n function setCursor(name) {\n if (cursorVal !== name) {\n cursorVal = name;\n document.documentElement.style.cursor = name;\n }\n }\n\n function init() {\n m2px = modelView.model2canvas;\n m2pxInv = modelView.model2canvasInv;\n\n $target = $(target);\n $target.addClass(\"atoms-interaction-layer\");\n\n $target.on(\"mousedown.atoms-interactions\", mouseDownCanvas);\n $target.on(\"mouseup.atoms-interactions\", mouseUpCanvas);\n $target.on(\"mousemove.atoms-interactions\", mouseMoveCanvas);\n $target.on(\"mouseover.atoms-interactions\", mouseOverCanvas);\n $target.on(\"mouseout.atoms-interactions\", mouseOutCanvas);\n $target.on(\"contextmenu.atoms-interactions\", contextMenuCanvas);\n\n api.bindModel(model);\n }\n\n function getAtomUnder(x, y) {\n var atom, ax, ay, ar;\n // Very important - start from the last atom. Order of atoms defines order of rendering.\n for (var i = atoms.length - 1; i >= 0; i--) {\n atom = atoms[i];\n ax = atom.x;\n ay = atom.y;\n ar = atom.radius;\n // Optimization: hit area is square.\n if (x > ax - ar && x < ax + ar && y > ay - ar && y < ay + ar) {\n return atom;\n }\n }\n return null;\n }\n\n function getClickCoords(e, useCachedDimensionsAndViewport) {\n if (!useCachedDimensionsAndViewport) {\n // Sometimes we can risk and assume that model view wasn't resized or view port properties\n // changed (e.g. during atom dragging).\n targetOffset = $target.offset();\n targetOversampling = $target.attr(\"width\") / $target.width();\n // Undefined is a perfectly correct value for view port coords, it means that the whole\n // model area is being displayed.\n viewportX = model.get(\"viewPortX\") || 0;\n viewportY = model.get(\"viewPortY\") || 0;\n }\n\n POINT_CACHE.x = m2px.invert((e.pageX - targetOffset.left) * targetOversampling) + viewportX;\n POINT_CACHE.y = m2pxInv.invert((e.pageY - targetOffset.top) * targetOversampling) + viewportY;\n return POINT_CACHE;\n }\n\n function dragBehavior(atom, mode) {\n var translate = mode === TRANSLATE,\n originalPositions, prevAngle, molecule, cx, cy;\n\n $(window).on(\"mousemove.lab-drag\", function(e) {\n // Prevent accidental text selection or another unwanted action while dragging.\n e.preventDefault();\n\n // We can use cached canvas dimensions, as they rather don't change between mousedown\n // and mousemove.\n var p = getClickCoords(e, true);\n var x = p.x;\n var y = p.y;\n\n if (!dragged) {\n // Lazily initialize drag process when user really drags an atom (not only clicks it).\n originalPositions = getMoleculePositions(atom);\n if (translate) {\n if (!model.isStopped() && atom.draggable) {\n model.liveDragStart(atom.idx);\n }\n } else { // rotate\n molecule = model.getMoleculeAtoms(atom.idx).concat(atom.idx);\n var bbox = model.getMoleculeBoundingBox(atom.idx);\n // A bit confusing, but bounding box returns values relative to the center of provided atom.\n cx = (atom.x + bbox.left + atom.x + bbox.right) * 0.5;\n cy = (atom.y + bbox.top + atom.y + bbox.bottom) * 0.5;\n prevAngle = getAngle(cx, cy, x, y);\n }\n dragging = true;\n dragged = true;\n }\n\n if (translate) {\n translateMolecule(atom, x, y);\n } else { // rotate\n var newAngle = getAngle(cx, cy, x, y);\n rotateMolecule(molecule, cx, cy, prevAngle - newAngle);\n prevAngle = newAngle;\n }\n setCursor(\"move\");\n // Custom drag handler. Note that it works both for translation and rotation.\n if (modelView.dragHandler.atom) {\n modelView.dragHandler.atom(x, y, atom, atom.idx);\n }\n modelView.update();\n }).on(\"selectstart.lab-drag\", function(e) {\n // Disable selection behavior while dragging an atom. It's supported and required in IE and\n // Safari. In Chrome it's enough to call .preventDefault() on mousemove event.\n e.preventDefault();\n }).one(\"mouseup.lab-drag\", function(e) {\n $(window).off(\".lab-drag\");\n // If user only clicked an atom (mousedown + mouseup, no mousemove), nothing to do.\n if (!dragged) return;\n dragging = false;\n // Prevent accidental text selection or another unwanted action while dragging.\n e.preventDefault();\n // Pointer can be over atom or not (e.g. when user finished dragging below other object).\n setCursorFromEvent(e);\n\n if (translate && !model.isStopped()) {\n model.liveDragEnd();\n }\n\n // Validate final position.\n if (model.isStopped()) {\n if (!isPositionValid(atom.idx)) {\n alert(modelView.i18n.t('md2d.invalid_object_position_alert'));\n restoreMoleculePositions(originalPositions);\n modelView.update();\n }\n }\n });\n }\n\n function getMoleculePositions(atom) {\n var molecule = model.getMoleculeAtoms(atom.idx).concat(atom.idx);\n return molecule.map(function(idx) {\n var atom = model.getAtomProperties(idx);\n return {\n idx: idx,\n x: atom.x,\n y: atom.y\n }\n });\n }\n\n function restoreMoleculePositions(moleculePositions) {\n moleculePositions.forEach(function(data) {\n setAtomPosition(data.idx, data.x, data.y);\n });\n }\n\n function translateMolecule(atom, x, y) {\n var bbox = model.getMoleculeBoundingBox(atom.idx);\n if (bbox.left + x < 0) x = 0 - bbox.left;\n if (bbox.right + x > modelWidth) x = modelWidth - bbox.right;\n if (bbox.bottom + y < 0) y = 0 - bbox.bottom;\n if (bbox.top + y > modelHeight) y = modelHeight - bbox.top;\n\n if (model.isStopped()) {\n setMoleculePosition(atom.idx, x, y);\n } else {\n model.liveDrag(x, y);\n }\n }\n\n function setAtomPosition(i, xpos, ypos) {\n return model.setAtomProperties(i, {\n x: xpos,\n y: ypos\n });\n }\n\n function setMoleculePosition(i, xpos, ypos) {\n // The last argument ensures that the whole molecule will be moved.\n return model.setAtomProperties(i, {\n x: xpos,\n y: ypos\n }, false, true);\n }\n\n function isPositionValid(atomIdx) {\n // To validate position it's enough to set properties (even empty set) and make sure that \"checkLocation\"\n // and \"moveMolecule\" arguments are set to true.\n return model.setAtomProperties(atomIdx, {}, true, true);\n }\n\n function rotateMolecule(molecule, cx, cy, angle) {\n if (angle === 0) return;\n\n var rotationAllowed = true;\n for (var i = 0, len = molecule.length; i < len; i++) {\n var idx = molecule[i];\n var atom = model.getAtomProperties(idx);\n var newCoords = rotate(atom.x - cx, atom.y - cy, angle);\n var posAllowed = setAtomPosition(idx, newCoords.x + cx, newCoords.y + cy);\n rotationAllowed = rotationAllowed && posAllowed;\n }\n return rotationAllowed;\n }\n\n api = {\n bindModel: function(newModel) {\n model = newModel;\n\n atoms = model.getAtoms();\n modelWidth = model.get(\"width\");\n modelHeight = model.get(\"height\");\n\n // .register method destroys old menu instances first, so it's safe to call it each time we bind a new model.\n amniacidContextMenu.register(model, modelView, \".atoms-interaction-layer\", function() {\n return contextMenuAtom;\n });\n }\n };\n\n init();\n\n return api;\n};\n","import PIXI from 'pixi.js';\nimport canvg from 'canvg';\nimport mustache from 'mustache';\nimport colorLib from 'common/views/color';\nimport AtomsInteractions from 'models/md2d/views/atoms-interactions';\nimport detectFontChange from 'common/layout/detect-font-change';\n\nvar\n FONT_WEIGHT = 'bold',\n // font-family needs to be unescaped to support fonts wrapped in '' (e.g. 'Comic Sans MS').\n ATOM_SVG_TPL =\n ' \\\n \\\n \\\n \\\n \\\n \\\n \\\n \\\n \\\n \\\n \\\n {{#excited}} \\\n \\\n \\\n \\\n {{/excited}} \\\n {{^excited}} \\\n \\\n \\\n {{/excited}} \\\n {{ label }} \\\n {{ label }} \\\n \\\n ',\n\n KE_SHADING_MIN_COLORS = [\"#FFFFFF\", \"#F2F2F2\", \"#A4A4A4\"],\n KE_SHADING_MAX_COLORS = [\"#FFFFFF\", \"#FF8080\", \"#FF2020\"],\n\n // Scales used for Charge Shading gradients.\n CHARGE_SHADING_STEPS = 25,\n NEUTRAL_COLORS = [\"#FFFFFF\", \"#f2f2f2\", \"#A4A4A4\"],\n chargeBlueLightColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#FFFFFF\", \"#ffefff\"]),\n chargeBlueMedColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#f2f2f2\", \"#9090FF\"]),\n chargeBlueDarkColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#A4A4A4\", \"#3030FF\"]),\n chargeRedLightColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#FFFFFF\", \"#dfffff\"]),\n chargeRedMedColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#f2f2f2\", \"#FF8080\"]),\n chargeRedDarkColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#A4A4A4\", \"#FF2020\"]),\n\n getChargeShadingColors = function(charge, style) {\n var chargeIndex = Math.round(Math.min(Math.abs(charge) / 3, 1) * CHARGE_SHADING_STEPS);\n chargeIndex /= CHARGE_SHADING_STEPS;\n if (style === 'biology' && charge > 0 || style === 'chemistry' && charge < 0) {\n return [chargeBlueLightColor(chargeIndex), chargeBlueMedColor(chargeIndex), chargeBlueDarkColor(chargeIndex)];\n } else if (style === 'biology' && charge < 0 || style === 'chemistry' && charge > 0) {\n return [chargeRedLightColor(chargeIndex), chargeRedMedColor(chargeIndex), chargeRedDarkColor(chargeIndex)];\n }\n return NEUTRAL_COLORS;\n },\n\n getHydrophobicityColors = function(h) {\n return h > 0 ? [\"#F0E6D1\", \"#E0A21B\", \"#AD7F1C\"] : [\"#dfffef\", \"#75a643\", \"#2a7216\"];\n },\n\n RENDERING_OPTIONS = [\"keShading\", \"chargeShading\", \"chargeShadingStyle\", \"atomNumbers\", \"showChargeSymbols\",\n \"atomRadiusScale\", \"aminoAcidColorScheme\", \"aminoAcidLabels\", \"useThreeLetterCode\", \"viewPortZoom\"\n ];\n\nexport default function AtomsRenderer(modelView, model, pixiContainer, canvas) {\n // Public API object to be returned.\n var api,\n\n container,\n\n m2px,\n m2pxInv,\n\n modelAtoms,\n viewAtoms,\n\n elementTex = {},\n\n modelWidth,\n modelHeight,\n\n // Rendering options:\n renderMode = {},\n\n interactions = new AtomsInteractions(modelView, model, canvas);\n\n function init() {\n modelWidth = model.get(\"width\");\n modelHeight = model.get(\"height\");\n readRenderingOptions();\n // Modes require .setup() call:\n model.addPropertiesListener(RENDERING_OPTIONS, function() {\n readRenderingOptions();\n api.setup();\n // TODO: we shouldn't call .renderCanvas() here. E.g. when keShading is toggled, rendering\n // will be triggered both by bonds renderer and atoms renderer.\n modelView.renderCanvas();\n });\n }\n\n function readRenderingOptions() {\n RENDERING_OPTIONS.forEach(function(name) {\n renderMode[name] = model.get(name);\n });\n }\n\n function getAtomColors(i) {\n var atom = modelAtoms[i],\n elID = atom.element,\n props = model.getElementProperties(elID),\n colorStr, color;\n\n if (atom.marked) {\n colorStr = model.get(\"markColor\");\n color = d3.rgb(colorStr);\n return [color.brighter(1).toString(), color.toString(), color.darker(1).toString()];\n }\n\n if (atom.aminoAcid) {\n switch (renderMode.aminoAcidColorScheme) {\n case \"charge\":\n return getChargeShadingColors(atom.charge, renderMode.chargeShadingStyle);\n case \"hydrophobicity\":\n return getHydrophobicityColors(atom.hydrophobicity);\n case \"chargeAndHydro\":\n if (atom.charge !== 0) {\n return getChargeShadingColors(atom.charge, renderMode.chargeShadingStyle);\n }\n return getHydrophobicityColors(atom.hydrophobicity);\n // case \"none\":\n // Do nothing, default rendering will be used.\n }\n }\n\n if (renderMode.keShading) {\n return KE_SHADING_MIN_COLORS;\n } else if (renderMode.chargeShading) {\n return getChargeShadingColors(atom.charge, renderMode.chargeShadingStyle);\n } else {\n if (typeof props.color === \"number\") {\n // Weird conversion, as we use color values literally imported from Classic MW. Perhaps we\n // should do that in MML -> JSON converter.\n colorStr = (props.color + Math.pow(2, 24)).toString(16);\n colorStr = \"000000\".substr(0, 6 - colorStr.length) + colorStr;\n color = d3.rgb(\"#\" + colorStr);\n } else {\n // Use custom helper, as d3.rgb cannot parse rgba strings.\n color = colorLib.d3rgba(props.color).rgb; // d3.rgb\n }\n return [color.brighter(1).toString(), color.toString(), color.darker(1).toString()];\n }\n }\n\n function getAtomOpacity(i) {\n var atom = modelAtoms[i],\n elID = atom.element,\n props = model.getElementProperties(elID);\n if (atom.marked || atom.aminoAcid || renderMode.keShading || renderMode.chargeShading) {\n // Special render modes, ignore atom's color.\n return atom.visible;\n }\n if (typeof props.color === \"number\") {\n // Colors specified in Classic MW format don't support alpha channel.\n return atom.visible;\n }\n // Color defined in HTML format can define alpha channel too (e.g. rgba(...)).\n return colorLib.d3rgba(props.color).a * atom.visible;\n }\n\n function getAtomTexture(i, colors) {\n var elID = modelAtoms[i].element,\n radius = m2px(model.getElementProperties(elID).radius) * renderMode.atomRadiusScale,\n excitation = modelAtoms[i].excitation,\n label = getAtomLabel(i),\n opacity = getAtomOpacity(i),\n key;\n\n colors = colors || getAtomColors(i);\n key = opacity > 0 ? (elID + \"-\" + radius + \"-\" + colors.join(\"\") + \"-\" + opacity + \"-\" + label.text + \"-\" + excitation + \"-\" + label.fontSize) :\n (radius + \"-invisible\");\n\n if (elementTex[key] === undefined) {\n var canv = document.createElement(\"canvas\"),\n tplData;\n\n watchFont(modelView.fontFamily);\n\n tplData = {\n width: excitation ? 4 * radius : 2 * radius,\n height: excitation ? 4 * radius : 2 * radius,\n lightCol: colors[0],\n medCol: colors[1],\n darkCol: colors[2],\n opacity: opacity,\n label: label.text,\n fontSize: label.fontSize,\n fontFamily: modelView.fontFamily,\n excited: excitation\n };\n\n canvg(canv, mustache.render(ATOM_SVG_TPL, tplData));\n\n // WebGL complains if the texture size is < 2px x 2px\n if (canv.width < 2) canv.width = 2;\n if (canv.height < 2) canv.height = 2;\n\n elementTex[key] = new PIXI.Texture.fromCanvas(canv);\n // canvg starts a timer, we don't need or want that timer\n canv.svg.stop();\n }\n return elementTex[key];\n }\n\n // TODO rename?\n function clearTextureCacheAndRedraw() {\n elementTex = {};\n viewAtoms.forEach(function(atom, i) {\n atom.setTexture(getAtomTexture(i));\n });\n modelView.renderCanvas();\n }\n\n function watchFont(font) {\n detectFontChange({\n font: font,\n weight: FONT_WEIGHT, // so it matches weight used in ATOM_SVG_TPL\n onchange: clearTextureCacheAndRedraw\n });\n }\n\n function getAtomLabel(i) {\n var textVal = \"\",\n sizeRatio = 0;\n\n if (renderMode.atomNumbers) {\n textVal = i;\n sizeRatio = 1.2;\n } else if (renderMode.aminoAcidLabels && renderMode.useThreeLetterCode && modelAtoms[i].label) {\n textVal = modelAtoms[i].label;\n sizeRatio = 1;\n } else if (renderMode.aminoAcidLabels && !renderMode.useThreeLetterCode && modelAtoms[i].symbol) {\n textVal = modelAtoms[i].symbol;\n sizeRatio = 1.4;\n } else if (renderMode.showChargeSymbols) {\n if (modelAtoms[i].charge > 0) {\n textVal = \"+\";\n } else if (modelAtoms[i].charge < 0) {\n textVal = \"-\";\n }\n sizeRatio = 1.6;\n }\n\n return {\n text: textVal,\n fontSize: sizeRatio * 16 // In fact: sizeRatio * atom radius. The value 16 is based on the\n // current SVG viewBox and \"r\" property.\n };\n }\n\n api = {\n setup: function() {\n var i, len, atom, keSprite;\n\n if (container) {\n pixiContainer.removeChild(container);\n }\n container = new PIXI.DisplayObjectContainer();\n pixiContainer.addChild(container);\n\n m2px = modelView.model2canvas;\n m2pxInv = modelView.model2canvasInv;\n\n viewAtoms = [];\n modelAtoms = model.getAtoms();\n\n for (i = 0, len = modelAtoms.length; i < len; ++i) {\n atom = new PIXI.Sprite(getAtomTexture(i));\n atom.anchor.x = 0.5;\n atom.anchor.y = 0.5;\n atom.i = i;\n atom.marked = modelAtoms[i].marked;\n viewAtoms.push(atom);\n container.addChild(atom);\n }\n\n if (renderMode.keShading) {\n for (i = 0, len = modelAtoms.length; i < len; ++i) {\n keSprite = new PIXI.Sprite(getAtomTexture(i, KE_SHADING_MAX_COLORS));\n keSprite.anchor.x = 0.5;\n keSprite.anchor.y = 0.5;\n viewAtoms[i].keSprite = keSprite;\n container.addChild(keSprite);\n }\n }\n\n api.update();\n },\n\n bindModel: function(newModel) {\n model = newModel;\n init();\n\n interactions.bindModel(newModel);\n },\n\n update: function() {\n var i, len, viewAtom, modelAtom, x, y, minKE, maxKE;\n\n for (i = 0, len = viewAtoms.length; i < len; ++i) {\n viewAtom = viewAtoms[i];\n modelAtom = modelAtoms[i];\n x = m2px(modelAtom.x);\n y = m2pxInv(modelAtom.y);\n\n viewAtom.position.x = x;\n viewAtom.position.y = y;\n\n if (modelAtom.marked !== viewAtom.marked) {\n // Make sure that marked state is always reflected by the view.\n viewAtom.setTexture(getAtomTexture(i));\n viewAtom.marked = modelAtoms[i].marked;\n }\n\n if (renderMode.keShading) {\n minKE = model.get('keShadingMinEnergy');\n maxKE = model.get('keShadingMaxEnergy');\n viewAtom.keSprite.alpha = Math.min((model.getAtomKineticEnergy(i) - minKE) / (maxKE - minKE), 1);\n viewAtom.keSprite.position.x = x;\n viewAtom.keSprite.position.y = y;\n }\n\n if (model.properties.useQuantumDynamics) {\n viewAtom.setTexture(getAtomTexture(i));\n }\n }\n },\n\n getAtomColors: getAtomColors,\n\n getAtomOpacity: getAtomOpacity\n };\n\n init();\n\n return api;\n};\n"," \nimport PIXI from 'pixi.js';\n// Dependencies.\nvar RADIAL_BOND_TYPES = {\n STANDARD_STICK: 101,\n LONG_SPRING: 102,\n BOND_SOLID_LINE: 103,\n GHOST: 104,\n UNICOLOR_STICK: 105,\n SHORT_SPRING: 106,\n DOUBLE_BOND: 107,\n TRIPLE_BOND: 108,\n DISULPHIDE_BOND: 109\n },\n\n RENDERING_OPTIONS = [\"keShading\", \"chargeShading\", \"chargeShadingStyle\", \"aminoAcidColorScheme\"];\n\nexport default function BondsRenderer(modelView, model, pixiContainer, atomsRenderer) {\n // Public API object to be returned.\n var api,\n\n m2px,\n m2pxInv,\n\n modelBonds,\n modelAtoms,\n\n graphics = new PIXI.Graphics();\n\n function init() {\n model.addPropertiesListener(RENDERING_OPTIONS, function() {\n api.setup();\n // TODO: we shouldn't call .renderCanvas() here. E.g. when keShading is toggled, rendering\n // will be triggered both by bonds renderer and atoms renderer.\n modelView.renderCanvas();\n });\n }\n\n function renderSpring(d) {\n var x1 = m2px(d.x1),\n y1 = m2pxInv(d.y1),\n x2 = m2px(d.x2),\n y2 = m2pxInv(d.y2),\n dx = x2 - x1,\n dy = y2 - y1,\n\n length = Math.sqrt(dx * dx + dy * dy) / m2px(0.01),\n\n numTurns = Math.floor(d.length * 24),\n springDiameter = length / numTurns,\n\n costheta = dx / length,\n sintheta = dy / length,\n cosThetaDiameter = costheta * springDiameter,\n sinThetaDiameter = sintheta * springDiameter,\n cosThetaSpikes = costheta * numTurns,\n sinThetaSpikes = sintheta * numTurns,\n pointX, pointY, i;\n\n graphics.lineStyle(getBondWidth(d), getBondColor(d, 1), getBondOpacity(d, 1));\n graphics.moveTo(x1, y1);\n for (i = 0; i < numTurns; i++) {\n if (i % 2 === 0) {\n pointX = x1 + (i + 0.5) * cosThetaDiameter - 0.5 * sinThetaSpikes;\n pointY = y1 + (i + 0.5) * sinThetaDiameter + 0.5 * cosThetaSpikes;\n } else {\n pointX = x1 + (i + 0.5) * cosThetaDiameter + 0.5 * sinThetaSpikes;\n pointY = y1 + (i + 0.5) * sinThetaDiameter - 0.5 * cosThetaSpikes;\n }\n graphics.lineTo(pointX, pointY);\n }\n graphics.lineTo(x2, y2);\n }\n\n function renderBond(d) {\n var x1 = m2px(d.x1),\n y1 = m2pxInv(d.y1),\n x2 = m2px(d.x2),\n y2 = m2pxInv(d.y2),\n r1 = m2px(modelAtoms[d.atom1].radius),\n r2 = m2px(modelAtoms[d.atom2].radius),\n dx = x2 - x1,\n dy = y2 - y1,\n len = Math.sqrt(dx * dx + dy * dy);\n\n // Fast path if bond is invisible anyway. Use 2 ratio, because when length is exactly equal\n // to r1 and r2 sum, double and triple bonds can be still visible (they are wide enough).\n if (2 * len - r1 - r2 <= 0) return;\n\n var midRatio = 0.5 * (len + r1 - r2) / len,\n xMid = x1 + midRatio * dx,\n yMid = y1 + midRatio * dy,\n\n bondWidth = getBondWidth(d),\n bondColor1 = getBondColor(d, 1),\n bondColor2 = getBondColor(d, 2),\n bondOpacity1 = getBondOpacity(d, 1),\n bondOpacity2 = getBondOpacity(d, 2),\n bondShift, bondAngle, xs, ys;\n\n if (d.type === RADIAL_BOND_TYPES.DOUBLE_BOND) {\n bondShift = m2px(Math.min(modelAtoms[d.atom1].radius, modelAtoms[d.atom2].radius)) * 0.4;\n bondAngle = Math.atan2(dy, dx);\n xs = Math.sin(bondAngle) * bondShift;\n ys = -Math.cos(bondAngle) * bondShift;\n\n graphics.lineStyle(bondWidth, bondColor1, bondOpacity1);\n graphics.moveTo(x1 + xs, y1 + ys);\n graphics.lineTo(xMid + xs, yMid + ys);\n graphics.moveTo(x1 - xs, y1 - ys);\n graphics.lineTo(xMid - xs, yMid - ys);\n\n graphics.lineStyle(bondWidth, bondColor2, bondOpacity2);\n graphics.moveTo(xMid + xs, yMid + ys);\n graphics.lineTo(x2 + xs, y2 + ys);\n graphics.moveTo(xMid - xs, yMid - ys);\n graphics.lineTo(x2 - xs, y2 - ys);\n } else if (d.type === RADIAL_BOND_TYPES.TRIPLE_BOND) {\n bondShift = m2px(Math.min(modelAtoms[d.atom1].radius, modelAtoms[d.atom2].radius)) * 0.52;\n bondAngle = Math.atan2(dy, dx);\n xs = Math.sin(bondAngle) * bondShift;\n ys = -Math.cos(bondAngle) * bondShift;\n\n graphics.lineStyle(bondWidth, bondColor1, bondOpacity1);\n graphics.moveTo(x1, y1);\n graphics.lineTo(xMid, yMid);\n graphics.moveTo(x1 + xs, y1 + ys);\n graphics.lineTo(xMid + xs, yMid + ys);\n graphics.moveTo(x1 - xs, y1 - ys);\n graphics.lineTo(xMid - xs, yMid - ys);\n\n graphics.lineStyle(bondWidth, bondColor2, bondOpacity2);\n graphics.moveTo(xMid, yMid);\n graphics.lineTo(x2, y2);\n graphics.moveTo(xMid + xs, yMid + ys);\n graphics.lineTo(x2 + xs, y2 + ys);\n graphics.moveTo(xMid - xs, yMid - ys);\n graphics.lineTo(x2 - xs, y2 - ys);\n } else if (d.type !== RADIAL_BOND_TYPES.GHOST) {\n // STANDARD_STICK and other types that are not yet supported.\n // However, GHOST bonds will not be drawn.\n graphics.lineStyle(bondWidth, bondColor1, bondOpacity1);\n graphics.moveTo(x1, y1);\n graphics.lineTo(xMid, yMid);\n\n graphics.lineStyle(bondWidth, bondColor2, bondOpacity2);\n graphics.moveTo(xMid, yMid);\n graphics.lineTo(x2, y2);\n }\n }\n\n function getBondColor(d, num) {\n if (d.type === RADIAL_BOND_TYPES.SHORT_SPRING) {\n return 0x888888;\n } else if (d.type === RADIAL_BOND_TYPES.DISULPHIDE_BOND) {\n return 0xffe95a;\n } else if (num === 1) {\n return parseInt(atomsRenderer.getAtomColors(d.atom1)[2].substr(1), 16);\n } else if (num === 2) {\n return parseInt(atomsRenderer.getAtomColors(d.atom2)[2].substr(1), 16);\n }\n }\n\n function getBondOpacity(d, num) {\n if (num === 1) {\n return atomsRenderer.getAtomOpacity(d.atom1);\n } else if (num === 2) {\n return atomsRenderer.getAtomOpacity(d.atom2);\n }\n }\n\n function getBondWidth(bond) {\n if (bond.type === RADIAL_BOND_TYPES.SHORT_SPRING) {\n return m2px(0.012);\n // The following code is intended to use a thicker stroke-width when\n // the spring constant is larger ... but to work properly in models with\n // both MD2D and MKS units schemes the model would need to supply\n // an appropriately scaled default spring constant.\n // For example in the Spring and Mass Interactive which uses an MKS unit\n // scheme the spring constant is varied between 0.001 and 0.003 ... while in\n // the Comparing Dipole atom-pulling Interactive that uses an MD2D unit\n // scheme the spring constant is 10.\n // return (1 + Math.log(1+bond.strength*1000)) * 0.25;;\n }\n var result = m2px(Math.min(modelAtoms[bond.atom1].radius, modelAtoms[bond.atom2].radius));\n if (bond.type === RADIAL_BOND_TYPES.DOUBLE_BOND) {\n return result * 0.50;\n } else if (bond.type === RADIAL_BOND_TYPES.TRIPLE_BOND) {\n return result * 0.35;\n } else { // STANDARD_STICK and other types that are not yet implemented.\n return result * 0.75;\n }\n }\n\n api = {\n setup: function() {\n modelBonds = model.getRadialBonds();\n modelAtoms = model.getAtoms();\n\n m2px = modelView.model2canvas;\n m2pxInv = modelView.model2canvasInv;\n\n api.update();\n },\n\n bindModel: function(newModel) {\n model = newModel;\n\n init();\n },\n\n update: function() {\n var i, len, bond;\n\n graphics.clear();\n for (i = 0, len = modelBonds.length; i < len; ++i) {\n bond = modelBonds[i];\n if (bond.type === RADIAL_BOND_TYPES.SHORT_SPRING) {\n renderSpring(bond);\n } else {\n renderBond(bond);\n }\n }\n }\n };\n\n init();\n pixiContainer.addChild(graphics);\n\n return api;\n};\n","\nimport PIXI from 'pixi.js';\n// Dependencies.\n\nexport default function VectorsRenderer(pixiContainer, config) {\n // Public API object to be returned.\n var api,\n\n m2px,\n m2pxInv,\n\n container,\n viewVectors,\n\n // Vectors rendering enabled or disabled.\n show,\n // Number of vectors to render.\n count,\n // Physical vector properties (functions!).\n xFunc, yFunc, vxFunc, vyFunc,\n // Visual vector properties.\n alphaFunc, length, width, color, dirOnly;\n\n function readOptions() {\n count = config.count;\n\n xFunc = config.x;\n yFunc = config.y;\n vxFunc = config.vx;\n vyFunc = config.vy;\n alphaFunc = config.alpha;\n\n show = config.show;\n length = config.length;\n width = config.width;\n color = config.color;\n dirOnly = config.dirOnly;\n\n m2px = config.m2px;\n m2pxInv = config.m2pxInv;\n }\n\n function getVectorTexture() {\n var canv = document.createElement(\"canvas\"),\n ctx = canv.getContext(\"2d\");\n canv.width = 1;\n canv.height = 1;\n ctx.fillStyle = color;\n ctx.fillRect(0, 0, 1, 1);\n\n return new PIXI.Texture.fromCanvas(canv);\n }\n\n function getVectorArrowheadTexture() {\n var canv = document.createElement(\"canvas\"),\n ctx = canv.getContext(\"2d\"),\n dim = m2px(3.5 * width);\n canv.width = dim;\n canv.height = dim;\n ctx.fillStyle = color;\n\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(dim, 0);\n ctx.lineTo(dim * 0.5, dim);\n ctx.closePath();\n ctx.fill();\n\n return new PIXI.Texture.fromCanvas(canv);\n }\n\n function renderVector(i) {\n var vec = viewVectors[i],\n x = xFunc(i),\n y = yFunc(i),\n vx = vxFunc(i) * length,\n vy = vyFunc(i) * length,\n len = Math.sqrt(vx * vx + vy * vy),\n rot = Math.PI + Math.atan2(vx, vy),\n arrowHead = vec.arrowHead;\n if (dirOnly) {\n // 0.15 is a bit random, empirically set value to match previous rendering done by SVG.\n vx = 0.15 * length * vx / len;\n vy = 0.15 * length * vy / len;\n len = 0.15 * length;\n }\n var lenInPx = m2px(len);\n if (lenInPx < 1) {\n // Hide completely tiny vectors (< 1px).\n vec.alpha = 0;\n arrowHead.alpha = 0;\n return;\n } else if (alphaFunc) {\n vec.alpha = alphaFunc(i);\n arrowHead.alpha = alphaFunc(i);\n } else {\n vec.alpha = 1;\n arrowHead.alpha = 1;\n }\n if (lenInPx > 1e6) {\n // When vectors has enormous size, it can cause rendering artifacts. Limit it.\n var s = lenInPx / 1e6;\n vx /= s;\n vy /= s;\n len /= s;\n lenInPx /= s;\n }\n // Vector.\n vec.position.x = m2px(x);\n vec.position.y = m2pxInv(y);\n vec.scale.y = lenInPx;\n vec.rotation = rot;\n // Arrowhead.\n arrowHead.position.x = m2px(x + vx);\n arrowHead.position.y = m2pxInv(y + vy);\n arrowHead.rotation = rot;\n }\n\n\n api = {\n setup: function() {\n readOptions();\n\n if (container) {\n pixiContainer.removeChild(container);\n container = null;\n }\n if (!show || count === 0) return;\n\n container = new PIXI.DisplayObjectContainer();\n pixiContainer.addChild(container);\n\n var i, vec, arrowHead, tex;\n\n viewVectors = [];\n\n tex = getVectorTexture();\n for (i = 0; i < count; ++i) {\n vec = new PIXI.Sprite(tex);\n vec.anchor.x = 0.5;\n vec.scale.x = m2px(width);\n vec.i = i;\n viewVectors.push(vec);\n container.addChild(vec);\n }\n tex = getVectorArrowheadTexture();\n for (i = 0; i < count; ++i) {\n arrowHead = new PIXI.Sprite(tex);\n arrowHead.anchor.x = 0.5;\n viewVectors[i].arrowHead = arrowHead;\n container.addChild(arrowHead);\n }\n\n api.update();\n },\n\n update: function() {\n if (!show || count === 0) return;\n for (var i = 0; i < count; ++i) {\n renderVector(i);\n }\n }\n };\n\n return api;\n};\n","\nimport PIXI from 'pixi.js';\n// Dependencies.\n\nfunction logistic(x) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport default function FieldRenderer(pixiContainer, config) {\n\n var api,\n\n container,\n sprites,\n\n m2px,\n m2pxInv,\n\n // Rendering enabled or disabled?\n show,\n\n // Number of needles to render.\n count,\n\n // Functions that return x, y, vx, vy of field for grid position i\n xFunc, yFunc, vxFunc, vyFunc,\n\n // Function that returns alpha value to use for grid position i\n alphaFunc,\n\n // Needle length in nm\n length,\n\n // Need color, less alpha\n color;\n\n function readOptions() {\n count = config.count;\n\n xFunc = config.x;\n yFunc = config.y;\n vxFunc = config.vx;\n vyFunc = config.vy;\n alphaFunc = config.alpha;\n\n show = config.show;\n length = config.length;\n color = config.color;\n\n m2px = config.m2px;\n m2pxInv = config.m2pxInv;\n }\n\n function getTexture() {\n var canv = document.createElement(\"canvas\");\n var ctx = canv.getContext(\"2d\");\n\n // Smoothly range the needle's aspect ratio from 5:1 when width is ~60px to 3:1 when width is\n // ~30px. Needle doesn't look good \"fat\" when long, and shouldn't be too narrow when short.\n var MIN_FRACTION = 1 / 5;\n var MAX_FRACTION = 1 / 3;\n var LOW_LENGTH_THRESHOLD = 30;\n var HIGH_LENGTH_THRESHOLD = 60;\n\n var l = m2px(length);\n var x = (l - LOW_LENGTH_THRESHOLD) / (HIGH_LENGTH_THRESHOLD - LOW_LENGTH_THRESHOLD);\n var fraction = MIN_FRACTION + logistic(-8 * (x - 0.5)) * (MAX_FRACTION - MIN_FRACTION);\n var w = l * fraction;\n\n canv.height = l;\n canv.width = w;\n\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(w * 0.5, l);\n ctx.lineTo(w, 0);\n ctx.fillStyle = color;\n ctx.fill();\n\n return new PIXI.Texture.fromCanvas(canv);\n }\n\n function renderSprite(i) {\n var sprite = sprites[i];\n var x = xFunc(i);\n var y = yFunc(i);\n\n sprite.position.x = m2px(x);\n sprite.position.y = m2pxInv(y);\n sprite.rotation = Math.PI + Math.atan2(vxFunc(i), vyFunc(i));\n sprite.alpha = alphaFunc(i);\n }\n\n\n api = {\n setup: function() {\n var i, sprite, texture;\n\n readOptions();\n\n if (container) {\n pixiContainer.removeChild(container);\n container = null;\n }\n if (!show || count === 0) return;\n\n container = new PIXI.DisplayObjectContainer();\n pixiContainer.addChild(container);\n\n sprites = [];\n\n texture = getTexture();\n for (i = 0; i < count; ++i) {\n sprite = new PIXI.Sprite(texture);\n // Should pivot on center\n sprite.anchor.x = 0.5;\n sprite.anchor.y = 0.5;\n sprite.i = i;\n sprites.push(sprite);\n container.addChild(sprite);\n }\n\n api.update();\n },\n\n update: function() {\n if (!show || count === 0) return;\n for (var i = 0; i < count; ++i) {\n renderSprite(i);\n }\n }\n };\n\n return api;\n};\n","import PIXI from 'pixi.js';\n\n\nvar NUMBER_OF_SEGMENTS = 5;\n\nexport default function VdwLinesRenderer(modelView, model, pixiContainer) {\n\n // Pixi container where our sprites go.\n var container;\n\n // Pixi texture of a VdW Line\n var texture;\n\n // Width of VdW lines in pixels\n var strokeWidth;\n\n // Length of VdW line texture in pixels\n var texLength;\n\n // Pixi sprites for each line\n var sprites = [];\n\n /**\n Return a PIXI.Texture from which the VdW sprites will be drawn. We want the height of this\n texture to be the actual on-canvas width of a VdW line in pixels, as represented by\n 'strokeWidth', so that the boundaries between the line's segments and gaps are sharp. (Leaving\n the height at say 1px and scaling sprites up to the correct linewidth would likely introduce\n blurred edges).\n */\n function getLineTexture(strokeWidth) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n\n var gapLength = modelView.model2canvas(0.02);\n var segmentLength = modelView.model2canvas(0.03);\n var halfStroke = strokeWidth / 2;\n\n texLength = NUMBER_OF_SEGMENTS * (segmentLength + gapLength) + segmentLength;\n\n canvas.width = texLength;\n canvas.height = strokeWidth;\n ctx.strokeStyle = \"#aaa\";\n ctx.lineWidth = strokeWidth;\n\n var x = 0;\n for (var i = 0; i < NUMBER_OF_SEGMENTS; i++) {\n ctx.moveTo(x, halfStroke);\n ctx.lineTo(x + segmentLength, halfStroke);\n ctx.stroke();\n x += segmentLength + gapLength;\n }\n\n return PIXI.Texture.fromCanvas(canvas);\n }\n\n function removeContainerAndSprites() {\n if (container) {\n pixiContainer.removeChild(container);\n container = null;\n }\n sprites = [];\n }\n\n function createContainerAndSprites() {\n container = new PIXI.DisplayObjectContainer();\n pixiContainer.addChild(container);\n sprites = [];\n }\n\n /**\n Call before calling update() for the first time and after any change to the model or canvas\n dimensions; resets the display container and texture, then calls update().\n */\n function setup() {\n var newStrokeWidth;\n\n if (!model.properties.showVDWLines) {\n removeContainerAndSprites();\n return;\n }\n\n // Some interactives' scripts call repaint a lot, which calls this method. However, if there\n // is a container and the model dimensions have not changed, there is no setup to do. The\n // update method will ensure that the correct VdW lines are added or removed.\n newStrokeWidth = modelView.model2canvas(0.02);\n if (newStrokeWidth !== strokeWidth) {\n strokeWidth = newStrokeWidth;\n\n texture = getLineTexture(strokeWidth);\n removeContainerAndSprites();\n createContainerAndSprites();\n }\n\n if (!container) {\n createContainerAndSprites();\n }\n\n update();\n }\n\n /**\n Call whenever the VdW lines need to be repainted; however, be sure to call setup() before the\n first time this is called and thereafter whenever a scale change is made.\n\n Note that, because VdW lines by their nature need to be added or removed at each tick, this\n method adds or removes VdW lines as necessary. (Many of the other renderers require that setup\n be called when the number of items to draw is changed.)\n */\n function update() {\n\n if (!model.properties.showVDWLines) {\n return;\n }\n\n var vdwPairs = model.get_vdw_pairs();\n var atoms = model.getAtoms();\n var i;\n var atom1, atom2;\n var dx, dy;\n var x1, y1, x2, y2;\n\n for (i = sprites.length; i < vdwPairs.count; i++) {\n sprites[i] = new PIXI.Sprite(texture);\n sprites[i].anchor.y = 0.5;\n container.addChild(sprites[i]);\n }\n\n for (i = 0; i < vdwPairs.count; i++) {\n atom1 = atoms[vdwPairs.atom1[i]];\n atom2 = atoms[vdwPairs.atom2[i]];\n\n x1 = modelView.model2canvas(atom1.x);\n y1 = modelView.model2canvasInv(atom1.y);\n x2 = modelView.model2canvas(atom2.x);\n y2 = modelView.model2canvasInv(atom2.y);\n\n dx = x2 - x1;\n dy = y2 - y1;\n\n sprites[i].visible = true;\n // stretches/shrinks the sprite to the desired length; appears to be just fine visually.\n sprites[i].scale.x = Math.ceil(Math.sqrt(dx * dx + dy * dy)) / texLength;\n // Make sure the midpoint of the left edge is at (x1, y1); sprite.position.{x|t} refer to\n // the upper left corner instead. A little bit of math is required because Pixi appears to\n // apply the rotation before the translation.\n sprites[i].position.x = x1;\n sprites[i].position.y = y1;\n sprites[i].rotation = Math.atan2(dy, dx);\n }\n\n // hide unused sprites, but don't delete them -- VdW lines come and go on each tick!\n for (; i < sprites.length; i++) {\n sprites[i].visible = false;\n }\n }\n\n function bindModel(_model) {\n model = _model;\n }\n\n return {\n setup: setup,\n update: update,\n bindModel: bindModel\n };\n};\n","/*jshint multistr: true */\n\nexport default {\n \"outline\": {\n \"A\": \"M20.7,0.4l-0.075-0.075C20.672,0.273,20.73,0.231,20.8,0.2 \\\n c0.122-0.049,0.247-0.058,0.375-0.025c0.031,0.002,0.064,0.011,0.1,0.025c0.151,0.054,0.26,0.154,0.325,0.3l6.35,14.15 \\\n c0.026,0.065,0.043,0.132,0.05,0.2c0.092,0.104,0.142,0.229,0.15,0.375c0.01,0.163-0.041,0.304-0.15,0.425l-9.025,9.85 \\\n c-1.65,1.667-3.292,3.55-4.925,5.65L0.2,15.65c-0.11-0.121-0.16-0.262-0.15-0.425c0.008-0.146,0.058-0.271,0.15-0.375 \\\n c0.005-0.068,0.021-0.134,0.05-0.2L6.6,0.5c0.074-0.146,0.19-0.246,0.35-0.3c0.151-0.064,0.301-0.064,0.45,0 \\\n c0.038,0.019,0.071,0.043,0.1,0.075C7.593,0.339,7.66,0.431,7.7,0.55c0.047,0.112-0.012,0.154-0.175,0.125 \\\n C7.461,0.656,7.386,0.63,7.3,0.6L1.65,15.125l12.4,13.625l12.6-13.725L20.7,0.4z\",\n \"C\": \"M12.45,0c2.167,0.5,4.066,1.95,5.7,4.35 \\\n c2.033,2.967,3.05,6.533,3.05,10.7c0,3.8-0.867,7.117-2.6,9.95c-0.067,0.133-0.167,0.217-0.3,0.25c-0.133,0.067-0.267,0.067-0.4,0 \\\n c-0.133-0.033-0.233-0.117-0.3-0.25c-0.133-0.233-0.283-0.45-0.45-0.65V24.3c-1.8-2.667-3.983-4-6.55-4 \\\n c-2.567,0.034-4.767,1.383-6.6,4.05c-0.167,0.2-0.3,0.417-0.4,0.65c-0.1,0.133-0.217,0.217-0.35,0.25 \\\n c-0.133,0.067-0.267,0.067-0.4,0c-0.133-0.033-0.233-0.117-0.3-0.25C0.85,22.167,0,18.85,0,15.05c0-4.167,1-7.733,3-10.7 \\\n C4.633,1.95,6.55,0.5,8.75,0H12.45z M4,5.05V5C3.991,5.016,3.982,5.033,3.975,5.05C2.289,7.935,1.431,11.126,1.4,14.625 \\\n c-0.03,3.519,0.536,6.477,1.7,8.875c2.066-3.39,4.566-5.064,7.5-5.025c2.933,0.04,5.433,1.731,7.5,5.075 \\\n c1.088-2.518,1.605-5.559,1.55-9.125c-0.055-3.565-0.888-6.69-2.5-9.375V5c-1.8-2.397-3.983-3.589-6.55-3.575 \\\n C8.033,1.439,5.833,2.647,4,5.05z\",\n \"G\": \"M8.75,0h3.675c2.191,0.504,4.1,1.963,5.725,4.375V4.35 \\\n c2.035,2.963,3.052,6.53,3.05,10.7c0.001,4.17-1.015,7.737-3.05,10.7v-0.025c-2.066,3.065-4.583,4.59-7.55,4.575 \\\n c-2.966,0.023-5.5-1.494-7.6-4.55v-0.025C0.999,22.77-0.001,19.211,0,15.05c-0.001-4.161,0.999-7.72,3-10.675V4.35 \\\n C4.647,1.953,6.564,0.503,8.75,0z M17.15,25.05c1.754-2.938,2.621-6.354,2.6-10.25c-0.022-3.895-0.889-7.145-2.6-9.75V5.025 \\\n c-1.8-2.269-3.984-3.402-6.55-3.4C8.033,1.63,5.833,2.771,4,5.05V5.025c-1.646,2.778-2.496,6.12-2.55,10.025 \\\n C1.396,18.955,2.246,22.297,4,25.075V25.05c1.583,2.593,3.667,3.985,6.25,4.175c2.583,0.189,4.883-1.194,6.9-4.15V25.05z\",\n \"T\": \"M7.45,0.2H7.9C7.794,0.442,7.677,0.709,7.55,1 \\\n C6.388,3.721,4.504,8.396,1.9,15.025l6.9,8.35l1.025-1.35c1.258-1.424,2.55-2.816,3.875-4.175l0.025-0.025 \\\n c0.148-0.186,0.314-0.336,0.5-0.45c0.046-0.028,0.096-0.036,0.15-0.025c0.059,0.007,0.109,0.032,0.15,0.075l5.325,5.95l6.95-8.35 \\\n C24.252,8.584,22.369,3.909,21.15,1c-0.127-0.284-0.243-0.551-0.35-0.8h0.6h0.575c0.041,0.045,0.075,0.095,0.1,0.15l6.35,14.15 \\\n c0.028,0.066,0.053,0.133,0.075,0.2c0.087,0.129,0.137,0.279,0.15,0.45c0.01,0.238-0.065,0.447-0.225,0.625l-8.2,8.95 \\\n c-0.102,0.12-0.227,0.204-0.375,0.25c-0.167,0.043-0.334,0.043-0.5,0c-0.147-0.046-0.272-0.129-0.375-0.25l-4.675-5.1l-4.625,5.1 \\\n c-0.101,0.121-0.226,0.204-0.375,0.25c-0.167,0.043-0.334,0.043-0.5,0c-0.147-0.046-0.272-0.129-0.375-0.25l-8.15-8.95 \\\n c-0.16-0.178-0.235-0.387-0.225-0.625c0.014-0.168,0.063-0.318,0.15-0.45c0.019-0.066,0.044-0.133,0.075-0.2l6.35-14.15V0.325 \\\n C6.649,0.28,6.674,0.238,6.7,0.2H7.45z\",\n \"U\": \"M20.8,0.2h0.6h0.575c0.041,0.045,0.075,0.095,0.1,0.15 \\\n l6.35,14.15c0.028,0.066,0.053,0.133,0.075,0.2c0.087,0.129,0.137,0.279,0.15,0.45c0.01,0.238-0.065,0.447-0.225,0.625l-8.2,8.95 \\\n c-0.102,0.12-0.227,0.204-0.375,0.25c-0.167,0.043-0.334,0.043-0.5,0c-0.147-0.046-0.272-0.129-0.375-0.25l-4.675-5.1l-4.625,5.1 \\\n c-0.101,0.121-0.226,0.204-0.375,0.25c-0.167,0.043-0.334,0.043-0.5,0c-0.147-0.046-0.272-0.129-0.375-0.25l-8.15-8.95 \\\n c-0.16-0.178-0.235-0.387-0.225-0.625c0.014-0.168,0.063-0.318,0.15-0.45c0.019-0.066,0.044-0.133,0.075-0.2l6.35-14.15V0.325 \\\n C6.649,0.28,6.674,0.238,6.7,0.2h0.75H7.9C7.794,0.442,7.677,0.709,7.55,1C6.388,3.721,4.504,8.396,1.9,15.025l6.9,8.35 \\\n l1.025-1.35c1.258-1.424,2.55-2.816,3.875-4.175l0.025-0.025c0.148-0.186,0.314-0.336,0.5-0.45 \\\n c0.046-0.028,0.096-0.036,0.15-0.025c0.059,0.007,0.109,0.032,0.15,0.075l5.325,5.95l6.95-8.35C24.252,8.584,22.369,3.909,21.15,1 \\\n C21.023,0.716,20.907,0.449,20.8,0.2z\"\n },\n \"interior\": {\n \"A\": \"M21.175,0.175C21.046,0.143,20.921,0.151,20.8,0.2 \\\n c-0.069,0.031-0.128,0.073-0.175,0.125c-0.055,0.054-0.097,0.121-0.125,0.2c-0.063,0.16,0.003,0.118,0.2-0.125l5.95,14.625 \\\n L14.05,28.75L1.65,15.125L7.3,0.6c0.086,0.03,0.161,0.056,0.225,0.075C7.688,0.704,7.747,0.662,7.7,0.55 \\\n C7.66,0.431,7.593,0.339,7.5,0.275L7.6,0.2c4.8-0.067,7.283-0.1,7.45-0.1l6.1,0.05L21.175,0.175z\",\n \"C\": \"M3.975,5.05H4c1.833-2.402,4.033-3.611,6.6-3.625 \\\n C13.167,1.411,15.35,2.603,17.15,5v0.05c1.612,2.685,2.445,5.81,2.5,9.375c0.055,3.566-0.461,6.607-1.55,9.125 \\\n c-2.067-3.344-4.567-5.035-7.5-5.075c-2.934-0.04-5.434,1.635-7.5,5.025c-1.164-2.398-1.73-5.356-1.7-8.875 \\\n C1.431,11.126,2.289,7.935,3.975,5.05z\",\n \"G\": \"M17.15,25.05v0.025c-2.017,2.956-4.317,4.339-6.9,4.15 \\\n C7.667,29.035,5.583,27.643,4,25.05v0.025c-1.754-2.778-2.604-6.12-2.55-10.025C1.504,11.145,2.354,7.803,4,5.025V5.05 \\\n c1.833-2.278,4.033-3.42,6.6-3.425c2.566-0.002,4.75,1.131,6.55,3.4V5.05c1.711,2.605,2.578,5.855,2.6,9.75 \\\n C19.771,18.695,18.904,22.112,17.15,25.05z\",\n \"T\": \"M21.4,0.2h-0.6c0.107,0.249,0.223,0.516,0.35,0.8 \\\n c1.219,2.909,3.103,7.584,5.65,14.025l-6.95,8.35l-5.325-5.95c-0.041-0.042-0.091-0.067-0.15-0.075 \\\n c-0.054-0.011-0.104-0.003-0.15,0.025c-0.186,0.114-0.352,0.264-0.5,0.45L13.7,17.85c-1.325,1.358-2.617,2.75-3.875,4.175 \\\n L8.8,23.375l-6.9-8.35C4.504,8.396,6.388,3.721,7.55,1C7.677,0.709,7.794,0.442,7.9,0.2H7.45c0.133-0.067,0.333-0.1,0.6-0.1 \\\n c0.406,0,1.606-0.008,3.6-0.025l-1.375,0.05C17.28,0.048,20.955,0.056,21.3,0.15C21.334,0.164,21.368,0.181,21.4,0.2z\",\n \"U\": \"M7.9,0.2l0.15-0.1c0.406,0,1.606-0.008,3.6-0.025l-1.375,0.05 \\\n c6.009-0.066,9.568-0.066,10.675,0L20.8,0.2c0.107,0.249,0.223,0.516,0.35,0.8c1.219,2.909,3.103,7.584,5.65,14.025l-6.95,8.35 \\\n l-5.325-5.95c-0.041-0.042-0.091-0.067-0.15-0.075c-0.054-0.011-0.104-0.003-0.15,0.025c-0.186,0.114-0.352,0.264-0.5,0.45 \\\n L13.7,17.85c-1.325,1.358-2.617,2.75-3.875,4.175L8.8,23.375l-6.9-8.35C4.504,8.396,6.388,3.721,7.55,1 \\\n C7.677,0.709,7.794,0.442,7.9,0.2z\"\n },\n \"letter\": {\n \"A\": {\n \"1\": \"M12.85,12.55h2.6l-1.3-3.95L12.85,12.55z M13,6.25h2.4l3.55,10.1 \\\n h-2.3L16,14.3h-3.7l-0.7,2.05H9.4L13,6.25z\",\n \"2\": \"M18.7,5.95l-3.55,10.1h-2.4l-3.6-10.1h2.2L12.05,8h3.7l0.65-2.05 \\\n H18.7z M12.6,9.75l1.3,3.95l1.3-3.95H12.6z\"\n },\n \"C\": {\n \"1\": \"M10.45,6.4c1.667,0,2.883,0.55,3.65,1.65 \\\n c0.433,0.633,0.667,1.267,0.7,1.9h-2.1c-0.133-0.5-0.3-0.867-0.5-1.1c-0.4-0.434-0.967-0.65-1.7-0.65S9.183,8.5,8.75,9.1 \\\n C8.317,9.733,8.1,10.617,8.1,11.75c0,1.1,0.217,1.933,0.65,2.5c0.467,0.567,1.05,0.85,1.75,0.85c0.733,0,1.283-0.233,1.65-0.7 \\\n c0.233-0.267,0.417-0.667,0.55-1.2h2.05c-0.167,1.1-0.617,2-1.35,2.7c-0.733,0.7-1.683,1.05-2.85,1.05 \\\n c-1.433,0-2.566-0.467-3.4-1.4c-0.8-0.933-1.2-2.216-1.2-3.85c0-1.767,0.466-3.117,1.4-4.05C8.15,6.817,9.183,6.4,10.45,6.4z\",\n \"2\": \"M15,12.35c-0.033,0.633-0.267,1.267-0.7,1.9 \\\n c-0.767,1.1-1.983,1.65-3.65,1.65c-1.267,0-2.3-0.417-3.1-1.25c-0.933-0.933-1.4-2.283-1.4-4.05c0-1.633,0.4-2.917,1.2-3.85 \\\n c0.833-0.933,1.967-1.4,3.4-1.4c1.167,0,2.117,0.35,2.85,1.05c0.733,0.7,1.183,1.6,1.35,2.7H12.9 \\\n c-0.133-0.533-0.316-0.934-0.55-1.2c-0.367-0.467-0.917-0.7-1.65-0.7c-0.7,0-1.284,0.283-1.75,0.85 \\\n c-0.434,0.567-0.65,1.4-0.65,2.5c0,1.133,0.217,2.017,0.65,2.65c0.433,0.6,1.017,0.9,1.75,0.9c0.733,0,1.3-0.217,1.7-0.65 \\\n c0.2-0.233,0.367-0.6,0.5-1.1H15z\"\n },\n \"G\": {\n \"1\": \"M14.8,10.8h-2.05c-0.167-0.667-0.567-1.133-1.2-1.4 \\\n c-0.333-0.167-0.716-0.25-1.15-0.25c-0.8,0-1.467,0.3-2,0.9c-0.5,0.633-0.75,1.567-0.75,2.8s0.283,2.1,0.85,2.6 \\\n c0.567,0.533,1.2,0.8,1.9,0.8c0.7,0,1.283-0.217,1.75-0.65c0.434-0.4,0.717-0.934,0.85-1.6h-2.35v-1.65h4.2v5.4h-1.4l-0.2-1.25 \\\n c-0.4,0.467-0.767,0.8-1.1,1C11.583,17.833,10.9,18,10.1,18c-1.333,0-2.434-0.467-3.3-1.4c-0.867-0.9-1.3-2.167-1.3-3.8 \\\n s0.45-2.933,1.35-3.9c0.867-1,2.05-1.5,3.55-1.5c1.267,0,2.3,0.333,3.1,1C14.267,9.033,14.7,9.833,14.8,10.8z\",\n \"2\": \"M10.65,9.65c-0.7,0-1.333,0.267-1.9,0.8 \\\n c-0.567,0.5-0.85,1.367-0.85,2.6c0,1.233,0.25,2.167,0.75,2.8c0.533,0.6,1.2,0.9,2,0.9c0.434,0,0.817-0.083,1.15-0.25 \\\n c0.633-0.267,1.034-0.733,1.2-1.4h2.05c-0.1,0.967-0.533,1.767-1.3,2.4c-0.8,0.667-1.833,1-3.1,1c-1.5,0-2.683-0.5-3.55-1.5 \\\n c-0.9-0.967-1.35-2.267-1.35-3.9s0.433-2.9,1.3-3.8c0.867-0.933,1.967-1.4,3.3-1.4c0.8,0,1.483,0.167,2.05,0.5 \\\n c0.333,0.2,0.7,0.533,1.1,1l0.2-1.25h1.4v5.4h-4.2V11.9h2.35c-0.133-0.667-0.417-1.2-0.85-1.6C11.933,9.867,11.35,9.65,10.65,9.65z\"\n },\n \"T\": {\n \"1\": \"M10.3,5 L18.45,5 L18.45,6.8 L15.4,6.8 L15.4,15.1 L13.3,15.1 \\\n L13.3,6.8 L10.3,6.8z\",\n \"2\": \"M10.2,14.65 L10.2,12.85 L13.2,12.85 L13.2,4.55 L15.3,4.55 \\\n L15.3,12.85 L18.35,12.85 L18.35,14.65z\"\n },\n \"U\": {\n \"1\": \"M10.15,10.8V4.6h2.15v6.2c0,0.7,0.083,1.217,0.25,1.55 \\\n c0.267,0.566,0.817,0.85,1.65,0.85c0.867,0,1.417-0.284,1.65-0.85c0.167-0.333,0.25-0.85,0.25-1.55V4.6h2.15v6.2 \\\n c0,1.067-0.167,1.9-0.5,2.5c-0.633,1.1-1.817,1.65-3.55,1.65c-1.733,0-2.917-0.55-3.55-1.65C10.317,12.7,10.15,11.867,10.15,10.8z\",\n \"2\": \"M12.45,8.4v6.2H10.3V8.4c0-1.066,0.167-1.9,0.5-2.5 \\\n c0.633-1.1,1.817-1.65,3.55-1.65S17.267,4.8,17.9,5.9c0.333,0.6,0.5,1.434,0.5,2.5v6.2h-2.15V8.4c0-0.7-0.083-1.217-0.25-1.55 \\\n C15.767,6.283,15.217,6,14.35,6c-0.833,0-1.383,0.283-1.65,0.85C12.533,7.183,12.45,7.7,12.45,8.4z\"\n }\n }\n};\n","\nimport nucleotidePaths from 'models/md2d/views/nucleotide-paths';\nimport resourcesUrl from 'common/resources-url';\nvar SCALE = 0.007,\n W = {\n \"BACKB\": 52,\n \"A\": 28.151,\n \"C\": 21.2,\n \"G\": 21.2,\n \"T\": 28.651,\n \"U\": 28.651,\n \"A_GLOW\": 44.125,\n \"C_GLOW\": 37.2,\n \"G_GLOW\": 36.2,\n \"T_GLOW\": 45.566\n },\n H = {\n \"BACKB\": 14,\n \"A\": 31.15,\n \"C\": 25.3,\n \"G\": 30.3,\n \"T\": 25.007,\n \"U\": 25.007,\n \"A_GLOW\": 44.55,\n \"C_GLOW\": 41.417,\n \"G_GLOW\": 45.3,\n \"T_GLOW\": 40.65\n };\n\n(function() {\n var name;\n for (name in W) {\n if (W.hasOwnProperty(name)) {\n W[name] *= SCALE;\n }\n }\n for (name in H) {\n if (H.hasOwnProperty(name)) {\n H[name] *= SCALE;\n }\n }\n}());\n\nfunction nucleotides() {\n var m2px = null,\n sequence = \"\",\n direction = 1,\n bonds = 1,\n backbone = \"DNA\", // if enabled, \"RNA\" or \"DNA\" is expected.\n stopCodonsHash = null,\n randomEnter = true,\n glow = false,\n enterExitOnly = false,\n\n xShift = 0,\n yShift = 0;\n\n function shift(enabled) {\n var t, r;\n if (enabled) {\n // While adding a new mRNA segment, choose a random starting point along a\n // circle with a certain radius that extends beyond the top DNA strand.\n // Use parametric circle equation: x = r cos(t), y = r sin(t)\n // Limit range of the \"t\" parameter to: [0.25 * PI, 0.75 * PI) and [1.25 * PI, 1.75 * PI),\n // so new mRNA segments will come only from the top or bottom side of the container.\n t = Math.random() >= 0.5 ? Math.PI * 0.25 : Math.PI * 1.25;\n t += Math.random() * Math.PI * 0.5;\n r = nucleotides.HEIGHT * 6;\n xShift = r * Math.cos(t);\n yShift = r * Math.sin(t);\n } else {\n xShift = yShift = 0;\n }\n }\n\n function translate(d) {\n return \"translate(\" + m2px(xShift + nucleotides.WIDTH * (d.idx)) + \" \" + m2px(yShift) + \")\";\n }\n\n function nucleo(g) {\n g.each(function(d, i) {\n var g = d3.select(this),\n\n yOffset = backbone ? 0.9 * H.BACKB : 0,\n yStart = m2px(yOffset + 0.5 * H.A),\n yEnd = m2px(yOffset + H.A * 0.97),\n\n seq = typeof sequence === \"function\" ? sequence(d, i) : sequence,\n\n nucleo, nucleoEnter, nucleoExit, nucleoGEnter, backboneEnter,\n nucleoShape, nucleoSVG, nucleoSVGUpdate, nucleoTrans, targetScale;\n\n if (typeof seq === \"string\") {\n // seq is a string, generate data array. Change it to array of objects.\n // e.g. \"AG\" will be change to [{idx: 0, type: \"A\"}, {idx: 1, type: \"G\"}].\n seq = seq.split(\"\");\n seq.forEach(function(val, i) {\n seq[i] = {\n id: i,\n idx: i,\n type: val\n };\n });\n }\n\n // Join data by ID.\n nucleo = g.selectAll(\".nucleotide\").data(seq, function(d) {\n return d.id;\n });\n nucleoEnter = nucleo.enter();\n nucleoExit = nucleo.exit();\n\n // Enter.\n // Random initial positions of the new mRNAs.\n shift(randomEnter);\n nucleoEnter = nucleoEnter.append(\"g\").attr({\n \"transform\": translate\n }).style({\n \"opacity\": randomEnter ? 0 : 1\n });\n // Additional container for scaling.\n nucleoGEnter = nucleoEnter.append(\"g\").attr({\n \"class\": \"scale\",\n \"transform\": \"scale(1, \" + (direction === 1 ? 1 : -1) + \")\",\n });\n // Bonds.\n nucleoGEnter.append(\"path\").attr(\"class\", \"bonds\")\n .style({\n \"stroke-width\": m2px(0.01),\n \"stroke\": \"#fff\"\n });\n // Main shape.\n nucleoShape = nucleoGEnter.append(\"g\")\n .classed(\"nucleo-shape\", true)\n .classed(\"clickable-nucleo\", function(d) {\n return d.region === \"c\" && glow;\n }).on(\"click\", function() {\n // Mobile Safari will only produce mouse events when the user taps\n // on a clickable element, like a link. You can make an element\n // clickable by adding an onClick event handler to it, even if that\n // handler does nothing. It's necessary, as nucleotides should be\n // clickable, e.g. to show context menu.\n });\n // Optional glow image.\n if (glow) {\n nucleoShape.append(\"image\").attr({\n \"class\": \"glow\",\n \"y\": m2px(yOffset - 0.17 * W.G_GLOW), // move glow closer to the backbone\n \"preserveAspectRatio\": \"none\"\n });\n }\n // Parts of nucleotide shape (outline, interior, letter).\n nucleoSVG = nucleoShape.append(\"svg\").attr({\n \"y\": m2px(yOffset),\n \"preserveAspectRatio\": \"none\",\n });\n nucleoSVG.append(\"path\").attr({\n \"class\": \"outline\",\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\"\n });\n nucleoSVG.append(\"path\").attr({\n \"class\": \"interior\",\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\"\n });\n nucleoSVG.append(\"path\").attr({\n \"class\": \"letter\",\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n \"d\": function(d) {\n return nucleotidePaths.letter[d.type][direction];\n }\n });\n // Optional backbone.\n if (backbone) {\n backboneEnter = nucleoGEnter.append(\"image\").attr({\n \"class\": \"backbone\",\n \"x\": 0,\n \"y\": 0,\n \"width\": m2px(W.BACKB),\n \"height\": m2px(H.BACKB),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(\"dna/Backbone_\" + backbone + \".svg\")\n });\n }\n\n // Update.\n if (enterExitOnly) {\n // Special mode when we update ONLY nucleotides from enter and exit\n // subselections. It's useful to add new nucleotides while other\n // are being modified by transition at the same time, so it won't\n // be affected.\n nucleo = nucleoEnter;\n }\n\n // Update without transition.\n nucleo.attr(\"class\", function(d) {\n var regionClass = \"\";\n switch (d.region) {\n case \"c\":\n regionClass = \"coding-region\";\n break;\n case \"j\":\n regionClass = \"junk-region\";\n break;\n case \"p\":\n regionClass = \"promoter-region\";\n break;\n case \"t\":\n regionClass = \"terminator-region\";\n break;\n }\n return \"nucleotide \" + regionClass;\n });\n nucleo.select(\".bonds\").attr(\"d\", function(d) {\n if (d.type === \"C\" || d.type === \"G\") {\n return \"M\" + m2px(SCALE * 20) + \" \" + yStart + \" L \" + m2px(SCALE * 20) + \" \" + yEnd +\n \"M\" + m2px(SCALE * 26) + \" \" + yStart + \" L \" + m2px(SCALE * 26) + \" \" + yEnd +\n \"M\" + m2px(SCALE * 32) + \" \" + yStart + \" L \" + m2px(SCALE * 32) + \" \" + yEnd;\n } else {\n return \"M\" + m2px(SCALE * 22) + \" \" + yStart + \" L \" + m2px(SCALE * 22) + \" \" + yEnd +\n \"M\" + m2px(SCALE * 30) + \" \" + yStart + \" L \" + m2px(SCALE * 30) + \" \" + yEnd;\n }\n });\n nucleo.select(\".glow\").attr({\n \"x\": function(d) {\n return m2px(W.BACKB) / 2 - m2px(W[d.type + \"_GLOW\"]) / 2;\n },\n \"width\": function(d) {\n return m2px(W[d.type + \"_GLOW\"]);\n },\n \"height\": function(d) {\n return m2px(H[d.type + \"_GLOW\"]);\n },\n \"xlink:href\": function(d) {\n return resourcesUrl(\"dna/NucleotideGlow_\" + d.type + \".svg\");\n }\n });\n nucleoSVGUpdate = nucleo.select(\".nucleo-shape > svg\");\n nucleoSVGUpdate.attr({\n \"class\": function(d) {\n var className = \"type-\" + d.type;\n if (stopCodonsHash && stopCodonsHash[d.idx]) {\n className += \" stop-codon\";\n }\n return className;\n },\n \"viewBox\": function(d) {\n return \"0 0 \" + (W[d.type] / SCALE) + \" \" + (H[d.type] / SCALE);\n },\n \"x\": function(d) {\n return m2px(W.BACKB) / 2 - m2px(W[d.type]) / 2;\n },\n \"width\": function(d) {\n return m2px(W[d.type]);\n },\n \"height\": function(d) {\n return m2px(H[d.type]);\n }\n });\n nucleoSVGUpdate.select(\"path.interior\").attr(\"d\", function(d) {\n return nucleotidePaths.interior[d.type];\n });\n nucleoSVGUpdate.select(\"path.outline\").attr(\"d\", function(d) {\n return nucleotidePaths.outline[d.type];\n });\n\n // Update with transition.\n shift(false);\n nucleoTrans = d3.transition(nucleo)\n .attr(\"transform\", translate)\n .style(\"opacity\", 1);\n\n // Animate also bonds opacity.\n nucleoTrans.select(\".bonds\").style(\"opacity\", bonds);\n\n // Duck test whether nucleoTrans is really translation. See D3 API\n // Reference - d3.transition(selection) returns transition only when\n // called in the context of other transition. Otherwise it returns\n // selection.\n if (nucleoTrans.attrTween) {\n // Scale. We can't simply use .attr, as rotation is used (to make\n // scale change fancier?). attrTween enforces simple change from\n // scale(1,1) to scale(1,-1) without using rotation.\n targetScale = \"scale(1, \" + (direction === 1 ? 1 : -1) + \")\";\n nucleoTrans.select(\"g.scale\").attrTween(\"transform\", function(d, i, a) {\n return d3.interpolateString(a, targetScale);\n });\n // Letters. Default d3 interpolator creates some\n // results which can't be parsed. Use custom interpolator,\n // which changes letters in the middle of transition.\n nucleoTrans.select(\"path.letter\").attrTween(\"d\", function(d, i, a) {\n return function(t) {\n return t < 0.5 ? a : nucleotidePaths.letter[d.type][direction];\n };\n });\n } else {\n // The same operations, but without using transition.\n nucleo.select(\"g.scale\").attr(\"transform\", \"scale(1, \" + (direction === 1 ? 1 : -1) + \")\");\n nucleo.select(\"path.letter\")\n .attr(\"d\", function(d) {\n return nucleotidePaths.letter[d.type][direction];\n });\n }\n\n // Exit.\n shift(true);\n d3.transition(nucleoExit)\n .attr(\"transform\", translate)\n .style(\"opacity\", 0)\n .remove();\n });\n }\n\n nucleo.sequence = function(s) {\n if (!arguments.length) return sequence;\n sequence = s;\n return nucleo;\n };\n\n nucleo.model2px = function(m) {\n if (!arguments.length) return m2px;\n m2px = m;\n return nucleo;\n };\n\n nucleo.direction = function(d) {\n if (!arguments.length) return direction;\n direction = d;\n return nucleo;\n };\n\n nucleo.bonds = function(b) {\n if (!arguments.length) return bonds;\n bonds = b;\n return nucleo;\n };\n\n nucleo.randomEnter = function(r) {\n if (!arguments.length) return randomEnter;\n randomEnter = r;\n return nucleo;\n };\n\n /**\n * Enables or disables nucleotide glowing on hover.\n * @param {boolean} g\n */\n nucleo.glow = function(g) {\n if (!arguments.length) return glow;\n glow = g;\n return nucleo;\n };\n\n /**\n * @param {String} b \"DNA\" or \"RNA\".\n */\n nucleo.backbone = function(b) {\n if (!arguments.length) return backbone;\n backbone = b;\n return nucleo;\n };\n\n nucleo.stopCodonsHash = function(s) {\n if (!arguments.length) return stopCodonsHash;\n stopCodonsHash = s;\n return nucleo;\n };\n\n /**\n * Special mode for quick update of rendered nucleotides number.\n * When this option is set to true, only new nucleotides will be\n * added and other possibly removed. None of existing\n * nucleotides will be updated. It's useful to add new nucleotides\n * while there is an ongoing transition on existing nucleoties.\n * @param {boolean} ee\n */\n nucleo.enterExitOnly = function(ee) {\n if (!arguments.length) return enterExitOnly;\n enterExitOnly = ee;\n return nucleo;\n };\n\n return nucleo;\n}\n\n// Width of the nucleotide is width of the DNA backbone.\n// * 0.92 to ensure that DNA backbone doesn't contain any visual discontinuities.\n// There are two bugs connected with it. First is in Chrome, where preserveAspectRatio\n// is ignored for images, the second one is in Safari, which has problems with correct\n// width of the images. Please see:\n// https://www.pivotaltracker.com/story/show/48453261\nnucleotides.WIDTH = W.BACKB * 0.92;\n// Height of the nucleotide is height of the DNA backbone + A nucleotide (tallest one).\n// * 0.96 because it simply... looks better. This value is used to determine distance\n// between two strands of DNA and this multiplier causes that they are closer to each other.\nnucleotides.HEIGHT = (H.BACKB * 0.9 + H.A) * 0.96;\n\nexport default nucleotides;\n","\nimport nucleotides from 'models/md2d/views/nucleotides';\nimport resourcesUrl from 'common/resources-url';\nimport labConfig from 'lab.config';\nvar SCALE = 0.007,\n W = {\n \"CELLS\": 720,\n \"DNA1\": 661,\n \"DNA2\": 720,\n \"DNA3\": 337.4,\n \"POLY_UNDER\": 426.15,\n \"POLY_OVER\": 402.525,\n \"NUCLEUS\": 729.45,\n \"RIBO_TOP\": 550.7,\n \"RIBO_BOTTOM\": 509.031,\n \"RIBO_UNDER\": 550.55,\n \"RIBO_OVER\": 550.7,\n \"TRNA\": 117.325,\n \"TRNA_NECK\": 15.925\n },\n H = {\n \"CELLS\": 500,\n \"DNA1\": 550,\n \"DNA2\": 414.263,\n \"DNA3\": 89.824,\n \"POLY_UNDER\": 368.6,\n \"POLY_OVER\": 368.6,\n \"NUCLEUS\": 543.199,\n \"RIBO_TOP\": 250,\n \"RIBO_BOTTOM\": 147.15,\n \"RIBO_UNDER\": 311.6,\n \"RIBO_OVER\": 311.6,\n \"TRNA\": 67.9,\n \"TRNA_NECK\": 21.14,\n \"A\": 31.15\n },\n\n OBJECT_NAMES = [\n \"background\",\n \"cells\", \"dna1\", \"dna2\", \"dna3\",\n \"polymeraseUnder\", \"polymeraseOver\",\n \"polymeraseUnder\", \"polymeraseOver\",\n \"dna\", \"dnaComp\", \"mrna\", \"nucleus\",\n \"ribosomeBottom\", \"ribosomeTop\",\n \"ribosomeUnder\", \"ribosomeOver\",\n \"trna\", \"viewPort\"\n ];\n\n(function() {\n var name;\n for (name in W) {\n if (W.hasOwnProperty(name)) {\n W[name] *= SCALE;\n }\n }\n for (name in H) {\n if (H.hasOwnProperty(name)) {\n H[name] *= SCALE;\n }\n }\n}());\n\nfunction getDefs(parent) {\n var defs = parent.select(\"defs\");\n if (defs.empty()) {\n defs = parent.append(\"defs\");\n }\n return defs;\n}\n\nfunction appendTranscriptionBg(parent) {\n var defs = getDefs(parent),\n gradient;\n\n if (defs.select(\"#transcription-bg\").empty()) {\n gradient = defs.append(\"linearGradient\")\n .attr(\"id\", \"transcription-bg\")\n .attr(\"x1\", \"0%\")\n .attr(\"y1\", \"0%\")\n .attr(\"x2\", \"0%\")\n .attr(\"y2\", \"100%\");\n gradient.append(\"stop\")\n .attr(\"stop-color\", \"#C8DD69\")\n .attr(\"offset\", \"0%\");\n gradient.append(\"stop\")\n .attr(\"stop-color\", \"#778B3D\")\n .attr(\"offset\", \"100%\");\n }\n}\n\nfunction GeneticElementsRenderer(node, model2px, model2pxInv, model) {\n\n function scaleFunc(d) {\n return \"scale(\" + d.scale + \")\";\n }\n\n function opacityFunc(d) {\n return d.opacity;\n }\n\n function translateFuncInv(d) {\n var x = d.translateX || 0,\n y = d.translateY || 0;\n return \"translate(\" + model2px(x) + \" \" + model2pxInv(y) + \")\";\n }\n\n function translateScaleFuncInv(d) {\n return translateFuncInv(d) + \" \" + scaleFunc(d);\n }\n // Returns optimal (minimal) boundaries of the DNA or mRNA view array.\n // They are based on the current vieport position, size and knowledge\n // about single nucleotide size.\n function getOptBoundaries(dna) {\n var shift = dna ? model.geneticEngine().PRECODING_LEN : 0,\n lowIdx = Math.floor(model.properties.viewPortX / nucleotides.WIDTH) - 2,\n highIdx = Math.ceil((model.properties.viewPortX + model.properties.viewPortWidth) / nucleotides.WIDTH) + 4;\n return [Math.max(0, lowIdx + shift), highIdx + shift];\n }\n\n function imagePath() {\n var dnaEngineImagesPath = model.properties.dnaEngineImagesPath;\n var imagePath = \"\";\n\n if (dnaEngineImagesPath && dnaEngineImagesPath.length > 0) {\n if (labConfig.modelsRootUrl && labConfig.modelsRootUrl.length > 0) {\n imagePath = labConfig.modelsRootUrl + dnaEngineImagesPath;\n } else {\n imagePath = dnaEngineImagesPath;\n }\n } else {\n // this should ensure all original interactives render as intended\n imagePath = \"dna\";\n }\n return imagePath;\n }\n\n return {\n cells: function(parent, data) {\n var cells = parent.select(\".background-layer\").selectAll(\".cells\").data(data.cells);\n cells.enter().append(\"image\").attr({\n \"class\": \"cells\",\n \"x\": model2px(W.CELLS * -0.567),\n \"y\": model2px(H.CELLS * -0.445),\n \"width\": model2px(W.CELLS),\n \"height\": model2px(H.CELLS),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Cells.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(cells)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(cells.exit()).remove();\n },\n\n dna1: function(parent, data) {\n var dna1 = parent.select(\".dna-layer\").selectAll(\".dna1\").data(data.dna1);\n dna1.enter().append(\"image\").attr({\n \"class\": \"dna1\",\n \"x\": model2px(W.DNA1 * -0.5),\n \"y\": model2px(H.DNA1 * -0.5),\n \"width\": model2px(W.DNA1),\n \"height\": model2px(H.DNA1),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/DNA_InsideNucleus_1.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(dna1)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(dna1.exit()).remove();\n },\n\n dna2: function(parent, data) {\n var dna2 = parent.select(\".dna-layer\").selectAll(\".dna2\").data(data.dna2);\n dna2.enter().append(\"image\").attr({\n \"class\": \"dna2\",\n \"x\": model2px(W.DNA2 * -0.5),\n \"y\": model2px(H.DNA2 * -0.404),\n \"width\": model2px(W.DNA2),\n \"height\": model2px(H.DNA2),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/DNA_InsideNucleus_2.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(dna2)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(dna2.exit()).remove();\n },\n\n dna3: function(parent, data) {\n var dna3units = 14,\n dna3, dna3Enter;\n dna3 = parent.select(\".dna-layer\").selectAll(\".dna3\").data(data.dna3);\n dna3Enter = dna3.enter().append(\"g\").attr({\n \"class\": \"dna3 main-dna\",\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n dna3Enter.selectAll(\"dna3-unit\").data(new Array(dna3units)).enter().append(\"image\").attr({\n \"class\": \"dna3-unit\",\n \"x\": function(d, i) {\n return (i - dna3units * 0.5) * model2px(W.DNA3) * 0.98;\n },\n \"y\": model2px(H.DNA3 * -0.5),\n \"width\": model2px(W.DNA3),\n \"height\": model2px(H.DNA3),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/DoubleHelix_Unit.svg\")\n });\n d3.transition(dna3)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(dna3.exit()).remove();\n },\n\n dna: function(parent, data, enterExitOnly) {\n var viewModel = model.geneticEngine().viewModel,\n boundaries = getOptBoundaries(true),\n bonds = data.dna[0] ? data.dna[0].bonds : 0,\n n = nucleotides(),\n dna = parent.select(\".dna-layer\").selectAll(\".dna\");\n\n // Configure nucleotides.\n n.model2px(model2px)\n .sequence(viewModel.DNA.slice(boundaries[0], boundaries[1]))\n .glow(model.get(\"DNAMutations\"))\n .bonds(bonds);\n\n if (enterExitOnly) {\n dna.call(n.enterExitOnly(true));\n return;\n }\n\n dna = dna.data(data.dna);\n\n // DNA enter:\n dna.enter().append(\"g\").attr({\n \"class\": \"dna\",\n \"transform\": translateFuncInv\n });\n // DNA update:\n dna.call(n);\n d3.transition(dna).attr(\"transform\", translateFuncInv);\n // DNA exit:\n d3.transition(dna.exit()).remove();\n },\n\n dnaComp: function(parent, data, enterExitOnly) {\n var viewModel = model.geneticEngine().viewModel,\n boundaries = getOptBoundaries(true),\n bonds = data.dnaComp[0] ? data.dnaComp[0].bonds : 0,\n n = nucleotides(),\n dnaComp = parent.select(\".dna-layer\").selectAll(\".dna-comp\");\n\n // Configure nucleotides.\n n.model2px(model2px)\n .sequence(viewModel.DNAComp.slice(boundaries[0], boundaries[1]))\n .direction(2)\n .glow(model.get(\"DNAMutations\"))\n .bonds(bonds);\n\n if (enterExitOnly) {\n dnaComp.call(n.enterExitOnly(true));\n return;\n }\n\n dnaComp = dnaComp.data(data.dnaComp);\n\n // DNA Comp enter:\n dnaComp.enter().append(\"g\").attr({\n \"class\": \"dna-comp\",\n \"transform\": translateFuncInv\n });\n // DNA Comp update:\n dnaComp.call(n);\n d3.transition(dnaComp).attr(\"transform\", translateFuncInv);\n // DNA Comp exit:\n d3.transition(dnaComp.exit()).remove();\n },\n\n mrna: function(parent, data, enterExitOnly) {\n var geneticEngine = model.geneticEngine(),\n mrnaSequence = geneticEngine.viewModel.mRNA,\n boundaries = getOptBoundaries(),\n stopCodons = geneticEngine.stopCodonsHash(),\n bonds = data.mrna[0] ? data.mrna[0].bonds : 0,\n dir = data.mrna[0] ? data.mrna[0].direction : 1,\n n = nucleotides(),\n mrna = parent.select(\".dna-layer\").selectAll(\".mrna\");\n\n // Configure nucleotides.\n n.model2px(model2px)\n .sequence(mrnaSequence.slice(boundaries[0], boundaries[1]))\n .backbone(\"RNA\")\n .direction(dir)\n .bonds(bonds)\n .stopCodonsHash(stopCodons);\n\n if (enterExitOnly) {\n mrna.call(n.enterExitOnly(true));\n return;\n }\n\n mrna = mrna.data(data.mrna);\n\n // mRNA enter:\n mrna.enter().append(\"g\").attr({\n \"class\": \"mrna\",\n \"transform\": translateFuncInv\n });\n // mRNA update:\n mrna.call(n);\n d3.transition(mrna).attr(\"transform\", translateFuncInv);\n // mRNA exit:\n d3.transition(mrna.exit()).remove();\n },\n\n polymeraseUnder: function(parent, data) {\n var polyUnder = parent.select(\".under-dna-layer\").selectAll(\".polymerase-under\").data(data.polymeraseUnder);\n polyUnder.enter().append(\"image\").attr({\n \"class\": \"polymerase-under\",\n \"x\": model2px(W.POLY_UNDER * -0.5),\n \"y\": model2px(H.POLY_UNDER * -0.5),\n \"width\": model2px(W.POLY_UNDER),\n \"height\": model2px(H.POLY_UNDER),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Polymerase_Under.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(polyUnder)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(polyUnder.exit()).remove();\n },\n\n polymeraseOver: function(parent, data) {\n var polyOver = parent.select(\".over-dna-layer\").selectAll(\".polymerase-over\").data(data.polymeraseOver);\n polyOver.enter().append(\"image\").attr({\n \"class\": \"polymerase-over\",\n \"x\": model2px(W.POLY_OVER * -0.5),\n \"y\": model2px(H.POLY_OVER * -0.5),\n \"width\": model2px(W.POLY_OVER),\n \"height\": model2px(H.POLY_OVER),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Polymerase_Over.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(polyOver)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(polyOver.exit()).remove();\n },\n\n nucleus: function(parent, data) {\n var nucleus = parent.select(\".background-layer\").selectAll(\".nucleus\").data(data.nucleus);\n nucleus.enter().append(\"image\").attr({\n \"class\": \"nucleus\",\n \"x\": model2px(W.NUCLEUS * -0.5),\n \"y\": model2px(H.NUCLEUS * -0.5),\n \"width\": model2px(W.NUCLEUS),\n \"height\": model2px(H.NUCLEUS),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/BG_Nucleus.svg\"),\n \"transform\": translateFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(nucleus)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(nucleus.exit()).remove();\n },\n\n ribosomeBottom: function(parent, data) {\n var selection = parent.select(\".over-dna-layer\").selectAll(\".ribosome-bottom\").data(data.ribosomeBottom);\n selection.enter().append(\"image\").attr({\n \"class\": \"ribosome-bottom\",\n \"x\": model2px(W.RIBO_BOTTOM * -0.5),\n \"y\": model2px(H.RIBO_BOTTOM * -0.5),\n \"width\": model2px(W.RIBO_BOTTOM),\n \"height\": model2px(H.RIBO_BOTTOM),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Ribosome_bottom1.svg\"),\n \"transform\": translateFuncInv\n }).style(\"opacity\", 0);\n d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(selection.exit())\n .style(\"opacity\", 0)\n .remove();\n },\n\n ribosomeTop: function(parent, data) {\n var selection = parent.select(\".over-dna-layer\").selectAll(\".ribosome-top\").data(data.ribosomeTop);\n selection.enter().append(\"image\").attr({\n \"class\": \"ribosome-top\",\n \"x\": model2px(W.RIBO_TOP * -0.5),\n \"y\": model2px(H.RIBO_TOP * -0.5),\n \"width\": model2px(W.RIBO_TOP),\n \"height\": model2px(H.RIBO_TOP),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Ribosome_top1.svg\"),\n \"transform\": translateFuncInv\n }).style(\"opacity\", 0);\n d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(selection.exit())\n .style(\"opacity\", 0)\n .remove();\n },\n\n ribosomeUnder: function(parent, data) {\n var selection = parent.select(\".under-dna-layer\").selectAll(\".ribosome-under\").data(data.ribosomeUnder);\n selection.enter().append(\"image\").attr({\n \"class\": \"ribosome-under\",\n \"x\": model2px(W.RIBO_UNDER * -0.5),\n \"y\": model2px(H.RIBO_UNDER * -0.5),\n \"width\": model2px(W.RIBO_UNDER),\n \"height\": model2px(H.RIBO_UNDER),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Ribosome_under.png\"),\n \"transform\": translateFuncInv\n }).style({\n \"opacity\": opacityFunc\n });\n d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(selection.exit()).remove();\n },\n\n ribosomeOver: function(parent, data) {\n var selection = parent.select(\".over-dna-layer\").selectAll(\".ribosome-over\").data(data.ribosomeOver);\n selection.enter().append(\"image\").attr({\n \"class\": \"ribosome-over\",\n \"x\": model2px(W.RIBO_OVER * -0.5),\n \"y\": model2px(H.RIBO_OVER * -0.5),\n \"width\": model2px(W.RIBO_OVER),\n \"height\": model2px(H.RIBO_OVER),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Ribosome_over.png\"),\n \"transform\": translateFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(selection.exit()).remove();\n },\n\n trna: function(parent, data) {\n var geneticEngine = model.geneticEngine(),\n\n codonWidth = 3 * nucleotides.WIDTH,\n offset = (codonWidth - W.TRNA) * 0.55,\n\n selection, enter, update, exit;\n\n selection = parent.select(\".top-layer\").selectAll(\".trna\")\n .data(data.trna, function(d) {\n return d.index;\n });\n // The most outer container can be used to set easily position offset.\n // While the inner g elements provides translation for \"ideal\" tRNA position\n // close to the mRNA and optional rotation.\n enter = selection.enter().append(\"g\").attr({\n \"class\": \"trna\",\n \"display\": function(d) {\n return d.index < 0 ? \"none\" : \"inline\";\n },\n \"transform\": function(d, i) {\n return \"translate(\" + model2px(nucleotides.HEIGHT * 2) + \", \" + model2px(-2.78) + \") \" +\n translateFuncInv(d, i) + \" rotate(30)\";\n }\n }).style(\"opacity\", opacityFunc);\n\n enter.append(\"g\")\n .attr(\"transform\", \"translate(0, \" + model2px(-H.A) + \")\")\n .call(nucleotides()\n .model2px(model2px)\n .sequence(function(d) {\n return geneticEngine.codonComplement(d.index);\n })\n .backbone(false)\n .randomEnter(false));\n\n enter.append(\"image\").attr({\n \"class\": \"trna-neck\",\n \"x\": model2px(0.52 * (codonWidth - W.TRNA_NECK)),\n \"y\": model2px(-H.TRNA_NECK - H.TRNA * 0.95 - H.A * 0.92),\n \"width\": model2px(W.TRNA_NECK),\n \"height\": model2px(H.TRNA_NECK),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/tRNA_neck.png\")\n });\n enter.append(\"image\").attr({\n \"class\": \"trna-base\",\n \"x\": model2px(offset),\n \"y\": model2px(-H.TRNA - H.A * 0.92),\n \"width\": model2px(W.TRNA),\n \"height\": model2px(H.TRNA),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/tRNA_base.png\")\n });\n\n update = d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n update.select(\".trna-neck\").style(\"opacity\", function(d) {\n return d.neck;\n });\n\n exit = d3.transition(selection.exit())\n .attr(\"transform\", function(d, i) {\n return \"translate(\" + model2px(nucleotides.HEIGHT * -5) + \", \" + model2px(nucleotides.HEIGHT * -4) + \") \" +\n translateFuncInv(d, i) + \" rotate(-30)\";\n })\n .style(\"opacity\", 0);\n exit.selectAll(\".bonds\").style(\"opacity\", 0);\n exit.remove();\n },\n\n viewPort: function(parent, data) {\n var position = data.viewPort[0].position,\n ease = data.viewPort[0].ease,\n drag = data.viewPort[0].drag,\n viewport = d3.transition(d3.select(node));\n\n // This is a bit hacky. In fact we use d3 transitions to modify model,\n // not the SVG element! It could be implemented also as a MD2D modeler\n // transition (see atom transitions), but this approach fits well our\n // needs and we reuse a lot of nice d3.transition features. We could\n // also consider removing atom transitions completely and use similar\n // approach for them. As this is just one exception, leave it for now,\n // but in the future it could be useful to chose only one approach\n // (d3.transitions vs custom transitions handled by MD2D modeler).\n\n // Update dragging behavior. Limit dragging to X axis.\n model.set(\"viewPortDrag\", drag ? \"x\" : false);\n // Duck test whether viewportUpdate is a transition or selection.\n // See D3 API Reference - d3.transition(selection) returns transition\n // only when called in the context of other transition. Otherwise it\n // returns selection.\n if (viewport.duration) {\n // Transition!\n viewport.ease(ease);\n viewport.tween(\"model-update\", function() {\n var i = d3.interpolate(Number(model.properties.viewPortX), position * nucleotides.WIDTH);\n return function(t) {\n var newVal = i(t);\n if (Math.abs(model.properties.viewPortX - newVal) > 1e-3) {\n model.properties.viewPortX = newVal;\n }\n };\n });\n } else {\n // Selection! Immediate update of the model.\n model.set(\"viewPortX\", position * nucleotides.WIDTH);\n }\n },\n\n background: function(parent, data) {\n appendTranscriptionBg(parent);\n d3.transition(d3.select(node).select(\".container-background\")).attr(\"fill\", data.background[0].color);\n }\n };\n}\n\nGeneticElementsRenderer.W = W;\nGeneticElementsRenderer.H = H;\nGeneticElementsRenderer.OBJECT_NAMES = OBJECT_NAMES;\n\nexport default GeneticElementsRenderer;\n","\nexport default function StateManager(names) {\n var api,\n states = [],\n stateByName = {};\n\n api = {\n newState: function(stateName, stateDef) {\n var state = $.extend(true, {}, stateDef);\n names.forEach(function(n) {\n if (typeof state[n] === \"undefined\") {\n state[n] = [];\n }\n });\n states.push(state);\n stateByName[stateName] = state;\n },\n extendLastState: function(stateName, stateDef) {\n var prevState = states[states.length - 1],\n state = {};\n\n names.forEach(function(n) {\n state[n] = [];\n if (typeof stateDef[n] !== \"undefined\") {\n // Array expected!\n stateDef[n].forEach(function(objDef, idx) {\n state[n].push($.extend(true, {}, prevState[n][idx], objDef));\n });\n }\n });\n states.push(state);\n stateByName[stateName] = state;\n },\n getState: function(name) {\n var orgState = stateByName[name],\n state = $.extend(true, {}, orgState),\n objName;\n for (objName in state) {\n if (state.hasOwnProperty(objName)) {\n state[objName].forEach(function(d, i) {\n var value;\n for (value in d) {\n if (typeof d[value] === \"function\") {\n // Very important - evaluate function from original state\n // object, not from copy! It can be important where two\n // functions call each other. It should still work.\n d[value] = orgState[objName][i][value]();\n }\n }\n });\n }\n }\n return state;\n }\n };\n return api;\n};\n","\nimport nucleotides from 'models/md2d/views/nucleotides';\nimport GeneticElementsRenderer from 'models/md2d/views/genetic-elements-renderer';\nimport StateManager from 'common/views/state-manager';\nvar H = GeneticElementsRenderer.H,\n OBJECT_NAMES = GeneticElementsRenderer.OBJECT_NAMES;\n\n/**\n * Returns StateManager with definitions of DNA / genetic animations states.\n */\nexport default function geneticAnimStates(model) {\n var stateMgr = new StateManager(OBJECT_NAMES),\n geneticEngine = model.geneticEngine(),\n // Viewport dimensions are immutable, so save them once.\n viewPortWidth = model.get(\"viewPortWidth\"),\n viewPortHeight = model.get(\"viewPortHeight\"),\n vx = viewPortWidth * 0.5,\n vy = viewPortHeight * 0.5,\n\n lastStep;\n\n function getStep() {\n var state = geneticEngine.state();\n if (state.name === \"translation-end\") {\n return model.geneticEngine().lastTranslationStep();\n }\n lastStep = !isNaN(state.step) ? state.step : lastStep;\n return lastStep;\n }\n\n function ribosomeX() {\n return (1.65 + Math.max(0, getStep() - 2) * 3) * nucleotides.WIDTH;\n }\n\n function trnaX() {\n return this.index() * 3 * nucleotides.WIDTH;\n }\n\n stateMgr.newState(\"intro-cells\", {\n cells: [{\n translateX: vx + 0.33,\n translateY: vy,\n scale: 1\n }],\n dna1: [{\n translateX: vx + 0.33,\n translateY: vy,\n scale: 0.13,\n opacity: 0\n }],\n viewPort: [{\n position: 0,\n ease: \"cubic-in-out\",\n drag: false\n }],\n background: [{\n color: \"#55b7b2\"\n }]\n });\n stateMgr.extendLastState(\"intro-zoom1\", {\n cells: [{\n translateX: vx,\n scale: 6\n }],\n dna1: [{\n translateX: vx,\n scale: 0.78,\n opacity: 5\n }],\n dna2: [{\n translateX: vx,\n translateY: vy,\n scale: 0.5,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-zoom2\", {\n cells: [{\n scale: 24\n }],\n dna1: [{\n scale: 3.12,\n opacity: 0\n }],\n dna2: [{\n scale: 2,\n opacity: 1\n }],\n dna3: [{\n translateX: vx,\n translateY: vy,\n scale: 0.2,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-zoom3-s0\", {\n cells: [{}],\n dna2: [{\n scale: 3.8,\n opacity: 0\n }],\n dna3: [{\n scale: 0.4,\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-zoom3\", {\n cells: [{}],\n dna3: [{\n scale: 0.6\n }],\n polymeraseUnder: [{\n scale: 0.2,\n translateX: -2,\n translateY: 4,\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-polymerase-s0\", {\n cells: [{}],\n dna3: [{}],\n polymeraseUnder: [{\n scale: 0.8,\n translateX: vx,\n translateY: vy,\n opacity: 1\n }],\n polymeraseOver: [{\n translateX: vx,\n translateY: vy,\n scale: 0.8,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-polymerase\", {\n cells: [{}],\n dna3: [{}],\n polymeraseUnder: [{\n scale: 1,\n }],\n polymeraseOver: [{\n scale: 1,\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"dna-s0\", {\n cells: [{\n opacity: 0\n }],\n dna3: [{\n scale: 1.5\n }],\n polymeraseUnder: [{\n scale: 2.5\n }],\n polymeraseOver: [{\n scale: 2.5\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"dna\", {\n polymeraseUnder: [{\n opacity: 0\n }],\n polymeraseOver: [{\n opacity: 0\n }],\n dna3: [{\n opacity: 0\n }],\n dna: [{\n translateX: -model.geneticEngine().PRECODING_LEN * nucleotides.WIDTH,\n translateY: viewPortHeight / 2 + nucleotides.HEIGHT,\n bonds: 1\n }],\n dnaComp: [{\n translateX: -model.geneticEngine().PRECODING_LEN * nucleotides.WIDTH,\n translateY: viewPortHeight / 2 - nucleotides.HEIGHT,\n bonds: 1\n }],\n viewPort: [{\n position: -2,\n drag: true\n }],\n background: [{\n color: \"url(#transcription-bg)\"\n }]\n });\n stateMgr.extendLastState(\"transcription\", {\n dna: [{\n translateY: viewPortHeight / 2 + 2.5 * nucleotides.HEIGHT,\n bonds: 0\n }],\n dnaComp: [{\n translateY: viewPortHeight / 2 - 2.5 * nucleotides.HEIGHT,\n bonds: function() {\n var limit = getStep() + model.geneticEngine().PRECODING_LEN;\n return function(d) {\n return d.region === \"c\" && d.idx < limit ? 1 : 0;\n };\n }\n }],\n mrna: [{\n translateY: viewPortHeight / 2 - 0.5 * nucleotides.HEIGHT,\n bonds: 1,\n direction: 1\n }],\n viewPort: [{\n position: function() {\n return Math.max(0, Math.min(model.get(\"DNA\").length - 10, getStep() - 6)) - 2;\n },\n ease: \"linear\"\n }],\n background: [{}]\n });\n stateMgr.extendLastState(\"transcription-end\", {\n dna: [{}],\n dnaComp: [{\n bonds: function() {\n return function(d) {\n return d.region === \"c\" ? 1 : 0;\n };\n }\n }],\n mrna: [{}],\n polymeraseUnder: [{\n translateX: function() {\n return model.get(\"DNA\").length * nucleotides.WIDTH;\n },\n translateY: 0.5 * viewPortHeight,\n scale: 3.5,\n opacity: 0\n }],\n polymeraseOver: [{\n translateX: function() {\n return model.get(\"DNA\").length * nucleotides.WIDTH;\n },\n translateY: 0.5 * viewPortHeight,\n scale: 3.5,\n opacity: 0\n }],\n viewPort: [{\n position: function() {\n return Math.max(0, model.get(\"DNA\").length - 10) - 2;\n }\n }],\n background: [{}]\n });\n stateMgr.extendLastState(\"after-transcription\", {\n dna: [{}],\n dnaComp: [{}],\n mrna: [{}],\n polymeraseUnder: [{\n opacity: 1\n }],\n polymeraseOver: [{\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"before-translation-s0\", {\n dna: [{}],\n dnaComp: [{}],\n mrna: [{}],\n polymeraseUnder: [{\n scale: 1.4\n }],\n polymeraseOver: [{\n scale: 1.4,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{\n color: \"#55b7b2\"\n }]\n });\n stateMgr.extendLastState(\"before-translation-s1\", {\n dna: [{}],\n dnaComp: [{}],\n mrna: [{}],\n polymeraseUnder: [{\n translateX: function() {\n return model.get(\"viewPortX\") + 0.5 * viewPortWidth + 5;\n }, // + 5!\n translateY: 0.5 * viewPortHeight - 2,\n scale: 0.7\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"before-translation-s2\", {\n dna: [{}],\n dnaComp: [{}],\n mrna: [{}],\n nucleus: [{\n translateX: 0.5 * viewPortWidth - 2 * nucleotides.WIDTH,\n translateY: 0.5 * viewPortHeight\n }],\n viewPort: [{\n position: -2,\n ease: \"cubic-in-out\"\n }],\n background: [{}]\n });\n stateMgr.extendLastState(\"before-translation-s3\", {\n dna: [{\n translateY: 4 * nucleotides.HEIGHT\n }],\n dnaComp: [{\n translateY: 2 * nucleotides.HEIGHT,\n bonds: 0\n }],\n mrna: [{\n bonds: 0\n }],\n nucleus: [{\n translateY: 0\n }],\n viewPort: [{}],\n background: [{\n color: function() {\n return model.get(\"backgroundColor\");\n }\n }]\n });\n stateMgr.extendLastState(\"before-translation-s4\", {\n dna: [{\n translateY: -1 * nucleotides.HEIGHT\n }],\n dnaComp: [{\n translateY: -3 * nucleotides.HEIGHT,\n }],\n mrna: [{\n translateY: 2.5 * nucleotides.HEIGHT\n }],\n nucleus: [{\n translateY: H.NUCLEUS * -0.5\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"before-translation\", {\n mrna: [{\n translateY: 1.5 * nucleotides.HEIGHT,\n direction: 2,\n bonds: 0\n }],\n ribosomeBottom: [{\n translateX: -3,\n translateY: vy,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-s0\", {\n mrna: [{}],\n ribosomeBottom: [{\n translateX: ribosomeX,\n translateY: 1.75 * nucleotides.HEIGHT,\n opacity: 1\n }],\n ribosomeTop: [{\n translateX: -3,\n translateY: 6,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-s1\", {\n mrna: [{}],\n ribosomeBottom: [{}],\n ribosomeTop: [{\n translateX: ribosomeX,\n translateY: 4.52 * nucleotides.HEIGHT,\n opacity: 1\n }],\n ribosomeUnder: [{\n translateX: ribosomeX,\n translateY: 3.7 * nucleotides.HEIGHT,\n opacity: 0\n }],\n ribosomeOver: [{\n translateX: ribosomeX,\n translateY: 3.7 * nucleotides.HEIGHT,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation\", {\n mrna: [{\n bonds: function() {\n var step = getStep();\n return function(d) {\n return d.idx < 3 * (step - 2) || d.idx >= 3 * step ? 0 : 1;\n };\n }\n }],\n ribosomeUnder: [{\n opacity: 1\n }],\n ribosomeOver: [{\n opacity: 1\n }],\n trna: [{\n index: function() {\n return getStep() - 2;\n },\n translateX: trnaX,\n translateY: 2.5 * nucleotides.HEIGHT,\n neck: 0\n }, {\n index: function() {\n return getStep() - 1;\n },\n translateX: trnaX,\n translateY: 2.5 * nucleotides.HEIGHT,\n neck: 1\n }],\n viewPort: [{\n position: function() {\n return Math.max(0, 3 * (getStep() - 3)) - 2;\n },\n ease: \"linear\"\n }],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-step0\", {\n mrna: [{\n bonds: function() {\n var step = getStep();\n return function(d) {\n return d.idx < 3 * (step - 3) || d.idx >= 3 * step ? 0 : 1;\n };\n }\n }],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n trna: [{\n index: function() {\n return getStep() - 3;\n },\n }, {\n index: function() {\n return getStep() - 2;\n },\n }, {\n index: function() {\n return getStep() - 1;\n },\n translateX: trnaX,\n translateY: 2.5 * nucleotides.HEIGHT,\n neck: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-step1\", {\n mrna: [{}],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n trna: [{}, {\n neck: 0\n }, {}],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s0\", {\n mrna: [{}],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n trna: [{\n index: function() {\n return getStep() - 2;\n }\n }, {\n index: function() {\n return getStep() - 1;\n },\n neck: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s1\", {\n mrna: [{\n bonds: function() {\n var step = getStep();\n return function(d) {\n return d.idx < 3 * (step - 1) || d.idx >= 3 * step ? 0 : 1;\n };\n }\n }],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n trna: [{\n index: function() {\n return getStep() - 1;\n },\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s2\", {\n mrna: [{\n bonds: 0\n }],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s3\", {\n mrna: [{}],\n ribosomeBottom: [{\n translateX: ribosomeX,\n translateY: 1.75 * nucleotides.HEIGHT,\n opacity: 1\n }],\n ribosomeTop: [{\n translateX: ribosomeX,\n translateY: 4.52 * nucleotides.HEIGHT,\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s4\", {\n mrna: [{}],\n ribosomeBottom: [{\n translateY: 1.75 * nucleotides.HEIGHT - 0.3,\n }],\n ribosomeTop: [{\n translateY: 4.52 * nucleotides.HEIGHT + 0.5,\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s5\", {\n mrna: [{}],\n ribosomeBottom: [{\n translateX: function() {\n return ribosomeX() + 8;\n },\n translateY: 1.75 * nucleotides.HEIGHT - 0.5,\n }],\n ribosomeTop: [{\n translateX: function() {\n return ribosomeX() + 8;\n },\n translateY: 4.52 * nucleotides.HEIGHT + 5,\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end\", {\n mrna: [{}],\n viewPort: [{}],\n background: [{}]\n });\n\n return stateMgr;\n};\n"," /*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS203: Remove `|| {}` from converted for-own loops\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nSimple module which provides mutations context menu for DNA nucleotides.\n\nCSS style definition: sass/lab/_context-menu.sass\n*/\nimport $__common_jquery_svg_class from 'common/jquery-svg-class';\n// jQuery Context Menu uses jQuery functions like .addClass(), .hasClass() and .removeClass()\n// on context menu trigger elements. In our case they are SVG elements which are not supported\n// by jQuery. Include a special plugin that adds support of SVG elements to these jQuery functions.\n$__common_jquery_svg_class;\n\nexport default {\n /*\n Registers context menu for DOM elements defined by @selector.\n @model should be an instance of Modeler class (MD2D Modeler).\n @DNAComplement indicates whether this menu is registered for\n DNA or DNA complementary strand.\n */\n register(selector, model, DNAComplement, i18n) {\n // Define handler for menu show and hide events. They setup classes of\n // substitution sub-menu items. One item is hidden (X-to-X - as such\n // mutation is useless), other items receive correct classes dynamically\n // (e.g. A-to-G, A-to-C, A-to-T). They are used to set appropriate icons.\n let clickedNucleoType = null;\n const onMenuShow = function(options) {\n // Update closure variable containing current nucleotide type. As it can\n // be changed by the mutation, it's important to save it.\n clickedNucleoType = d3.select(options.$trigger[0]).datum().type;\n const subsItems = options.items[\"Substitution\"].items;\n for (let key of Object.keys(subsItems || {})) {\n const item = subsItems[key];\n key = key.split(\":\")[1];\n item.$node.addClass(`${clickedNucleoType}-to-${key}`);\n }\n // Nucleotide should glow as long as menu is open. The trigger is SVG\n // element, so use d3 to add class, jQuery won't work.\n d3.select(options.$trigger[0]).classed(\"glowing\", true);\n // Ensure that this callback returns true (required to show menu).\n return true;\n };\n const onMenuHide = function(options) {\n // Note that we can't read d3 data again and check nucleotide type, as it\n // could be changed by the mutation. The function relies on closure\n // variable set by the onMenuShow function.\n const subsItems = options.items[\"Substitution\"].items;\n for (let key of Object.keys(subsItems || {})) {\n const item = subsItems[key];\n key = key.split(\":\")[1];\n item.$node.removeClass(`${clickedNucleoType}-to-${key}`);\n }\n // Make sure that clicked nucleotide is no longer glowing. The trigger is\n // SVG element, so use d3 to remove class, jQuery won't work.\n d3.select(options.$trigger[0]).classed(\"glowing\", false);\n // Ensure that this callback returns true (required to hide menu).\n return true;\n };\n\n // Unregister the same menu first.\n $.contextMenu(\"destroy\", selector);\n // Register new one.\n $.contextMenu({\n // Selector defines DOM elements which can trigger this menu.\n selector,\n // Append to \".lab-responsive-content\" to enable dynamic font-scaling.\n appendTo: \".lab-responsive-content\",\n // Class of the menu.\n className: \"mutations-menu\",\n // Left click.\n trigger: \"left\",\n\n events: {\n show: onMenuShow,\n hide: onMenuHide\n },\n\n callback(key, options) {\n key = key.split(\":\");\n // Get nucleotide.\n const d = d3.select(options.$trigger[0]).datum();\n switch (key[0]) {\n case \"substitute\":\n return model.geneticEngine().mutate(d.idx, key[1], DNAComplement);\n case \"insert\":\n return model.geneticEngine().insert(d.idx, key[1], DNAComplement);\n case \"delete\":\n return model.geneticEngine().delete(d.idx);\n }\n },\n\n items: {\n \"Substitution\": {\n name: i18n.t(\"md2d.mutations_menu.substitution_mutation\"),\n className: \"substitution-submenu\",\n items: {\n \"substitute:A\": {\n name: \"\"\n },\n \"substitute:T\": {\n name: \"\"\n },\n \"substitute:G\": {\n name: \"\"\n },\n \"substitute:C\": {\n name: \"\"\n }\n }\n },\n \"Insertion\": {\n name: i18n.t(\"md2d.mutations_menu.insertion_mutation\"),\n className: \"insertion-submenu\",\n items: {\n \"insert:A\": {\n name: i18n.t(\"md2d.mutations_menu.insert\"),\n className: \"A\"\n },\n \"insert:T\": {\n name: i18n.t(\"md2d.mutations_menu.insert\"),\n className: \"T\"\n },\n \"insert:G\": {\n name: i18n.t(\"md2d.mutations_menu.insert\"),\n className: \"G\"\n },\n \"insert:C\": {\n name: i18n.t(\"md2d.mutations_menu.insert\"),\n className: \"C\"\n }\n }\n },\n \"delete\": {\n name: i18n.t(\"md2d.mutations_menu.deletion_mutation\")\n }\n }\n });\n // Don't return anything.\n }\n};\n"," \nimport nucleotides from 'models/md2d/views/nucleotides';\nimport GeneticElementsRenderer from 'models/md2d/views/genetic-elements-renderer';\nimport GeneticAnimStates from 'models/md2d/views/genetic-anim-states';\nimport mutationsContextMenu from 'models/md2d/views/mutations-context-menu';\nvar OBJECT_NAMES = GeneticElementsRenderer.OBJECT_NAMES;\n\n// Implement .interrupt() method that cancels all currently scheduled\n// transitions. Based on Mike's idea:\n// https://github.com/mbostock/d3/issues/1410#issuecomment-21251284\nd3.selection.prototype.interrupt = function() {\n return this.each(function() {\n var lock = this.__transition__;\n if (lock) {\n var active = -1;\n for (var id in lock)\n if ((id = +id) > active) active = id;\n lock.active = active + 1;\n }\n });\n};\n\nfunction GeneticRenderer(modelView, model) {\n var api,\n node = modelView.node,\n model2px = modelView.model2px,\n model2pxInv = modelView.model2pxInv,\n viewportG = d3.select(node).select(\".below-atoms\"),\n\n g = null,\n currentTrans = null,\n state = null,\n prevAnimState = null,\n prevAnimStep = null,\n suppressViewport = false,\n transitionInProgress = false,\n animStateInProgress = null,\n\n stateMgr = new GeneticAnimStates(model),\n objectRenderer = new GeneticElementsRenderer(node, model2px, model2pxInv, model),\n\n transitionFunction;\n\n function init() {\n // Redraw DNA / mRNA when DNA state is changed.\n model.geneticEngine().on(\"change\", render);\n // Play animation when there is a \"transition\" event.\n model.geneticEngine().on(\"transition\", transition);\n\n // When DNAMutations is changed, cleanup & render again.\n model.addPropertiesListener([\"DNAMutations\"], setup);\n\n // When viewPortX is changed render DNA and mRNA again. Also center\n // protein while in 'translation-end' state.\n model.addPropertiesListener([\"viewPortX\"], function() {\n // state.name === \"transcription\" && transitionInProgress is an icky\n // workaround for the problem with transitions when new nucleotide is\n // entering. Rendering performed by this function breaks the\n // animation. However, when state === \"transcription\", we actually doesn't\n // have to render DNA and mRNA, as it will be rendered anyway.\n if (!g || !model.get(\"DNA\") || (state.name === \"transcription\" && transitionInProgress)) return;\n\n // state.name values are subset of all animation states. We define\n // more animation states than we publish for author / users\n // (animations with -s0, -s1, (...) suffixes).\n var data = stateMgr.getState(animStateInProgress || state.name);\n\n objectRenderer.mrna(g, data, true);\n objectRenderer.dna(g, data, true);\n objectRenderer.dnaComp(g, data, true);\n\n if (!transitionInProgress &&\n state.name === \"translation-end\" &&\n model.getNumberOfAtoms() > 0) {\n model.geneticEngine().centerProtein();\n }\n });\n\n // Register mutation menus for DNA and DNA complement. Note that\n // jQuery.contextMenu uses event delegation, so it's fully enough to\n // register this menu only once, even before these elements exists.\n mutationsContextMenu.register('[class~=\"dna\"] [class~=\"clickable-nucleo\"]', model, false, modelView.i18n);\n mutationsContextMenu.register('[class~=\"dna-comp\"] [class~=\"clickable-nucleo\"]', model, true, modelView.i18n);\n }\n\n /**\n * Setups genetic renderer. It will be called when new parent view is created\n * or reseted.\n *\n * @private\n */\n function setup() {\n state = model.geneticEngine().state();\n\n // Cleanup.\n cancelTransitions();\n viewportG.selectAll(\"g.genetics\").remove();\n g = null;\n\n if (!model.get(\"DNA\")) {\n // When DNA is not defined (=== \"\", undefined or null) genetic\n // renderer has nothing to do.\n return;\n }\n\n // Create a new container.\n g = viewportG.insert(\"g\", \".image-container-below\").attr(\"class\", \"genetics\");\n g.append(\"g\").attr(\"class\", \"background-layer\");\n g.append(\"g\").attr(\"class\", \"under-dna-layer\");\n g.append(\"g\").attr(\"class\", \"dna-layer\");\n g.append(\"g\").attr(\"class\", \"over-dna-layer\");\n g.append(\"g\").attr(\"class\", \"top-layer\");\n\n render();\n }\n\n /**\n * Renders DNA-related graphics using \"DNA\" and \"DNAState\"\n * options of the model.\n */\n function render(suppressViewportUpdate) {\n suppressViewport = suppressViewportUpdate;\n\n // Update DNA state.\n state = model.geneticEngine().state();\n\n cancelTransitions();\n\n // Force rendering of all objects when render was called before previous\n // transition ended. This means that we can be somewhere between states\n // and it's impossible to detect which objects should be rendered using\n // previous and current animation state.\n renderState(g, state.name, null, transitionInProgress);\n\n transitionInProgress = false;\n }\n\n /**\n * Renders animation state. It updates all objects from previous and new state.\n *\n * You can pass d3.selection or d3.transition as \"parent\" argument to decide whether\n * new state should be rendered immediately or using transition.\n *\n * @private\n * @param {d3.selection OR d3.transition} parent d3.selection or d3.transition object.\n * @param {String} animState animation state name.\n * @param {function} onStartCallback callback executed at the beginning of transition\n * or immediately if parent isn't a transition (optional).\n * @param {boolean} forceAll forces re-rendering of all scene objects (optional).\n */\n function renderState(parent, animState, onStartCallback, forceAll) {\n var data = stateMgr.getState(animState),\n prevAnimStateData = prevAnimState ? stateMgr.getState(prevAnimState) : null;\n\n // TODO: make it simpler.\n function shouldRenderObj(name) {\n var inData = !!data[name].length,\n inPrevData = !!(prevAnimStateData && prevAnimStateData[name].length);\n\n if (suppressViewport && name === \"viewPort\") {\n // Viewport update can be disabled using special variable.\n return false;\n } else if (forceAll || inData || inPrevData) {\n // Render all objects from current and previous states.\n return true;\n }\n return false;\n }\n\n function render() {\n parent.each(function() {\n var parent = d3.select(this);\n OBJECT_NAMES.forEach(function(name) {\n if (shouldRenderObj(name)) {\n objectRenderer[name](parent, data);\n }\n });\n });\n if (onStartCallback) onStartCallback(parent);\n }\n\n if (parent.duration) {\n // Transition.\n parent.each(\"start.transition-name\", function() {\n animStateInProgress = animState;\n render();\n });\n parent.each(\"end.transition-name\", function() {\n animStateInProgress = null;\n });\n } else {\n render();\n }\n\n prevAnimState = animState;\n prevAnimStep = state.step || 0; // when undefined or NaN\n }\n\n /**\n * Returns a new, chained transition.\n * This transition will be executed when previous one ends.\n *\n * @private\n * @return {d3 transtion} d3 transtion object.\n */\n function nextTrans(forceNew) {\n var newTrans;\n // TODO: this first check is a workaround.\n // Ideal scenario would be to call always:\n // currentTrans[name] = currentTrans[name].transition();\n // but it seems to fail when transition has already ended.\n if (!forceNew && currentTrans && currentTrans.node().__transition__) {\n // Some transition is currently in progress, chain a new transition.\n newTrans = currentTrans.transition();\n } else {\n // All transitions ended, just create a new one.\n newTrans = g.transition();\n }\n currentTrans = newTrans;\n return newTrans;\n }\n\n function cancelTransitions() {\n var d3node = d3.select(node);\n var g = d3node.select(\"g.genetics\");\n if (!g.empty() && g.node().__transition__) {\n // Note that some transitions can be applied to elements that live outside g.genetics\n // element, e.g. background. So, it isn't enough to use d3.selectAll(\"g.genetics *\").\n d3node.selectAll(\"g.genetics, g.genetics *\").interrupt();\n d3node.select(\".container-background\").interrupt(); // background changes\n currentTrans = null;\n animStateInProgress = null;\n }\n }\n\n /**\n * Triggers animation state transition.\n */\n function transition(transitionName, suppressViewportUpdate) {\n transitionInProgress = true;\n suppressViewport = suppressViewportUpdate;\n\n // Update DNA state.\n state = model.geneticEngine().state();\n\n if (Number(transitionName.split(\":\")[1]) > 0) {\n // e.g. translation:5 or transcription:7\n // We have one common transition function for all \"transcription:1\" to\n // \"transcription:N\" transitions called \"transcription\", as well as\n // one common transition function for all \"translation:1\" to\n // \"translation:N\" transitions called \"translation\".\n transitionName = transitionName.split(\":\")[0];\n }\n\n transitionFunction[transitionName]();\n\n currentTrans.each(\"end.trans-end\", function() {\n transitionInProgress = false;\n // Notify engine that transition has ended.\n model.geneticEngine().transitionEnded();\n });\n }\n\n /**\n * Definition of all transition functions.\n * @private\n * @type {Object}\n */\n transitionFunction = {\n \"dna-updated\": function dnaUpdated() {\n // Special state - render current animation state again,\n // as model was updated.\n var t = nextTrans(true).ease(\"cubic-in-out\").duration(800);\n renderState(t, state.name, null, true);\n },\n\n \"intro-zoom1\": function introZoom1() {\n var t = nextTrans(true).ease(\"cubic\").duration(3000);\n renderState(t, \"intro-zoom1\");\n },\n\n \"intro-zoom2\": function introZoom2() {\n var t = nextTrans(true).ease(\"linear\").duration(3000);\n renderState(t, \"intro-zoom2\");\n },\n\n \"intro-zoom3\": function introZoom3() {\n var t = nextTrans(true).ease(\"linear\").duration(2000);\n renderState(t, \"intro-zoom3-s0\");\n\n t = nextTrans().ease(\"quad-out\").duration(3300);\n renderState(t, \"intro-zoom3\");\n },\n\n \"intro-polymerase\": function introPolymerase() {\n var t = nextTrans(true).ease(\"quad-out\").duration(3000);\n renderState(t, \"intro-polymerase-s0\");\n\n t = nextTrans().ease(\"cubic-in-out\").duration(1000);\n renderState(t, \"intro-polymerase\");\n },\n\n \"dna\": function dna() {\n var t = nextTrans(true).duration(2000);\n renderState(t, \"dna-s0\");\n\n\n t = nextTrans().duration(1000);\n renderState(t, \"dna\", function(t) {\n // Make some transitions almost immediate.\n t.selectAll(\".nucleotide\").duration(5);\n t.selectAll(\".container-background\").duration(5);\n });\n },\n\n \"transcription:0\": function transcription0() {\n var t = nextTrans(true).duration(1500);\n renderState(t, \"transcription\", function(t) {\n // Reselect bonds transition, change duration to 250.\n t.selectAll(\".bonds\").duration(250);\n });\n },\n\n \"transcription\": function transcription() {\n var t = nextTrans(true).duration(500);\n renderState(t, \"transcription\", function(t) {\n // Reselect bonds transition, change duration to ease to cubic.\n t.selectAll(\".bonds\").ease(\"cubic\");\n });\n },\n\n \"transcription-end\": function transcriptionEnd() {\n var t = nextTrans(true).duration(500);\n renderState(t, \"transcription-end\", function(t) {\n // Reselect bonds transition, change duration to ease to cubic.\n t.selectAll(\".bonds\").ease(\"cubic\");\n });\n },\n\n \"after-transcription\": function afterTranscription() {\n var t = nextTrans(true).ease(\"cubic-in-out\").duration(700);\n renderState(t, \"after-transcription\");\n },\n\n \"before-translation\": function beforeTranslation() {\n var t = nextTrans(true).ease(\"cubic-in-out\").duration(1000);\n renderState(t, \"before-translation-s0\", function(t) {\n t.selectAll(\".container-background\").duration(1);\n });\n\n t = nextTrans().ease(\"cubic-in-out\").duration(1500);\n renderState(t, \"before-translation-s1\");\n\n t = nextTrans().ease(\"cubic-in-out\").duration(1500);\n renderState(t, \"before-translation-s2\");\n\n t = nextTrans().ease(\"cubic\").duration(1000);\n renderState(t, \"before-translation-s3\", function(t) {\n t.selectAll(\".bonds\").duration(250);\n t.selectAll(\".container-background\").duration(1);\n });\n\n t = nextTrans().ease(\"cubic-out\").duration(1000);\n renderState(t, \"before-translation-s4\");\n\n t = nextTrans().ease(\"cubic-out\").duration(500);\n renderState(t, \"before-translation\");\n },\n\n \"translation:0\": function translation0() {\n var t = nextTrans(true).ease(\"cubic-in-out\").duration(1000);\n renderState(t, \"translation-s0\");\n\n t = nextTrans().ease(\"cubic-in-out\").duration(1000);\n renderState(t, \"translation-s1\");\n\n t = nextTrans().ease(\"cubic-in-out\").duration(500);\n renderState(t, \"translation\");\n },\n\n \"translation\": function translation() {\n var geneticEngine = model.geneticEngine(),\n codonIdx = state.step - 1,\n newAADuration = 1000,\n shiftDuration = 500,\n t;\n\n t = nextTrans(true).duration(newAADuration);\n renderState(t, \"translation-step0\", function(t) {\n t.selectAll(\".bonds\").ease(\"cubic\");\n geneticEngine.translationStepStarted(codonIdx, 1.45 + codonIdx * 3 * nucleotides.WIDTH, 3.95,\n 0.53 + codonIdx * 3 * nucleotides.WIDTH, 1.57, newAADuration);\n });\n\n t = nextTrans().duration(shiftDuration);\n renderState(t, \"translation-step1\", function(t) {\n t.selectAll(\".trna-neck\").duration(150);\n geneticEngine.shiftAminoAcids(codonIdx, 2 * nucleotides.WIDTH, shiftDuration);\n });\n\n // This will remove 3rd tRNA.\n if (codonIdx > 0) {\n t = nextTrans().duration(900);\n renderState(t, \"translation\", function(t) {\n geneticEngine.connectAminoAcid(codonIdx);\n t.selectAll(\".bonds\").duration(150);\n });\n }\n },\n\n \"translation-end\": function translationEnd() {\n var geneticEngine = model.geneticEngine(),\n aaCount = model.getNumberOfAtoms(),\n t;\n\n if (aaCount >= 1) {\n t = nextTrans(true).duration(150);\n renderState(t, \"translation-end-s0\");\n\n t = nextTrans().duration(800);\n renderState(t, \"translation-end-s1\", function(t) {\n geneticEngine.translationCompleted();\n t.selectAll(\".bonds\").duration(150);\n });\n\n t = nextTrans().duration(800);\n renderState(t, \"translation-end-s2\", function(t) {\n t.selectAll(\".bonds\").duration(150);\n });\n\n t = nextTrans().duration(500);\n renderState(t, \"translation-end-s3\");\n } else {\n t = nextTrans(true).duration(500);\n renderState(t, \"translation-end-s3\");\n }\n\n t = nextTrans().duration(300);\n renderState(t, \"translation-end-s4\");\n\n t = nextTrans().duration(1000);\n renderState(t, \"translation-end-s5\");\n\n t = nextTrans().duration(700);\n renderState(t, \"translation-end\", function() {\n geneticEngine.centerProtein(700);\n });\n }\n };\n\n api = {\n setup: setup,\n render: render\n };\n\n init();\n return api;\n}\n\nexport default GeneticRenderer;\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\n A simple function to wrap a string of text into an SVG text node of a given width\n by creating tspans and adding words to them until the computedTextLength of the\n tspan is greater than the desired width. Returns the number of lines.\n\n If no wrapping is desired, use maxWidth=-1\n*/\n\nlet wrapSVGText;\nconst svgUrl = \"http://www.w3.org/2000/svg\";\n\nexport default wrapSVGText = (window.wrapSVGText = function(text, svgTextNode, maxWidth, x, dy) {\n // collect dashes\n let dashArray, newlinemode, width, words;\n const dashes = /-/gi;\n\n // if text contains newlines\n if (text.search(\"\\n\") > 0) {\n // then split on newlines\n words = text.split(\"\\n\");\n newlinemode = true;\n dashArray = [];\n } else {\n // else split on spaces or dashes\n words = text.split(/[\\s-]/);\n newlinemode = false;\n dashArray = (() => {\n let result;\n const result1 = [];\n while ((result = dashes.exec(text))) {\n result1.push(result.index);\n }\n return result1;\n })();\n }\n\n let curLineLength = 0;\n let computedTextLength = 0;\n let numLines = 1;\n let widestWidth = 0;\n\n // maxWidth = Infinity if maxWidth is -1\n\n for (let i = 0; i < words.length; i++) {\n var line, tempText, textNode, tspanNode;\n const word = words[i];\n curLineLength += word.length + 1;\n\n if ((i === 0) || newlinemode || ((maxWidth > 0) && (computedTextLength > maxWidth))) { // create new tspan\n var lastWord;\n if (i > 0) {\n if (newlinemode) {\n widestWidth = Math.max(tspanNode.getComputedTextLength(), widestWidth);\n numLines++;\n } else {\n tempText = tspanNode.firstChild.nodeValue;\n if (tempText.length > (words[i - 1].length + 1)) {\n // remove the last word added and place it on the next line\n lastWord = tempText.slice(tempText.length - words[i - 1].length - 1);\n tspanNode.firstChild.nodeValue = tempText.slice(0, (tempText.length - words[i - 1].length - 1));\n } else if (tempText.length === (words[i - 1].length + 1)) {\n tspanNode.firstChild.nodeValue = tempText.slice(0, (tempText.length - 1));\n }\n widestWidth = Math.max(tspanNode.getComputedTextLength(), widestWidth);\n numLines++;\n }\n }\n\n tspanNode = document.createElementNS(svgUrl, \"tspan\");\n tspanNode.setAttributeNS(null, \"x\", x);\n tspanNode.setAttributeNS(null, \"dy\", i === 0 ? 0 : dy);\n\n textNode = document.createTextNode(line);\n tspanNode.appendChild(textNode);\n svgTextNode.appendChild(tspanNode);\n\n if (~dashArray.indexOf(curLineLength - 1)) {\n line = word + \"-\";\n } else {\n line = word + \" \";\n }\n\n if (i && lastWord) {\n line = lastWord + line;\n }\n\n } else {\n if (~dashArray.indexOf(curLineLength - 1)) {\n line += word + \"-\";\n } else {\n line += word + \" \";\n }\n }\n\n // Set text node value to current sentence, and work out the length\n tspanNode.firstChild.nodeValue = line;\n computedTextLength = tspanNode.getComputedTextLength();\n if (newlinemode) {\n widestWidth = Math.max(tspanNode.getComputedTextLength(), widestWidth);\n }\n\n if (!newlinemode) {\n // awkward, have to do this one last time for the last word\n if (i && (i === (words.length - 1)) && (maxWidth > 0) && (computedTextLength > maxWidth)) {\n tempText = tspanNode.firstChild.nodeValue;\n tspanNode.firstChild.nodeValue = tempText.slice(0, (tempText.length - words[i].length - 1));\n\n tspanNode = document.createElementNS(svgUrl, \"tspan\");\n tspanNode.setAttributeNS(null, \"x\", x);\n tspanNode.setAttributeNS(null, \"dy\", dy);\n\n textNode = document.createTextNode(words[i]);\n tspanNode.appendChild(textNode);\n svgTextNode.appendChild(tspanNode);\n numLines++;\n }\n }\n }\n\n if (widestWidth === 0) {\n widestWidth = svgTextNode.childNodes[0].getComputedTextLength();\n }\n if (maxWidth > widestWidth) {\n width = maxWidth;\n } else {\n width = widestWidth;\n }\n\n return {\n lines: numLines,\n width,\n textWidth: widestWidth\n };\n});","\nexport default {\n /**\n * Creates a new radial gradient or updates existing one.\n *\n * @param {[type]} id\n * @param {[type]} lightColor\n * @param {[type]} medColor\n * @param {[type]} darkColor\n * @param {[type]} container SVG container which will be used to store gradients definitions.\n * @return {string} Gradient URL string, e.g. \"url(#green-gradient)\"\n */\n createRadialGradient: function(id, lightColor, medColor, darkColor, container) {\n var gradientUrl, defs, gradient;\n defs = container.select(\"defs\");\n if (defs.empty()) {\n // Store gradients in 'defs' element.\n defs = container.append(\"defs\");\n }\n\n gradient = defs.select(\"#\" + id);\n\n if (gradient.empty()) {\n // Create a new gradient.\n gradient = defs.append(\"radialGradient\").attr(\"id\", id).attr(\"cx\", \"50%\").attr(\"cy\", \"47%\").attr(\"r\", \"53%\").attr(\"fx\", \"35%\").attr(\"fy\", \"30%\");\n } else {\n gradient.selectAll(\"stop\").remove()\n }\n\n gradient.append(\"stop\").attr(\"stop-color\", lightColor).attr(\"offset\", \"0%\");\n gradient.append(\"stop\").attr(\"stop-color\", medColor).attr(\"offset\", \"40%\");\n gradient.append(\"stop\").attr(\"stop-color\", darkColor).attr(\"offset\", \"80%\");\n gradient.append(\"stop\").attr(\"stop-color\", medColor).attr(\"offset\", \"100%\");\n\n gradientUrl = \"url(#\" + id + \")\";\n // Store main color (for now - dark color) of the gradient.\n // Useful for radial bonds. Keys are URLs for convenience.\n this.mainColorOfGradient[gradientUrl] = darkColor;\n return gradientUrl;\n },\n\n /**\n * Hash which defines the main color of a given gradient.\n * Note that for convenience, keys are in forms of URLs (e.g. url(#some-gradient)).\n * e.g. useful for MD2D radial bonds, which can adjust their color to gradient.\n */\n mainColorOfGradient: {},\n /**\n * NOT INTENDED FOR INDEPENDENT USE\n * Resolves mismatched parentheses in a string.\n * Optionally, removes or \"peels\" the outermost pair of parenthesis\n *\n * @param {string} string String to resolve\n * @param {boolean} peel Whether or not to \"peel\" the outermost parenthesis pair.\n * @return {string} Resolved string\n */\n settleParens: function(string, peel) {\n var end, inparens, firstparen;\n inparens = false;\n string = string.split(\"\")\n for (end = 0; end < string.length; end++) {\n if (inparens) {\n if (string[end] == \")\") {\n inparens = false;\n } else if (string[end] == \"(\") {\n string[firstparen] = \" \";\n firstparen = end;\n }\n } else {\n if (string[end] == \"(\") {\n if (peel) {\n string[end] = \" \"\n peel = false\n } else {\n inparens = true;\n firstparen = end;\n }\n } else if (string[end] == \")\") {\n string[end] = \" \";\n }\n }\n }\n return string.join(\"\").replace(/\\s+/, \" \").trim()\n },\n /**\n * NOT INTENDED FOR INDEPENDENT USE\n * Splits a string by space or comma, keeping parentheses intact\n * Then, parses each \"word\" for possible meanings\n * Optionally, removes or \"peels\" the outermost pair of parenthesis before splitting\n *\n * @param {string} string String to split\n * @param {boolean} peel Whether or not to \"peel\" the outermost parenthesis pair.\n * @return {Array.} Array of \"words\"\n */\n smartSplit: function(string, peel) {\n var start, end, result, inparens, temp;\n string = this.settleParens(string, peel);\n inparens = false;\n result = [];\n for (end = 1; end < string.length; end++) {\n if (inparens) {\n if (string[end] == \")\") {\n inparens = false;\n }\n continue;\n }\n if (string[end] == \",\" || string[end] == \" \") {\n temp = string.slice(start, end).trim()\n if (temp.length > 0) {\n result.push(this.parseWord(temp));\n }\n start = end + 1;\n } else if (string[end] == \"(\") {\n inparens = true;\n }\n }\n if (end == string.length) {\n result.push(this.parseWord(string.slice(start, end).trim()));\n }\n return result;\n },\n /**\n * NOT INTENDED FOR INDEPENDENT USE\n * Finds all possible meanings of a given word, storing those\n * as properties into a String representation of the word\n *\n * @param {string} word Word to find the meaning of\n * @return {Object.} Word as a String object and properties set\n */\n parseWord: function(word) {\n var result, temp;\n result = new String(word);\n if (word.search(/(^|[^a-zA-Z])li?n?e?a?r?($|[^a-zA-Z])/) != -1) {\n result.isLinear = true;\n }\n if (word.search(/(^|[^a-zA-Z])ra?d?i?a?l?($|[^a-zA-Z])/) != -1) {\n result.isRadial = true;\n }\n if (word.search(/(^|[^a-zA-Z])gr?a?d?i?e?n?t?($|[^a-zA-Z])/) != -1) {\n result.isGradient = true;\n }\n if (word.search(/(\\(|\\))/) != -1) {\n result.isParens = true;\n return result;\n }\n temp = parseFloat(word);\n if (!isNaN(temp)) {\n result.asNumber = temp;\n }\n if (word.search(/(^|[^a-zA-Z])de?g?r?e?e?s?($|[^a-zA-Z])/) != -1) {\n result.isDegrees = true;\n }\n if (word.search(/(^|[^a-zA-Z])ri?g?h?t?($|[^a-zA-Z])/) != -1) {\n result.isRight = true;\n }\n if (word.search(/(^|[^a-zA-Z])le?f?t?($|[^a-zA-Z])/) != -1) {\n result.isLeft = true;\n }\n if (word.search(/(^|[^a-zA-Z])(t|u)o?p?($|[^a-zA-Z])/) != -1) {\n result.isTop = true;\n }\n if (word.search(/(^|[^a-zA-Z])bo?t?t?o?m?($|[^a-zA-Z])/) != -1) {\n result.isBottom = true;\n }\n if (word.search(/(^|[^a-zA-Z])re?pe?a?t?($|[^a-zA-Z])/) != -1) {\n result.isRepeat = true;\n }\n if (word.search(/(^|[^a-zA-Z])re?fl?e?c?t?($|[^a-zA-Z])/) != -1) {\n result.isReflect = true;\n }\n return result;\n },\n /**\n * NOT INTENDED FOR INDEPENDENT USE\n * Given an array containing stop objects of color data and optionally offset data,\n * interpolate values for stops without offsets.\n * e.g.\n * [{\"color\":\"red\",\"offset\":0},{\"color\":\"yellow\"},{\"color\":\"blue\",\"offset\":100}]\n * would return\n * [{\"color\":\"red\",\"offset\":0},{\"color\":\"yellow\",\"offset\":50},{\"color\":\"blue\",\"offset\":100}]\n *\n * @param {Array.>} stops Array of objects containing color data and optionally offset data\n * @return {Array.>} Array of objects containing both color and offset data\n */\n interpolateStops: function(stops) {\n var i, j, k, start, end, step;\n if (stops.length == 0) {\n return stops;\n }\n if (!(\"offset\" in stops[0])) {\n stops[0].offset = 0;\n }\n if (stops.length == 1) {\n return stops;\n }\n if (!(\"offset\" in stops[stops.length - 1])) {\n stops[stops.length - 1].offset = 100;\n }\n for (i = 2; i < stops.length; i++) {\n if (\"offset\" in stops[i] && !(\"offset\" in stops[i - 1])) {\n start = 0;\n end = stops[i].offset;\n for (j = i - 2; j >= 0; j--) {\n if (\"offset\" in stops[j]) {\n start = stops[j].offset;\n break;\n }\n }\n step = (end - start) / (i - j)\n for (var k = j + 1; k < i; k++) {\n stops[k].offset = start + step * (k - j);\n }\n }\n }\n return stops\n },\n /**\n * NOT INTENDED FOR INDEPENDENT USE: use gradients.parse instead\n * Parses and returns any color or gradient that a given string contains\n * as a gradient/color object of the form\n * {\"color\":\"red\"}\n * or\n * {\"gradient\":\"linear\",\"direction\":0,\"stops\":[{\"color\":\"red\",\"offset\":0}, ... ]}\n *\n * @param {string} string String\n * @return {Object} Gradient/color object\n */\n fullParse: function(string) {\n //Preliminary gradient verification\n string = string.trim().toLowerCase();\n if (string.search(/[^#0-9a-zA-Z-]/) == -1) {\n return {\n \"color\": string\n };\n }\n var stops, words, direction, linear, radial, i, gradient, remove, x_direction, y_direction, repeat;\n\n //String preprocessing\n string = string.replace(/[\\n\\r:;]/g, \" \").replace(/\\/\\*.*\\*\\/$/, \"\").replace(/\\{\\[/, \"(\").replace(/\\}\\]/, \")\").replace(/[^a-zA-Z0-9%#\\-\\(\\)\\., ]*/g, \"\").replace(/\\s*-\\s+/g, \"-\").replace(/\\s*\\(/g, \"(\").replace(/\\s+/g, \" \");\n words = this.smartSplit(string, false);\n gradient = {};\n\n //Remove any irrelevant parentheses\n for (i = 0; i < words.length; i++) {\n if (words[i].isParens === true && (words[i].isGradient === true || words[i].isLinear === true || words[i].isRadial === true)) {\n words.splice.apply(words, [i, 1].concat(this.smartSplit(words[i], true)))\n }\n }\n\n //Parse gradient metadata\n direction = false;\n radial = false;\n linear = false;\n repeat = false;\n x_direction = 0;\n y_direction = 0;\n for (i = 0; i < words.length; i++) {\n remove = false\n if (words[i].isLeft === true) {\n x_direction -= 1;\n remove = true;\n } else if (words[i].isRight === true) {\n x_direction += 1;\n remove = true;\n }\n if (words[i].isTop === true) {\n y_direction += 1;\n remove = true;\n } else if (words[i].isBottom === true) {\n y_direction -= 1;\n remove = true;\n }\n if (words[i].isRadial === true && !(words[i].isRight === true)) {\n radial = true;\n remove = true;\n }\n if (words[i].isLinear === true && !(words[i].isLeft === true)) {\n linear = true;\n remove = true;\n }\n if (\"asNumber\" in words[i]) {\n if (words[i].isDegrees === true || i + 1 < words.length && words[i + 1].isDegrees === true) {\n if (direction === false) {\n direction = words[i].asNumber;\n }\n remove = true;\n }\n }\n if (words[i].isRepeat === true) {\n repeat = \"repeat\";\n remove = true;\n } else if (words[i].isReflect === true) {\n repeat = \"reflect\";\n remove = true;\n }\n if (remove || words[i].isDegrees === true || words[i].isGradient === true) {\n words.splice(i, 1);\n i--;\n }\n }\n if (direction === false && (x_direction != 0 || y_direction != 0)) {\n direction = (180 * Math.atan2(y_direction, x_direction) / Math.PI % 360);\n }\n\n //Parse the stops\n stops = [];\n for (i = 0; i < words.length; i++) {\n if (!(\"asNumber\" in words[i])) {\n if (i + 1 < words.length && (\"asNumber\" in words[i + 1])) {\n stops.push({\n color: words[i],\n offset: words[i + 1].asNumber\n })\n words.splice(i, 2)\n } else {\n stops.push({\n color: words[i]\n })\n words.splice(i, 1)\n }\n i--\n }\n }\n if (stops.length == 1) {\n return {\n \"color\": stops[0].color\n };\n }\n if (stops.length == 0) {\n return {\n \"color\": \"none\"\n };\n }\n this.interpolateStops(stops);\n\n //Parse leftover words\n for (i = 0; i < words.length; i++) {\n if (words[i].isNumber === true) {\n if (direction === false) {\n direction = words[i].asNumber;\n }\n }\n }\n\n //Build and return gradient object\n if (radial && !linear) {\n direction = false\n gradient.gradient = \"radial\"\n } else {\n if (direction === false) {\n direction = 0\n }\n direction %= 360;\n if (direction < 0) {\n direction += 360;\n }\n gradient.gradient = \"linear\"\n gradient.direction = direction\n }\n if (repeat !== false) {\n gradient.repeat = repeat\n }\n gradient.stops = stops;\n gradient.standard = this.toStandardForm(gradient);\n return gradient;\n },\n /**\n * Parses and returns any color or gradient that a given string contains\n * as a gradient/color object of the form\n * {\"color\":\"red\"}\n * or\n * {\"gradient\":\"linear\",\"direction\":0,\"stops\":[{\"color\":\"red\",\"offset\":0}, ... ]}\n *\n * A string given in standard form is faster to parse. An arbitrary string will use gradient.fullParse.\n *\n * @param {string} string String\n * @return {Object} Gradient/color object\n */\n parse: function(string) {\n string = string.trim().toLowerCase().replace(/\\s+/g, \" \")\n if (string.search(/ /) == -1) {\n return {\n \"color\": string,\n \"standard\": string\n };\n }\n var stops, direction, gradient, type, s, offset, restandardize;\n stops = string.split(\" \");\n gradient = {}\n type = stops.shift()\n if (type == \"linear\" || type == \"radial\") {\n gradient.gradient = type;\n } else {\n return this.fullParse(string);\n }\n if (type == \"linear\") {\n direction = parseFloat(stops.shift());\n if (isNaN(direction)) {\n return this.fullParse(string);\n }\n direction %= 360;\n if (direction < 0) {\n direction += 360;\n }\n gradient.direction = direction;\n restandardize = true;\n }\n gradient.stops = []\n if (stops.length % 2 == 0) {\n for (s = 0; s < stops.length; s += 2) {\n offset = parseFloat(stops[s + 1])\n if (isNaN(offset)) {\n return this.fullParse(string);\n }\n gradient.stops.push({\n \"color\": stops[s],\n \"offset\": offset\n });\n }\n } else {\n return this.fullParse(string);\n }\n if (restandardize) {\n gradient.standard = this.toStandardForm(gradient);\n } else {\n gradient.standard = string;\n }\n return gradient;\n },\n /**\n * Applies a given gradient/color to the background of a given element\n *\n * @param {Object} color A gradient/color object created by gradients.parse\n * @param {Object} element The specified DOM element to apply the background to\n */\n toCSS: function(color, element) {\n var temp, i;\n if (\"color\" in color) {\n element.style.backgroundColor = color.color.length ? color.color : \"inherit\"\n element.style.backgroundImage = \"none\"\n } else {\n temp = (color.gradient == \"radial\" ? \"-webkit-radial-gradient(ellipse,\" : \"-webkit-linear-gradient(\" + color.direction + \"deg, \");\n for (i = 0; i < color.stops.length; i++) {\n temp += color.stops[i].color + \" \" + color.stops[i].offset + \"%\";\n if (i < color.stops.length - 1) {\n temp += \",\";\n }\n }\n temp += \")\";\n element.style.backgroundColor = \"none\";\n element.style.backgroundImage = temp;\n }\n },\n /**\n * Converts a given gradient/color to standard form\n *\n * @param {Object} color A gradient/color object created by gradients.parse\n * @return {string} The converted standard form string\n */\n toStandardForm: function(color) {\n var temp, i;\n if (\"color\" in color) {\n color.standard = color.color;\n return color.color;\n } else {\n temp = color.gradient + \" \" + (color.gradient == \"linear\" ? color.direction + \"deg \" : \"\");\n for (i = 0; i < color.stops.length; i++) {\n temp += color.stops[i].color + \" \" + color.stops[i].offset + \"%\";\n if (i < color.stops.length - 1) {\n temp += \" \";\n }\n }\n color.standard = temp;\n return temp;\n }\n },\n /**\n * Converts a given gradient/color to an SVG fill, creating a gradient definition if necessary\n *\n * @param {Object} color A gradient/color object created by gradients.parse\n * @param {Object} continer The container to append the gradient definitions to\n * @return {string} The converted string for use in SVG fill\n */\n toSVG: function(color, container) {\n if (color.color) {\n return color.color;\n }\n var gradientUrl, defs, gradient, id, c, x0, y0, xt, yt, args, stop;\n defs = container.select(\"defs\");\n if (defs.empty()) {\n // Store gradients in \"defs\" element.\n defs = container.append(\"defs\");\n }\n\n id = color.standard.replace(/[^a-z0-9]/g, \"\");\n gradient = defs.select(\"#\" + id);\n\n if (gradient.empty()) {\n // Create a new gradient.\n if (color.gradient == \"linear\") {\n xt = -Math.cos(Math.PI * color.direction / 180);\n yt = -Math.sin(Math.PI * color.direction / 180);\n if (Math.abs(yt) > Math.abs(xt)) {\n x0 = xt * Math.abs(50 / yt);\n y0 = (yt < 0 ? -1 : 1) * 50;\n } else {\n x0 = (xt < 0 ? -1 : 1) * 50;\n y0 = yt * Math.abs(50 / xt);\n }\n gradient = defs.append(\"linearGradient\").attr(\"id\", id).attr(\"x1\", (50 + x0) + \"%\").attr(\"y1\", (50 + y0) + \"%\").attr(\"x2\", (50 - x0) + \"%\").attr(\"y2\", (50 - y0) + \"%\");\n } else {\n gradient = defs.append(\"radialGradient\").attr(\"id\", id).attr(\"cx\", \"50%\").attr(\"cy\", \"50%\").attr(\"r\", \"50%\").attr(\"fx\", \"50%\").attr(\"fy\", \"50%\");\n }\n } else {\n // Gradient exists. Using it.\n return \"url(#\" + id + \")\";\n }\n\n for (c = 0; c < color.stops.length; c++) {\n stop = gradient.append(\"stop\").attr(\"stop-color\", color.stops[c].color).attr(\"offset\", color.stops[c].offset + \"%\");\n args = color.stops[c].color.split(\",\");\n if (args.length == 4 && !isNaN(args = parseFloat(args[3]))) {\n stop.attr(\"stop-opacity\", args)\n }\n };\n\n return \"url(#\" + id + \")\";\n }\n};","import labConfig from 'lab.config';\n\nvar UPPER_LEFT = 0;\nvar CENTER = 1;\n\nexport default function ImagesRenderer(modelView, model) {\n // A collection of image dimensions for each src that has been seen by the renderer.\n var imgDimBySrc = {};\n\n // Nested arrays of data about the requested images, ready to be joined to the d3 selection.\n var imageData;\n\n // In order to center and scale images correctly, we need their actual width and height.\n // However, this information loads asynchronously, so the width and height adjustments may need\n // to happen after we have completed setting up images.\n // Therefore, call this method before creating an element with the given src.\n // It will create an Image object with that src, if we do not already have one, and when the\n // Image finishes loading it will update the width and height of any images in the image\n // container which have the same src.\n function loadImage(src, scale) {\n if (imgDimBySrc[src]) {\n return;\n }\n\n // Create placeholder, it will be updated when image is loaded.\n imgDimBySrc[src] = {\n width: 0,\n height: 0\n };\n\n var image = new Image();\n image.src = src;\n image.onload = function() {\n // IE11 workaround - without adding an image to DOM, we can't get its correct dimensions.\n // When image src refers to an SVG image, its width and height will be always reported as 0.\n // See: https://www.pivotaltracker.com/story/show/66376534\n var $image = $(image).appendTo(\"body\");\n var imageDim = imgDimBySrc[src];\n imageDim.width = $image.width() * scale;\n imageDim.height = $image.height() * scale;\n $image.remove();\n // Resize and recenter any instances of this image currently in the DOM.\n d3.select(modelView.node)\n .selectAll('image').each(function() {\n if (d3.select(this).attr('xlink:href') === src) {\n d3.select(this)\n .attr('width', scaleImageLength(imageDim.width))\n .attr('height', scaleImageLength(imageDim.height))\n .attr('transform', transform);\n }\n });\n\n // This selector-based alternative to the .each() above actually works in Chrome, but other\n // (conforming!) browsers require that 'src' be CSS escaped first\n // (see http://mathiasbynens.be/notes/css-escapes)\n //\n // d3.select(modelView.node)\n // .selectAll('image[*|href=\"' + src + '\"')\n // .attr(...)\n };\n }\n\n // Images prepared for Classic MW have 1 pixel == 0.1 Angstrom (0.01 nm). Therefore, convert\n // image dimension from \"Classic MW pixels\", to nm, to onscreen pixels.\n function scaleImageLength(l) {\n return modelView.model2px(0.01 * l);\n }\n\n // Sets 'imageData' to a nested array of information about the requested images which can be\n // joined to the nested d3 selection in setup() in order to append the actual elements.\n function setupImageData() {\n var countsBySrc = [{}, {}];\n imageData = [\n [],\n []\n ];\n\n (model.properties.images || []).forEach(function(desc) {\n var layerIndex = desc.imageLayer === 1 ? 1 : 0;\n var layer = imageData[layerIndex];\n var countBySrc = countsBySrc[layerIndex];\n var src = getImagePath(desc);\n var referencePoint;\n var capturesPointer;\n var x;\n var y;\n\n if (desc.imageHostType) {\n // imageHostType => image is \"attached\" to an atom or obstacle, and x and y specify the\n // model coordinates of its center.\n referencePoint = CENTER;\n // Images attached to objects still allow the underlying object to be dragged.\n capturesPointer = false;\n } else {\n // no imageHostType => image is at a fixed coordinate in the model space, and x and y\n // specify the model coordinates of its upper left corner.\n referencePoint = UPPER_LEFT;\n // Unattached images prevent dragging of whatever is beneath them, in the usual way.\n capturesPointer = true;\n // Update x and y now; updateImageCoordinates will be a noop.\n x = modelView.model2px(desc.imageX);\n y = modelView.model2pxInv(desc.imageY);\n }\n\n loadImage(src, desc.scale);\n\n layer.push({\n imageDescription: desc,\n src: src,\n // Use src + srcIndex to create a unique key for images. This allows us to use a\n // conservative data join and thereby avoid having to modify the href of elements.\n // That prevents the browser from issuing unnecessary requests.\n srcIndex: countBySrc[src] === undefined ? (countBySrc[src] = 0) : ++countBySrc[src],\n x: x,\n y: y,\n rotation: desc.rotation,\n scale: desc.scale,\n opacity: desc.opacity,\n referencePoint: referencePoint,\n capturesPointer: capturesPointer,\n zOrder: desc.imageLayerPosition || 0,\n visible: desc.visible\n });\n });\n\n // Finally, because imageData for each layer is 1:1 with svg image elements, sort the\n // imageData for each layer by the intended z order of the images.\n imageData.forEach(function(layer) {\n layer.sort(function(a, b) {\n return d3.ascending(a.zOrder, b.zOrder);\n });\n });\n\n updateImageCoordinates();\n }\n\n // Update just the x, y of each element in imageData (except for fixed elements)\n function updateImageCoordinates() {\n imageData.forEach(function(layer) {\n layer.forEach(function(datum) {\n\n var imageDescription = datum.imageDescription;\n var hostType = imageDescription.imageHostType;\n var index = imageDescription.imageHostIndex;\n var rotation = imageDescription.rotation || 0;\n var atoms;\n var obstacles;\n var radialBond;\n var x, y;\n\n if (hostType === 'Atom') {\n atoms = model.getAtoms();\n x = atoms[index].x;\n y = atoms[index].y;\n } else if (hostType === 'RectangularObstacle') {\n obstacles = model.get_obstacles();\n x = obstacles.x[index] + obstacles.width[index] / 2;\n y = obstacles.y[index] + obstacles.height[index] / 2;\n } else if (hostType === 'RadialBond') {\n radialBond = model.getRadialBonds()[index];\n x = (radialBond.x1 + radialBond.x2) / 2;\n y = (radialBond.y1 + radialBond.y2) / 2;\n rotation += 180 * Math.atan2(radialBond.y1 - radialBond.y2, radialBond.x1 - radialBond.x2) / Math.PI;\n }\n if (x !== undefined) {\n datum.x = modelView.model2px(x);\n datum.y = modelView.model2pxInv(y);\n }\n datum.rotation = rotation;\n });\n });\n }\n\n function getImagePath(imageDescription) {\n var imageMapping = model.properties.imageMapping;\n var basePath = \"\";\n\n if (model.properties.imagePath) {\n basePath = labConfig.modelsRootUrl + model.properties.imagePath;\n } else if (modelView.url) {\n basePath = labConfig.modelsRootUrl + modelView.url.slice(0, modelView.url.lastIndexOf(\"/\") + 1);\n }\n\n return basePath + (imageMapping[imageDescription.imageUri] || imageDescription.imageUri);\n }\n\n // Rotate and translate the image according to x, y, width, height, and rotation\n function transform(d) {\n var dim = imgDimBySrc[d.src];\n var halfWidth = scaleImageLength(dim.width / 2);\n var halfHeight = scaleImageLength(dim.height / 2);\n var x;\n var y;\n var t;\n\n if (d.referencePoint === UPPER_LEFT) {\n x = d.x;\n y = d.y;\n } else {\n // center of object should be at (d.x, d.y), so upper left corner needs to be translated by\n // a half-width and a half-length less.\n x = d.x - halfWidth;\n y = d.y - halfHeight;\n }\n\n if (d.rotation === 0) {\n t = [\"translate(\", x, \", \", y, \")\"];\n } else {\n // invert sign of rotation so that rotations occur in standard (counterclockwise) direction\n t = [\"translate(\", x, \", \", y, \") rotate(\", -d.rotation, \",\", halfWidth, \",\", halfHeight, \")\"];\n }\n return t.join('');\n }\n\n // Called whenever the set of images or their ordering change in some way.\n function setup() {\n setupImageData();\n\n d3.select(modelView.node).selectAll('.image-container')\n .data(imageData)\n .each(function(data) {\n var images = d3.select(this)\n .selectAll('image')\n .data(data, function(d) {\n return d.src + '-' + d.srcIndex;\n });\n\n images.enter()\n .append('image')\n .attr('xlink:href', function(d) {\n return d.src;\n });\n\n images.attr({\n height: function(d) {\n return scaleImageLength(imgDimBySrc[d.src].height);\n },\n width: function(d) {\n return scaleImageLength(imgDimBySrc[d.src].width);\n },\n opacity: function(d) {\n return d.opacity;\n },\n 'pointer-events': function(d) {\n return d.capturesPointer ? 'auto' : 'none';\n },\n transform: transform\n }).style('display', function(d) {\n return d.visible ? '' : 'none';\n });\n\n images.exit().remove();\n });\n }\n\n // Called for every tick; just updates image coordinates.\n function update() {\n updateImageCoordinates();\n\n // No need for a nested selection as all images are already bound to the correct data items.\n // Just need to let d3 know it should reapply x, y because the data items have been updated.\n d3.select(modelView.node).selectAll('.image-container image')\n .attr('transform', transform);\n }\n\n function bindModel(_model) {\n model = _model;\n }\n\n return {\n setup: setup,\n update: update,\n bindModel: bindModel\n };\n};\n","// ------------------------------------------------------------\n//\n// MD2D View Renderer\n//\n// ------------------------------------------------------------\nimport labConfig from 'lab.config';\nimport console from 'common/console';\nimport benchmark from 'common/benchmark/benchmark';\nimport AtomsRenderer from 'models/md2d/views/atoms-renderer';\nimport BondsRenderer from 'models/md2d/views/bonds-renderer';\nimport VectorsRenderer from 'models/md2d/views/vectors-renderer';\nimport FieldRenderer from 'models/md2d/views/field-renderer';\nimport VdwLinesRenderer from './vdw-lines-renderer';\nimport GeneticRenderer from 'models/md2d/views/genetic-renderer';\nimport wrapSVGText from 'common/layout/wrap-svg-text';\nimport gradients from 'common/views/gradients';\nimport colorLib from 'common/views/color';\nimport ImagesRenderer from './images-renderer';\n\nvar\n // Constants used by photon renderer:\n // Reference implementation:\n // https://github.com/concord-consortium/mw/blob/3c54e37cbfe98b8d3c6f9e5397eda4308dfafecb/src/org/concord/mw2d/models/Photon.java#L32-L35\n MIN_VISIBLE_FREQ = 5,\n MAX_VISIBLE_FREQ = 12,\n PHOTON_COLORS = [\n [255, 0, 0],\n [255, 200, 0],\n [255, 255, 0],\n [0, 255, 0],\n [0, 255, 255],\n [0, 0, 255],\n [139, 0, 255]\n ];\n\nexport default function MD2DView(modelView, model) {\n // Public API object to be returned.\n var api = {},\n\n i18n = modelView.i18n,\n\n // Allows us to defer running actual renderer setup until layout system has determined oursize.\n isSetup = false,\n\n // The model function getAtoms() returns a 2 dimensional array\n // of particle indices and properties that is updated every model tick.\n // This array is not garbage-collected so the view can be assured that\n // the latest modelAtoms will be in this array when the view is executing\n modelAtoms,\n modelElectricField,\n modelElements,\n modelWidth,\n modelHeight,\n aspectRatio,\n\n // Basic scaling functions for position, it transforms model units to \"pixels\".\n // Use it for positions of objects rendered inside the view.\n model2px,\n\n // Inverted scaling function for position transforming model units to \"pixels\".\n // Use it for Y coordinates, as Y axis in model coordinate system increases\n // from bottom to top, while but SVG has increases from top to bottom\n model2pxInv,\n\n // \"Viewports\" - SVG elements whose viewbox is automatically adjusted appropriately by the\n // container (called modelView here although it's a generic container, *not* the modelView)\n belowAtomsViewport = modelView.appendViewport().classed(\"below-atoms\", true),\n\n // \"Containers\" - G elements used to position layers of the final visualization.\n shapeContainerBelow = belowAtomsViewport.append(\"g\").attr(\"class\", \"shape-container-below\"),\n imageContainerBelow = belowAtomsViewport.append(\"g\").attr(\"class\", \"image-container image-container-below\"),\n textContainerBelow = belowAtomsViewport.append(\"g\").attr(\"class\", \"text-container-below\"),\n\n // TODO: remove it, as well as legacy code responsible for SVG atoms rendering.\n atomsViewport = modelView.appendViewport().classed(\"atoms\", true),\n atomsContainer = atomsViewport.append(\"g\").attr(\"class\", \"atoms-container\"),\n\n vectorsBelowPixi = modelView.appendPixiViewport(),\n vdwLinesPixi = modelView.appendPixiViewport(),\n bondsPixi = modelView.appendPixiViewport(),\n atomsPixi = modelView.appendPixiViewport(),\n vectorsAbovePixi = modelView.appendPixiViewport(),\n\n aboveAtomsViewport = modelView.appendViewport().classed(\"above-atoms\", true),\n shapeContainerTop = aboveAtomsViewport.append(\"g\").attr(\"class\", \"shape-container-top\"),\n lineContainerTop = aboveAtomsViewport.append(\"g\").attr(\"class\", \"line-container-top\"),\n imageContainerTop = aboveAtomsViewport.append(\"g\").attr(\"class\", \"image-container image-container-top\"),\n textContainerTop = aboveAtomsViewport.append(\"g\").attr(\"class\", \"text-container-top\"),\n\n iconContainer = modelView.foregroundContainer.append(\"g\").attr(\"class\", \"icon-container\"),\n\n // Renderers specific for MD2D\n // TODO: try to create new renderers in separate files for clarity and easier testing.\n atomsRenderer = new AtomsRenderer(modelView, model, atomsPixi.pixiContainer, atomsPixi.canvas),\n bondsRenderer = new BondsRenderer(modelView, model, bondsPixi.pixiContainer, atomsRenderer),\n vdwLinesRenderer = new VdwLinesRenderer(modelView, model, vdwLinesPixi.pixiContainer),\n velocityVectorsRenderer = new VectorsRenderer(vectorsAbovePixi.pixiContainer, {\n get show() {\n return model.get(\"showVelocityVectors\");\n },\n get length() {\n return model.get(\"velocityVectors\").length;\n },\n get width() {\n return model.get(\"velocityVectors\").width;\n },\n get color() {\n return model.get(\"velocityVectors\").color;\n },\n get dirOnly() {\n return false;\n },\n get count() {\n return modelAtoms.length;\n },\n x: function(i) {\n return modelAtoms[i].x;\n },\n y: function(i) {\n return modelAtoms[i].y;\n },\n vx: function(i) {\n return modelAtoms[i].vx * 100;\n },\n vy: function(i) {\n return modelAtoms[i].vy * 100;\n },\n m2px: modelView.model2canvas,\n m2pxInv: modelView.model2canvasInv\n }),\n forceVectorsRenderer = new VectorsRenderer(vectorsAbovePixi.pixiContainer, {\n get show() {\n return model.get(\"showForceVectors\");\n },\n get length() {\n return model.get(\"forceVectors\").length;\n },\n get width() {\n return model.get(\"forceVectors\").width;\n },\n get color() {\n return model.get(\"forceVectors\").color;\n },\n get dirOnly() {\n return model.get(\"forceVectorsDirectionOnly\");\n },\n get count() {\n return modelAtoms.length;\n },\n x: function(i) {\n return modelAtoms[i].x;\n },\n y: function(i) {\n return modelAtoms[i].y;\n },\n vx: function(i) {\n var a = modelAtoms[i];\n return a.ax * a.mass * 100;\n },\n vy: function(i) {\n var a = modelAtoms[i];\n return a.ay * a.mass * 100;\n },\n m2px: modelView.model2canvas,\n m2pxInv: modelView.model2canvasInv\n }),\n electricFieldRenderer = new FieldRenderer(vectorsBelowPixi.pixiContainer, {\n get show() {\n return model.get(\"showElectricField\");\n },\n get length() {\n return 0.8 * model.get(\"width\") / model.get(\"electricFieldDensity\");\n },\n get color() {\n var c = model.get(\"electricFieldColor\");\n return c !== \"auto\" ? c : colorLib.contrastingColor(model.get(\"backgroundColor\"));\n },\n get count() {\n return modelElectricField.length;\n },\n x: function(i) {\n return modelElectricField[i].x;\n },\n y: function(i) {\n return modelElectricField[i].y;\n },\n vx: function(i) {\n return modelElectricField[i].fx;\n },\n vy: function(i) {\n return modelElectricField[i].fy;\n },\n alpha: function(i) {\n var d = modelElectricField[i];\n return Math.min(1, Math.pow(d.fx * d.fx + d.fy * d.fy, 0.2) * 0.3);\n },\n m2px: modelView.model2canvas,\n m2pxInv: modelView.model2canvasInv\n }),\n imagesRenderer = new ImagesRenderer(modelView, model),\n geneticRenderer,\n\n arrowHeadsCache,\n fontSizeInPixels,\n obstacle,\n obstacles,\n mockObstaclesArray = [],\n shapes,\n shapeTop,\n shapeBelow,\n mockShapesTop = [],\n mockShapesBelow = [],\n lines,\n lineTop,\n mockLinesTop = [],\n useQuantumDynamics,\n forceVectorColor,\n forceVectorWidth,\n textBoxes,\n // Flag indicating whether there are some movable text boxes or not (e.g. attached to an atom\n // or obstacle). Used for optimization.\n onlyStaticTextBoxes = true,\n drawAtomTrace,\n atomTraceId,\n atomTraceColor,\n atomTrace,\n atomTracePath,\n\n browser = benchmark.what_browser(),\n\n // pre-calculations\n halfPi = Math.PI / 2,\n\n // this is a hack put in place to temporarily deal with a IE 10 bug which\n // does not update line markers when svg lines are moved\n // see https://connect.microsoft.com/IE/feedback/details/781964/\n hideLineMarkers = browser.browser === \"MSIE\" && Number(browser.version) >= 10;\n\n function createCustomArrowHead(i, path, start) {\n if (!path || path === \"none\") {\n return \"none\";\n }\n\n var id = \"arrowhead-path\" + path.toLowerCase().replace(/[^a-z0-9]/g, '') +\n (start ? \"start\" : \"\") + lines.lineColor[i].toLowerCase().replace(/[^a-z0-9]/g, '');\n\n if (!arrowHeadsCache[id]) {\n var defs, arrowHead;\n defs = atomsContainer.select(\"defs\");\n if (defs.empty()) {\n defs = atomsContainer.append(\"defs\");\n }\n arrowHead = defs.select(\"#\" + id);\n arrowHead = atomsContainer.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"class\", \"custom-arrow-head\")\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", \"5\")\n .attr(\"refY\", \"5\")\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", \"4\")\n .attr(\"markerHeight\", \"4\")\n .attr(\"orient\", \"auto\");\n arrowHead.append(\"path\")\n .attr(\"d\", path)\n .attr(\"fill\", lines.lineColor[i])\n .attr(\"transform\", start ? \"translate(10, 10) rotate(180)\" : \"\");\n arrowHeadsCache[id] = true;\n }\n return \"url(#\" + id + \")\";\n }\n\n function createVectorArrowHeads(color, name) {\n var defs,\n id = \"Triangle-\" + name,\n arrowHead;\n defs = atomsContainer.select(\"defs\");\n if (defs.empty()) {\n defs = atomsContainer.append(\"defs\");\n }\n arrowHead = defs.select(\"#\" + id).remove();\n arrowHead = defs.append(\"marker\")\n .attr(\"id\", \"Triangle-\" + name)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", \"0\")\n .attr(\"refY\", \"5\")\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", \"4\")\n .attr(\"markerHeight\", \"3\")\n .attr(\"orient\", \"auto\")\n .attr(\"stroke\", color)\n .attr(\"fill\", color);\n arrowHead.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n }\n\n function createExcitationGlow() {\n var defs,\n glow;\n\n defs = atomsContainer.select(\"defs\");\n if (defs.empty()) {\n defs = atomsContainer.append(\"defs\");\n }\n glow = defs.select(\"#glow\");\n if (glow.empty()) {\n glow = defs.append(\"filter\")\n .attr(\"id\", \"glow\")\n .attr(\"x\", \"-2\")\n .attr(\"y\", \"-2\")\n .attr(\"width\", \"800%\")\n .attr(\"height\", \"800%\");\n glow.append(\"feMorphology\")\n .attr(\"result\", \"bigger\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"operator\", \"dilate\")\n .attr(\"radius\", \"6\");\n glow.append(\"feGaussianBlur\")\n .attr(\"result\", \"blurOut\")\n .attr(\"in\", \"bigger\")\n .attr(\"stdDeviation\", \"10\");\n glow.append(\"feBlend\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"in2\", \"blurOut\")\n .attr(\"mode\", \"normal\");\n }\n }\n\n // Create key images which can be shown in the\n // upper left corner in different situations.\n // IMPORTANT: The height attribute must be set,\n // it will allow to properly calculate images\n // placement in drawSymbolImages() function.\n function createSymbolImages() {\n var xMargin = \"1%\",\n fSize = Math.max(fontSizeInPixels, 12);\n\n // only add these images if they don't already exist\n if (iconContainer.select(\"#heat-bath\").empty()) {\n // Heat bath key image.\n iconContainer.append(\"image\")\n .attr({\n \"id\": \"heat-bath\",\n \"x\": xMargin,\n \"width\": fSize * 2,\n \"height\": fSize * 2,\n \"preserveAspectRatio\": \"xMinYMin\",\n // base64 of lab/resources/upstatement/heatbath.svg\n \"xlink:href\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDQzMzYzKSAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9Ijk2LjIzNnB4IiBoZWlnaHQ9IjUzLjMyMXB4IiB2aWV3Qm94PSIxLjc2NCAxMy44MSA5Ni4yMzYgNTMuMzIxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDEuNzY0IDEzLjgxIDk2LjIzNiA1My4zMjEiDQoJIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItNjIyIiB5MT0iOTQ1LjU2MSIgeDI9Ii02MjIiIHkyPSI5MjYuNDM5OSI+DQoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzU1NTU1NSIvPg0KCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkZGRkYiLz4NCjwvbGluZWFyR3JhZGllbnQ+DQo8cGF0aCBmaWxsPSIjRTZFN0U4IiBzdHJva2U9InVybCgjU1ZHSURfMV8pIiBzdHJva2Utd2lkdGg9IjAuNSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNNzEuMzMsMTQuMzg0DQoJYy04Ljk0MiwwLTE2LjgyNyw0LjQ1OS0yMS41OTYsMTEuMjY1Yy00Ljc3LTYuODAzLTEyLjY1NS0xMS4yNjUtMjEuNTk4LTExLjI2NWMtMTQuNTY0LDAtMjYuMzczLDExLjgwNi0yNi4zNzMsMjYuMzczDQoJYzAsMTQuNTY4LDExLjgwNSwyNi4zNzQsMjYuMzczLDI2LjM3NGM4Ljk0MiwwLDE2LjgyOC00LjQ2LDIxLjU5OC0xMS4yNjZjNC43NjksNi44MDIsMTIuNjUzLDExLjI2NiwyMS41OTYsMTEuMjY2DQoJYzE0LjU2NiwwLDI2LjM3Mi0xMS44MDYsMjYuMzcyLTI2LjM3NEM5Ny43MDIsMjYuMTksODUuODk2LDE0LjM4NCw3MS4zMywxNC4zODR6Ii8+DQo8cGF0aCBmaWxsPSIjNTU1NTU1IiBkPSJNMzEuNDQ4LDQ3LjcxOVYyNy4xMzNjMC0xLjE2LTAuOTQxLTIuMS0yLjEwMi0yLjFjLTEuMTU3LDAtMi4wOTUsMC45NC0yLjA5NSwyLjF2MjAuNTg2DQoJYy0xLjM4NSwwLjc1Mi0yLjMzOCwyLjE5Ni0yLjMzOCwzLjg4MWMwLDIuNDQ3LDEuOTg2LDQuNDI4LDQuNDMzLDQuNDI4YzIuNDUxLDAsNC40MzQtMS45OCw0LjQzNC00LjQyOA0KCUMzMy43ODMsNDkuOTE2LDMyLjgzLDQ4LjQ3MSwzMS40NDgsNDcuNzE5eiIvPg0KPHBhdGggZmlsbD0iIzU1NTU1NSIgZD0iTTgwLjIwOSwzNy42NjN2LTMuOTc0YzAtNC43NzUtMy44ODItOC42NTktOC42NTMtOC42NTlTNjIuOSwyOC45MTUsNjIuOSwzMy42ODl2My45NzRoLTIuMDY3djE1Ljk3M2gyMS43Mg0KCVYzNy42NjNIODAuMjA5eiBNNjYuMjM5LDMzLjY4OWMwLTIuOTMsMi4zODQtNS4zMTYsNS4zMTMtNS4zMTZjMi45MzEsMCw1LjMxNiwyLjM4Niw1LjMxNiw1LjMxNnYzLjk3NGgtMTAuNjNWMzMuNjg5eiIvPg0KPC9zdmc+DQo=\",\n \"class\": \"opaque-on-hover\"\n })\n .append(\"title\")\n .text(i18n.t(\"md2d.heatbath_icon_tooltip\"));\n }\n if (iconContainer.select(\"#ke-gradient\").empty()) {\n // Kinetic Energy Shading gradient image.\n iconContainer.append(\"image\")\n .attr({\n \"id\": \"ke-gradient\",\n \"x\": \"0\",\n \"width\": fSize * 2.2,\n \"height\": fSize * 6,\n \"preserveAspectRatio\": \"xMinYMin\",\n // base64 of lab/resources/upstatement/ke-gradient.svg\n \"xlink:href\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDQzMzYzKSAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjM5cHgiIGhlaWdodD0iMTExcHgiIHZpZXdCb3g9IjI1LjUgNC4wOTMgMzkgMTExIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDI1LjUgNC4wOTMgMzkgMTExIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNFNkU3RTgiIGQ9Ik02MC45MTUsMTA2LjAzOGMwLDYuODEtMS4wNTMsNy45Mi03LjY4LDcuOTJsLTE0LjQ0NSwwLjI3M2MtNi42MjcsMC03LjYyNS0xLjM4NC03LjYyNS04LjE5M1YxMy41NjMNCgljMC02LjgxLDAuOTk4LTguMjIsNy42MjUtOC4yMmgxNC40NDVjNi42MjcsMCw3LjY4LDEuNDEsNy42OCw4LjIyVjEwNi4wMzh6Ii8+DQo8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ijk4Ni4wNDQ5IiB5MT0iMTI5MC41MjY2IiB4Mj0iOTg2LjA0NDkiIHkyPSIxMjI2LjEzMjEiPg0KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNBN0E5QUMiLz4NCgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRkZGIi8+DQo8L2xpbmVhckdyYWRpZW50Pg0KPHBhdGggZmlsbD0iI0U2RTdFOCIgc3Ryb2tlPSJ1cmwoI1NWR0lEXzFfKSIgc3Ryb2tlLXdpZHRoPSIwLjUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTM2Ljk3MSwyNC43NjMNCgljMC0yLjAwNSwxLjYyNC0zLjYyOCwzLjYyOC0zLjYyOGgxMC45MzdjMi4wMDQsMCwzLjYyOCwxLjYyMiwzLjYyOCwzLjYyOHY2OC40NThjMCwyLjAwMy0xLjYyNCwzLjYyOS0zLjYyOCwzLjYyOUg0MC41OTkNCgljLTIuMDA0LDAtMy42MjgtMS42MjUtMy42MjgtMy42MjlWMjQuNzYzeiIvPg0KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8yXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjQ1LjU4ODkiIHkxPSI4OTAuMDQ1MiIgeDI9IjEyNDUuNTg4OSIgeTI9Ijk2Mi4yNiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAxMjkxLjYyODkgLTg2Ny4yMzgzKSI+DQoJPHN0b3AgIG9mZnNldD0iMC4wMDQzIiBzdHlsZT0ic3RvcC1jb2xvcjojRUY0MTM2Ii8+DQoJPHN0b3AgIG9mZnNldD0iMC4xNjUzIiBzdHlsZT0ic3RvcC1jb2xvcjojRjE2MDRCIi8+DQoJPHN0b3AgIG9mZnNldD0iMC41MTg5IiBzdHlsZT0ic3RvcC1jb2xvcjojRjc5RTg1Ii8+DQoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRiIvPg0KPC9saW5lYXJHcmFkaWVudD4NCjxwYXRoIGZpbGw9InVybCgjU1ZHSURfMl8pIiBkPSJNNDIuODI3LDk1LjAyM2MtMi4yMTUsMC00LjAwOS0xLjc5Ni00LjAwOS00LjAxMVYyNi44OTNjMC0yLjI1NywxLjgyOC00LjA4Niw0LjA4NS00LjA4Nmg2LjI3NA0KCWMyLjI1NywwLDQuMDg2LDEuODI5LDQuMDg2LDQuMDg2djY0LjExOWMwLDIuMjE1LTEuNzk1LDQuMDExLTQuMDExLDQuMDExSDQyLjgyN3oiLz4NCjxyZWN0IHg9IjE0LjM5NyIgeT0iOS42MDciIGZpbGw9Im5vbmUiIHdpZHRoPSI2MS4zNiIgaGVpZ2h0PSIxNC44MTIiLz4NCjx0ZXh0IHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMzQuNjA2IDE3LjAxMjkpIiBmb250LWZhbWlseT0iJ0FyaWFsTVQnIiBmb250LXNpemU9IjkuNDc5OCI+SElHSDwvdGV4dD4NCjxyZWN0IHg9IjE0LjM5NyIgeT0iMTAzLjAzMyIgZmlsbD0ibm9uZSIgd2lkdGg9IjYxLjM2IiBoZWlnaHQ9IjE0LjgxMiIvPg0KPHRleHQgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAzNS4yOTMgMTA4LjY2OTIpIiBmb250LWZhbWlseT0iJ0FyaWFsTVQnIiBmb250LXNpemU9IjkuNDc5OCI+TE9XPC90ZXh0Pg0KPC9zdmc+DQo=\",\n \"class\": \"opaque-on-hover\"\n })\n .append(\"title\")\n .text(i18n.t(\"md2d.ke_icon_tooltip\"));\n }\n }\n\n // Draw key images in the upper left corner.\n // Place them in one row, dynamically calculate\n // y position.\n\n function drawSymbolImages() {\n var heatBath = model.get('temperatureControl'),\n keShadingMode = model.get('keShading'),\n imageSelect, imageHeight,\n // Variables used for calculating proper y positions.\n yPos = 0,\n yMargin = 1,\n fSize = Math.max(fontSizeInPixels, 12);\n\n // Heat bath symbol.\n if (heatBath) {\n yPos += yMargin;\n imageSelect = iconContainer.select(\"#heat-bath\")\n .attr({\n \"y\": yPos,\n \"width\": fSize * 2,\n \"height\": fSize * 2\n })\n .style(\"display\", \"\");\n\n imageHeight = parseInt(imageSelect.attr(\"height\"), 10);\n yPos += imageHeight;\n } else {\n iconContainer.select(\"#heat-bath\").style(\"display\", \"none\");\n }\n\n // Kinetic Energy shading gradient.\n // Put it under heat bath symbol.\n if (keShadingMode) {\n yPos += yMargin;\n iconContainer.select(\"#ke-gradient\")\n .attr({\n \"y\": yPos,\n \"width\": fSize * 2.2,\n \"height\": fSize * 6\n })\n .style(\"display\", \"\");\n } else {\n iconContainer.select(\"#ke-gradient\").style(\"display\", \"none\");\n }\n }\n\n function atomTraceEnter() {\n atomTrace.enter().append(\"path\")\n .attr({\n \"class\": \"atomTrace\",\n \"d\": getAtomTracePath,\n \"stroke-width\": model2px(0.01),\n \"stroke\": atomTraceColor,\n \"fill\": \"none\",\n \"stroke-dasharray\": \"6, 6\"\n });\n }\n\n function obstacleEnter() {\n var obstacleGroup = obstacle.enter().append(\"g\");\n\n obstacleGroup\n .attr(\"class\", \"obstacle\")\n .attr(\"transform\",\n function(d, i) {\n return \"translate(\" + model2px(obstacles.x[i]) + \" \" + model2pxInv(obstacles.y[i] + obstacles.height[i]) + \")\";\n }\n );\n obstacleGroup.append(\"rect\")\n .attr({\n \"class\": \"obstacle-shape\",\n \"x\": 0,\n \"y\": 0,\n \"width\": function(d, i) {\n return model2px(obstacles.width[i]);\n },\n \"height\": function(d, i) {\n return model2px(obstacles.height[i]);\n },\n \"fill\": function(d, i) {\n return obstacles.visible[i] ? gradients.toSVG(gradients.parse(obstacles.color[i]), atomsContainer) : \"transparent\";\n },\n \"stroke-width\": function(d, i) {\n return obstacles.visible[i] ? 0.2 : 0.0;\n },\n \"stroke\": function(d, i) {\n return obstacles.visible[i] ? gradients.toSVG(gradients.parse(obstacles.color[i]), atomsContainer) : \"transparent\";\n }\n });\n\n // Append external force markers.\n obstacleGroup.each(function(d, i) {\n // Fast path\n if (!obstacles.displayExternalAcceleration[i] ||\n (!obstacles.externalAx[i] && !obstacles.externalAy[i])) {\n return;\n }\n\n // Note that arrows indicating obstacle external force use\n // the same options for styling like arrows indicating atom force.\n // Only their length is fixed.\n var obstacleGroupEl = d3.select(this),\n obsHeight = obstacles.height[i],\n obsWidth = obstacles.width[i],\n obsAx = obstacles.externalAx[i],\n obsAy = obstacles.externalAy[i],\n // Use fixed length of force vectors (in nm).\n vecLen = 0.06,\n space = 0.06,\n step, coords;\n\n // Set arrows indicating horizontal force.\n if (obsAx) {\n // Make sure that arrows keep constant distance between both ends of an obstacle.\n step = (obsHeight - 2 * space) / Math.round((obsHeight - 2 * space) / 0.2);\n coords = d3.range(space, obsHeight, step);\n obstacleGroupEl.selectAll(\"path.obstacle-force-hor\").data(coords).enter().append(\"path\")\n .attr({\n \"class\": \"obstacle-force-hor\",\n \"d\": function(d) {\n if (obsAx < 0)\n return \"M \" + model2px(obsWidth + vecLen + space) +\n \",\" + model2px(d) +\n \" L \" + model2px(obsWidth + space) +\n \",\" + model2px(d);\n else\n return \"M \" + model2px(-vecLen - space) +\n \",\" + model2px(d) +\n \" L \" + model2px(-space) +\n \",\" + model2px(d);\n }\n });\n }\n // Later set arrows indicating vertical force.\n if (obsAy) {\n // Make sure that arrows keep constant distance between both ends of an obstacle.\n step = (obsWidth - 2 * space) / Math.round((obsWidth - 2 * space) / 0.2);\n coords = d3.range(space, obsWidth, step);\n obstacleGroupEl.selectAll(\"path.obstacle-force-vert\").data(coords).enter().append(\"path\")\n .attr({\n \"class\": \"obstacle-force-vert\",\n \"d\": function(d) {\n if (obsAy < 0)\n return \"M \" + model2px(d) +\n \",\" + model2px(-vecLen - space) +\n \" L \" + model2px(d) +\n \",\" + model2px(-space);\n else\n return \"M \" + model2px(d) +\n \",\" + model2px(obsHeight + vecLen + space) +\n \" L \" + model2px(d) +\n \",\" + model2px(obsHeight + space);\n }\n });\n }\n // Finally, set common attributes and stying for both vertical and horizontal forces.\n obstacleGroupEl.selectAll(\"path.obstacle-force-hor, path.obstacle-force-vert\")\n .attr({\n \"marker-end\": hideLineMarkers ? \"\" : \"url(#Triangle-force)\",\n \"stroke-width\": model2px(forceVectorWidth),\n \"stroke\": forceVectorColor,\n \"fill\": \"none\"\n });\n });\n }\n\n\n function shapeEnter() {\n var layers = [shapeTop, shapeBelow],\n i;\n for (i = 0; i < layers.length; i++) {\n var shapeGroup = layers[i].enter().append(\"g\");\n shapeGroup.attr(\"class\", \"shape\").attr(\"transform\", function(d) {\n return \"translate(\" + model2px(shapes.x[d.index]) + \" \" + model2pxInv(shapes.y[d.index] + shapes.height[d.index]) + \")\";\n });\n shapeGroup.append(\"rect\").attr({\n \"class\": \"shape-rectangle\",\n \"x\": 0,\n \"y\": 0,\n \"width\": function(d) {\n return model2px(shapes.width[d.index]);\n },\n \"height\": function(d) {\n return model2px(shapes.height[d.index]);\n },\n \"fill\": function(d) {\n return shapes.visible[d.index] && shapes.type[d.index] === 'rectangle' ? gradients.toSVG(gradients.parse(shapes.color[d.index]), atomsContainer) : \"transparent\";\n },\n \"stroke-width\": function(d) {\n return shapes.lineWeight[d.index];\n },\n \"stroke-dasharray\": function(d) {\n return shapes.lineDashes[d.index];\n },\n \"stroke\": function(d) {\n return shapes.visible[d.index] && shapes.type[d.index] === 'rectangle' ? shapes.lineColor[d.index] : \"transparent\";\n }\n });\n shapeGroup.append(\"ellipse\").attr({\n \"class\": \"shape-ellipse\",\n \"cx\": function(d) {\n return model2px(shapes.width[d.index]) / 2;\n },\n \"cy\": function(d) {\n return model2px(shapes.height[d.index]) / 2;\n },\n \"rx\": function(d) {\n return model2px(shapes.width[d.index]) / 2;\n },\n \"ry\": function(d) {\n return model2px(shapes.height[d.index]) / 2;\n },\n \"fill\": function(d) {\n return shapes.visible[d.index] && shapes.type[d.index] === 'ellipse' ? gradients.toSVG(gradients.parse(shapes.color[d.index]), atomsContainer) : \"transparent\";\n },\n \"stroke-width\": function(d) {\n return shapes.lineWeight[d.index];\n },\n \"stroke-dasharray\": function(d) {\n return shapes.lineDashes[d.index];\n },\n \"stroke\": function(d) {\n return shapes.visible[d.index] && shapes.type[d.index] === 'ellipse' ? shapes.lineColor[d.index] : \"transparent\";\n }\n });\n }\n }\n\n function getTextBoxCoords(d) {\n var x, y, hostX, hostY, textX, textY, frameX, frameY, calloutX, calloutY,\n pixelScale = model2px(d.fontSize);\n\n x = d.x;\n y = d.y;\n\n if (d.hostType) {\n // Mark that at least one text box has a host - it means that we have to update text boxes\n // each tick. Otherwise, we can follow a fast path and don't update them after creation.\n onlyStaticTextBoxes = false;\n if (d.hostType === \"Atom\") {\n hostX = modelAtoms[d.hostIndex].x;\n hostY = modelAtoms[d.hostIndex].y;\n } else {\n hostX = obstacles.x[d.hostIndex] + (obstacles.width[d.hostIndex] / 2);\n hostY = obstacles.y[d.hostIndex] + (obstacles.height[d.hostIndex] / 2);\n }\n }\n\n if (d.hostType && !d.calloutPoint) {\n x = hostX;\n y = hostY;\n }\n\n if (d.calloutPoint) {\n if (!d.hostType) {\n calloutX = d.calloutPoint[0];\n calloutY = d.calloutPoint[1];\n } else {\n calloutX = hostX;\n calloutY = hostY;\n }\n }\n\n frameX = model2px(x);\n frameY = model2pxInv(y);\n\n textX = frameX + pixelScale * 0.75;\n textY = frameY + pixelScale * 1.2;\n\n calloutX = model2px(calloutX);\n calloutY = model2pxInv(calloutY);\n\n return [textX, textY, frameX, frameY, calloutX, calloutY];\n }\n\n function getCalloutPath(location, frame, fullWidth, fullHeight, fontSize) {\n var calloutLocation = [\n parseFloat(location[0]),\n parseFloat(location[1])\n ],\n center = [\n parseFloat(frame.getAttribute(\"x\")) + (fullWidth / 2),\n parseFloat(frame.getAttribute(\"y\")) + (fullHeight / 2)\n ],\n angle = halfPi - Math.atan((calloutLocation[0] - center[0]) / (calloutLocation[1] - center[1])),\n baseSize = Math.min(fontSize, fullHeight / 2),\n\n dcx = Math.sin(angle) * baseSize,\n dcy = Math.cos(angle) * baseSize;\n\n return (center[0] + dcx) + \", \" + (center[1] - dcy) + \" \" + (center[0] - dcx) + \", \" + (center[1] + dcy) + \" \" + calloutLocation;\n }\n\n function updateTextBoxes() {\n var layers = [textContainerTop, textContainerBelow],\n updateText;\n\n updateText = function(layerNum) {\n var layer = layers[layerNum - 1],\n layerTextBoxes = textBoxes.filter(function(t) {\n return t.layer === layerNum;\n });\n\n layer.selectAll(\"g.textBoxWrapper rect\")\n .data(layerTextBoxes.filter(function(d) {\n return d.frame;\n }))\n .attr({\n \"x\": function(d) {\n return getTextBoxCoords(d)[2];\n },\n \"y\": function(d) {\n return getTextBoxCoords(d)[3];\n },\n \"transform\": function(d) {\n var rotate = d.rotate,\n pos = getTextBoxCoords(d);\n return \"rotate(\" + rotate + \" \" + pos[0] + \" \" + pos[1] + \")\";\n }\n });\n\n layer.selectAll(\"g.textBoxWrapper text\")\n .data(layerTextBoxes)\n .attr({\n \"y\": function(d) {\n $(this).find(\"tspan\").attr(\"x\", getTextBoxCoords(d)[0]);\n return getTextBoxCoords(d)[1];\n }\n });\n\n layer.selectAll(\"g.textBoxWrapper polygon\")\n .data(layerTextBoxes.filter(function(d) {\n return d.calloutPoint;\n }))\n .attr({\n \"callout-location-data\": function(d) {\n var pos = getTextBoxCoords(d);\n return pos[4] + \", \" + pos[5];\n }\n });\n };\n\n updateText(1);\n updateText(2);\n\n // update callouts\n $(\".textBox\").each(function() {\n var $parentNode = $(this.parentNode),\n callout = $parentNode.find(\"polygon\"),\n frame = $parentNode.find(\"rect\")[0],\n fontSize, width, height, calloutLocation;\n\n if (!frame || callout.length === 0) return;\n\n fontSize = parseFloat(this.getAttributeNS(null, \"font-size\"));\n width = frame.getAttribute(\"width\");\n height = frame.getAttribute(\"height\");\n calloutLocation = callout.attr(\"callout-location-data\").split(\", \");\n\n callout.attr(\"points\", getCalloutPath(calloutLocation, frame, width, height, fontSize));\n });\n }\n\n function drawTextBoxes() {\n var size, layers, appendTextBoxes;\n // Workaround for a rendering bug in Chrome on OS X and Windows (but not Linux or Android);\n // see http://crbug.com/309740\n var shouldRoundTextBoxStrokeWidth =\n browser.browser === 'Chrome' && !!browser.oscpu.match(/Windows|Mac OS X/);\n\n textBoxes = model.get('textBoxes');\n\n size = [model.get('width'), model.get('height')];\n\n layers = [textContainerTop, textContainerBelow];\n\n // Append to either top or bottom layer depending on item's layer #.\n appendTextBoxes = function(layerNum) {\n var layer = layers[layerNum - 1],\n text, layerTextBoxes, selection;\n\n layer.selectAll(\"g.textBoxWrapper\").remove();\n\n layerTextBoxes = textBoxes.filter(function(t) {\n return t.layer === layerNum;\n });\n\n selection = layer.selectAll(\"g.textBoxWrapper\")\n .data(layerTextBoxes);\n text = selection.enter().append(\"svg:g\")\n .attr(\"class\", \"textBoxWrapper\");\n\n text.filter(function(d) {\n return d.calloutPoint;\n })\n .append(\"polygon\")\n .attr({\n \"points\": \"0,0 0,0 0,0\",\n \"style\": function(d) {\n var backgroundColor = d.backgroundColor,\n strokeWidth = d.strokeWidthEms * fontSizeInPixels,\n strokeOpacity = d.strokeOpacity,\n strokeColor = d.strokeColor;\n return \"fill:\" + backgroundColor + \";opacity:1.0;fill-opacity:1;stroke:\" + strokeColor + \";stroke-width:\" + (strokeWidth * 2) + \";stroke-opacity:\" + strokeOpacity;\n },\n \"callout-location-data\": function(d) {\n var pos = getTextBoxCoords(d);\n return pos[4] + \", \" + pos[5];\n }\n });\n\n text.filter(function(d) {\n return d.frame;\n })\n .append(\"rect\")\n .attr({\n \"class\": function(d, i) {\n return \"textBoxFrame text-\" + i;\n },\n \"id\": function(d, i) {\n return \"text-\" + i;\n },\n \"transform\": function(d) {\n var rotate = d.rotate,\n pos = getTextBoxCoords(d);\n return \"rotate(\" + rotate + \" \" + pos[0] + \" \" + pos[1] + \")\";\n },\n \"style\": function(d) {\n var backgroundColor = d.backgroundColor,\n strokeWidth = d.strokeWidthEms * fontSizeInPixels,\n strokeOpacity = d.strokeOpacity,\n strokeColor = d.strokeColor;\n\n if (shouldRoundTextBoxStrokeWidth && strokeWidth < 1) {\n // Workaround for ghosting artifact left when stroke-width < 1 in Chrome on OS X.\n // Try to adjust opacity to compensate for increased width:\n strokeOpacity *= strokeWidth;\n strokeWidth = 1;\n }\n\n return \"fill:\" + backgroundColor + \";opacity:1.0;fill-opacity:1;stroke:\" + strokeColor + \";stroke-width:\" + strokeWidth + \";stroke-opacity:\" + strokeOpacity;\n },\n \"width\": 0,\n \"height\": 0,\n \"rx\": function(d) {\n return d.frame === \"rounded rectangle\" ? model2px(d.fontSize) / 2.5 : 0;\n },\n \"ry\": function(d) {\n return d.frame === \"rounded rectangle\" ? model2px(d.fontSize) / 2 : 0;\n },\n \"x\": function(d) {\n return getTextBoxCoords(d)[2];\n },\n \"y\": function(d) {\n return getTextBoxCoords(d)[3];\n }\n });\n\n text.filter(function(d) {\n return d.calloutPoint;\n })\n .append(\"polygon\")\n .attr({\n \"points\": \"0,0 0,0 0,0\",\n \"style\": function(d) {\n var backgroundColor = d.backgroundColor;\n return \"fill:\" + backgroundColor + \";opacity:1.0;fill-opacity:1;stroke:#000000;stroke-width:0;\";\n }\n });\n\n text.append(\"text\")\n .attr({\n \"class\": function() {\n return \"textBox\" + (AUTHORING ? \" draggable\" : \"\");\n },\n \"transform\": function(d) {\n var rotate = d.rotate,\n pos = getTextBoxCoords(d);\n return \"rotate(\" + rotate + \" \" + pos[0] + \" \" + pos[1] + \")\";\n },\n \"x-data\": function(d) {\n return getTextBoxCoords(d)[0];\n },\n \"y\": function(d) {\n return getTextBoxCoords(d)[1];\n },\n \"width-data\": function(d) {\n return d.width;\n },\n \"height-data\": function(d) {\n return d.height;\n },\n \"width\": model2px(size[0]),\n \"height\": model2px(size[1]),\n \"xml:space\": \"preserve\",\n \"font-family\": \"'\" + labConfig.fontface + \"', sans-serif\",\n \"font-size\": function(d) {\n return model2px(d.fontSize) + \"px\";\n },\n \"fill\": function(d) {\n return d.color || \"black\";\n },\n \"text-data\": function(d) {\n return d.text;\n },\n \"text-anchor\": function(d) {\n var align = d.textAlign || \"left\";\n if (align === \"center\") align = \"middle\";\n return align;\n },\n \"has-host\": function(d) {\n return !!d.hostType;\n },\n \"pointer-events\": function(d) {\n return !d.hostType ? 'auto' : 'none';\n },\n })\n .call(d3.behavior.drag()\n .on(\"drag\", textDrag)\n .on(\"dragend\", function(d) {\n // simple output to console for now, eventually should just get\n // serialized back to interactive (or model?) JSON on author save\n console.log('\"x\": ' + d.x + \",\");\n console.log('\"y\": ' + d.y + \",\");\n })\n );\n selection.exit().remove();\n };\n\n appendTextBoxes(1);\n appendTextBoxes(2);\n\n // wrap text, set callouts\n $(\".textBox\").each(function() {\n var text = this.getAttributeNS(null, \"text-data\"),\n x = this.getAttributeNS(null, \"x-data\"),\n width = this.getAttributeNS(null, \"width-data\"),\n height = this.getAttributeNS(null, \"height-data\"),\n fontSize = parseFloat(this.getAttributeNS(null, \"font-size\")),\n transform = this.getAttributeNS(null, \"transform\"),\n hasHost = this.getAttributeNS(null, \"has-host\"),\n textAlign = this.getAttributeNS(null, \"text-anchor\"),\n $parentNode = $(this.parentNode),\n horizontalPadding, verticalPadding,\n result, fullWidth, fullHeight, frame, dy, tx, ty,\n callout, calloutLocation;\n\n dy = fontSize * 1.2;\n horizontalPadding = +fontSize * 1.5;\n verticalPadding = fontSize / 1.8;\n\n if (width === '') {\n width = -1;\n } else {\n width = model2px(width);\n }\n\n if (height === '') {\n height = -1;\n } else {\n height = model2px(height);\n }\n\n while (this.firstChild) { // clear element first\n this.removeChild(this.firstChild);\n }\n\n result = wrapSVGText(text, this, width, x, dy);\n\n if ($parentNode.find(\"rect\").length > 0) {\n frame = $parentNode.find(\"rect\")[0];\n fullWidth = result.width + horizontalPadding;\n frame.setAttributeNS(null, \"width\", fullWidth);\n if (height > 0) {\n fullHeight = height;\n } else {\n fullHeight = (result.lines * dy) + verticalPadding;\n }\n frame.setAttributeNS(null, \"height\", fullHeight);\n }\n\n // if we have a callout\n callout = $parentNode.find(\"polygon\");\n if (frame && callout.length > 0) {\n calloutLocation = callout.attr(\"callout-location-data\").split(\", \");\n callout.attr(\"points\", getCalloutPath(calloutLocation, frame, fullWidth, fullHeight, fontSize));\n }\n\n // center all hosted labels simply by tweaking the g.transform\n if (textAlign === \"middle\") {\n tx = result.width / 2;\n if (height > 0) {\n ty = height / 2 - verticalPadding * 1.5 - (result.lines - 1) * dy / 2;\n } else {\n ty = 0;\n }\n transform = transform + \" translate(\" + tx + \",\" + ty + \")\";\n $(this).attr(\"transform\", transform);\n }\n if (hasHost === \"true\" && callout.length === 0) {\n tx = result.width / -2 - horizontalPadding / 2;\n ty = result.lines * dy / -2 - verticalPadding / 2;\n $parentNode.attr(\"transform\", \"translate(\" + tx + \",\" + ty + \")\");\n }\n });\n }\n\n function setupObstacles() {\n obstacles = model.get_obstacles();\n atomsContainer.selectAll(\"g.obstacle\").remove();\n if (obstacles) {\n mockObstaclesArray.length = obstacles.x.length;\n obstacle = atomsContainer.selectAll(\"g.obstacle\").data(mockObstaclesArray);\n obstacleEnter();\n }\n }\n\n function setupShapes() {\n shapes = model.get_shapes();\n shapeContainerTop.selectAll(\".shape\").remove();\n shapeContainerBelow.selectAll(\".shape\").remove();\n if (shapes) {\n mockShapesTop = [];\n mockShapesBelow = [];\n for (var i = 0; i < shapes.x.length; i++) {\n if (shapes.layer[i] === 1) {\n mockShapesTop.push({\n index: i,\n layerPosition: shapes.layerPosition[i]\n });\n } else {\n mockShapesBelow.push({\n index: i,\n layerPosition: shapes.layerPosition[i]\n });\n }\n }\n mockShapesTop.sort(function(a, b) {\n return a.layerPosition - b.layerPosition;\n });\n mockShapesBelow.sort(function(a, b) {\n return a.layerPosition - b.layerPosition;\n });\n shapeTop = shapeContainerTop.selectAll(\".shape\").data(mockShapesTop);\n shapeBelow = shapeContainerBelow.selectAll(\".shape\").data(mockShapesBelow);\n shapeEnter();\n }\n }\n\n function setupLines() {\n lines = model.get_lines();\n mockLinesTop.length = lines.x1.length;\n lineTop = lineContainerTop.selectAll(\".line\").data(mockLinesTop);\n lineTop.exit().remove();\n if (lines) {\n lineTop.enter().append(\"line\");\n lineTop.attr({\n \"class\": \"line\",\n \"x1\": function(d, i) {\n return model2px(lines.x1[i]);\n },\n \"y1\": function(d, i) {\n return model2pxInv(lines.y1[i]);\n },\n \"x2\": function(d, i) {\n return model2px(lines.x2[i]);\n },\n \"y2\": function(d, i) {\n return model2pxInv(lines.y2[i]);\n },\n \"stroke-width\": function(d, i) {\n return lines.lineWeight[i];\n },\n \"stroke-dasharray\": function(d, i) {\n return lines.lineDashes[i];\n },\n \"stroke\": function(d, i) {\n return lines.lineColor[i];\n },\n \"marker-start\": function(d, i) {\n return createCustomArrowHead(i, lines.beginStyle[i], true);\n },\n \"marker-end\": function(d, i) {\n return createCustomArrowHead(i, lines.endStyle[i]);\n },\n \"visibility\": function(d, i) {\n return lines.visible[i] ? \"visible\" : \"hidden\";\n }\n });\n }\n }\n\n function setupAtomTrace() {\n atomsContainer.selectAll(\"path.atomTrace\").remove();\n atomTracePath = \"\";\n\n drawAtomTrace = model.get(\"showAtomTrace\");\n atomTraceId = model.get(\"atomTraceId\");\n if (drawAtomTrace) {\n atomTrace = atomsContainer.selectAll(\"path.atomTrace\").data([modelAtoms[atomTraceId]]);\n atomTraceEnter();\n }\n }\n\n function getAtomTracePath(d) {\n // until we implement buffered array model output properties,\n // we just keep the path history in the path string\n var dx = Math.floor(model2px(d.x) * 100) / 100,\n dy = Math.floor(model2pxInv(d.y) * 100) / 100,\n lIndex, sIndex;\n if (!atomTracePath) {\n atomTracePath = \"M\" + dx + \",\" + dy + \"L\";\n return \"M \" + dx + \",\" + dy;\n } else {\n atomTracePath += dx + \",\" + dy + \" \";\n }\n\n // fake buffered array functionality by knocking out the first\n // element of the string when we get too big\n if (atomTracePath.length > 4000) {\n lIndex = atomTracePath.indexOf(\"L\");\n sIndex = atomTracePath.indexOf(\" \");\n atomTracePath = \"M\" + atomTracePath.slice(lIndex + 1, sIndex) + \"L\" + atomTracePath.slice(sIndex + 1);\n }\n return atomTracePath;\n }\n\n function updateAtomTrace() {\n atomTrace.attr({\n \"d\": getAtomTracePath\n });\n }\n\n function textDrag(d) {\n var dragDx = model2px.invert(d3.event.dx),\n dragDy = model2px.invert(d3.event.dy);\n\n if (!(AUTHORING && model.isStopped())) {\n // for now we don't have user-draggable textBoxes\n return;\n } else {\n d.x = d.x + dragDx;\n d.y = d.y - dragDy;\n updateTextBoxes();\n }\n }\n\n function setupBrowserWarning() {\n var b = benchmark.what_browser(); // we need to recalc this for FF, for some reason\n\n function setupWarningPane(testFunc, id, htmlContent) {\n if (!testFunc()) return;\n var $warning = modelView.$el.parent().find(\"#\" + id);\n if ($warning.length === 0) {\n $warning = $(\"
\" + htmlContent + \"
\");\n $warning.on(\"click\", function() {\n $(this).fadeOut();\n });\n $warning.appendTo(modelView.$el.parent());\n }\n var pos = modelView.pos();\n $warning.css({\n width: pos.width - 20,\n top: pos.bottom - $warning.height() - 10,\n left: pos.left + 10\n });\n }\n\n // Firefox 18-23 warning:\n setupWarningPane(function() {\n return b.browser === \"Firefox\" &&\n b.version >= \"18\" && b.version < \"23\";\n }, \"ff1823warning\", \"\" +\n \"Firefox v18-22 performance issue...)\");\n\n // Firefox 27 + Windows warning:\n setupWarningPane(function() {\n return b.browser === \"Firefox\" &&\n b.oscpu.indexOf(\"Windows\") !== -1 &&\n b.version >= \"27\" && b.version < \"28\";\n }, \"ff27warning\", \"Because of a problem in \" +\n \"Firefox 27 with certain types of graphics (SVG), you may see minor \" +\n \"visual problems with some models. We recommend using another browser \" +\n \"until Firefox 28 becomes available.\");\n\n // Safari 6.1 + DNA models warning:\n setupWarningPane(function() {\n return model.get(\"DNA\") &&\n b.browser === \"Safari\" &&\n b.version.indexOf(\"6.1\") === 0;\n }, \"saf61DNAwarning\", \"This model may have visual problems on Safari 6. We recommend \" +\n \"upgrading Safari, or using another browser.\");\n }\n\n function setupMiscOptions() {\n // These options are still used by the obstacle force arrows.\n forceVectorColor = model.get(\"forceVectors\").color;\n forceVectorWidth = model.get(\"forceVectors\").width;\n createVectorArrowHeads(forceVectorColor, \"force\");\n\n // Reset custom arrow heads.\n arrowHeadsCache = {};\n atomsContainer.selectAll(\".custom-arrow-head\").remove();\n\n atomTraceColor = model.get(\"atomTraceColor\");\n }\n\n function setupRendererOptions() {\n useQuantumDynamics = model.properties.useQuantumDynamics;\n if (useQuantumDynamics) {\n createExcitationGlow();\n }\n\n createSymbolImages();\n\n // Initialize renderers.\n geneticRenderer = new GeneticRenderer(modelView, model);\n }\n\n function photonPath(d) {\n var lineData = [],\n nPoints = 40,\n line = d3.svg.line()\n .x(function(d) {\n return model2px(0.5 / nPoints * d.x);\n })\n .y(function(d) {\n return model2px(0.1 * d.y);\n }),\n\n t = d.angularFrequency * 2 * Math.PI / nPoints,\n i;\n\n // Reference implementation:\n // https://github.com/concord-consortium/mw/blob/6e2f2d4630323b8e993fcfb531a3e7cb06644fef/src/org/concord/mw2d/models/Photon.java#L74-L79\n for (i = 0; i < nPoints; i++) {\n lineData.push({\n x: i - nPoints / 2,\n y: Math.sin(i * t) / (1 + 0.01 * (i - 0.5 * nPoints) * (i - 0.5 * nPoints))\n });\n }\n\n return line(lineData);\n }\n\n function photonColor(data) {\n // Reference implementation:\n // https://github.com/concord-consortium/mw/blob/6e2f2d4630323b8e993fcfb531a3e7cb06644fef/src/org/concord/mw2d/models/Photon.java#L185-L205\n var freq = data.angularFrequency;\n if (freq <= MIN_VISIBLE_FREQ || freq >= MAX_VISIBLE_FREQ) {\n return \"rgba(0,0,0,0.8)\"\n } else {\n var d = (MAX_VISIBLE_FREQ - MIN_VISIBLE_FREQ) / 7.0;\n var i = Math.floor((freq - MIN_VISIBLE_FREQ) / d);\n if (i === 6) {\n return \"rgb(\" + PHOTON_COLORS[i].join(',') + \")\";\n } else {\n var remainder = (freq - MIN_VISIBLE_FREQ - i * d) / d;\n var r1 = PHOTON_COLORS[i][0]; // red\n var r2 = PHOTON_COLORS[i + 1][0];\n var g1 = PHOTON_COLORS[i][1]; // green\n var g2 = PHOTON_COLORS[i + 1][1];\n var b1 = PHOTON_COLORS[i][2]; // blue\n var b2 = PHOTON_COLORS[i + 1][2];\n return \"rgb(\" + Math.floor(r1 + remainder * (r2 - r1)) + \",\" + Math.floor(g1 + remainder * (g2 - g1)) + \",\" + Math.floor(b1 + remainder * (b2 - b1)) + \")\";\n }\n }\n }\n\n function photonDashArray(data) {\n var freq = data.angularFrequency;\n if (freq <= MIN_VISIBLE_FREQ || freq >= MAX_VISIBLE_FREQ) {\n // SVG \"stroke-dasharray\" property value.\n return \"4,2\"\n } else {\n return null;\n }\n }\n\n function enterAndUpdatePhotons() {\n var photons = atomsContainer\n .selectAll(\".photon\")\n .data(model.getPhotons(), function(d) {\n return d.id;\n });\n\n photons.enter().append(\"path\")\n .attr({\n \"class\": \"photon\",\n \"d\": photonPath,\n \"stroke\": photonColor,\n \"stroke-dasharray\": photonDashArray,\n \"stroke-width\": model2px(0.011),\n \"fill-opacity\": 0\n });\n\n photons.exit().remove();\n\n photons.attr(\"transform\", function(d) {\n return \"translate(\" + model2px(d.x) + \", \" + model2pxInv(d.y) + \") \" +\n \"rotate(\" + d.angle + \")\";\n });\n\n }\n\n //\n // *** Main Renderer functions ***\n //\n\n //\n // MD2D Renderer: setup\n //\n\n function setup() {\n model2px = modelView.model2px;\n model2pxInv = modelView.model2pxInv;\n\n fontSizeInPixels = modelView.getFontSizeInPixels();\n\n modelAtoms = model.getAtoms();\n modelElectricField = model.getElectricField();\n modelElements = model.get_elements();\n modelWidth = model.get('width');\n modelHeight = model.get('height');\n aspectRatio = modelWidth / modelHeight;\n\n setupRendererOptions();\n\n // Subscribe for model events.\n model.addPropertiesListener([\"temperatureControl\", \"keShading\"], drawSymbolImages);\n\n function redrawClickableObjects(redrawOperation) {\n return function() {\n redrawOperation();\n // All objects where repainted (probably removed and added again), so\n // it's necessary to apply click handlers again.\n modelView.updateClickHandlers();\n };\n }\n\n function setupElectricField() {\n electricFieldRenderer.setup();\n modelView.renderCanvas();\n }\n\n // Redraw container each time when some visual-related property is changed.\n model.addPropertiesListener([\n \"chargeShading\", \"chargeShadingStyle\", \"showChargeSymbols\", \"useThreeLetterCode\",\n \"showAtomTrace\", \"atomTraceId\", \"aminoAcidColorScheme\",\n \"backgroundColor\", \"markColor\", \"forceVectorsDirectionOnly\"\n ],\n redrawClickableObjects(repaint));\n\n // Vectors:\n model.addPropertiesListener([\"electricFieldDensity\", \"showElectricField\", \"electricFieldColor\"],\n setupElectricField);\n model.addPropertiesListener([\"showVelocityVectors\", \"velocityVectors\"], function() {\n velocityVectorsRenderer.setup();\n modelView.renderCanvas();\n });\n model.addPropertiesListener([\"showForceVectors\", \"forceVectors\", \"forceVectorsDirectionOnly\"], function() {\n forceVectorsRenderer.setup();\n modelView.renderCanvas();\n });\n model.addPropertiesListener([\"showVDWLines\", \"VDWLinesCutoff\"], function() {\n vdwLinesRenderer.setup();\n modelView.renderCanvas();\n });\n\n model.on('addAtom', redrawClickableObjects(function() {\n atomsRenderer.setup();\n velocityVectorsRenderer.setup();\n forceVectorsRenderer.setup();\n electricFieldRenderer.update();\n modelView.renderCanvas();\n }));\n model.on('removeAtom', redrawClickableObjects(function() {\n atomsRenderer.setup();\n velocityVectorsRenderer.setup();\n forceVectorsRenderer.setup();\n electricFieldRenderer.update();\n modelView.renderCanvas();\n }));\n model.on('addRadialBond', redrawClickableObjects(function() {\n bondsRenderer.setup();\n modelView.renderCanvas();\n }));\n model.on('removeRadialBond', redrawClickableObjects(function() {\n bondsRenderer.setup();\n modelView.renderCanvas();\n }));\n model.on('textBoxesChanged', redrawClickableObjects(drawTextBoxes));\n model.on('imagesChanged', redrawClickableObjects(imagesRenderer.setup));\n model.on('addElectricField', setupElectricField);\n model.on('removeElectricField', setupElectricField);\n model.on('changeElectricField', setupElectricField);\n\n setupBrowserWarning();\n\n isSetup = true;\n }\n\n // Call when model is reset or reloaded.\n\n function bindModel(newModel) {\n model = newModel;\n atomsRenderer.bindModel(newModel);\n bondsRenderer.bindModel(newModel);\n vdwLinesRenderer.bindModel(newModel);\n imagesRenderer.bindModel(newModel);\n setup();\n }\n\n //\n // MD2D Renderer: repaint\n //\n // Call when container being rendered into changes size, in that case\n // pass in new D3 scales for model2px transformations.\n //\n // Also call when the number of objects changes such that the container\n // must be setup again.\n //\n\n function repaint(m2px, m2pxInv) {\n if (arguments.length) {\n model2px = m2px;\n model2pxInv = m2pxInv;\n }\n fontSizeInPixels = modelView.getFontSizeInPixels();\n\n setupMiscOptions();\n setupObstacles();\n atomsRenderer.setup();\n bondsRenderer.setup();\n vdwLinesRenderer.setup();\n setupShapes();\n setupLines();\n geneticRenderer.setup();\n velocityVectorsRenderer.setup();\n forceVectorsRenderer.setup();\n electricFieldRenderer.setup();\n setupAtomTrace();\n imagesRenderer.setup();\n drawTextBoxes();\n drawSymbolImages();\n setupBrowserWarning();\n if (useQuantumDynamics) {\n enterAndUpdatePhotons();\n }\n }\n\n //\n // MD2D Renderer: update\n //\n // Call to update visualization when model result state changes.\n // Normally called on every model tick.\n //\n\n function update() {\n console.time('view update');\n if (obstacles) {\n obstacle.attr(\"transform\", function(d, i) {\n return \"translate(\" + model2px(obstacles.x[i]) + \" \" + model2pxInv(obstacles.y[i] + obstacles.height[i]) + \")\";\n });\n }\n\n if (shapes) {\n shapeTop.attr(\"transform\", function(d) {\n return \"translate(\" + model2px(shapes.x[d.index]) + \" \" + model2pxInv(shapes.y[d.index] + shapes.height[d.index]) + \")\";\n });\n shapeBelow.attr(\"transform\", function(d) {\n return \"translate(\" + model2px(shapes.x[d.index]) + \" \" + model2pxInv(shapes.y[d.index] + shapes.height[d.index]) + \")\";\n });\n }\n\n atomsRenderer.update();\n bondsRenderer.update();\n vdwLinesRenderer.update();\n velocityVectorsRenderer.update();\n forceVectorsRenderer.update();\n electricFieldRenderer.update();\n\n if (drawAtomTrace) {\n updateAtomTrace();\n }\n if (model.properties.images && model.properties.images.length !== 0) {\n imagesRenderer.update();\n }\n if (textBoxes && textBoxes.length > 0 && !onlyStaticTextBoxes) {\n // Update text boxes properties only when at least one of them is attached to some movable\n // object like atom or obstacle.\n updateTextBoxes();\n }\n if (useQuantumDynamics) {\n enterAndUpdatePhotons();\n }\n console.timeEnd('view update');\n }\n\n //\n // Public API to instantiated Renderer\n //\n api = {\n // Expose private methods.\n setup: function() {\n if (!isSetup) {\n setup();\n }\n },\n\n update: function() {\n if (isSetup) {\n update();\n }\n },\n\n repaint: function() {\n if (isSetup) {\n repaint();\n }\n },\n\n bindModel: bindModel\n };\n\n return api;\n};\n","\nimport SVGContainer from 'common/views/svg-container';\nimport Renderer from 'models/md2d/views/renderer';\n\nexport default function(model, modelUrl, i18n) {\n return new SVGContainer(model, modelUrl, Renderer, {\n i18n: i18n\n });\n};\n","\nexport default function DNAEditDialog(model) {\n var api,\n $dialogDiv,\n $dnaTextInput,\n $originalDnaInput,\n $errorMsg,\n $submitButton,\n originalDNA = model.get(\"DNA\"),\n\n init = function() {\n // Basic dialog elements.\n $dialogDiv = $('
');\n $('
Enter DNA sequence below
').appendTo($dialogDiv);\n $('
 
').appendTo($dialogDiv);\n $originalDnaInput = $('');\n $originalDnaInput.val(originalDNA);\n $('
Original sequence
').append($originalDnaInput).appendTo($dialogDiv);\n $dnaTextInput = $('');\n $('
Edited sequence
').prepend($dnaTextInput).appendTo($dialogDiv);\n $errorMsg = $('

');\n $errorMsg.appendTo($dialogDiv);\n\n // jQuery UI Dialog.\n $dialogDiv.dialog({\n dialogClass: \"dna-edit-dialog\",\n // Ensure that font is being scaled dynamically.\n appendTo: \".lab-responsive-content\",\n title: \"DNA Sequence\",\n autoOpen: false,\n width: \"35em\",\n buttons: {\n \"Apply\": function() {\n model.set({\n DNA: $dnaTextInput.val()\n });\n $(this).dialog(\"close\");\n }\n }\n });\n\n // Dynamic validation on input.\n $submitButton = $(\".dna-edit-dialog button:contains('Apply')\");\n $dnaTextInput.on(\"input\", function() {\n try {\n model.getPropertyValidateFunc(\"DNA\")($dnaTextInput.val());\n $submitButton.button(\"enable\");\n $errorMsg.text(\"\");\n } catch (e) {\n $submitButton.button(\"disable\");\n $errorMsg.text(e.message);\n }\n });\n };\n\n api = {\n open: function() {\n // Clear previous errors.\n $errorMsg.text(\"\");\n $submitButton.removeAttr(\"disabled\");\n // Set current value of DNA code.\n $dnaTextInput.val(model.get(\"DNA\"));\n $dialogDiv.dialog(\"open\");\n },\n bindModel: function(newModel) {\n if (newModel !== model) {\n model = newModel;\n // Model has changed, so update original DNA too.\n originalDNA = model.get(\"DNA\");\n $originalDnaInput.val(originalDNA);\n }\n }\n };\n\n init();\n\n return api;\n};\n"," \nimport DNAEditDialog from 'models/md2d/views/dna-edit-dialog';\n\n\n/**\n Define the model-specific MD2D scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Scripting API\n*/\nexport default function MD2DScriptingAPI(parent) {\n\n var dnaEditDialog = null,\n // whether we are currently processing a batch command, suppresses repaint\n batchDepth = 0;\n\n var setProperty = function() {\n var setter = arguments[0],\n i = arguments[1],\n args;\n\n if (Array.isArray(i)) {\n args = Array.prototype.slice.call(arguments, 2, arguments.length);\n parent.api.batch(function() {\n for (var j = 0, jj = i[0]; j < i.length; jj = i[++j]) {\n setter.apply(null, Array.prototype.concat(jj, args));\n }\n });\n } else {\n args = Array.prototype.slice.call(arguments, 1, arguments.length);\n setter.apply(null, args);\n }\n parent.api.repaintIfReady();\n };\n\n function createModelAdder(methodName) {\n return function modelAdder(props, options) {\n try {\n parent.model[methodName].call(parent.model, props);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n parent.api.repaintIfReady();\n };\n }\n\n return {\n\n getCurrentComputerTime: function() {\n return Date.now();\n },\n\n /* Returns number of atoms in the system. */\n getNumberOfAtoms: function getNumberOfAtoms(f) {\n return parent.model.getNumberOfAtoms(f);\n },\n\n /* Returns number of obstacles in the system. */\n getNumberOfObstacles: function getNumberOfObstacles() {\n return parent.model.getNumberOfObstacles();\n },\n\n /* Returns number of elements in the system. */\n getNumberOfElements: function getNumberOfElements() {\n return parent.model.getNumberOfElements();\n },\n\n /* Returns number of radial bonds in the system. */\n getNumberOfRadialBonds: function getNumberOfRadialBonds() {\n return parent.model.getNumberOfRadialBonds();\n },\n\n /* Returns number of angular bonds in the system. */\n getNumberOfAngularBonds: function getNumberOfAngularBonds() {\n return parent.model.getNumberOfAngularBonds();\n },\n\n addAtom: function addAtom(props) {\n return parent.model.addAtom(props);\n },\n\n /*\n Removes atom 'i'.\n */\n removeAtom: function removeAtom(i, options) {\n try {\n parent.model.removeAtom(i, options);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n },\n\n /*\n Removes radial bond 'i'.\n */\n removeRadialBond: function removeRadialBond(i, options) {\n try {\n parent.model.removeRadialBond(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n\n parent.api.repaintIfReady();\n },\n\n /*\n Removes angular bond 'i'.\n */\n removeAngularBond: function removeAngularBond(i, options) {\n try {\n parent.model.removeAngularBond(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n\n parent.api.repaintIfReady();\n },\n\n /*\n Adds radial bond with properties 'props'.\n */\n addRadialBond: function addRadialBond(props) {\n parent.model.addRadialBond(props);\n\n parent.api.repaintIfReady();\n },\n\n addRestraint: function addRestraint(props) {\n parent.model.addRestraint(props);\n parent.api.repaintIfReady();\n },\n\n setRestraintProperties: function setRestraintProperties(i, props) {\n parent.model.setRestraintProperties(i, props);\n parent.api.repaintIfReady();\n },\n\n /*\n Adds angular bond with properties 'props'.\n */\n addAngularBond: function addAngularBond(props) {\n parent.model.addAngularBond(props);\n\n parent.api.repaintIfReady();\n },\n\n addRandomAtom: function addRandomAtom() {\n return parent.model.addRandomAtom.apply(parent.model, arguments);\n },\n\n adjustTemperature: function adjustTemperature(fraction) {\n parent.model.set({\n targetTemperature: fraction * parent.model.get('targetTemperature')\n });\n },\n\n /**\n * Scales the velocity of all atoms to the desired temperature T.\n * @param {number} T defined in K\n */\n setTemperatureOfAllAtoms: function setTemperatureOfAllAtoms(T) {\n var atomIndices = [];\n for (var i = 0; i < parent.model.getNumberOfAtoms(); i++) {\n atomIndices.push(i);\n }\n parent.model.setTemperatureOfAtoms(atomIndices, T);\n },\n\n /**\n * Scales the velocity of a group of atoms to the desired temperature T.\n * @param {array} atomIndices\n * @param {number} T defined in K\n */\n setTemperatureOfAtoms: function setTemperatureOfAtoms(atomIndices, T) {\n parent.model.setTemperatureOfAtoms(atomIndices, T);\n },\n\n /**\n * Adds energy defined in eV to a group of atoms.\n * @param {number} energy defined in eV\n * @param {array} atomIndices optional, if undefined, KE will be added to all atoms\n */\n addKEToAtoms: function addKEToAtoms(energy, atomIndices) {\n parent.model.addKEToAtoms(energy, atomIndices);\n },\n\n getTemperatureOfAllAtoms: function getTemperatureOfAllAtoms() {\n var atomIndices = [];\n for (var i = 0; i < parent.model.getNumberOfAtoms(); i++) {\n atomIndices.push(i);\n }\n return parent.model.getTemperatureOfAtoms(atomIndices);\n },\n\n getTemperatureOfAtoms: function getTemperatureOfAtoms(atomIndices) {\n return parent.model.getTemperatureOfAtoms(atomIndices);\n },\n\n limitHighTemperature: function limitHighTemperature(t) {\n if (parent.model.get('targetTemperature') > t) parent.model.set({\n targetTemperature: t\n });\n },\n\n /** returns a list of integers corresponding to atoms in the system */\n randomAtoms: function randomAtoms(n) {\n var numAtoms = parent.model.getNumberOfAtoms();\n\n if (n === null) n = 1 + parent.api.randomInteger(numAtoms - 1);\n\n if (!parent.api.isInteger(n)) throw new Error(\"randomAtoms: number of atoms requested, \" + n + \", is not an integer.\");\n if (n < 0) throw new Error(\"randomAtoms: number of atoms requested, \" + n + \", was less be greater than zero.\");\n\n if (n > numAtoms) n = numAtoms;\n return parent.api.choose(n, numAtoms);\n },\n\n /**\n Quantum Dynamics\n */\n\n /** Turn on quantum dynamics light source. */\n turnOnLightSource: function turnOnLightSource() {\n parent.model.turnOnLightSource();\n },\n\n turnOffLightSource: function turnOffLightSource() {\n parent.model.turnOffLightSource();\n },\n\n setLightSourceAngle: function setLightSourceAngle(angle) {\n parent.model.setLightSourceAngle(angle);\n },\n\n setLightSourceFrequency: function setLightSourceFrequency(freq) {\n parent.model.setLightSourceFrequency(freq);\n },\n\n setLightSourcePeriod: function setLightSourcePeriod(period) {\n parent.model.setLightSourcePeriod(period);\n },\n\n setLightSourceNumber: function setLightSourceNumber(number) {\n parent.model.setLightSourceNumber(number);\n },\n\n /**\n * Chemical Reactions\n */\n\n /**\n * Sets bond energy (dissociation energy) of a bond.\n * @param {string} bondDescription e.g. \"1-1\" means single bond between element 1 and 1,\n * \"1=2\" means double bond between element 1 and 2 etc.\n * @param {number} value bond energy in eV\n */\n setBondEnergy: function setBondEnergy(bondDescription, value) {\n parent.model.setBondEnergy(bondDescription, value);\n },\n\n /**\n * Sets valence electrons count of the given element.\n * @param {number} element\n * @param {number} value\n */\n setValenceElectrons: function setVelenceElectrons(element, value) {\n parent.model.setValenceElectrons(element, value);\n parent.api.repaintIfReady();\n },\n\n /**\n * Returns array of atom indices within circular area,\n * optionally specifying an element of interest.\n * e.g. atomsWithinCircle(1, 1, 0.5) returns all atoms within 0.5 nm of position (1nm, 1nm).\n * @param {number} x X coordinate of the circle center.\n * @param {number} y Y coordinate of the circle center.\n * @param {number} w Radius of the circle.\n * @param {number} element Optional ID of the desired element type.\n * @return {Array} Array of atoms indices within a given area.\n */\n atomsWithinCircle: function(x, y, r, element) {\n var result = [],\n props, dist, i, len;\n\n for (i = 0, len = parent.model.getNumberOfAtoms(); i < len; i++) {\n props = parent.model.getAtomProperties(i);\n if (typeof element !== 'undefined' && props.element !== element) continue;\n dist = Math.sqrt(Math.pow(x - props.x, 2) + Math.pow(y - props.y, 2));\n if (dist <= r) {\n result.push(i);\n }\n }\n return result;\n },\n\n /**\n * Returns array of atom indices within rectangular area,\n * optionally specifying an element of interest.\n * e.g. atomsWithinRect(1, 1, 0.2, 0.3) returns all atoms within a rectangle of width 0.2nm\n * by height 0.3nm, with the bottom-left corner specified by the postion (1nm, 1nm).\n * @param {number} x X coordinate of the bottom-left rectangle corner.\n * @param {number} y Y coordinate of the bottom-left rectangle corner.\n * @param {number} w Width of the rectangle.\n * @param {number} h Height of the rectangle.\n * @param {number} element Optional ID of the desired element type.\n * @return {Array} Array of atoms indices within a given area.\n */\n atomsWithinRect: function(x, y, w, h, element) {\n var result = [],\n props, dist, inX, inY, i, len;\n\n for (i = 0, len = parent.model.getNumberOfAtoms(); i < len; i++) {\n props = parent.model.getAtomProperties(i);\n if (typeof element !== 'undefined' && props.element !== element) continue;\n if (typeof h === 'undefined') {\n dist = Math.sqrt(Math.pow(x - props.x, 2) + Math.pow(y - props.y, 2));\n if (dist <= w) {\n result.push(i);\n }\n } else {\n inX = ((props.x >= x) && (props.x <= (x + w)));\n inY = ((props.y >= y) && (props.y <= (y + h)));\n if (inX && inY) {\n result.push(i);\n }\n }\n }\n return result;\n },\n\n /**\n * Returns an array of atom indices within triangular area,\n * optionally specifying an element ID of interest.\n *\n * @param {number} ax X coordinate of 1st triangle vertex.\n * @param {number} ay Y coordinate of 1st triangle vertex.\n * @param {number} bx X coordinate of 2nd triangle vertex.\n * @param {number} by Y coordinate of 2nd triangle vertex.\n * @param {number} cx X coordinate of 3rd triangle vertex.\n * @param {number} cy Y coordinate of 3rd triangle vertex.\n * @param {number} element Optional ID of the desired element type.\n * @return {Array} Array of atoms indices within a given area.\n */\n atomsWithinTriangle: function(ax, ay, bx, by, cx, cy, element) {\n var result = [],\n props, i, len;\n\n function isInTriangle(px, py) {\n // See: http://www.blackpawn.com/texts/pointinpoly/default.html\n var v0 = [cx - ax, cy - ay],\n v1 = [bx - ax, by - ay],\n v2 = [px - ax, py - ay],\n\n dot00 = (v0[0] * v0[0]) + (v0[1] * v0[1]),\n dot01 = (v0[0] * v1[0]) + (v0[1] * v1[1]),\n dot02 = (v0[0] * v2[0]) + (v0[1] * v2[1]),\n dot11 = (v1[0] * v1[0]) + (v1[1] * v1[1]),\n dot12 = (v1[0] * v2[0]) + (v1[1] * v2[1]),\n\n invDenom = 1 / (dot00 * dot11 - dot01 * dot01),\n\n u = (dot11 * dot02 - dot01 * dot12) * invDenom,\n v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n\n return ((u >= 0) && (v >= 0) && (u + v < 1));\n }\n\n for (i = 0, len = parent.model.getNumberOfAtoms(); i < len; i++) {\n props = parent.model.getAtomProperties(i);\n if (typeof element !== 'undefined' && props.element !== element) continue;\n if (isInTriangle(props.x, props.y)) {\n result.push(i);\n }\n }\n return result;\n },\n\n /**\n Accepts atom indices as arguments, or an array containing atom indices.\n Unmarks all atoms, then marks the requested atom indices.\n Repaints the screen to make the marks visible.\n */\n markAtoms: function markAtoms(indices) {\n var i,\n len;\n\n if (arguments.length === 0) return;\n\n // allow passing a list of arguments instead of an array of atom indices\n if (!parent.api.isArray(arguments[0])) {\n indices = arguments;\n }\n\n parent.api.unmarkAllAtoms();\n\n // mark the requested atoms\n for (i = 0, len = indices.length; i < len; i++) {\n parent.model.setAtomProperties(indices[i], {\n marked: 1\n });\n }\n parent.api.repaintIfReady();\n },\n\n unmarkAllAtoms: function unmarkAllAtoms() {\n for (var i = 0, len = parent.model.getNumberOfAtoms(); i < len; i++) {\n parent.model.setAtomProperties(i, {\n marked: 0\n });\n }\n parent.api.repaintIfReady();\n },\n\n traceAtom: function traceAtom(i) {\n if (i === null) return;\n\n parent.model.set({\n atomTraceId: i\n });\n parent.model.set({\n showAtomTrace: true\n });\n },\n\n untraceAtom: function untraceAtom() {\n parent.model.set({\n showAtomTrace: false\n });\n },\n\n /**\n Sets individual atom properties using human-readable hash.\n e.g. setAtomProperties(5, {x: 1, y: 0.5, charge: 1})\n */\n setAtomProperties: function setAtomProperties(i, props, checkLocation, moveMolecule) {\n setProperty(parent.model.setAtomProperties, i, props, checkLocation, moveMolecule);\n },\n\n /**\n * Returns atom transition object. It can be used to smoothly change\n * atom properties over specified time. It's similar to D3 transitions.\n *\n * Atom transition object provides following methods:\n * id(id) - sets ID of the atom (required!).\n * duration(d) - sets duration in ms (required!).\n * prop(name, val) - sets property name and its final value (required!).\n * delay(d) - sets delay in ms (default is 0).\n * ease(name) - sets easing function (default is \"cubic-in-out\").\n * Please see:\n * https://github.com/mbostock/d3/wiki/Transitions#wiki-d3_ease\n *\n * e.g.\n * atomTransition().id(0).duration(1000).ease(\"linear\").prop(\"x\", 10);\n *\n * This will change \"x\" property of the atom with ID=0\n * to value 10 over 1000ms using linear easing function.\n *\n * @return {AtomTransition} AtomTransition instance.\n */\n atomTransition: function atomTransition() {\n return parent.model.atomTransition();\n },\n\n /**\n Returns atom properties as a human-readable hash.\n e.g. getAtomProperties(5) --> {x: 1, y: 0.5, charge: 1, ... }\n */\n getAtomProperties: function getAtomProperties(i) {\n return parent.model.getAtomProperties(i);\n },\n\n /**\n Returns an array consisting of radial bonds indices for the atom\n e.g. getRadialBondsForAtom(5) --> [2]\n */\n getRadialBondsForAtom: function getRadialBondsForAtom(i) {\n return parent.model.getRadialBondsForAtom(i);\n },\n\n /**\n Returns an array consisting of the angular bonds indices for the atom\n e.g. getAngularBondsForAtom(5) --> [6, 8]\n */\n getAngularBondsForAtom: function getAngularBondsForAtom(i) {\n return parent.model.getAngularBondsForAtom(i);\n },\n\n /**\n Returns all atoms in the same molecule as atom i\n (not including i itself)\n */\n getMoleculeAtoms: function getMoleculeAtoms(i) {\n return parent.model.getMoleculeAtoms(i);\n },\n\n setElementProperties: function setElementProperties(i, props) {\n setProperty(parent.model.setElementProperties, i, props);\n },\n\n /**\n Sets custom pairwise LJ properties (epsilon or sigma), which will\n be used instead of the mean values of appropriate element properties.\n i, j - IDs of the elements which should have custom pairwise LJ properties.\n props - object containing sigma, epsilon or both.\n e.g. setPairwiseLJProperties(0, 1, {epsilon: -0.2})\n */\n setPairwiseLJProperties: function setPairwiseLJProperties(i, j, props) {\n parent.model.getPairwiseLJProperties().set(i, j, props);\n },\n\n /**\n Removes custom pairwise LJ properties, reverting it to the default calculation.\n */\n removePairwiseLJProperties: function removePairwiseLJProperties(i, j) {\n parent.model.getPairwiseLJProperties().remove(i, j);\n },\n\n getElementProperties: function getElementProperties(i) {\n return parent.model.getElementProperties(i);\n },\n\n getAminoAcid: function getAminoAcidByElement(i) {\n return parent.model.getAminoAcidByElement(i);\n },\n\n /**\n Adds an obstacle/shape/line using human-readable hash of properties.\n e.g. addObstacle({x: 1, y: 0.5, width: 1, height: 1})\n */\n addObstacle: createModelAdder(\"addObstacle\"),\n addShape: createModelAdder(\"addShape\"),\n addLine: createModelAdder(\"addLine\"),\n\n /**\n Sets individual obstacle properties using human-readable hash.\n e.g. setObstacleProperties(0, {x: 1, y: 0.5, externalAx: 0.00001})\n */\n setObstacleProperties: function setObstacleProperties(i, props) {\n setProperty(parent.model.setObstacleProperties, i, props);\n },\n\n /**\n Returns obstacle properties as a human-readable hash.\n e.g. getObstacleProperties(0) --> {x: 1, y: 0.5, externalAx: 0.00001, ... }\n */\n getObstacleProperties: function getObstacleProperties(i) {\n return parent.model.getObstacleProperties(i);\n },\n\n /**\n Removes obstacle 'i'.\n */\n removeObstacle: function removeObstacle(i, options) {\n try {\n parent.model.removeObstacle(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n\n parent.api.repaintIfReady();\n },\n\n setShapeProperties: function setShapeProperties(i, props) {\n setProperty(parent.model.setShapeProperties, i, props);\n },\n\n getShapeProperties: function getShapeProperties(i) {\n return parent.model.getShapeProperties(i);\n },\n\n setLineProperties: function setLineProperties(i, props) {\n setProperty(parent.model.setLineProperties, i, props);\n },\n\n getLineProperties: function getLineProperties(i) {\n return parent.model.getLineProperties(i);\n },\n\n addElectricField: function addElectricField(props, options) {\n try {\n parent.model.addElectricField(props);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n },\n\n removeElectricField: function removeElectricField(i, options) {\n try {\n parent.model.removeElectricField(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n },\n\n setElectricFieldProperties: function setElectricFieldProperties(i, props) {\n parent.model.setElectricFieldProperties(i, props);\n },\n\n getElectricFieldProperties: function getElectricFieldProperties(i) {\n return parent.model.getElectricFieldProperties(i);\n },\n\n getAtomsWithinShape: function getAtomsInsideShape(i) {\n var props = parent.model.getShapeProperties(i);\n return this.atomsWithinRect(props.x, props.y, props.width, props.height);\n },\n\n removeShape: function removeShape(i, options) {\n try {\n parent.model.removeShape(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n parent.api.repaintIfReady();\n },\n\n removeLine: function removeLine(i, options) {\n try {\n parent.model.removeLine(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n parent.api.repaintIfReady();\n },\n\n setRadialBondProperties: function setRadialBondProperties(i, props) {\n parent.model.setRadialBondProperties(i, props);\n parent.api.repaintIfReady();\n },\n\n getRadialBondProperties: function getRadialBondProperties(i) {\n return parent.model.getRadialBondProperties(i);\n },\n\n setAngularBondProperties: function setAngularBondProperties(i, props) {\n parent.model.setAngularBondProperties(i, props);\n parent.api.repaintIfReady();\n },\n\n getAngularBondProperties: function getAngularBondProperties(i) {\n return parent.model.getAngularBondProperties(i);\n },\n\n /**\n Opens DNA properties dialog, which allows to set DNA code.\n */\n openDNADialog: function openDNADialog() {\n if (dnaEditDialog == null) {\n dnaEditDialog = new DNAEditDialog(parent.model);\n }\n dnaEditDialog.bindModel(parent.model);\n dnaEditDialog.open();\n },\n\n /**\n * Jumps to the next DNA state.\n *\n * Note that jumping between translation states is not supported!\n * Please use animateToNextDNAState if you need to change state\n * from translation:x to translation:x+1.\n */\n jumpToNextDNAState: function jumpToNextDNAState() {\n parent.model.geneticEngine().jumpToNextState();\n },\n\n /**\n * Jumps to the next DNA state.\n *\n * Note that jumping between translation states is not supported!\n * When current state is translation:x, where x > 0, this functions\n * will cause jump to translation:0 state.\n */\n jumpToPrevDNAState: function jumpToPrevDNAState() {\n parent.model.geneticEngine().jumpToPrevState();\n },\n\n /**\n * Tests whether *current* DNA state is before state\n * passed as an argument.\n * @param {String} state DNA state name, e.g. \"translation:5\".\n * @return {boolean} true if current state is before 'state',\n * false otherwise.\n */\n DNAStateBefore: function DNAStateBefore(state) {\n return parent.model.geneticEngine().stateBefore(state);\n },\n\n /**\n * Tests whether *current* DNA state is after state\n * passed as an argument.\n * @param {String} state DNA state name, e.g. \"translation:5\".\n * @return {boolean} true if current state is after 'state',\n * false otherwise.\n */\n DNAStateAfter: function DNAStateAfter(state) {\n return parent.model.geneticEngine().stateAfter(state);\n },\n\n /**\n * Triggers animation to the next DNA state.\n *\n * Note that this is the only possible way to change state\n * from translation:x to translation:x+1. Jumping between\n * translation states is not supported!\n */\n animateToNextDNAState: function animateToNextDNAState() {\n parent.model.geneticEngine().transitionToNextState();\n },\n\n /**\n * Triggers animation to the given DNA state.\n * If current DNA state is after the desired state,\n * nothing happens.\n * e.g.\n * get('DNAState'); // transcription:0\n * animateToDNAState(\"transcription-end\") // triggers animation\n * However:\n * get('DNAState'); // translation-end\n * animateToDNAState(\"transcription-end\") // nothing happens\n *\n * @param {string} stateName name of the state.\n */\n animateToDNAState: function animateToDNAState(stateName) {\n parent.model.geneticEngine().transitionTo(stateName);\n },\n\n /**\n * Stops current DNA animation.\n */\n stopDNAAnimation: function stopDNAAnimation() {\n // Jumping to previous state will cancel current animation\n // and cleanup transitions queue.\n parent.model.geneticEngine().stopTransition();\n },\n\n /**\n * Triggers only one step of DNA transcription.\n * This method also accepts optional parameter - expected nucleotide.\n * When it's available, transcription step will be performed only\n * when passed nucleotide code matches nucleotide, which should\n * be actually joined to mRNA in this transcription step. When\n * expected nucleotide code is wrong, this method does nothing.\n *\n * e.g.\n * transcribeDNAStep(\"A\") will perform transcription step only\n * if \"A\" nucleotide should be added to mRNA in this step.\n *\n * @param {string} expectedNucleotide code of the expected nucleotide (\"U\", \"C\", \"A\" or \"G\").\n */\n transcribeDNAStep: function transcribeDNAStep(expectedNucleotide) {\n var ge = parent.model.geneticEngine();\n if (ge.stateBefore(\"dna\") || ge.stateAfter(\"transcription-end\")) {\n // Jump to beginning of DNA transcription if current state is before\n // or after transcrption process (so, state is different from:\n // \"dna\", \"transcription:0\", ..., \"transcription-end\").\n parent.model.set(\"DNAState\", \"dna\");\n ge.transitionTo(\"transcription:0\");\n ge.transcribeStep(expectedNucleotide);\n } else if (parent.model.get(\"DNAState\") !== \"transcription-end\") {\n // Proceed to the next step.\n ge.transcribeStep(expectedNucleotide);\n }\n },\n\n /**\n * Triggers only one step of DNA translation.\n */\n translateDNAStep: function translateDNAStep() {\n var ge = parent.model.geneticEngine();\n if (ge.stateBefore(\"translation:0\") || ge.stateAfter(\"translation-end\")) {\n // Animate directly to the translation:0, merge a few shorter\n // animations.\n parent.model.set(\"DNAState\", \"translation:0\");\n ge.transitionTo(\"translation:1\");\n } else if (parent.model.get(\"DNAState\") !== \"translation-end\") {\n // Proceed to the next step.\n ge.transitionToNextState();\n }\n },\n\n /**\n * Generates a random protein. It removes all existing atoms before.\n *\n * @param {[type]} expectedLength controls the maximum (and expected) number of amino acids of\n * the resulting protein. When expected length is too big\n * (due to limited area of the model), protein will be truncated\n * and warning shown.\n */\n generateRandomProtein: function(expectedLength) {\n var realLength = parent.model.geneticEngine().generateProtein(undefined, expectedLength);\n\n if (realLength !== expectedLength) {\n throw new Error(\"Generated protein was truncated due to limited area of the parent.model. Only\" +\n realLength + \" amino acids were generated.\");\n }\n },\n\n /**\n Sets solvent. You can use three predefined solvents: \"water\", \"oil\" or \"vacuum\".\n This is only a convenience method. The same effect can be achieved by manual setting\n of 'solventForceFactor', 'dielectricConstant' and 'backgroundColor' properties.\n */\n setSolvent: function setSolvent(type) {\n parent.model.setSolvent(type);\n },\n\n pe: function pe() {\n return parent.model.get('potentialEnergy');\n },\n\n ke: function ke() {\n return parent.model.get('kineticEnergy');\n },\n\n atomsKe: function atomsKe(atomsList) {\n var sum = 0,\n i;\n for (i = 0; i < atomsList.length; i++) {\n sum += parent.model.getAtomKineticEnergy(atomsList[i]);\n }\n return sum;\n },\n\n minimizeEnergy: function minimizeEnergy() {\n parent.model.minimizeEnergy();\n parent.api.repaintIfReady();\n },\n\n addTextBox: function(props) {\n parent.model.addTextBox(props);\n },\n\n removeTextBox: function(i) {\n parent.model.removeTextBox(i);\n },\n\n setTextBoxProperties: function(i, props) {\n parent.model.setTextBoxProperties(i, props);\n },\n\n getTextBoxProperties: function(i) {\n return parent.model.getTextBoxProperties(i);\n },\n\n getNumberOfTextBoxes: function() {\n return parent.model.getNumberOfTextBoxes();\n },\n\n getNumberOfLines: function() {\n return parent.model.getNumberOfLines();\n },\n\n getNumberOfShapes: function() {\n return parent.model.getNumberOfShapes();\n },\n\n addImage: function(props) {\n parent.model.addImage(props);\n },\n\n removeImage: function(i) {\n parent.model.removeImage(i);\n },\n\n getImageProperties: function(i) {\n return parent.model.getImageProperties(i);\n },\n\n setImageProperties: function(i, props) {\n setProperty(parent.model.setImageProperties, i, props);\n },\n\n repaintIfReady: function() {\n if (batchDepth === 0) {\n parent.api.repaint();\n }\n },\n\n batch: function(func) {\n ++batchDepth;\n\n parent.model.startBatch();\n func();\n parent.model.endBatch();\n\n --batchDepth;\n\n // call repaint manually\n parent.api.repaintIfReady();\n }\n\n };\n\n};\n","\nimport performance from \"common/performance\";\n\nvar TEST_TIME = 5000,\n WARMUP_TIME = 1000;\n\nexport default function Benchmarks(controller) {\n var startCounter;\n\n return [{\n name: \"atoms\",\n numeric: true,\n run: function(done) {\n done(controller.model.getNumberOfAtoms());\n }\n }, {\n name: \"temperature\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(controller.model.get(\"temperature\"));\n }\n }, {\n name: \"engine (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n // warmup\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n performance.collectData(true);\n startCounter = controller.model.stepCounter();\n\n setTimeout(function() {\n // actual fps calculation\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n performance.collectData(false);\n done(performance.getAvgTime(\"engine\"));\n\n }, TEST_TIME);\n }, 100);\n }, WARMUP_TIME);\n }\n }, {\n name: \"JS rendering (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"js-rendering\"));\n }\n }, {\n name: \"tick (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"tick\"));\n }\n }, {\n name: \"gap b/w frames (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"gap\"));\n }\n }, {\n name: \"fps\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done((controller.model.stepCounter() - startCounter) * 1000 / TEST_TIME);\n }\n }];\n};\n","import ModelController from \"common/controllers/model-controller\";\nimport Model from 'models/md2d/models/modeler';\nimport ModelContainer from 'models/md2d/views/view';\nimport ScriptingAPI from 'models/md2d/controllers/scripting-api';\nimport Benchmarks from 'models/md2d/benchmarks/benchmarks';\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n return new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI, Benchmarks);\n}\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"signal-generator\",\n immutable: true\n },\n frequency: {\n defaultValue: 1,\n unitType: \"frequency\",\n propertyChangeInvalidates: true\n },\n modelSampleRate: {\n defaultValue: 60,\n propertyChangeInvalidates: true\n },\n timeScale: {\n defaultValue: 1,\n unitType: \"time\",\n propertyChangeInvalidates: true\n },\n sampleBatchLength: {\n defaultValue: 1,\n propertyChangeInvalidates: false\n },\n useDuration: {\n defaultValue: 'codap',\n storeInTickHistory: false,\n validate: function(value) {\n if (value === true || value === false || value === 'codap') {\n return value;\n }\n throw new Error(\"Invalid 'useDuration' value: \" + value);\n },\n },\n requestedDuration: {\n defaultValue: null,\n storeInTickHistory: false\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport metadata from 'models/signal-generator/metadata';\n\nvar unitsDefinition = {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n },\n frequency: {\n name: \"Hertz\",\n pluralName: \"Hertz\",\n symbol: \"Hz\"\n },\n angle: {\n name: \"radian\",\n pluralName: \"radians\",\n symbol: \"rad\"\n }\n }\n };\n\nexport default function Model(initialProperties) {\n var customSetters = {\n // Ensure that phase + (time * angular frequency) remains unchanged when the frequency changes.\n // This makes for continuous signals.\n frequency: function(newFrequency) {\n if (lastFrequency !== undefined) {\n phase = constrain(phase + 2 * Math.PI * (lastFrequency - newFrequency) * model.properties.time);\n }\n lastFrequency = newFrequency;\n }\n },\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: customSetters,\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties\n }),\n dispatch = labModelerMixin.dispatchSupport,\n\n lastFrequency,\n phase = 0,\n times = [],\n stepCounter = 0,\n timesIndex = -1,\n model;\n\n function constrain(angle) {\n return angle - 2 * Math.PI * Math.floor(angle / (2 * Math.PI));\n }\n\n function angle(time) {\n return constrain(phase + 2 * Math.PI * model.properties.frequency * time);\n }\n\n function getIndexWithDefault(array, index, defaultValue) {\n return index < 0 ? defaultValue : array[index];\n }\n\n model = {\n\n tick: function() {\n var intervalLength = 1000 / model.properties.modelSampleRate;\n var lastTime = getIndexWithDefault(times, times.length - 1, 0);\n\n times.push(lastTime + 0.001 * intervalLength * model.properties.timeScale);\n\n stepCounter++;\n\n if (stepCounter % model.properties.sampleBatchLength === 0) {\n while (timesIndex < times.length - 1) {\n timesIndex++;\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n }\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n reset: function() {\n dispatch.reset();\n // TODO\n }\n\n };\n\n dispatch.addEventTypes(\"tick\");\n dispatch.addEventTypes('reset');\n\n labModelerMixin.mixInto(model);\n\n model.on('play.model', model.makeInvalidatingChange);\n model.on('stop.model', model.makeInvalidatingChange);\n\n model.defineOutput('isPlayable', {\n label: \"Playable\"\n }, function() {\n return model.isReady && model.isStopped();\n });\n\n model.defineOutput('hasPlayed', {\n label: \"has Played\"\n }, function() {\n return model.hasPlayed;\n });\n\n model.defineOutput('timePerTick', {\n label: \"Model time per tick\",\n unitType: 'time',\n format: '.2f'\n }, function() {\n return 1 / model.properties.modelSampleRate * model.properties.timeScale;\n });\n\n model.defineOutput('time', {\n label: \"Time\",\n unitType: 'time',\n format: '.2f'\n }, function() {\n return getIndexWithDefault(times, timesIndex, 0);\n });\n\n model.defineOutput('displayTime', {\n label: \"Time\",\n unitType: 'time',\n format: '.2f'\n }, function() {\n return getIndexWithDefault(times, timesIndex, 0);\n });\n\n model.defineOutput('signalValue', {\n label: \"Signal Value\",\n format: '.2f'\n }, function() {\n var time = getIndexWithDefault(times, timesIndex, 0);\n return Math.cos(angle(time));\n });\n\n model.defineOutput('angle', {\n label: \"Angle\",\n unitType: 'angle',\n format: '.2f'\n }, function() {\n var time = getIndexWithDefault(times, timesIndex, 0);\n return angle(time);\n });\n\n return model;\n};\n","\n/**\n For use with models that do not need an associated view, but which (at least for now) are required\n by the common ModelController to have a ModelContainer which has an $el property and which\n responds to certain methods.\n*/\n\nexport default function() {\n return {\n $el: $(\"
\"),\n getHeightForWidth: function() {\n return 0;\n },\n resize: function() {},\n repaint: function() {},\n bindModel: function() {},\n setup: function() {},\n update: function() {}\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from 'models/signal-generator/modeler';\nimport ModelContainer from 'common/views/null-model-view';\n// Dependencies.\nvar ScriptingAPI = function() {};\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n return new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"iframe-model\",\n immutable: true\n },\n url: {\n immutable: true\n }\n },\n viewOptions: {\n aspectRatio: {\n defaultValue: 1.55\n },\n showClock: {\n defaultValue: false,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","\n/*\n Options for starting on property support:\n - add a hard-coded outputProperty that reads from a cached value, and start a timer to trigger\n the method that notifies all outputProperty listereners\n - add a hard-coded parameter, that we update based on a property listener\n\n Possible next steps:\n - make paramaters, outputProperties, or mainProperties be more dynamic so they are 'defined'\n in the iframe-model json definition.\n - create a way for the iframe'd html to send the property definition, which the model then uses\n to add the properties to itself. This will keep the properties in the same place as the model\n and possible enable the model to more easily be used in a different container other than Lab.\n\n Possible problems:\n - properites will need to be 'cached' in the interactive window, so that getters will work. the\n property system already has support for caching. But it means that all properties are going to\n have to be sent 'over the wire' whenever they are changed inorder for getters to work. If\n the model json or interactive defines which properties are needed then this might not be a problem,\n but if the properties are provided by the iframe'd html, it won't know what is needed so it will\n send all properties.\n*/\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport metadata from 'models/iframe/metadata';\n\n\nfunction IFrameModel(initialProperties) {\n var labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n labModelerMixin.mixInto(this);\n // Use custom .set() instead of one provided by property support module.\n // Custom version is also a bit looser, it lets you define properties dynamically.\n // Setter of newly added property will post message to iframe model.\n this.set = customSet;\n\n this._phone = null;\n this._stopped = true;\n this._hasPlayed = false;\n this._initialProperties = initialProperties;\n this._propertySupport = labModelerMixin.propertySupport;\n this._dispatch = labModelerMixin.dispatchSupport;\n this._stepCounter = 0;\n // Special flag that makes sure we do not end up in an infinite loop\n // of \"set\" -> \"properties\" -> \"set\" -> ... calls.\n this._propertyUpdateComingFromIframe = false;\n\n // Custom properties defined by the model in the iframe; values are passed using 'outputs'\n // or 'tick' messages.\n this._iframeOutputs = {};\n\n // The default model controller asumes 'tick' is a defined event\n // the playback controller assumes 'play' and 'stop' are defined even if the viewOptions\n // disable these buttons\n // the outer iframe in the interactives browser expects a 'reset', 'stepForward', 'stepBack' event type\n this._dispatch.addEventTypes('tick', 'tickStart', 'tickEnd', 'play', 'stop', 'reset', 'stepForward', 'stepBack', 'log');\n\n this.defineOutput('hasPlayed', {\n label: \"has Played\"\n }, function() {\n return this._hasPlayed;\n }.bind(this));\n}\n\nfunction customSet(key, value) {\n var context = this;\n // Multiple keys provided.\n if (typeof key !== 'string') {\n var hash = key;\n Object.keys(hash).forEach(function(key) {\n context.set(key, hash[key]);\n });\n return;\n }\n // Single key provided.\n if (!this.hasProperty(key)) {\n this._propertySupport.defineProperty(key, {\n type: \"mainProperty\",\n writable: true,\n set: function(value) {\n if (!context._propertyUpdateComingFromIframe) {\n // Make sure that it's not a result of 'properties' message sent by iframe model.\n // Otherwise, we could end up in an infinite loop of property updates.\n context._phone.post(\"set\", {\n name: key,\n value: value\n });\n }\n },\n includeInHistoryState: false,\n beforeSetCallback: this._propertySupport.invalidatingChangePreHook,\n afterSetCallback: this._propertySupport.invalidatingChangePostHook\n });\n }\n\n // This will call setter defined above and post message to iframe.\n this.properties[key] = value;\n}\n\n// If property is not defined in metadata, it means it's a custom property related\n// to specific iframe model. Use custom set method to define it and send message to iframe.\n// labModelerMixin will automatically define and set only properties that are present in metadata.\nIFrameModel.prototype._defineModelSpecificProperties = function() {\n var initialProperties = this._initialProperties;\n var context = this;\n Object.keys(initialProperties).forEach(function(name) {\n if (!metadata.mainProperties[name] && !metadata.viewOptions[name]) {\n context.set(name, initialProperties[name]);\n }\n });\n};\n\n/**************** public methods ****************/\n\nIFrameModel.prototype.start = function() {\n this._phone.post({\n type: 'play'\n });\n this._hasPlayed = true;\n return this;\n};\n\nIFrameModel.prototype.stop = function() {\n // stop the iframe'd model\n // TODO #1 we might want to set stopped to true here.\n // in the playback-support for other models isStopped checks for 'stopRequest'\n // which is set as soon as stop is called.\n // TODO #2 we are not notifying about the stop event until we hear from\n // the model that it is stopped. We should check if that is best approach.\n // It is possible that some data events will be sent out even after stop\n // is called so it might be best to leave this as is. Because of javascript single\n // threading it seems unlikely this would be a problem in a regular model.\n this._phone.post({\n type: 'stop'\n });\n return this;\n};\n\nIFrameModel.prototype.restart = function() {\n this.stop();\n this.start();\n return this;\n};\n\nIFrameModel.prototype.isStopped = function() {\n return this._stopped;\n};\n\nIFrameModel.prototype.serialize = function() {\n // TODO: obviously it's not a real serialization.\n return this._initialProperties;\n};\n\nObject.defineProperty(IFrameModel.prototype, \"iframePhone\", {\n set: function(val) {\n this._phone = val;\n this._addListeners();\n this._defineModelSpecificProperties();\n },\n get: function() {\n return this._phone;\n }\n});\n\nIFrameModel.prototype.stepCounter = function() {\n return this._stepCounter;\n};\n\nIFrameModel.prototype.iframeOutput = function(name) {\n return this._iframeOutputs[name];\n};\n\n/**************** private methods ****************/\n\nIFrameModel.prototype._updateOutputs = function(outputs) {\n var context = this;\n this.makeInvalidatingChange(function() {\n Object.keys(outputs).forEach(function(key) {\n context._iframeOutputs[key] = outputs[key];\n });\n });\n};\n\nIFrameModel.prototype._updatePropertiesFromIframe = function(propertiesHash) {\n this._propertyUpdateComingFromIframe = true;\n this.set(propertiesHash);\n this._propertyUpdateComingFromIframe = false;\n};\n\nIFrameModel.prototype._addListeners = function() {\n var context = this;\n this._phone.addListener('play.iframe-model', function() {\n context._stopped = false;\n // notify that we are playing\n context._dispatch.play();\n });\n this._phone.addListener('stop.iframe-model', function() {\n context._stopped = true;\n // notify that we are stopped\n context._dispatch.stop();\n });\n\n this._phone.addListener('properties', function(content) {\n context._updatePropertiesFromIframe(content);\n });\n\n this._phone.addListener('outputs', function(content) {\n context._updateOutputs(content);\n });\n\n this._phone.addListener('tick', function(content) {\n context._stepCounter++;\n // Support outputs and/or properties update within 'tick' message.\n if (content && content.outputs) {\n context._updateOutputs(content.outputs);\n }\n if (content && content.properties) {\n context._updatePropertiesFromIframe(content.properties);\n }\n context._dispatch.tick();\n });\n\n // Support logging provided by inner frame. Dispatch 'log' event,\n // as LogController listens to this event type.\n this._phone.addListener('log', function(content) {\n context._dispatch.log(content.action, content.data);\n });\n};\n\nexport default IFrameModel;\n"," import iframePhone from 'iframe-phone';\n\nexport default function IFrameContainer(model) {\n var _model = model,\n $el = $(\"
\");\n\n function addIFrame(model) {\n $el.find('#iframe-model').remove();\n var $iframe = $(\"\");\n $el.append($iframe);\n\n var phone = new iframePhone.ParentEndpoint($el.find('#iframe-model')[0]);\n // Simply assume that when iframe is removed from DOM (e.g. due to model reload or\n // interactive reload), we should also disconnect iframe phone.\n // If we leave it connected, handler will be still trying to process all incoming messages\n // and it would fail, as its iframe wouldn't be attached to DOM anymore (so its\n // .contentWindow will be equal to null).\n // Note that 'destroyed' is a custom event specified in jquery-plugins.js!\n $iframe.on('destroyed', function() {\n phone.disconnect();\n });\n\n model.iframePhone = phone;\n }\n\n addIFrame(model);\n\n return {\n $el: $el,\n getHeightForWidth: function(width) {\n return width / _model.get('aspectRatio');\n },\n resize: function() {},\n\n // This method is called in a few different cases:\n // - when a interactive is loaded and the same modelController is reused\n // - when scriptAPI.reset is called\n // Note: it is _not_ called the first time the modelController is created\n // Whether the element is actually in the page's DOM varies depending on how\n // this is called. However, the $el object will be reused in all cases so\n // manipulating this seems to work.\n // currently the safest thing is to remove and add a new iframe each time\n // this causes the iframe to reload even if the url is the same.\n // This can make the reset be slow, so in the reset case it would be better to optimize\n // this to send some reset event to the iframe instead.\n bindModel: function(newModel) {\n addIFrame(newModel);\n _model = newModel;\n },\n\n // this is called after the element has been added to the DOM\n // the element is not re-added to the DOM during a scriptAPI.reset()\n setup: function() {},\n update: function() {},\n repaint: function() {}\n };\n};\n"," /**\n Define the model-specific Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function IframeScriptingAPI(parent) {\n\n // Overwrite original .bindModel method of parent Scripting API.\n // Iframe model can send a \"registerScriptingAPIFunc\" message to register new Scripting API\n // function that in fact would be a shortcut for .post() call.\n var orgBindModel = parent.bindModel;\n parent.bindModel = function() {\n orgBindModel.apply(parent, arguments);\n\n parent.model.iframePhone.addListener(\"registerScriptingAPIFunc\", function(name) {\n if (parent.api[name] != null) return;\n parent.api[name] = function(content) {\n parent.model.iframePhone.post(name, content);\n };\n });\n };\n\n return {\n /**\n * Posts a custom message to iframe model.\n * @param {string} type message type\n * @param {any} content message content\n */\n post: function resetModel(type, content) {\n parent.model.iframePhone.post(type, content);\n },\n\n /**\n * Returns value of an output defined by iframe model.\n * Note that iframe model decides how often output is updated.\n * This function doesn't ask iframe about current value, but just immediately returns\n * the last value which is stored.\n * @param {string} name output name\n */\n iframeOutput: function iframeOutput(name) {\n return parent.model.iframeOutput(name);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from 'models/iframe/modeler';\nimport ModelContainer from 'models/iframe/iframe-container';\nimport ScriptingAPI from 'models/iframe/scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n return new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"sensor\",\n immutable: true\n },\n sensorType: {\n defaultValue: null\n },\n samplesPerSecond: {\n readOnly: true\n },\n collectionTime: {\n defaultValue: null\n },\n tareValue: {\n defaultValue: 0\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","import sensorApplet from 'sensor-applet';\nconst sensorDefinitions = sensorApplet.sensorDefinitions;\n\nexport default function getTranslatedSensorDefinitions(i18n) {\n sensorDefinitions.goMotion.measurementName = i18n.t(\"sensor.measurements.distance\");\n sensorDefinitions.goMotion.sensorName = i18n.t(\"sensor.names.goMotion\");\n\n sensorDefinitions.goTemp.measurementName = i18n.t(\"sensor.measurements.temperature\");\n sensorDefinitions.goTemp.sensorName = i18n.t(\"sensor.names.goTemp\");\n\n sensorDefinitions.goLinkTemperature.measurementName = i18n.t(\"sensor.measurements.temperature\");\n sensorDefinitions.goLinkTemperature.sensorName = i18n.t(\"sensor.names.goLinkTemperature\");\n\n sensorDefinitions.goLinkLight.measurementName = i18n.t(\"sensor.measurements.light_intensity\");\n sensorDefinitions.goLinkLight.sensorName = i18n.t(\"sensor.names.goLinkLight\");\n\n sensorDefinitions.goLinkForce.measurementName = i18n.t(\"sensor.measurements.force\");\n sensorDefinitions.goLinkForce.sensorName = i18n.t(\"sensor.names.goLinkForce\");\n\n sensorDefinitions.goLinkPH.measurementName = i18n.t(\"sensor.measurements.acidity\");\n sensorDefinitions.goLinkPH.sensorName = i18n.t(\"sensor.names.goLinkPH\");\n\n sensorDefinitions.goLinkCO2.measurementName = i18n.t(\"sensor.measurements.CO2_concentration\");\n sensorDefinitions.goLinkCO2.sensorName = i18n.t(\"sensor.names.goLinkCO2\");\n\n sensorDefinitions.goLinkO2.measurementName = i18n.t(\"sensor.measurements.O2_concentration\");\n sensorDefinitions.goLinkO2.sensorName = i18n.t(\"sensor.names.goLinkO2\");\n\n sensorDefinitions.labQuestMotion.measurementName = i18n.t(\"sensor.measurements.distance\");\n sensorDefinitions.labQuestMotion.sensorName = i18n.t(\"sensor.names.labQuestMotion\");\n\n sensorDefinitions.labQuestTemperature.measurementName = i18n.t(\"sensor.measurements.temperature\");\n sensorDefinitions.labQuestTemperature.sensorName = i18n.t(\"sensor.names.labQuestTemperature\");\n\n sensorDefinitions.labQuestLight.measurementName = i18n.t(\"sensor.measurements.light_intensity\");\n sensorDefinitions.labQuestLight.sensorName = i18n.t(\"sensor.names.labQuestLight\");\n\n sensorDefinitions.labQuestForce.measurementName = i18n.t(\"sensor.measurements.force\");\n sensorDefinitions.labQuestForce.sensorName = i18n.t(\"sensor.names.labQuestForce\");\n\n sensorDefinitions.labQuestPH.measurementName = i18n.t(\"sensor.measurements.acidity\");\n sensorDefinitions.labQuestPH.sensorName = i18n.t(\"sensor.names.labQuestPH\");\n\n sensorDefinitions.labQuestCO2.measurementName = i18n.t(\"sensor.measurements.CO2_concentration\");\n sensorDefinitions.labQuestCO2.sensorName = i18n.t(\"sensor.names.labQuestCO2\");\n\n sensorDefinitions.labQuestO2.measurementName = i18n.t(\"sensor.measurements.O2_concentration\");\n sensorDefinitions.labQuestO2.sensorName = i18n.t(\"sensor.names.labQuestO2\");\n\n return sensorDefinitions;\n}\n","import BasicDialog from 'common/controllers/basic-dialog';\n\nfunction Notifier(i18n) {\n this._i18n = i18n;\n}\n\nNotifier.prototype.alert = function(message, buttons, options) {\n var opts = $.extend({\n width: \"60%\",\n buttons: buttons,\n closeOnEscape: false\n }, options);\n var dialog = new BasicDialog(opts, this._i18n);\n\n dialog.setContent(\"
\" + message + \"
\");\n dialog.open();\n};\n\nNotifier.prototype.status = function(message, options) {\n var opts = $.extend({\n width: \"60%\",\n closeOnEscape: false,\n modal: true\n }, options);\n var dialog = new BasicDialog(opts, this._i18n);\n\n dialog.setContent(\"
\" + message + \"
\");\n dialog.open();\n return dialog;\n};\n\nexport default Notifier;\n","import labConfig from 'lab.config';\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport PropertyDescription from 'common/property-description';\nimport metadata from './metadata';\nimport sensorApplet from 'sensor-applet';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions';\nimport Notifier from 'models/sensor-common/notifier';\nimport ExportController from 'common/controllers/export-controller';\n\nvar unitsDefinition = sensorApplet.unitsDefinition;\n\nexport default function Model(initialProperties, opt) {\n var i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n labModelerMixin,\n propertySupport,\n dispatch,\n isStopped = true,\n needsReload = false,\n initialSensorType,\n sensorType,\n applet,\n isSensorReady = false,\n isSensorInitializing = false,\n sensorPollsPerSecond = 1,\n sensorPollingIntervalID,\n samplesPerSecond,\n time,\n rawSensorValue,\n stepCounter,\n didCollectData,\n isTaring,\n isSensorTareable,\n initialTareValue,\n model;\n\n var defaultSensorReadingDescriptionHash = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 1\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function updatePropertyRange(property, min, max) {\n var descriptionHash;\n var description;\n\n descriptionHash = model.getPropertyDescription(property).getHash();\n descriptionHash.min = min;\n descriptionHash.max = max;\n\n description = new PropertyDescription(unitsDefinition, descriptionHash);\n propertySupport.setPropertyDescription(property, description);\n }\n\n // Updates min, max of displayTime to be [0..collectionTime]\n function updateDisplayTimeRange() {\n if (model.properties.collectionTime == null) {\n return;\n }\n updatePropertyRange('displayTime', 0, model.properties.collectionTime);\n }\n\n function removeApplet() {\n if (applet) {\n applet.removeListeners('data');\n applet.removeListeners('deviceUnplugged');\n applet.removeListeners('sensorUnplugged');\n\n applet.remove();\n }\n\n model.makeInvalidatingChange(function() {\n isSensorReady = false;\n isSensorInitializing = false;\n });\n }\n\n function appendApplet() {\n model.makeInvalidatingChange(function() {\n isSensorInitializing = true;\n });\n\n // Wrapped in a setTimeout to allow all property observers to finish their work before\n // actually firing up the applet, which freezes the UI and possibly blocks until the user\n // clicks through security dialogs to allow the applet to run.\n // TODO: A setImmediate shim (using window.postMessage) would be useful here.\n setTimeout(function() {\n applet.on('data', appletDataCallback);\n applet.on('deviceUnplugged', function() {\n handleUnplugged('device');\n });\n applet.on('sensorUnplugged', function() {\n handleUnplugged('sensor');\n });\n\n applet.append($('body'), function(error) {\n\n if (error) {\n if (error instanceof sensorApplet.JavaLoadError) {\n handleLoadingFailure(i18n.t(\"sensor.messages.java_applet_error\"));\n } else if (error instanceof sensorApplet.AppletInitializationError) {\n handleLoadingFailure(i18n.t(\"sensor.messages.java_applet_not_loading\"));\n } else if (error instanceof sensorApplet.SensorConnectionError) {\n handleSensorConnectionError();\n } else {\n handleLoadingFailure(i18n.t(\"sensor.messages.unexpected_error\"));\n }\n model.makeInvalidatingChange(function() {\n isSensorInitializing = false;\n });\n return;\n }\n\n model.makeInvalidatingChange(function() {\n isSensorReady = true;\n isSensorInitializing = false;\n });\n });\n }, 10);\n }\n\n function handleSensorConnectionError() {\n removeApplet();\n var buttons = {};\n buttons[i18n.t(\"sensor.messages.try_again\")] = function() {\n $(this).dialog(\"close\");\n // This is a workaround: currently, the applet itself does not appear to respond to its\n // initialization methods if the sensor was not connected when the applet started up.\n appendApplet();\n };\n buttons[i18n.t(\"sensor.messages.cancel\")] = function() {\n $(this).remove();\n model.reload();\n };\n notifier.alert(i18n.t(\"sensor.messages.sensor_not_attached\", {\n sensor_name: model.properties.sensorName\n }), buttons);\n }\n\n function handleLoadingFailure(message) {\n removeApplet();\n notifier.alert(message, {\n OK: function() {\n $(this).remove();\n model.reload();\n }\n });\n }\n\n function handleUnplugged(what) {\n removeApplet();\n model.stop();\n ExportController.logAction(\"Unplugged\" + model.properties[what + 'Name']);\n var buttons = {};\n buttons[i18n.t(\"sensor.messages.try_again\")] = function() {\n $(this).dialog(\"close\");\n appendApplet();\n };\n buttons[i18n.t(\"sensor.messages.cancel\")] = function() {\n $(this).dialog(\"close\");\n };\n notifier.alert(i18n.t(\"sensor.messages.sensor_or_device_unplugged\", {\n sensor_or_device_name: model.properties[what + 'Name']\n }), buttons);\n }\n\n function startPollingSensor() {\n if (sensorPollingIntervalID) {\n clearInterval(sensorPollingIntervalID);\n }\n var handleSensorValues = function(error, values) {\n if (error) {\n if (error instanceof sensorApplet.AlreadyReadingError) {\n // Don't worry about it -- we just overlapped another call to readSensor\n } else if (error instanceof sensorApplet.SensorConnectionError) {\n clearInterval(sensorPollingIntervalID);\n handleSensorConnectionError();\n } else {\n clearInterval(sensorPollingIntervalID);\n throw error;\n }\n } else {\n model.makeInvalidatingChange(function() {\n rawSensorValue = values[0];\n if (isTaring) {\n model.properties.tareValue = rawSensorValue;\n isTaring = false;\n }\n });\n }\n };\n sensorPollingIntervalID = setInterval(function() {\n applet.readSensor(handleSensorValues);\n }, 1000 / sensorPollsPerSecond);\n }\n\n function stopPollingSensor() {\n if (sensorPollingIntervalID) {\n clearInterval(sensorPollingIntervalID);\n sensorPollingIntervalID = null;\n }\n }\n\n function initializeStateVariables() {\n stepCounter = 0;\n time = 0;\n rawSensorValue = undefined;\n didCollectData = false;\n isSensorTareable = false;\n isTaring = false;\n }\n\n function setSensorType(_sensorType) {\n var AppletClass;\n var sensorDefinition;\n var description;\n var measurementType;\n\n if (sensorType === _sensorType) {\n return;\n }\n\n if (sensorType) {\n // drop the tare value if we're changing from one sensor type to another!\n model.properties.tareValue = 0;\n }\n\n sensorType = _sensorType;\n rawSensorValue = undefined;\n\n if (applet) {\n removeApplet();\n }\n\n if (sensorType) {\n sensorDefinition = sensorDefinitions[sensorType];\n samplesPerSecond = sensorDefinition.samplesPerSecond;\n measurementType = sensorDefinition.measurementType;\n AppletClass = sensorApplet[sensorDefinition.appletClass];\n isSensorTareable = sensorDefinition.tareable;\n\n applet = window.Lab.sensor[sensorType] = new AppletClass({\n listenerPath: 'Lab.sensor.' + sensorType,\n sensorDefinitions: [sensorDefinition],\n appletId: sensorType + '-sensor',\n codebase: labConfig.rootUrl + \"/jars/lab-sensor-applet-interface-dist\"\n });\n\n appendApplet();\n\n // Update the description of the main 'sensorReading' output\n description = new PropertyDescription(unitsDefinition, {\n label: sensorDefinition.measurementName,\n unitType: measurementType,\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n });\n\n propertySupport.setPropertyDescription('sensorReading', description);\n\n // Override collectionTime only if it wasn't set on the model definition\n if (model.properties.collectionTime == null) {\n model.properties.collectionTime = sensorDefinition.maxSeconds;\n }\n } else if (model.properties.hasOwnProperty('sensorReading')) {\n // no sensor type\n description = new PropertyDescription(unitsDefinition, defaultSensorReadingDescriptionHash);\n propertySupport.setPropertyDescription('sensorReading', description);\n }\n }\n\n function appletDataCallback(d) {\n stepCounter++;\n\n time += (1 / samplesPerSecond);\n\n // Whaaa? Accessing 'window' seems to prevent a strange bug in which Safari 6.0 stops updating\n // time after 3.7s. Hard to debug because accessing console, window, or Web Inspector makes\n // the problem go away!\n window.__bizarreSafariFix = 1;\n\n rawSensorValue = d[0];\n // Once we collect data for a given sensor, don't allow changingn the sensor typea\n if (!didCollectData) {\n model.freeze('sensorType');\n }\n\n didCollectData = true;\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n start: function() {\n if (!model.properties.isPlayable) {\n return;\n }\n\n applet.start(function(error, isStarted) {\n if (error) {\n if (error instanceof sensorApplet.SensorConnectionError) {\n handleSensorConnectionError();\n }\n } else if (isStarted) {\n model.makeInvalidatingChange(function() {\n isStopped = false;\n });\n dispatch.play();\n }\n });\n },\n\n stop: function() {\n\n if (applet) {\n applet.stop();\n }\n model.makeInvalidatingChange(function() {\n isStopped = true;\n });\n dispatch.stop();\n },\n\n tare: function() {\n if (!isStopped) {\n throw new Error(\"Sensor model: tare() called on a non-stopped model.\");\n }\n if (sensorPollingIntervalID != null && rawSensorValue != null) {\n model.properties.tareValue = rawSensorValue;\n } else {\n model.makeInvalidatingChange(function() {\n isTaring = true;\n });\n }\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n model.stop();\n removeApplet();\n\n initializeStateVariables();\n model.properties.tareValue = initialTareValue;\n model.unfreeze('sensorType');\n model.properties.sensorType = initialSensorType;\n\n dispatch.reset();\n },\n\n reload: function() {\n model.stop();\n model.makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n initializeStateVariables();\n\n // Need to define a globally-accessible 'listenerPath' for the sensor to evaluate\n if (window.Lab === undefined) {\n window.Lab = {};\n }\n window.Lab.sensor = {};\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: {\n sensorType: setSensorType\n },\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n labModelerMixin.mixInto(model);\n propertySupport = labModelerMixin.propertySupport;\n dispatch = labModelerMixin.dispatchSupport;\n dispatch.addEventTypes(\"tick\", \"play\", \"stop\", \"tickStart\", \"tickEnd\");\n\n // Remember thse values so that the model can be reset properly\n initialSensorType = model.properties.sensorType;\n initialTareValue = model.properties.tareValue;\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('sensorReading', defaultSensorReadingDescriptionHash, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n // TODO. Need a better way for the model to be able to have a property which it can set the\n // value of at arbitrary times, but which is read-only to client code. Outputs aren't quite\n // the right solution because the invalidation stuff is really about time and physics-based\n // invalidation.\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorDefinitions[sensorType].sensorName;\n });\n\n model.defineOutput('deviceName', {\n label: \"Sensor Interface Device Name\"\n }, function() {\n return sensorDefinitions[sensorType].deviceName;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isSensorReady && !didCollectData;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return didCollectData;\n });\n\n model.defineOutput('shouldPollSensor', {\n label: \"Polling Sensor?\"\n }, function() {\n return model.properties.isPlayable && isStopped;\n });\n\n model.defineOutput('isSensorInitializing', {\n label: \"Loading Sensor?\"\n }, function() {\n return isSensorInitializing;\n });\n\n model.defineOutput('isTaring', {\n label: \"Waiting for a tare value?\"\n }, function() {\n return isTaring;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return isStopped && !didCollectData && isSensorTareable && !isTaring;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n // Clean up state before we go -- failing to remove the applet from the page before switching\n // between 2 sensor types that use the same interface causes an applet exception.\n model.on('willReset.model', removeApplet);\n\n model.addObserver('shouldPollSensor', function() {\n if (model.properties.shouldPollSensor) {\n startPollingSensor();\n } else {\n stopPollingSensor();\n }\n });\n\n model.addObserver('collectionTime', updateDisplayTimeRange);\n updateDisplayTimeRange();\n\n // Kick things off by doing this explicitly:\n setSensorType(model.properties.sensorType);\n\n return model;\n};\n","import SelectBoxView from 'common/views/select-box-view';\nimport NumericOutputView from 'common/views/numeric-output-view';\nimport sensorApplet from 'sensor-applet';\nimport viewState from 'common/views/view-state';\n\nconst sensorDefinitions = sensorApplet.sensorDefinitions;\n\nexport default function(model, modelUrl, i18n) {\n\n var sensorTypeView = new SelectBoxView({\n id: 'sensor-type-view',\n options: [{\n value: null,\n text: i18n.t(\"sensor.select_sensor_type\"),\n selected: model.properties.sensorType == null,\n disabled: true\n }].concat(Object.keys(sensorDefinitions).map(function(key) {\n return {\n value: key,\n text: sensorDefinitions[key].sensorName,\n selected: key === model.properties.sensorType,\n disabled: false\n };\n })),\n onChange: function(option) {\n model.properties.sensorType = option.value;\n }\n });\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView;\n var view;\n\n function setIsTaringState() {\n if (model.properties.isTaring) {\n view.$zeroButton.find('button').html(i18n.t(\"sensor.zeroing\"));\n } else {\n view.$zeroButton.find('button').html(i18n.t(\"sensor.zero\"));\n }\n }\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setSensorTypeDisabledState() {\n var description = model.getPropertyDescription('sensorType');\n if (description.getFrozen()) {\n viewState.disableView(view.$selectBox);\n } else {\n viewState.enableView(view.$selectBox);\n }\n }\n\n function setupModelObservers() {\n model.addObserver('isTaring', setIsTaringState);\n setIsTaringState();\n\n model.addObserver('canTare', setCanTareState);\n setCanTareState();\n\n model.addPropertyDescriptionObserver('sensorType', setSensorTypeDisabledState);\n setSensorTypeDisabledState();\n }\n\n return view = {\n $el: $(\"
\"),\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"2.6em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n\n this.$el.empty();\n\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n\n var $selectBox = sensorTypeView.render(this.$el),\n $zeroButton = $(\"
\"),\n $sensorReading = sensorReadingView.render();\n\n $selectBox.addClass('interactive-pulldown component component-spacing');\n $zeroButton.addClass('interactive-button component component-spacing');\n $sensorReading.addClass('numeric-output component horizontal component-spacing');\n\n this.$el.css('zIndex', 4);\n this.$el.append($selectBox);\n this.$el.append($sensorReading);\n this.$el.append($zeroButton);\n\n this.$zeroButton = $zeroButton;\n this.$selectBox = $selectBox;\n\n sensorReadingView.resize();\n setupModelObservers();\n\n $zeroButton.on('click', 'button', function() {\n model.tare();\n });\n },\n\n showInitializationProgress: function() {\n var $progressbar;\n\n if (!this.$progressbarContainer) {\n $progressbar = $('
')\n .attr('id', 'sensor-progressbar');\n\n this.$progressbarContainer = $('
')\n .attr('id', 'sensor-progressbar-container')\n .css('bottom', $('body').height() / 2 + 75 + $('.lab-responsive-content').offset().top)\n .append('
' + i18n.t('sensor.loading_sensor') + '
')\n .append($progressbar)\n .appendTo('.lab-responsive-content');\n\n $progressbar.progressbar({\n value: false\n });\n }\n\n this.$progressbarContainer.show();\n },\n\n hideInitializationProgress: function() {\n this.$progressbarContainer.hide();\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.sensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.sensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.sensorReading));\n sensorReadingView.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function SensorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from './modeler';\nimport ModelContainer from './view';\nimport ScriptingAPI from './scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('isSensorInitializing', function() {\n var view = controller.modelContainer;\n\n if (model.properties.isSensorInitializing) {\n view.showInitializationProgress();\n } else {\n view.hideInitializationProgress();\n }\n });\n\n model.addObserver('sensorReading', function() {\n // if the model is running, the tick handler will take care of it\n if (model.isStopped()) {\n controller.updateView();\n }\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.sensor-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.sensor-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n });\n\n return controller;\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"dual-sensor\",\n immutable: true\n },\n sensorType: {\n defaultValue: null\n },\n sensorType2: {\n defaultValue: null\n },\n samplesPerSecond: {\n readOnly: true\n },\n collectionTime: {\n defaultValue: null\n },\n tareValue: {\n defaultValue: 0\n },\n tareValue2: {\n defaultValue: 0\n },\n clientId: {\n defaultValue: null\n },\n useRandomClientId: {\n defaultValue: false\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","import PropertySupport from 'common/property-support';\nimport PropertyDescription from 'common/property-description';\nimport RunningAverageFilter from 'common/filters/running-average-filter';\nimport validator from 'common/validator';\nimport metadata from './metadata';\nimport sensorApplet from 'sensor-applet';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions';\nimport labConfig from 'lab.config';\nimport Notifier from 'models/sensor-common/notifier';\nimport ExportController from 'common/controllers/export-controller';\n\nvar unitsDefinition = sensorApplet.unitsDefinition;\n\nexport default function Model(initialProperties, opt) {\n var propertySupport = new PropertySupport({\n types: ['mainProperty', 'viewOption', 'parameter', 'output']\n }),\n\n i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n viewOptions,\n mainProperties,\n isStopped = true,\n needsReload = false,\n dispatch = d3.dispatch('play', 'stop', 'tick', 'tickStart', 'willReset', 'reset', 'stepForward',\n 'stepBack', 'seek', 'invalidation'),\n initialSensorType,\n sensorType,\n sensorType2,\n applet,\n isSensorReady = false,\n isSensorInitializing = false,\n sensorPollsPerSecond = 1,\n sensorPollingIntervalID,\n samplesPerSecond = 10,\n time,\n rawSensorValue,\n rawSensorValue2,\n stepCounter,\n didCollectData,\n isTaring,\n isTaring2,\n isSensorTareable,\n isSensorTareable2,\n initialTareValue,\n invalidatingChangeNestingLevel = 0,\n filteredOutputs = [],\n customSetters,\n model;\n\n var defaultSensorReadingDescriptionHash = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 1\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n //\n // The following function is essentially copied from MD2D modeler, and should moved to a common\n // module\n //\n function defineBuiltinProperty(key, type, setter) {\n var metadataForType,\n descriptor,\n propertyChangeInvalidates,\n unitType;\n\n if (type === 'mainProperty') {\n metadataForType = metadata.mainProperties;\n } else if (type === 'viewOption') {\n metadataForType = metadata.viewOptions;\n } else {\n throw new Error(type + \" is not a supported built-in property type\");\n }\n\n propertyChangeInvalidates = validator.propertyChangeInvalidates(metadataForType[key]);\n\n descriptor = {\n type: type,\n writable: validator.propertyIsWritable(metadataForType[key]),\n set: setter,\n includeInHistoryState: !!metadataForType[key].storeInTickHistory,\n validate: function(value) {\n return validator.validateSingleProperty(metadataForType[key], key, value, false);\n },\n beforeSetCallback: propertyChangeInvalidates ? invalidatingChangePreHook : undefined,\n afterSetCallback: propertyChangeInvalidates ? invalidatingChangePostHook : undefined\n };\n\n unitType = metadataForType[key].unitType;\n if (unitType) {\n descriptor.description = new PropertyDescription(unitsDefinition, {\n unitType: unitType\n });\n } else {\n // A property with no units should at least have a label\n descriptor.description = new PropertyDescription(null, {\n label: metadataForType.label || key\n });\n }\n\n propertySupport.defineProperty(key, descriptor);\n }\n\n function invalidatingChangePreHook() {\n if (invalidatingChangeNestingLevel === 0) {\n propertySupport.storeComputedProperties();\n propertySupport.deleteComputedPropertyCachedValues();\n propertySupport.enableCaching = false;\n }\n invalidatingChangeNestingLevel++;\n }\n\n function invalidatingChangePostHook() {\n invalidatingChangeNestingLevel--;\n updateFilteredOutputs();\n if (invalidatingChangeNestingLevel === 0) {\n propertySupport.enableCaching = true;\n propertySupport.notifyChangedComputedProperties();\n }\n }\n\n function makeInvalidatingChange(closure) {\n invalidatingChangePreHook();\n closure();\n invalidatingChangePostHook();\n }\n\n function updateFilteredOutputs() {\n filteredOutputs.forEach(function(output) {\n output.addSample();\n });\n }\n\n function updatePropertyRange(property, min, max) {\n var descriptionHash;\n var description;\n\n descriptionHash = model.getPropertyDescription(property).getHash();\n descriptionHash.min = min;\n descriptionHash.max = max;\n\n description = new PropertyDescription(unitsDefinition, descriptionHash);\n propertySupport.setPropertyDescription(property, description);\n }\n\n // Updates min, max of displayTime to be [0..collectionTime]\n function updateDisplayTimeRange() {\n if (model.properties.collectionTime == null) {\n return;\n }\n updatePropertyRange('displayTime', 0, model.properties.collectionTime);\n }\n\n function removeApplet() {\n if (applet) {\n applet.removeListeners('data');\n applet.removeListeners('deviceUnplugged');\n applet.removeListeners('sensorUnplugged');\n\n applet.remove();\n }\n\n makeInvalidatingChange(function() {\n isSensorReady = false;\n isSensorInitializing = false;\n });\n }\n\n function appendApplet() {\n makeInvalidatingChange(function() {\n isSensorInitializing = true;\n });\n\n // Wrapped in a setTimeout to allow all property observers to finish their work before\n // actually firing up the applet, which freezes the UI and possibly blocks until the user\n // clicks through security dialogs to allow the applet to run.\n // TODO: A setImmediate shim (using window.postMessage) would be useful here.\n setTimeout(function() {\n applet.on('data', appletDataCallback);\n applet.on('deviceUnplugged', function() {\n handleUnplugged('device');\n });\n applet.on('sensorUnplugged', function() {\n handleUnplugged('sensor');\n });\n\n applet.append($('body'), function(error) {\n\n if (error) {\n if (error instanceof sensorApplet.JavaLoadError) {\n handleLoadingFailure(i18n.t(\"sensor.messages.java_applet_error\"));\n } else if (error instanceof sensorApplet.AppletInitializationError) {\n handleLoadingFailure(i18n.t(\"sensor.messages.java_applet_not_loading\"));\n } else if (error instanceof sensorApplet.SensorConnectionError) {\n handleSensorConnectionError();\n } else {\n handleLoadingFailure(i18n.t(\"sensor.messages.unexpected_error\"));\n }\n makeInvalidatingChange(function() {\n isSensorInitializing = false;\n });\n return;\n }\n\n makeInvalidatingChange(function() {\n isSensorReady = true;\n isSensorInitializing = false;\n });\n });\n }, 10);\n }\n\n function handleSensorConnectionError() {\n removeApplet();\n var buttons = {};\n buttons[i18n.t(\"sensor.messages.try_again\")] = function() {\n $(this).dialog(\"close\");\n // This is a workaround: currently, the applet itself does not appear to respond to its\n // initialization methods if the sensor was not connected when the applet started up.\n appendApplet();\n };\n buttons[i18n.t(\"sensor.messages.cancel\")] = function() {\n $(this).remove();\n model.reload();\n };\n notifier.alert(i18n.t(\"sensor.messages.sensor_not_attached\", {\n sensor_name: model.properties.sensorName\n }), buttons);\n }\n\n function handleLoadingFailure(message) {\n removeApplet();\n notifier.alert(message, {\n OK: function() {\n $(this).remove();\n model.reload();\n }\n });\n }\n\n function handleUnplugged(what) {\n removeApplet();\n model.stop();\n ExportController.logAction(\"Unplugged\" + model.properties[what + 'Name']);\n var buttons = {};\n buttons[i18n.t(\"sensor.messages.try_again\")] = function() {\n $(this).dialog(\"close\");\n appendApplet();\n };\n buttons[i18n.t(\"sensor.messages.cancel\")] = function() {\n $(this).dialog(\"close\");\n };\n notifier.alert(i18n.t(\"sensor.messages.sensor_or_device_unplugged\", {\n sensor_or_device_name: model.properties[what + 'Name']\n }), buttons);\n }\n\n function startPollingSensor() {\n if (sensorPollingIntervalID) {\n clearInterval(sensorPollingIntervalID);\n }\n var handleSensorValues = function(error, values) {\n if (error) {\n if (error instanceof sensorApplet.AlreadyReadingError) {\n // Don't worry about it -- we just overlapped another call to readSensor\n } else if (error instanceof sensorApplet.SensorConnectionError) {\n clearInterval(sensorPollingIntervalID);\n handleSensorConnectionError();\n } else {\n clearInterval(sensorPollingIntervalID);\n throw error;\n }\n } else {\n makeInvalidatingChange(function() {\n rawSensorValue = values[0];\n rawSensorValue2 = values[1];\n if (isTaring) {\n model.properties.tareValue = rawSensorValue;\n isTaring = false;\n }\n if (isTaring2) {\n model.properties.tareValue2 = rawSensorValue2;\n isTaring2 = false;\n }\n });\n }\n };\n sensorPollingIntervalID = setInterval(function() {\n applet.readSensor(handleSensorValues);\n }, 1000 / sensorPollsPerSecond);\n }\n\n function stopPollingSensor() {\n if (sensorPollingIntervalID) {\n clearInterval(sensorPollingIntervalID);\n sensorPollingIntervalID = null;\n }\n }\n\n function initializeStateVariables() {\n stepCounter = 0;\n time = 0;\n rawSensorValue = undefined;\n rawSensorValue2 = undefined;\n didCollectData = false;\n isSensorTareable = false;\n isSensorTareable2 = false;\n isTaring = false;\n isTaring2 = false;\n }\n\n function setupApplet() {\n if (sensorType && sensorType2) {\n var sensorDefinition = sensorDefinitions[sensorType],\n sensorDefinition2 = sensorDefinitions[sensorType2],\n AppletClass = sensorApplet[sensorDefinition.appletClass];\n\n applet = window.Lab.sensor[sensorType + sensorType2] = new AppletClass({\n listenerPath: 'Lab.sensor.' + sensorType + sensorType2,\n sensorDefinitions: [sensorDefinition, sensorDefinition2],\n appletId: sensorType + sensorType2 + '-sensor',\n codebase: labConfig.rootUrl + \"/jars/lab-sensor-applet-interface-dist\"\n });\n\n appendApplet();\n }\n\n }\n\n function updateSamplesPerSecond() {\n if (sensorType && sensorType2) {\n var sensorDefinition = sensorDefinitions[sensorType],\n sensorDefinition2 = sensorDefinitions[sensorType2];\n\n samplesPerSecond = Math.max(sensorDefinition.samplesPerSecond, sensorDefinition2.samplesPerSecond);\n }\n }\n\n function setSensorType(_sensorType) {\n var sensorDefinition;\n var description;\n var measurementType;\n\n if (sensorType === _sensorType) {\n return;\n }\n\n if (sensorType) {\n // drop the tare value if we're changing from one sensor type to another!\n model.properties.tareValue = 0;\n }\n\n sensorType = _sensorType;\n rawSensorValue = undefined;\n\n if (applet) {\n removeApplet();\n }\n\n if (sensorType) {\n sensorDefinition = sensorDefinitions[sensorType];\n measurementType = sensorDefinition.measurementType;\n isSensorTareable = sensorDefinition.tareable;\n updateSamplesPerSecond();\n\n setupApplet();\n\n // Update the description of the main 'sensorReading' output\n description = new PropertyDescription(unitsDefinition, {\n label: sensorDefinition.measurementName,\n unitType: measurementType,\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n });\n\n propertySupport.setPropertyDescription('sensorReading', description);\n\n // Override collectionTime only if it wasn't set on the model definition\n if (model.properties.collectionTime == null) {\n model.properties.collectionTime = sensorDefinition.maxSeconds;\n }\n } else if (model.properties.hasOwnProperty('sensorReading')) {\n // no sensor type\n description = new PropertyDescription(unitsDefinition, defaultSensorReadingDescriptionHash);\n propertySupport.setPropertyDescription('sensorReading', description);\n }\n }\n\n function setSensorType2(_sensorType) {\n var sensorDefinition;\n var description;\n var measurementType;\n\n if (sensorType2 === _sensorType) {\n return;\n }\n\n if (sensorType2) {\n // drop the tare value if we're changing from one sensor type to another!\n model.properties.tareValue2 = 0;\n }\n\n sensorType2 = _sensorType;\n rawSensorValue2 = undefined;\n\n if (applet) {\n removeApplet();\n }\n\n if (sensorType2) {\n sensorDefinition = sensorDefinitions[sensorType2];\n measurementType = sensorDefinition.measurementType;\n isSensorTareable2 = sensorDefinition.tareable;\n updateSamplesPerSecond();\n\n setupApplet();\n\n // Update the description of the main 'sensorReading' output\n description = new PropertyDescription(unitsDefinition, {\n label: sensorDefinition.measurementName,\n unitType: measurementType,\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n });\n\n propertySupport.setPropertyDescription('sensorReading2', description);\n\n // Override collectionTime only if it wasn't set on the model definition\n if (model.properties.collectionTime == null) {\n model.properties.collectionTime = sensorDefinition.maxSeconds;\n }\n } else if (model.properties.hasOwnProperty('sensorReading2')) {\n // no sensor type\n description = new PropertyDescription(unitsDefinition, defaultSensorReadingDescriptionHash);\n propertySupport.setPropertyDescription('sensorReading2', description);\n }\n }\n\n function appletDataCallback(d) {\n stepCounter++;\n\n time += (1 / samplesPerSecond);\n\n // Whaaa? Accessing 'window' seems to prevent a strange bug in which Safari 6.0 stops updating\n // time after 3.7s. Hard to debug because accessing console, window, or Web Inspector makes\n // the problem go away!\n window.__bizarreSafariFix = 1;\n\n rawSensorValue = d[0];\n rawSensorValue2 = d[1];\n // Once we collect data for a given sensor, don't allow changingn the sensor typea\n if (!didCollectData) {\n model.freeze('sensorType');\n model.freeze('sensorType2');\n }\n\n didCollectData = true;\n\n propertySupport.deleteComputedPropertyCachedValues();\n propertySupport.notifyAllComputedProperties();\n updateFilteredOutputs();\n\n dispatch.tick();\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n start: function() {\n if (!model.properties.isPlayable) {\n return;\n }\n\n applet.start(function(error, isStarted) {\n if (error) {\n if (error instanceof sensorApplet.SensorConnectionError) {\n handleSensorConnectionError();\n }\n } else if (isStarted) {\n makeInvalidatingChange(function() {\n isStopped = false;\n });\n dispatch.play();\n }\n });\n },\n\n stop: function() {\n\n if (applet) {\n applet.stop();\n }\n makeInvalidatingChange(function() {\n isStopped = true;\n });\n dispatch.stop();\n },\n\n tare: function() {\n if (!isStopped) {\n throw new Error(\"Sensor model: tare() called on a non-stopped model.\");\n }\n if (sensorPollingIntervalID != null && rawSensorValue != null) {\n model.properties.tareValue = rawSensorValue;\n } else {\n makeInvalidatingChange(function() {\n isTaring = true;\n });\n }\n },\n\n tare2: function() {\n if (!isStopped) {\n throw new Error(\"Sensor model: tare() called on a non-stopped model.\");\n }\n if (sensorPollingIntervalID != null && rawSensorValue2 != null) {\n model.properties.tareValue2 = rawSensorValue2;\n } else {\n makeInvalidatingChange(function() {\n isTaring2 = true;\n });\n }\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n model.stop();\n removeApplet();\n\n initializeStateVariables();\n model.unfreeze('sensorType');\n model.unfreeze('sensorType2');\n model.properties.sensorType = initialSensorType;\n model.properties.sensorType2 = initialSensorType;\n\n dispatch.reset();\n },\n\n reload: function() {\n model.stop();\n makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n //\n // The following are essentially copied from MD2D modeler, and should moved to a common module\n //\n\n addPropertiesListener: function(properties, callback) {\n if (typeof properties === 'string') {\n model.addObserver(properties, callback);\n } else {\n properties.forEach(function(property) {\n model.addObserver(property, callback);\n });\n }\n },\n\n defineParameter: function(key, descriptionHash, setter) {\n var descriptor = {\n type: 'parameter',\n includeInHistoryState: true,\n invokeSetterAfterBulkRestore: false,\n description: new PropertyDescription(unitsDefinition, descriptionHash),\n beforeSetCallback: invalidatingChangePreHook,\n afterSetCallback: invalidatingChangePostHook\n };\n\n // In practice, some parameters are meant only to be observed, and have no setter\n if (setter) {\n descriptor.set = function(value) {\n setter.call(model, value);\n };\n }\n propertySupport.defineProperty(key, descriptor);\n },\n\n defineOutput: function(key, descriptionHash, getter) {\n propertySupport.defineProperty(key, {\n type: 'output',\n writable: false,\n get: getter,\n includeInHistoryState: false,\n description: new PropertyDescription(unitsDefinition, descriptionHash)\n });\n },\n\n defineFilteredOutput: function(key, description, filteredPropertyKey, type, period) {\n var filter, initialValue;\n\n if (type === \"RunningAverage\") {\n filter = new RunningAverageFilter(period);\n } else {\n throw new Error(\"FilteredOutput: unknown filter type \" + type + \".\");\n }\n\n // Add initial sample\n initialValue = model.properties[key];\n if (initialValue === undefined || isNaN(Number(initialValue))) {\n throw new Error(\"FilteredOutput: property is not a valid numeric value or it is undefined.\");\n }\n filter.addSample(model.properties.time, initialValue);\n\n filteredOutputs.push({\n addSample: function() {\n filter.addSample(model.properties.time, model.properties[filteredPropertyKey]);\n }\n });\n\n // Extend description to contain information about filter\n description.property = filteredPropertyKey;\n description.type = type;\n description.period = period;\n\n model.defineOutput(key, description, function() {\n return filter.calculate();\n });\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n initializeStateVariables();\n\n // Need to define a globally-accessible 'listenerPath' for the sensor to evaluate\n if (window.Lab === undefined) {\n window.Lab = {};\n }\n window.Lab.sensor = {};\n\n propertySupport.mixInto(model);\n\n customSetters = {\n sensorType: setSensorType,\n sensorType2: setSensorType2\n };\n\n mainProperties = validator.validateCompleteness(metadata.mainProperties, initialProperties);\n Object.keys(mainProperties).forEach(function(key) {\n defineBuiltinProperty(key, 'mainProperty', customSetters[key]);\n });\n propertySupport.setRawValues(mainProperties);\n\n // Remember thse values so that the model can be reset properly\n initialSensorType = model.properties.sensorType;\n initialTareValue = model.properties.tareValue;\n\n viewOptions = validator.validateCompleteness(metadata.viewOptions, initialProperties.viewOptions || {});\n Object.keys(viewOptions).forEach(function(key) {\n defineBuiltinProperty(key, 'viewOption');\n });\n propertySupport.setRawValues(viewOptions);\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('sensorReading', defaultSensorReadingDescriptionHash, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('sensorReading2', defaultSensorReadingDescriptionHash, function() {\n if (rawSensorValue2 == null) {\n return rawSensorValue2;\n }\n return rawSensorValue2 - model.properties.tareValue2;\n });\n\n // TODO. Need a better way for the model to be able to have a property which it can set the\n // value of at arbitrary times, but which is read-only to client code. Outputs aren't quite\n // the right solution because the invalidation stuff is really about time and physics-based\n // invalidation.\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorDefinitions[sensorType].sensorName;\n });\n\n model.defineOutput('sensorName2', {\n label: \"Sensor Name\"\n }, function() {\n return sensorDefinitions[sensorType2].sensorName;\n });\n\n model.defineOutput('deviceName', {\n label: \"Sensor Interface Device Name\"\n }, function() {\n return sensorDefinitions[sensorType].deviceName;\n });\n\n model.defineOutput('deviceName2', {\n label: \"Sensor Interface Device Name\"\n }, function() {\n return sensorDefinitions[sensorType2].deviceName;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isSensorReady && !didCollectData;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return didCollectData;\n });\n\n model.defineOutput('shouldPollSensor', {\n label: \"Polling Sensor?\"\n }, function() {\n return model.properties.isPlayable && isStopped;\n });\n\n model.defineOutput('isSensorInitializing', {\n label: \"Loading Sensor?\"\n }, function() {\n return isSensorInitializing;\n });\n\n model.defineOutput('isTaring', {\n label: \"Waiting for a tare value?\"\n }, function() {\n return isTaring;\n });\n\n model.defineOutput('isTaring2', {\n label: \"Waiting for a tare value?\"\n }, function() {\n return isTaring2;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return isStopped && !didCollectData && isSensorTareable && !isTaring;\n });\n\n model.defineOutput('canTare2', {\n label: \"Can set a tare value?\"\n }, function() {\n return isStopped && !didCollectData && isSensorTareable2 && !isTaring2;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n // Clean up state before we go -- failing to remove the applet from the page before switching\n // between 2 sensor types that use the same interface causes an applet exception.\n model.on('willReset.model', removeApplet);\n\n model.addObserver('shouldPollSensor', function() {\n if (model.properties.shouldPollSensor) {\n startPollingSensor();\n } else {\n stopPollingSensor();\n }\n });\n\n model.addObserver('collectionTime', updateDisplayTimeRange);\n updateDisplayTimeRange();\n\n // Kick things off by doing this explicitly:\n setSensorType(model.properties.sensorType);\n setSensorType2(model.properties.sensorType2);\n\n return model;\n};\n","import SelectBoxView from 'common/views/select-box-view';\nimport NumericOutputView from 'common/views/numeric-output-view';\nimport sensorApplet from 'sensor-applet';\nimport viewState from 'common/views/view-state';\nconst sensorDefinitions = sensorApplet.sensorDefinitions;\n\nexport default function(model, modelUrl, i18n) {\n\n var sensorTypeView = new SelectBoxView({\n id: 'sensor-type-view',\n options: [{\n value: null,\n text: i18n.t(\"sensor.select_sensor_type\"),\n selected: model.properties.sensorType == null,\n disabled: true\n }].concat(Object.keys(sensorDefinitions).filter(function(key) {\n return sensorDefinitions[key].appletClass === \"LabQuest\";\n }).map(function(key) {\n return {\n value: key,\n text: sensorDefinitions[key].sensorName,\n selected: key === model.properties.sensorType,\n disabled: false\n };\n })),\n onChange: function(option) {\n model.properties.sensorType = option.value;\n }\n });\n\n var sensorType2View = new SelectBoxView({\n id: 'sensor-type2-view',\n options: [{\n value: null,\n text: i18n.t(\"sensor.select_sensor_type\"),\n selected: model.properties.sensorType2 == null,\n disabled: true\n }].concat(Object.keys(sensorDefinitions).filter(function(key) {\n return sensorDefinitions[key].appletClass === \"LabQuest\";\n }).map(function(key) {\n return {\n value: key,\n text: sensorDefinitions[key].sensorName,\n selected: key === model.properties.sensorType2,\n disabled: false\n };\n })),\n onChange: function(option) {\n model.properties.sensorType2 = option.value;\n }\n });\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView, sensorReading2View;\n var view;\n\n function setIsTaringState() {\n if (model.properties.isTaring) {\n view.$zeroButton.find('button').html(i18n.t(\"sensor.zeroing\"));\n } else {\n view.$zeroButton.find('button').html(i18n.t(\"sensor.zero\"));\n }\n }\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setIsTaringState2() {\n if (model.properties.isTaring2) {\n view.$zeroButton2.find('button').html(i18n.t(\"sensor.zeroing\"));\n } else {\n view.$zeroButton2.find('button').html(i18n.t(\"sensor.zero\"));\n }\n }\n\n function setCanTareState2() {\n if (model.properties.canTare2) {\n viewState.enableView(view.$zeroButton2);\n } else {\n viewState.disableView(view.$zeroButton2);\n }\n }\n\n function setSensorTypeDisabledState() {\n var description = model.getPropertyDescription('sensorType');\n if (description.getFrozen()) {\n viewState.disableView(view.$selectBox);\n } else {\n viewState.enableView(view.$selectBox);\n }\n }\n\n function setSensorType2DisabledState() {\n var description = model.getPropertyDescription('sensorType2');\n if (description.getFrozen()) {\n viewState.disableView(view.$selectBox2);\n } else {\n viewState.enableView(view.$selectBox2);\n }\n }\n\n function setupModelObservers() {\n model.addObserver('isTaring', setIsTaringState);\n model.addObserver('isTaring2', setIsTaringState2);\n setIsTaringState();\n setIsTaringState2();\n\n model.addObserver('canTare', setCanTareState);\n model.addObserver('canTare2', setCanTareState2);\n setCanTareState();\n setCanTareState2();\n\n model.addPropertyDescriptionObserver('sensorType', setSensorTypeDisabledState);\n setSensorTypeDisabledState();\n model.addPropertyDescriptionObserver('sensorType2', setSensorType2DisabledState);\n setSensorType2DisabledState();\n }\n\n return view = {\n $el: $(\"
\"),\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"4.8em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n\n this.$el.empty();\n\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n\n sensorReading2View = new NumericOutputView({\n id: 'sensor-value-2-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading2').getUnitAbbreviation()\n });\n\n var $row1 = $(\"
\"),\n $row2 = $(\"
\"),\n $selectBox = sensorTypeView.render(this.$el),\n $selectBox2 = sensorType2View.render(this.$el),\n $zeroButton = $(\"
\"),\n $zeroButton2 = $(\"
\"),\n $sensorReading = sensorReadingView.render(),\n $sensorReading2 = sensorReading2View.render();\n\n $selectBox.addClass('interactive-pulldown component component-spacing');\n $selectBox2.addClass('interactive-pulldown component component-spacing');\n $zeroButton.addClass('interactive-button component component-spacing');\n $zeroButton2.addClass('interactive-button component component-spacing');\n $sensorReading.addClass('numeric-output component horizontal component-spacing');\n $sensorReading2.addClass('numeric-output component horizontal component-spacing');\n\n this.$el.css('zIndex', 4);\n this.$el.append($row1);\n this.$el.append($row2);\n $row1.append($selectBox);\n $row1.append($sensorReading);\n $row1.append($zeroButton);\n $row2.append($selectBox2);\n $row2.append($sensorReading2);\n $row2.append($zeroButton2);\n\n this.$zeroButton = $zeroButton;\n this.$zeroButton2 = $zeroButton2;\n this.$selectBox = $selectBox;\n this.$selectBox2 = $selectBox2;\n\n sensorReadingView.resize();\n sensorReading2View.resize();\n\n setupModelObservers();\n\n $zeroButton.on('click', 'button', function() {\n model.tare();\n });\n $zeroButton2.on('click', 'button', function() {\n model.tare2();\n });\n },\n\n showInitializationProgress: function() {\n var $progressbar;\n\n if (!this.$progressbarContainer) {\n $progressbar = $('
')\n .attr('id', 'sensor-progressbar');\n\n this.$progressbarContainer = $('
')\n .attr('id', 'sensor-progressbar-container')\n .css('bottom', $('body').height() / 2 + 75 + $('.lab-responsive-content').offset().top)\n .append('
' + i18n.t('sensor.loading_sensor') + '
')\n .append($progressbar)\n .appendTo('.lab-responsive-content');\n\n $progressbar.progressbar({\n value: false\n });\n }\n\n this.$progressbarContainer.show();\n },\n\n hideInitializationProgress: function() {\n this.$progressbarContainer.hide();\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n\n if (sensorReading2View) {\n sensorReading2View.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.sensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n updateUnits2: function(units) {\n sensorReading2View.updateUnits(units);\n if (model.properties.sensorReading2 == null) {\n sensorReading2View.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.sensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.sensorReading));\n sensorReadingView.showUnits();\n }\n\n if (model.properties.sensorReading2 == null) {\n sensorReading2View.update(\"\");\n sensorReading2View.hideUnits();\n } else {\n sensorReading2View.update(format(model.properties.sensorReading2));\n sensorReading2View.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Dual Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function DualSensorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from 'models/dual-sensor/modeler';\nimport ModelContainer from 'models/dual-sensor/view';\nimport ScriptingAPI from 'models/dual-sensor/scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('isSensorInitializing', function() {\n var view = controller.modelContainer;\n\n if (model.properties.isSensorInitializing) {\n view.showInitializationProgress();\n } else {\n view.hideInitializationProgress();\n }\n });\n\n model.addObserver('sensorReading', function() {\n // if the model is running, the tick handler will take care of it\n if (model.isStopped()) {\n controller.updateView();\n }\n });\n\n model.addObserver('sensorReading2', function() {\n // if the model is running, the tick handler will take care of it\n if (model.isStopped()) {\n controller.updateView();\n }\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n // TODO This will have to handle have 2 different units...\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n\n model.addPropertyDescriptionObserver('sensorReading2', function() {\n var description = model.getPropertyDescription('sensorReading2');\n var view = controller.modelContainer;\n\n view.updateUnits2(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.dual-sensor-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.dual-sensor-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n });\n\n return controller;\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"dual-sensor-connector\",\n immutable: true\n },\n tareValue: {\n defaultValue: 0\n },\n tareValue2: {\n defaultValue: 0\n },\n clientId: {\n defaultValue: null\n },\n clientName: {\n defaultValue: null\n },\n useRandomClientId: {\n defaultValue: false\n },\n useDuration: {\n defaultValue: 'codap',\n storeInTickHistory: false,\n validate: function(value) {\n if (value === true || value === false || value === 'codap') {\n return value;\n }\n throw new Error(\"Invalid 'useDuration' value: \" + value);\n },\n },\n requestedDuration: {\n defaultValue: 10,\n storeInTickHistory: false\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","\n// Dead-simple, non-hierarchical state machine to which you dispatch events. The state machine is\n// in one state at a time (once the initial state is specified) and each event you ask it to\n// dispatch is simply handled by the current state's handler for that event (i.e.., the state's\n// method having the same name of the event). If the current state defines no handler by that\n// name, the event is ignored. Each handler can transition the state machine to a different state\n// by invoking 'this.gotoState()' in which case the old state's 'leaveState'\n// method will be called, the new state will become the current state, and the new state's\n// 'enterState' method will be called. A state's enterState method can also call this.gotoState\n// (for example, after checking some condition) in which case, the \"new, new\" state will become\n// the current state. However, remember that this implementation is simple: any code in the\n// enterState method after gotoState will run with the \"new, new\" state as the current state --\n// not the same state in which the enterState method is defined. Additionally, if you go to a\n// state from itself, the enterState method will simply run again.\n\n// You configure the state machine by passing its constructor an object having each state as the\n// child objects. Each state's name is taken from the its key in that parent object, and the\n// constructor simply endows each state with a 'name' property and a 'gotoState' method. Each\n// state object should define a method for each event it will handle. Events passed to\n// stateMachine.handleEvent which do not correspond to a method in the current state ware simply\n// ignored. (handleEvent returns true if the state has a handler for the event, false otherwise.)\n\n// Usage:\n// var stateMachine = new StateMachine({\n// state1: {\n// enterState: function() {\n// console.log(\"entered state 1\");\n// },\n// leaveState: function() {\n// console.log(\"leaving state 1\");\n// },\n// switchState: function() {\n// this.gotoState('state2');\n// }\n// },\n\n// state2: {\n// enterState: function() {\n// console.log(\"entered state 2\");\n// }\n// }\n// });\n\n// > stateMachine.gotoState('state1');\n// entered state 1\n// undefined\n// > stateMachine.handleEvent('switchState');\n// leaving state 1\n// entered state 2\n// false\n\n\nfunction StateMachine(states) {\n var self = this;\n\n this.states = states;\n this.currentState = null;\n\n Object.keys(states).forEach(function(key) {\n var state = states[key];\n // for debugging purposes\n if (state.name !== undefined && state.name !== key) {\n throw new Error(\"State \" + key + \" already has a 'name' property. The 'name' property is reserved.\");\n }\n state.name = key;\n\n if (state.gotoState !== undefined) {\n throw new Error(\"State \" + key + \" already has a 'gotoState' property. The 'gotoState' property is reserved.\");\n }\n state.gotoState = function(toStateName) {\n if (this !== self.currentState) {\n throw new Error(\"gotoState was called on state \" + this.name + \" but the current state is \", self.getCurrentStateName());\n }\n // just call the prototype method\n self.gotoState(toStateName);\n };\n\n });\n}\n\n\nStateMachine.prototype.getCurrentStateName = function() {\n if (this.currentState) {\n return this.currentState.name;\n } else {\n return \"\";\n }\n};\n\n\nStateMachine.prototype.gotoState = function(toStateName) {\n var toState = this.states[toStateName];\n if (!toState) {\n throw new Error(\"gotoState was called with state name \" + toStateName + \" but no such state exists.\");\n }\n\n if (this.currentState && typeof this.currentState.leaveState === 'function') {\n this.currentState.leaveState();\n }\n\n this.currentState = toState;\n\n if (typeof this.currentState.enterState === 'function') {\n this.currentState.enterState();\n }\n};\n\n\nStateMachine.prototype.handleEvent = function(eventName /*, eventArgs... */ ) {\n var eventArgs = Array.prototype.slice.call(arguments, 1);\n\n if (typeof this.currentState[eventName] === 'function') {\n this.currentState[eventName].apply(this.currentState, eventArgs);\n return true;\n }\n return false;\n};\n\n\nexport default StateMachine;\n\n","export default {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n }\n }\n};\n","// Information about sensor types, indexed by the units reported by the LabQuest2.\nexport default function(i18n) {\n return {\n \"lux\": {\n \"sensorName\": i18n.t(\"sensor.names.light\"),\n \"measurementName\": i18n.t(\"sensor.measurements.light_level\"),\n \"measurementType\": \"light level\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2000.0\n },\n \"m\": {\n \"sensorName\": i18n.t(\"sensor.names.motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.position\"),\n \"measurementType\": \"position\",\n \"tareable\": true,\n \"minReading\": -2.0,\n \"maxReading\": 2.0\n },\n \"m/s²\": {\n \"sensorName\": i18n.t(\"sensor.names.accelerometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.acceleration\"),\n \"measurementType\": \"acceleration\",\n \"tareable\": true,\n \"minReading\": -50.0,\n \"maxReading\": 50.0\n },\n \"m/s^2\": {\n \"sensorName\": i18n.t(\"sensor.names.accelerometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.acceleration\"),\n \"measurementType\": \"acceleration\",\n \"tareable\": true,\n \"minReading\": -50.0,\n \"maxReading\": 50.0\n },\n \"g\": {\n \"sensorName\": i18n.t(\"sensor.names.accelerometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.acceleration\"),\n \"measurementType\": \"acceleration\",\n \"tareable\": true,\n \"minReading\": -5.0,\n \"maxReading\": 5.0\n },\n \"N/kg\": {\n \"sensorName\": i18n.t(\"sensor.names.accelerometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.acceleration\"),\n \"measurementType\": \"acceleration\",\n \"tareable\": true,\n \"minReading\": -25.0,\n \"maxReading\": 25.0\n },\n \"mg/L\": {\n \"sensorName\": i18n.t(\"sensor.names.dissolved_oxygen\"),\n \"measurementName\": i18n.t(\"sensor.measurements.dissolved_oxygen\"),\n \"measurementType\": \"do\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 12.0\n },\n \"kPa\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 220.0\n },\n \"mm Hg\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2000.0\n },\n \"in Hg\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 80.0\n },\n \"mbar\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2200.0\n },\n \"psi\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 40.0\n },\n \"atm\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2.5\n },\n \"torr\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2000.0\n },\n \"nC\": {\n \"sensorName\": i18n.t(\"sensor.names.charge_sensor\"),\n \"measurementName\": i18n.t(\"sensor.measurements.charge\"),\n \"measurementType\": \"charge\",\n \"tareable\": false,\n \"minReading\": -20.0,\n \"maxReading\": 20.0\n },\n \"V\": {\n \"sensorName\": i18n.t(\"sensor.names.voltage\"),\n \"measurementName\": i18n.t(\"sensor.measurements.potential\"),\n \"measurementType\": \"potential\",\n \"tareable\": true,\n \"minReading\": -30.0,\n \"maxReading\": 30.0\n },\n \"pH\": {\n \"sensorName\": i18n.t(\"sensor.names.pH\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pH\"),\n \"measurementType\": \"ph\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 14.0\n },\n \"ppm\": {\n \"sensorName\": i18n.t(\"sensor.names.CO2_gas\"),\n \"measurementName\": i18n.t(\"sensor.measurements.CO2\"),\n \"measurementType\": \"co2\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 5000.0\n },\n \"ppt\": {\n \"sensorName\": i18n.t(\"sensor.names.CO2_gas\"),\n \"measurementName\": i18n.t(\"sensor.measurements.CO2\"),\n \"measurementType\": \"co2\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 5.0\n },\n \"%\": {\n \"sensorName\": i18n.t(\"sensor.names.CO2_gas\"),\n \"measurementName\": i18n.t(\"sensor.measurements.CO2\"),\n \"measurementType\": \"co2\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 0.5\n },\n \"%T\": {\n \"sensorName\": i18n.t(\"sensor.names.colorimeter\"),\n \"measurementName\": i18n.t(\"sensor.measurements.transmittance\"),\n \"measurementType\": \"transmittance\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 100.0\n },\n \"µS/cm\": {\n \"sensorName\": i18n.t(\"sensor.names.conductivity\"),\n \"measurementName\": i18n.t(\"sensor.measurements.conductivity\"),\n \"measurementType\": \"conductivity\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2000.0\n },\n \"dS/m\": {\n \"sensorName\": i18n.t(\"sensor.names.conductivity\"),\n \"measurementName\": i18n.t(\"sensor.measurements.conductivity\"),\n \"measurementType\": \"conductivity\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2.0\n },\n \"A\": {\n \"sensorName\": i18n.t(\"sensor.names.current\"),\n \"measurementName\": i18n.t(\"sensor.measurements.current\"),\n \"measurementType\": \"current\",\n \"tareable\": true,\n \"minReading\": -1.2,\n \"maxReading\": 1.2\n },\n \"mA\": {\n \"sensorName\": i18n.t(\"sensor.names.current\"),\n \"measurementName\": i18n.t(\"sensor.measurements.current\"),\n \"measurementType\": \"current\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 500.0\n },\n \"°C\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 40.0\n },\n \"degC\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 40.0\n },\n \"°F\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 30.0,\n \"maxReading\": 100.0\n },\n \"degF\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 30.0,\n \"maxReading\": 100.0\n },\n \"K\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 250.0,\n \"maxReading\": 400.0\n },\n \"N\": {\n \"sensorName\": i18n.t(\"sensor.names.force\"),\n \"measurementName\": i18n.t(\"sensor.measurements.force\"),\n \"measurementType\": \"force\",\n \"tareable\": true,\n \"minReading\": -50.0,\n \"maxReading\": 50.0\n },\n \"lb\": {\n \"sensorName\": i18n.t(\"sensor.names.force\"),\n \"measurementName\": i18n.t(\"sensor.measurements.force\"),\n \"measurementType\": \"force\",\n \"tareable\": true,\n \"minReading\": -12.5,\n \"maxReading\": 12.5\n },\n \"mV\": {\n \"sensorName\": null,\n \"measurementName\": i18n.t(\"sensor.measurements.potential\"),\n \"measurementType\": \"potential\",\n \"tareable\": true,\n \"minReading\": -500.0,\n \"maxReading\": 1100.0\n },\n \"m/s\": {\n \"sensorName\": i18n.t(\"sensor.names.motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.velocity\"),\n \"measurementType\": \"velocity\",\n \"tareable\": true,\n \"minReading\": -5.0,\n \"maxReading\": 5.0\n },\n \"ft/s\": {\n \"sensorName\": i18n.t(\"sensor.names.anemometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.speed\"),\n \"measurementType\": \"speed\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 100.0\n },\n \"ft\": {\n \"sensorName\": i18n.t(\"sensor.names.motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.position\"),\n \"measurementType\": \"position\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 6.0\n },\n \"kg\": {\n \"sensorName\": i18n.t(\"sensor.names.hand_dynamometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.force\"),\n \"measurementType\": \"force\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 50.0\n },\n \"v\": {\n \"sensorName\": i18n.t(\"sensor.names.heart_rate\"),\n \"measurementName\": i18n.t(\"sensor.measurements.signal\"),\n \"measurementType\": \"signal\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 3.0\n },\n \"mT\": {\n \"sensorName\": i18n.t(\"sensor.names.magnetic_field\"),\n \"measurementName\": i18n.t(\"sensor.measurements.magnetic_field\"),\n \"measurementType\": \"magnetic field\",\n \"tareable\": true,\n \"minReading\": -8.0,\n \"maxReading\": 8.0\n },\n \"G\": {\n \"sensorName\": i18n.t(\"sensor.names.magnetic_field\"),\n \"measurementName\": i18n.t(\"sensor.measurements.magnetic_field\"),\n \"measurementType\": \"magnetic field\",\n \"tareable\": true,\n \"minReading\": -80.0,\n \"maxReading\": 80.0\n },\n \"rad\": {\n \"sensorName\": i18n.t(\"sensor.names.rotary_motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.angle\"),\n \"measurementType\": \"angle\",\n \"tareable\": true,\n \"minReading\": -15.0,\n \"maxReading\": 15.0\n },\n \"°\": {\n \"sensorName\": i18n.t(\"sensor.names.rotary_motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.angle\"),\n \"measurementType\": \"angle\",\n \"tareable\": true,\n \"minReading\": -1000.0,\n \"maxReading\": 1000.0\n },\n \"cm\": {\n \"sensorName\": i18n.t(\"sensor.names.linear_position_sensor\"),\n \"measurementName\": i18n.t(\"sensor.measurements.position\"),\n \"measurementType\": \"position\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 15.0\n },\n \"dB\": {\n \"sensorName\": i18n.t(\"sensor.names.sound_level\"),\n \"measurementName\": i18n.t(\"sensor.measurements.sound_level\"),\n \"measurementType\": \"sound level\",\n \"tareable\": true,\n \"minReading\": 40.0,\n \"maxReading\": 110.0\n },\n \"dbA\": {\n \"sensorName\": i18n.t(\"sensor.names.sound_level\"),\n \"measurementName\": i18n.t(\"sensor.measurements.sound_level\"),\n \"measurementType\": \"sound level\",\n \"tareable\": true,\n \"minReading\": 40.0,\n \"maxReading\": 110.0\n },\n \"rel\": {\n \"sensorName\": i18n.t(\"sensor.names.spectrophotometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.intensity\"),\n \"measurementType\": \"intensity\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 1.0\n },\n \"Rel\": {\n \"sensorName\": i18n.t(\"sensor.names.spectrophotometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.fluorescence_405_nm\"),\n \"measurementType\": \"fluorescence 405 nm\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 1.0\n },\n \"Rel.\": {\n \"sensorName\": i18n.t(\"sensor.names.spectrophotometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.fluorescence_500_nm\"),\n \"measurementType\": \"fluorescence 500 nm\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 1.0\n },\n \"L/s\": {\n \"sensorName\": i18n.t(\"sensor.names.spirometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.flow_rate\"),\n \"measurementType\": \"flow rate\",\n \"tareable\": true,\n \"minReading\": -4.0,\n \"maxReading\": 4.0\n },\n \"mL/s\": {\n \"sensorName\": i18n.t(\"sensor.names.spirometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.flow_rate\"),\n \"measurementType\": \"flow rate\",\n \"tareable\": true,\n \"minReading\": -4000.0,\n \"maxReading\": 4000.0\n },\n \"NTU\": {\n \"sensorName\": i18n.t(\"sensor.names.turbidity\"),\n \"measurementName\": i18n.t(\"sensor.measurements.turbidity\"),\n \"measurementType\": \"turbidity\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 50.0\n },\n \"mW/m²\": {\n \"sensorName\": i18n.t(\"sensor.names.UV_sensor\"),\n \"measurementName\": i18n.t(\"sensor.measurements.UV_intensity\"),\n \"measurementType\": \"uv intensity\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 20000.0\n },\n \"mL\": {\n \"sensorName\": i18n.t(\"sensor.names.drop_counter\"),\n \"measurementName\": i18n.t(\"sensor.measurements.volume\"),\n \"measurementType\": \"volume\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 3.0\n },\n \"f\": {\n \"sensorName\": i18n.t(\"sensor.names.altitude\"),\n \"measurementName\": i18n.t(\"sensor.measurements.altitude\"),\n \"measurementType\": \"altitude\",\n \"tareable\": true,\n \"minReading\": -300.0,\n \"maxReading\": 300.0\n },\n \"mph\": {\n \"sensorName\": i18n.t(\"sensor.names.anemometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.speed\"),\n \"measurementType\": \"speed\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 10.0\n },\n \"km/h\": {\n \"sensorName\": i18n.t(\"sensor.names.anemometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.speed\"),\n \"measurementType\": \"speed\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 20.0\n },\n \"knots\": {\n \"sensorName\": i18n.t(\"sensor.names.anemometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.speed\"),\n \"measurementType\": \"speed\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 50.0\n }\n };\n};\n"," \nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport PropertyDescription from 'common/property-description';\nimport metadata from './metadata';\nimport StateMachine from 'common/state-machine';\nimport SensorConnectorInterface from 'sensor-connector-interface';\nimport unitsDefinition from './units-definition';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport Notifier from 'models/sensor-common/notifier';\n\n\nexport default function Model(initialProperties, opt) {\n var i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n labModelerMixin,\n propertySupport,\n dispatch,\n stateMachine,\n sensorConnectorInterface,\n timeColumn,\n dataColumn,\n dataColumn2,\n selectedSensor,\n selectedSensor2,\n sensorName,\n sensorName2,\n isStopped,\n needsReload,\n time,\n rawSensorValue,\n rawSensorValue2,\n liveSensorValue,\n liveSensorValue2,\n stepCounter,\n isPlayable,\n canTare,\n canTare2,\n canControl,\n hasMultipleSensors,\n isSensorTareable,\n isSensorTareable2,\n message,\n statusDialog,\n statusErrors,\n displayTimePropertyDescription,\n model;\n\n var defaultSensorReadingDescription = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 10\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function updatePropertyRange(property, min, max) {\n var descriptionHash;\n var description;\n\n descriptionHash = model.getPropertyDescription(property).getHash();\n descriptionHash.min = min;\n descriptionHash.max = max;\n\n description = new PropertyDescription(unitsDefinition, descriptionHash);\n propertySupport.setPropertyDescription(property, description);\n }\n\n // Updates min, max of displayTime to be [0..actualDuration]\n function updateDisplayTimeRange() {\n if (model.properties.actualDuration === null || model.properties.actualDuration === Infinity) {\n return;\n }\n updatePropertyRange('displayTime', 0, model.properties.actualDuration);\n }\n\n function setSensorReadingDescription() {\n var sensorDefinition;\n var description;\n\n if (dataColumn) {\n sensorDefinition = sensorDefinitions[dataColumn.units];\n\n if (sensorDefinition) {\n description = {\n label: sensorDefinition.measurementName,\n format: '.2f',\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n };\n if (unitsDefinition.units[sensorDefinition.measurementType]) {\n description.unitType = sensorDefinition.measurementType;\n } else {\n description.unitAbbreviation = dataColumn.units;\n }\n isSensorTareable = sensorDefinition.tareable;\n sensorName = sensorDefinition.sensorName || (dataColumn.units + \" \" + i18n.t(\"sensor.names.sensor\"));\n } else {\n description = {\n label: dataColumn.name || i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: dataColumn.units,\n format: '.2f',\n min: 0,\n max: 10\n };\n isSensorTareable = true;\n sensorName = dataColumn.units + \" \" + i18n.t(\"sensor.names.sensor\");\n }\n } else {\n description = defaultSensorReadingDescription;\n isSensorTareable = false;\n sensorName = i18n.t(\"sensor.names.no_sensor\");\n }\n\n propertySupport.setPropertyDescription('sensorReading',\n new PropertyDescription(unitsDefinition, description));\n propertySupport.setPropertyDescription('liveSensorReading',\n new PropertyDescription(unitsDefinition, description));\n }\n\n function setSensorReadingDescription2() {\n var sensorDefinition;\n var description;\n\n if (dataColumn2) {\n sensorDefinition = sensorDefinitions[dataColumn2.units];\n\n if (sensorDefinition) {\n description = {\n label: sensorDefinition.measurementName,\n format: '.2f',\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n };\n if (unitsDefinition.units[sensorDefinition.measurementType]) {\n description.unitType = sensorDefinition.measurementType;\n } else {\n description.unitAbbreviation = dataColumn2.units;\n }\n isSensorTareable2 = sensorDefinition.tareable;\n sensorName2 = sensorDefinition.sensorName || (dataColumn.units + \" \" + i18n.t(\"sensor.names.sensor\"));\n } else {\n description = {\n label: dataColumn2.name || i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: dataColumn2.units,\n format: '.2f',\n min: 0,\n max: 10\n };\n isSensorTareable2 = true;\n sensorName2 = dataColumn2.units + \" \" + i18n.t(\"sensor.names.sensor\");\n }\n } else {\n description = defaultSensorReadingDescription;\n isSensorTareable2 = false;\n sensorName2 = i18n.t(\"sensor.names.no_sensor\");\n }\n\n propertySupport.setPropertyDescription('sensorReading2',\n new PropertyDescription(unitsDefinition, description));\n propertySupport.setPropertyDescription('liveSensorReading2',\n new PropertyDescription(unitsDefinition, description));\n }\n\n function initializeStateVariables() {\n isStopped = true;\n canControl = sensorConnectorInterface.canControl;\n hasMultipleSensors = false;\n // Set selectedSensor if it hasn't been set yet\n if (typeof(selectedSensor) === \"undefined\" || selectedSensor === null) {\n selectedSensor = {\n index: 1\n };\n }\n if (typeof(selectedSensor2) === \"undefined\" || selectedSensor2 === null) {\n selectedSensor2 = {\n index: 2\n };\n }\n stepCounter = 0;\n time = 0;\n statusErrors = 0;\n rawSensorValue = undefined;\n rawSensorValue2 = undefined;\n liveSensorValue = undefined;\n liveSensorValue2 = undefined;\n timeColumn = undefined;\n dataColumn = undefined;\n dataColumn2 = undefined;\n }\n\n function checkColumnAgainstSelected(dataset, idx) {\n var colCandidate = dataset.columns[idx];\n if (colCandidate && colCandidate.units === selectedSensor.units) {\n selectedSensor.index = idx;\n return true;\n }\n return false;\n }\n\n function checkColumnAgainstSelected2(dataset, idx) {\n var colCandidate = dataset.columns[idx];\n if (colCandidate && colCandidate.units === selectedSensor2.units) {\n selectedSensor2.index = idx;\n return true;\n }\n return false;\n }\n\n function hasCollectableSensors(dataset) {\n if (dataset.columns.length < 2) {\n return false;\n }\n if (dataset.columns.length === 2 && !dataset.columns[1].name && !dataset.columns[1].units) {\n return false;\n }\n return true;\n }\n\n function setColumn() {\n var dataset = sensorConnectorInterface.datasets[0];\n var newDataColumn, newDataColumn2, sIdx;\n\n hasMultipleSensors = dataset.columns.length > 2;\n\n // The sensor connector always has column 0 as time\n timeColumn = dataset.columns[0];\n if (sensorConnectorInterface.hasAttachedInterface) {\n if (hasCollectableSensors(dataset) && hasMultipleSensors) {\n if (canControl) {\n message = i18n.t(\"sensor.messages.ready\");\n } else if (sensorConnectorInterface.inControl.clientName) {\n message = i18n.t(\"sensor.messages.ready_nocontrol\", {\n controlling_client: sensorConnectorInterface.inControl.clientName\n });\n } else {\n message = i18n.t(\"sensor.messages.ready_nocontrol_noname\");\n }\n isPlayable = true;\n } else {\n message = i18n.t(\"sensor.messages.no_sensors\");\n isPlayable = false;\n }\n\n // TODO When we want to support multiple sensors, this will have to change.\n // Select the column chosen by the user\n sIdx = selectedSensor.index;\n if (sIdx >= dataset.columns.length && dataset.columns.length > 1) {\n // we seem to be pointing past the number of columns there are. reset to that last column.\n sIdx = dataset.columns.length - 1;\n }\n newDataColumn = dataset.columns[sIdx];\n if (newDataColumn && selectedSensor.units && newDataColumn.units !== selectedSensor.units) {\n // our selected column seems to have changed out from under us.\n // If a sensor was added to the device, it could be one column higher\n if (checkColumnAgainstSelected(dataset, sIdx + 1)) {\n newDataColumn = dataset.columns[sIdx + 1];\n } else if (sIdx > 1 && checkColumnAgainstSelected(dataset, sIdx - 1)) {\n // it wasn't the one after. let's check the one before.\n newDataColumn = dataset.columns[sIdx - 1];\n } else {\n // it seems to be none of them. Reset the selected sensor to the first one.\n newDataColumn = dataset.columns[1];\n selectedSensor.index = 1;\n }\n }\n\n // select the column chosen by the user for the second sensor\n sIdx = selectedSensor2.index;\n if (sIdx >= dataset.columns.length && dataset.columns.length > 2) {\n // we seem to be pointing past the number of columns there are. reset to that last column.\n sIdx = dataset.columns.length - 1;\n }\n newDataColumn2 = dataset.columns[sIdx];\n if (newDataColumn2 && selectedSensor2.units && newDataColumn2.units !== selectedSensor2.units) {\n // our selected column seems to have changed out from under us.\n // If a sensor was added to the device, it could be one column higher\n if (checkColumnAgainstSelected2(dataset, sIdx + 1)) {\n newDataColumn2 = dataset.columns[sIdx + 1];\n } else if (sIdx > 1 && checkColumnAgainstSelected2(dataset, sIdx - 1)) {\n // it wasn't the one after. let's check the one before.\n newDataColumn2 = dataset.columns[sIdx - 1];\n } else {\n // it seems to be none of them. Reset the selected sensor to the first one.\n newDataColumn2 = dataset.columns[2];\n selectedSensor2.index = 2;\n }\n }\n } else {\n message = i18n.t(\"sensor.messages.no_devices\");\n isPlayable = false;\n }\n\n if (newDataColumn && !newDataColumn.name && !newDataColumn.units) {\n // If we don't have a sensor name and units, assume it's not really a sensor\n newDataColumn = null;\n }\n\n if (newDataColumn2 && !newDataColumn2.name && !newDataColumn2.units) {\n // If we don't have a sensor name and units, assume it's not really a sensor\n newDataColumn2 = null;\n }\n\n dataColumn = newDataColumn;\n if (dataColumn) {\n selectedSensor.units = dataColumn.units;\n }\n setSensorReadingDescription();\n\n dataColumn2 = newDataColumn2;\n if (dataColumn2) {\n selectedSensor2.units = dataColumn2.units;\n }\n setSensorReadingDescription2();\n\n if (!dataColumn) {\n liveSensorValue = undefined;\n }\n if (!dataColumn2) {\n liveSensorValue2 = undefined;\n }\n }\n\n function handleData() {\n if (!timeColumn || !dataColumn || !dataColumn2) {\n return;\n }\n\n var numberOfValues = Math.min(Math.min(timeColumn.data.length, dataColumn.data.length), dataColumn2.data.length);\n for (; stepCounter < numberOfValues; stepCounter++) {\n time = timeColumn.data[stepCounter];\n\n if (time > model.properties.actualDuration) {\n // Stop, but continue to process any data received (if for no other reason than that\n // subsequent steps aren't happy until data up to the latest timestamp was received)\n model.stop();\n }\n rawSensorValue = dataColumn.data[stepCounter];\n rawSensorValue2 = dataColumn2.data[stepCounter];\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n }\n\n function isAllColumnDataReceieved(column) {\n return column.receivedValuesTimeStamp >= column.requestedValuesTimeStamp;\n }\n\n function isAllDataReceived() {\n return isAllColumnDataReceieved(timeColumn) && (!dataColumn || isAllColumnDataReceieved(dataColumn)) && (!dataColumn2 || isAllColumnDataReceieved(dataColumn2));\n }\n\n function connectedSensors() {\n var sensors = [],\n dataset = sensorConnectorInterface.datasets[0],\n i;\n\n for (i = 0; i < dataset.columns.length; i++) {\n sensors.push({\n units: dataset.columns[i].units,\n name: dataset.columns[i].name\n });\n }\n return sensors;\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n start: function() {\n handle('start');\n },\n\n stop: function() {\n handle('stop');\n },\n\n tare: function() {\n var oldPlayable = isPlayable;\n isPlayable = false;\n handle('tare');\n isPlayable = oldPlayable;\n },\n\n tare2: function() {\n var oldPlayable = isPlayable;\n isPlayable = false;\n handle('tare2');\n isPlayable = oldPlayable;\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n handle('reset');\n },\n\n reload: function() {\n model.stop();\n model.makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n connectedSensors: connectedSensors,\n getSelectedSensor: function() {\n return selectedSensor.index;\n },\n getSelectedSensor2: function() {\n return selectedSensor2.index;\n },\n setSelectedSensor: function(sensorIndex) {\n if (selectedSensor.index !== sensorIndex) {\n selectedSensor.index = sensorIndex;\n selectedSensor.units = null;\n model.properties.tareValue = 0; // Also reset our tare value\n setColumn();\n }\n },\n setSelectedSensor2: function(sensorIndex) {\n if (selectedSensor2.index !== sensorIndex) {\n selectedSensor2.index = sensorIndex;\n selectedSensor2.units = null;\n model.properties.tareValue2 = 0; // Also reset our tare value\n setColumn();\n }\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n\n stateMachine = new StateMachine({\n\n notConnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.not_connected\");\n statusErrors = 0;\n // use https if possible, fall back to http if necessary\n sensorConnectorInterface.startPolling([\n \"https://localhost:11181\", \"https://127.0.0.1:11181\",\n \"http://localhost:11180\", \"http://127.0.0.1:11180\"],\n model.properties.clientId, model.properties.clientName);\n this.gotoState('connecting');\n }\n },\n\n connecting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connecting\");\n if (sensorConnectorInterface.isConnected) {\n this.gotoState('connected');\n } else {\n statusDialog = notifier.status(i18n.t(\"sensor.messages.connection_in_progress\"), {\n dialogClass: 'interactive-dialog no-close'\n });\n }\n },\n\n leaveState: function() {\n if (statusDialog) {\n statusDialog.close();\n statusDialog = null;\n }\n },\n\n statusErrored: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n connectionTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n launchTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n statusReceived: function() {\n this.gotoState('connected');\n },\n\n sessionChanged: function() {\n // start a new session, stay connecting...\n sensorConnectorInterface.stopPolling();\n sensorConnectorInterface.startPolling();\n }\n },\n\n initialConnectionFailure: {\n enterState: function() {\n sensorConnectorInterface.stopPolling();\n message = i18n.t(\"sensor.messages.connection_failed\", {\n retry_link: \"\"\n });\n var dialog_msg = \"sensor.messages.connection_failed_alert\";\n notifier.alert(i18n.t(dialog_msg, {\n click_here_link: \"\" +\n i18n.t(\"sensor.messages.click_here\") + \"\"\n }), {\n \"Try again\": function() {\n $(this).dialog(\"close\");\n handle('dismiss');\n }\n }, {\n close: function() {\n handle('closed');\n }\n });\n },\n\n // Ignore these in this state\n statusErrored: function() {},\n connectionTimedOut: function() {},\n launchTimedOut: function() {},\n\n closed: function() {\n message = i18n.t(\"sensor.messages.connection_failed\", {\n retry_link: \"\" + i18n.t(\"sensor.messages.connection_failed_retry_link_text\") + \"\"\n });\n // AU: This is kind of ugly and obnoxious, but I was having trouble getting the right context when embedding code directly into the href itself.\n var tryAttachingHandler = function() {\n var links = $('a.retry-link');\n if (links[0]) {\n links.click(function() {\n handle('dismiss');\n });\n } else {\n setTimeout(tryAttachingHandler, 50);\n }\n };\n tryAttachingHandler();\n },\n\n dismiss: function() {\n this.gotoState('notConnected');\n }\n },\n\n connected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connected\");\n canTare = true;\n canTare2 = true;\n isPlayable = true;\n isStopped = true;\n\n setColumn();\n\n if (canControl) {\n this.controlEnabled();\n } else {\n this.controlDisabled();\n }\n\n if (sensorConnectorInterface.isCollecting) {\n this.gotoState('started');\n }\n },\n\n leaveState: function() {\n canTare = false;\n canTare2 = false;\n isPlayable = false;\n },\n\n // Give some feedback on the currently selected column from which data will be collected.\n columnAdded: setColumn,\n columnRemoved: setColumn,\n columnTypeChanged: setColumn,\n columnMoved: setColumn,\n\n interfaceConnected: setColumn,\n interfaceRemoved: setColumn,\n\n tare: function() {\n if (dataColumn) {\n model.properties.tareValue = dataColumn.liveValue;\n }\n },\n\n tare2: function() {\n if (dataColumn2) {\n model.properties.tareValue2 = dataColumn2.liveValue;\n }\n },\n\n // User requests collection\n start: function() {\n // NOTE. Due to architecture switch mid-way, the sensorConnectorInterface layer is turning the\n // start request into a promise, and we're turning it back to events. The lower layer\n // could just ditch promises and emit the corresponding events with no harm. (The state\n // machine prevents almost every practical scenario where we'd see an out-of-date\n // startRequestFailure event while in a state that would respond to it.)\n sensorConnectorInterface.requestStart().catch(function() {\n handle('startRequestFailed');\n });\n this.gotoState('starting');\n },\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.connected\");\n },\n\n controlDisabled: function() {\n if (sensorConnectorInterface.inControl.clientName) {\n message = i18n.t(\"sensor.messages.connected_start_sensorconnector\", {\n controlling_client: sensorConnectorInterface.inControl.clientName\n });\n } else {\n message = i18n.t(\"sensor.messages.connected_start_sensorconnector_noname\");\n }\n },\n\n sessionChanged: function() {\n sensorConnectorInterface.stopPolling();\n sensorConnectorInterface.startPolling();\n this.gotoState('connecting');\n },\n\n // Collection was started by a third party\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n starting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.starting_data_collection\");\n isStopped = false;\n var self = this;\n this._startTimerId = setTimeout(5000, function() {\n self.gotoState('startRequestFailed');\n });\n },\n\n leaveState: function() {\n clearTimeout(this._startTimerId);\n },\n\n startRequestFailed: function() {\n this.gotoState('errorStarting');\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n errorStarting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_starting_data_collection\");\n isStopped = true;\n\n notifier.alert(i18n.t(\"sensor.messages.error_starting_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStarting');\n }\n });\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n },\n\n dismissErrorStarting: function() {\n this.gotoState('connected');\n }\n },\n\n started: {\n enterState: function() {\n isStopped = false;\n setColumn();\n isPlayable = false;\n if (canControl) {\n message = i18n.t(\"sensor.messages.collecting_data\");\n } else {\n message = i18n.t(\"sensor.messages.collecting_data_stop_sensorconnector\");\n }\n\n // Check, just in case. Specifically, when errorStopping transitions here, collection\n // might have stopped in the meantime.\n if (!sensorConnectorInterface.isCollecting) {\n this.gotoState('stopped');\n }\n\n if ((!dataColumn) || (!dataColumn2)) {\n this.gotoState('startedWithNoDataColumn');\n }\n },\n\n data: handleData,\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data\");\n },\n\n controlDisabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data_stop_sensorconnector\");\n },\n\n stop: function() {\n sensorConnectorInterface.requestStop().catch(function() {\n handle('stopRequestFailed');\n });\n this.gotoState('stopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n // This can happen.\n startedWithNoDataColumn: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.no_data\");\n\n sensorConnectorInterface.requestStop();\n notifier.alert(i18n.t(\"sensor.messages.no_data_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n }\n });\n },\n\n collectionStopped: function() {\n this.gotoState('stoppedWithNoDataColumn');\n }\n },\n\n stoppedWithNoDataColumn: {\n enterState: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n },\n\n data: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n }\n },\n\n stopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.stopping_data_collection\");\n },\n\n data: handleData,\n\n stopRequestFailed: function() {\n this.gotoState('errorStopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n errorStopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_stopping_data_collection\");\n notifier.alert(i18n.t(\"sensor.messages.error_stopping_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStopping');\n }\n });\n },\n\n data: handleData,\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n },\n\n dismissErrorStopping: function() {\n this.gotoState('started');\n }\n },\n\n // The device reports the stop of data collection before all data can be received.\n collectionStopped: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_stopped\");\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n },\n\n data: function() {\n handleData();\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n }\n },\n\n collectionComplete: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_complete\");\n isStopped = true;\n dispatch.stop();\n },\n\n reset: function() {\n initializeStateVariables();\n setSensorReadingDescription();\n setSensorReadingDescription2();\n this.gotoState('connecting');\n dispatch.reset();\n }\n },\n\n disconnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.disconnected\");\n sensorConnectorInterface.stopPolling();\n var self = this;\n setTimeout(function() {\n self.gotoState('notConnected');\n }, 2000);\n }\n }\n });\n\n // Automatically wrap all event handlers invocations with makeInvalidatingChange so that\n // outputs update from closure variable state automatically.\n function handle(eventName) {\n var args = Array.prototype.slice.call(arguments, 0);\n\n model.makeInvalidatingChange(function() {\n var handled = stateMachine.handleEvent.apply(stateMachine, args);\n\n if (!handled) {\n // special handling of any events not handled by the current state:\n if (eventName === 'connectionTimedOut') {\n stateMachine.gotoState('disconnected');\n } else if (eventName === 'sessionChanged') {\n sensorConnectorInterface.stopPolling();\n stateMachine.gotoState('disconnected');\n } else if (eventName === 'statusErrored') {\n stateMachine.gotoState('initialConnectionFailure');\n }\n }\n });\n }\n\n sensorConnectorInterface = new SensorConnectorInterface();\n\n // At least for now, dispatch every interface event to the state machine.\n sensorConnectorInterface.on('*', function() {\n var args = Array.prototype.slice.call(arguments, 0);\n handle.apply(null, [this.event].concat(args));\n });\n\n // Also, handle \"live values\" every time they are received.\n sensorConnectorInterface.on('statusReceived', function() {\n if (dataColumn) {\n model.makeInvalidatingChange(function() {\n liveSensorValue = dataColumn.liveValue;\n });\n }\n if (dataColumn2) {\n model.makeInvalidatingChange(function() {\n liveSensorValue2 = dataColumn2.liveValue;\n });\n }\n });\n\n sensorConnectorInterface.on('controlEnabled', function() {\n canControl = true;\n });\n\n sensorConnectorInterface.on('controlDisabled', function() {\n canControl = false;\n });\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: {},\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n propertySupport = labModelerMixin.propertySupport;\n dispatch = labModelerMixin.dispatchSupport;\n dispatch.addEventTypes(\"tick\", \"play\", \"stop\", \"tickStart\", \"tickEnd\");\n\n labModelerMixin.mixInto(model);\n\n initializeStateVariables();\n\n if (model.properties.useRandomClientId) {\n model.properties.clientId = Math.floor((1 + Math.random()) * 0x100000000).toString(16); // a 9-digit hex string that always starts with 1\n }\n\n model.addObserver('clientName', function() {\n sensorConnectorInterface.clientName = model.properties.clientName;\n });\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n displayTimePropertyDescription = model.getPropertyDescription('displayTime');\n\n model.defineOutput('sensorReading', defaultSensorReadingDescription, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('sensorReading2', defaultSensorReadingDescription, function() {\n if (rawSensorValue2 == null) {\n return rawSensorValue2;\n }\n return rawSensorValue2 - model.properties.tareValue2;\n });\n\n /* Need custom implementation of duration options, because we don't use playbackSupport\n (and playbackSupport's implementation is designed for simulation models that have a\n fixed time per tick */\n\n model.defineOutput('durationOptions', {}, function() {\n return [1, 5, 10, 15, 20, 30, 45, 60];\n });\n\n model.formatTime = function(time) {\n return displayTimePropertyDescription.format(time);\n };\n\n model.defineOutput('actualUseDuration', {}, labModelerMixin.computeActualUseDuration);\n\n model.defineOutput('actualDuration', {\n label: \"Experiment duration\",\n unitType: 'time',\n format: 'f'\n }, labModelerMixin.computeActualDuration);\n\n // Because sensorReading updates are batched and delivered much later than the live sensor value\n // from the sensor status response, we define a separate liveSensorReading output that can be\n // updated every time the status is polled.\n model.defineOutput('liveSensorReading', defaultSensorReadingDescription, function() {\n if (liveSensorValue == null) {\n return liveSensorValue;\n }\n return liveSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('liveSensorReading2', defaultSensorReadingDescription, function() {\n if (liveSensorValue2 == null) {\n return liveSensorValue2;\n }\n return liveSensorValue2 - model.properties.tareValue2;\n });\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorName;\n });\n\n model.defineOutput('sensorName2', {\n label: \"2nd Sensor Name\"\n }, function() {\n return sensorName2;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isPlayable;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return stepCounter > 0;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return canTare && isSensorTareable;\n });\n\n model.defineOutput('canTare2', {\n label: \"Can set a tare value?\"\n }, function() {\n return canTare2 && isSensorTareable2;\n });\n\n model.defineOutput('canControl', {\n label: \"Can remotely start/stop the Sensor Connector?\"\n }, function() {\n return canControl;\n });\n\n model.defineOutput('hasMultipleSensors', {\n label: \"Are multiple sensors connected to the Sensor Connector?\"\n }, function() {\n return hasMultipleSensors;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n model.defineOutput('message', {\n label: \"User Message\"\n }, function() {\n return message;\n });\n\n // set in setupModelObservers() in controller.js\n model.defineParameter('isNewRunInProgress', {\n initialValue: false\n });\n\n // Clean up state before we go\n // TODO\n model.on('willReset.model', function() {\n sensorConnectorInterface.stopPolling();\n if (sensorConnectorInterface.isCollecting) {\n sensorConnectorInterface.requestStop();\n }\n });\n\n model.addObserver('actualDuration', updateDisplayTimeRange);\n updateDisplayTimeRange();\n\n model.updateAllOutputProperties();\n stateMachine.gotoState('notConnected');\n\n return model;\n};\n","import NumericOutputView from 'common/views/numeric-output-view';\nimport BasicDialog from 'common/controllers/basic-dialog';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport viewState from 'common/views/view-state';\n\n\nexport default function(model, modelUrl, i18n) {\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView;\n var sensorReadingView2;\n var view;\n\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setCanTare2State() {\n if (model.properties.canTare2) {\n viewState.enableView(view.$zeroButton2);\n } else {\n viewState.disableView(view.$zeroButton2);\n }\n }\n\n function setCanConnectState() {\n // if (model.properties.canConnect) {\n // viewState.enableView(view.$connectButton);\n // } else {\n // viewState.disableView(view.$connectButton);\n // }\n }\n\n function setHasMultipleSensorsState() {\n if (model.properties.hasMultipleSensors && model.properties.isPlayable) {\n viewState.enableView(view.$selectSensorButton);\n viewState.enableView(view.$selectSensorButton2);\n } else {\n viewState.disableView(view.$selectSensorButton);\n viewState.disableView(view.$selectSensorButton2);\n }\n }\n\n function setMessageText() {\n view.$message.html(model.properties.message);\n }\n\n function setupModelObservers() {\n model.addObserver('canTare', setCanTareState);\n model.addObserver('canTare2', setCanTare2State);\n setCanTareState();\n setCanTare2State();\n\n model.addObserver('canConnect', setCanConnectState);\n setCanConnectState();\n\n model.addObserver('hasMultipleSensors', setHasMultipleSensorsState);\n model.addObserver('isPlayable', setHasMultipleSensorsState);\n setHasMultipleSensorsState();\n\n model.addObserver('message', setMessageText);\n setMessageText();\n }\n\n function chooseSensorPopup1() {\n chooseSensorPopup(false);\n }\n\n function chooseSensorPopup2() {\n chooseSensorPopup(true);\n }\n\n function chooseSensorPopup(second) {\n second = second || false;\n var dialog = new BasicDialog({\n width: \"60%\",\n dialogClass: 'interactive-dialog no-close',\n closeOnEscape: false,\n title: i18n.t(\"sensor.choose_sensor_title\"),\n buttons: {\n OK: function() {\n console.log(\"OK Clicked\");\n $(this).dialog(\"close\");\n // Change the model's selected sensor\n if (second) {\n model.setSelectedSensor2($(this).find('input:checked').val());\n } else {\n model.setSelectedSensor($(this).find('input:checked').val());\n }\n },\n Cancel: function() {\n console.log(\"Cancel Clicked\");\n $(this).dialog(\"close\");\n }\n }\n }, i18n);\n var content = \"\",\n label = \"\",\n sensors = model.connectedSensors(),\n first = true,\n selectedSensor = (second ? model.getSelectedSensor2() : model.getSelectedSensor()),\n i, checked, sensorDef;\n for (i = 0; i < sensors.length; i++) {\n if (sensors[i].units !== 's') {\n checked = \"\";\n if (sensors[i].name) {\n sensorDef = {\n measurementName: sensors[i].name\n };\n } else {\n sensorDef = sensorDefinitions[sensors[i].units];\n if (!sensorDef) {\n sensorDef = {\n measurementName: \"Unknown\"\n };\n }\n }\n label = sensorDef.measurementName + \" (\" + sensors[i].units + \")\";\n if (selectedSensor == i || (first && selectedSensor == -1)) {\n checked = \"checked \";\n };\n content += \"\" + label + \"
\";\n first = false;\n }\n }\n dialog.setContent(content);\n dialog.open();\n }\n\n return view = {\n $el: $(\"
\"),\n remoteAddress: null,\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"2.8em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n view.$el.empty();\n view.$controlsContainer = $(\"
\");\n view.$statusContainer = $(\"
\");\n // view.$addressInput = $(\"
\");\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n sensorReadingView2 = new NumericOutputView({\n id: 'sensor-value-view-2',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading2').getUnitAbbreviation()\n });\n\n // view.$connectButton = $(\"
\");\n view.$zeroButton = $(\"
\");\n view.$zeroButton2 = $(\"
\");\n view.$selectSensorButton = $(\"
\");\n view.$selectSensorButton2 = $(\"
\");\n view.$message = $(\"
\");\n view.$sensorReading = sensorReadingView.render().addClass(\"horizontal\");\n view.$sensorReading2 = sensorReadingView2.render().addClass(\"horizontal\");\n\n view.$controlsContainer\n // .append(view.$addressInput)\n // .append(view.$connectButton)\n .append(view.$sensorReading)\n .append(view.$zeroButton)\n .append(view.$selectSensorButton)\n .append(view.$sensorReading2)\n .append(view.$zeroButton2)\n .append(view.$selectSensorButton2);\n\n view.$statusContainer\n .append(view.$message);\n\n view.$el.css('zIndex', 4)\n .append(view.$controlsContainer)\n .append(view.$statusContainer);\n\n view.$controlsContainer.find('div').addClass('component component-spacing');\n view.$statusContainer.find('div').addClass('component component-spacing');\n\n sensorReadingView.resize();\n sensorReadingView2.resize();\n setupModelObservers();\n\n // if (typeof(view.remoteAddress) == \"string\") {\n // view.$addressInput.find('input').val(view.remoteAddress);\n // }\n // view.$addressInput.find('input').on('change', function() {\n // view.remoteAddress = $(this).val();\n // });\n\n // view.$connectButton.on('click', 'button', function() {\n // model.connect(view.$addressInput.find('input').val());\n // });\n view.$zeroButton.on('click', 'button', model.tare);\n view.$zeroButton2.on('click', 'button', model.tare2);\n view.$selectSensorButton.on('click', 'button', chooseSensorPopup1);\n view.$selectSensorButton2.on('click', 'button', chooseSensorPopup2);\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n if (sensorReadingView2) {\n sensorReadingView2.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n updateUnits2: function(units) {\n sensorReadingView2.updateUnits(units);\n if (model.properties.liveSensorReading2 == null) {\n sensorReadingView2.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.liveSensorReading));\n sensorReadingView.showUnits();\n }\n if (model.properties.liveSensorReading2 == null) {\n sensorReadingView2.update(\"\");\n sensorReadingView2.hideUnits();\n } else {\n sensorReadingView2.update(format(model.properties.liveSensorReading2));\n sensorReadingView2.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Dual Sensor Connector scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function DualSensorConnectorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from './modeler';\nimport ModelContainer from './view';\nimport ScriptingAPI from './scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('liveSensorReading', function() {\n controller.updateView();\n });\n\n model.addObserver('liveSensorReading2', function() {\n controller.updateView();\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n\n model.addPropertyDescriptionObserver('sensorReading2', function() {\n var description = model.getPropertyDescription('sensorReading2');\n var view = controller.modelContainer;\n\n view.updateUnits2(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.dual-sensor-connector-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.dual-sensor-connector-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n controller.model.willReset();\n });\n\n return controller;\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"sensor-connector\",\n immutable: true\n },\n sensorType: {\n defaultValue: null\n },\n tareValue: {\n defaultValue: 0\n },\n clientId: {\n defaultValue: null\n },\n clientName: {\n defaultValue: null\n },\n useRandomClientId: {\n defaultValue: false\n },\n useDuration: {\n defaultValue: 'codap',\n storeInTickHistory: false,\n validate: function(value) {\n if (value === true || value === false || value === 'codap') {\n return value;\n }\n throw new Error(\"Invalid 'useDuration' value: \" + value);\n },\n },\n requestedDuration: {\n defaultValue: 10,\n storeInTickHistory: false\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","export default {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n }\n }\n};\n"," \nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport PropertyDescription from 'common/property-description';\nimport metadata from './metadata';\nimport StateMachine from 'common/state-machine';\nimport SensorConnectorInterface from 'sensor-connector-interface';\nimport unitsDefinition from './units-definition';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport Notifier from 'models/sensor-common/notifier';\n\n\nexport default function Model(initialProperties, opt) {\n var i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n labModelerMixin,\n propertySupport,\n dispatch,\n stateMachine,\n sensorConnectorInterface,\n timeColumn,\n dataColumn,\n selectedSensor,\n sensorName,\n isStopped,\n needsReload,\n time,\n rawSensorValue,\n liveSensorValue,\n stepCounter,\n isPlayable,\n canTare,\n canControl,\n hasMultipleSensors,\n isSensorTareable,\n message,\n statusDialog,\n statusErrors,\n displayTimePropertyDescription,\n model;\n\n var defaultSensorReadingDescription = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 10\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function updatePropertyRange(property, min, max) {\n var descriptionHash;\n var description;\n\n descriptionHash = model.getPropertyDescription(property).getHash();\n descriptionHash.min = min;\n descriptionHash.max = max;\n\n description = new PropertyDescription(unitsDefinition, descriptionHash);\n propertySupport.setPropertyDescription(property, description);\n }\n\n // Updates min, max of displayTime to be [0..actualDuration]\n function updateDisplayTimeRange() {\n if (model.properties.actualDuration === null || model.properties.actualDuration === Infinity) {\n return;\n }\n updatePropertyRange('displayTime', 0, model.properties.actualDuration);\n }\n\n function setSensorReadingDescription() {\n var sensorDefinition;\n var description;\n\n if (dataColumn) {\n sensorDefinition = sensorDefinitions[dataColumn.units];\n\n if (sensorDefinition) {\n description = {\n label: sensorDefinition.measurementName,\n format: '.2f',\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n };\n if (unitsDefinition.units[sensorDefinition.measurementType]) {\n description.unitType = sensorDefinition.measurementType;\n } else {\n description.unitAbbreviation = dataColumn.units;\n }\n isSensorTareable = sensorDefinition.tareable;\n sensorName = sensorDefinition.sensorName || (dataColumn.units + \" sensor\");\n } else {\n description = {\n label: dataColumn.name || i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: dataColumn.units,\n format: '.2f',\n min: 0,\n max: 10\n };\n isSensorTareable = true;\n sensorName = dataColumn.units + \" sensor\";\n }\n } else {\n description = defaultSensorReadingDescription;\n isSensorTareable = false;\n sensorName = \"(no sensor)\";\n }\n\n propertySupport.setPropertyDescription('sensorReading',\n new PropertyDescription(unitsDefinition, description));\n propertySupport.setPropertyDescription('liveSensorReading',\n new PropertyDescription(unitsDefinition, description));\n }\n\n function initializeStateVariables() {\n isStopped = true;\n canControl = sensorConnectorInterface.canControl;\n hasMultipleSensors = false;\n // Set selectedSensor if it hasn't been set yet\n if (typeof(selectedSensor) === \"undefined\" || selectedSensor === null) {\n selectedSensor = {\n index: 1\n };\n }\n stepCounter = 0;\n time = 0;\n statusErrors = 0;\n rawSensorValue = undefined;\n liveSensorValue = undefined;\n timeColumn = undefined;\n dataColumn = undefined;\n }\n\n function checkColumnAgainstSelected(dataset, idx) {\n var colCandidate = dataset.columns[idx];\n if (colCandidate && colCandidate.units === selectedSensor.units) {\n selectedSensor.index = idx;\n return true;\n }\n return false;\n }\n\n function hasCollectableSensors(dataset) {\n if (dataset.columns.length < 2) {\n return false;\n }\n if (dataset.columns.length === 2 && !dataset.columns[1].name && !dataset.columns[1].units) {\n return false;\n }\n return true;\n }\n\n function setColumn() {\n var dataset = sensorConnectorInterface.datasets[0];\n var newDataColumn, sIdx;\n\n hasMultipleSensors = dataset.columns.length > 2;\n\n // The sensor connector always has column 0 as time\n timeColumn = dataset.columns[0];\n if (sensorConnectorInterface.hasAttachedInterface) {\n if (hasCollectableSensors(dataset)) {\n if (canControl) {\n message = i18n.t(\"sensor.messages.ready\");\n } else if (sensorConnectorInterface.inControl.clientName) {\n message = i18n.t(\"sensor.messages.ready_nocontrol\", {\n controlling_client: sensorConnectorInterface.inControl.clientName\n });\n } else {\n message = i18n.t(\"sensor.messages.ready_nocontrol_noname\");\n }\n isPlayable = true;\n } else {\n message = i18n.t(\"sensor.messages.no_sensors\");\n isPlayable = false;\n }\n\n // TODO When we want to support multiple sensors, this will have to change.\n // Select the column chosen by the user\n sIdx = selectedSensor.index;\n if (sIdx >= dataset.columns.length && dataset.columns.length > 1) {\n // we seem to be pointing past the number of columns there are. reset to that last column.\n sIdx = dataset.columns.length - 1;\n }\n newDataColumn = dataset.columns[sIdx];\n if (newDataColumn && selectedSensor.units && newDataColumn.units !== selectedSensor.units) {\n // our selected column seems to have changed out from under us.\n // If a sensor was added to the device, it could be one column higher\n if (checkColumnAgainstSelected(dataset, sIdx + 1)) {\n newDataColumn = dataset.columns[sIdx + 1];\n } else if (sIdx > 1 && checkColumnAgainstSelected(dataset, sIdx - 1)) {\n // it wasn't the one after. let's check the one before.\n newDataColumn = dataset.columns[sIdx - 1];\n } else {\n // it seems to be none of them. Reset the selected sensor to the first one.\n newDataColumn = dataset.columns[1];\n selectedSensor.index = 1;\n }\n }\n } else {\n message = i18n.t(\"sensor.messages.no_devices\");\n isPlayable = false;\n }\n\n if (newDataColumn && !newDataColumn.name && !newDataColumn.units) {\n // If we don't have a sensor name and units, assume it's not really a sensor\n newDataColumn = null;\n }\n\n dataColumn = newDataColumn;\n if (dataColumn) {\n selectedSensor.units = dataColumn.units;\n }\n setSensorReadingDescription();\n\n if (!dataColumn) {\n liveSensorValue = undefined;\n }\n }\n\n function handleData() {\n if (!timeColumn || !dataColumn) {\n return;\n }\n\n var numberOfValues = Math.min(timeColumn.data.length, dataColumn.data.length);\n for (; stepCounter < numberOfValues; stepCounter++) {\n time = timeColumn.data[stepCounter];\n\n if (time > model.properties.actualDuration) {\n // Stop, but continue to process any data received (if for no other reason than that\n // subsequent steps aren't happy until data up to the latest timestamp was received)\n model.stop();\n }\n rawSensorValue = dataColumn.data[stepCounter];\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n }\n\n function isAllColumnDataReceieved(column) {\n return column.receivedValuesTimeStamp >= column.requestedValuesTimeStamp;\n }\n\n function isAllDataReceived() {\n return isAllColumnDataReceieved(timeColumn) && (!dataColumn || isAllColumnDataReceieved(dataColumn));\n }\n\n function connectedSensors() {\n var sensors = [],\n dataset = sensorConnectorInterface.datasets[0],\n i;\n\n for (i = 0; i < dataset.columns.length; i++) {\n sensors.push({\n units: dataset.columns[i].units,\n name: dataset.columns[i].name\n });\n }\n return sensors;\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n start: function() {\n handle('start');\n },\n\n stop: function() {\n handle('stop');\n },\n\n tare: function() {\n var oldPlayable = isPlayable;\n isPlayable = false;\n handle('tare');\n isPlayable = oldPlayable;\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n handle('reset');\n },\n\n reload: function() {\n model.stop();\n model.makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n connectedSensors: connectedSensors,\n getSelectedSensor: function() {\n return selectedSensor.index;\n },\n setSelectedSensor: function(sensorIndex) {\n if (selectedSensor.index != sensorIndex) {\n selectedSensor.index = sensorIndex;\n selectedSensor.units = null;\n model.properties.tareValue = 0; // Also reset our tare value\n setColumn();\n }\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n\n stateMachine = new StateMachine({\n\n notConnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.not_connected\");\n statusErrors = 0;\n // use https if possible, fall back to http if necessary\n sensorConnectorInterface.startPolling([\n \"https://localhost:11181\", \"https://127.0.0.1:11181\",\n \"http://localhost:11180\", \"http://127.0.0.1:11180\"],\n model.properties.clientId, model.properties.clientName);\n this.gotoState('connecting');\n }\n },\n\n connecting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connecting\");\n if (sensorConnectorInterface.isConnected) {\n this.gotoState('connected');\n } else {\n statusDialog = notifier.status(i18n.t(\"sensor.messages.connection_in_progress\"), {\n dialogClass: 'interactive-dialog no-close'\n });\n }\n },\n\n leaveState: function() {\n if (statusDialog) {\n statusDialog.close();\n statusDialog = null;\n }\n },\n\n statusErrored: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n connectionTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n launchTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n statusReceived: function() {\n this.gotoState('connected');\n },\n\n sessionChanged: function() {\n // start a new session, stay connecting...\n sensorConnectorInterface.stopPolling();\n sensorConnectorInterface.startPolling();\n }\n },\n\n initialConnectionFailure: {\n enterState: function() {\n sensorConnectorInterface.stopPolling();\n message = i18n.t(\"sensor.messages.connection_failed\", {\n retry_link: \"\"\n });\n var dialog_msg = \"sensor.messages.connection_failed_alert\";\n notifier.alert(i18n.t(dialog_msg, {\n click_here_link: \"\" +\n i18n.t(\"sensor.messages.click_here\") + \"\"\n }), {\n \"Try again\": function() {\n $(this).dialog(\"close\");\n handle('dismiss');\n }\n }, {\n close: function() {\n handle('closed');\n }\n });\n },\n\n // Ignore these in this state\n statusErrored: function() {},\n connectionTimedOut: function() {},\n launchTimedOut: function() {},\n\n closed: function() {\n message = i18n.t(\"sensor.messages.connection_failed\", {\n retry_link: \"\" + i18n.t(\"sensor.messages.connection_failed_retry_link_text\") + \"\"\n });\n // AU: This is kind of ugly and obnoxious, but I was having trouble getting the right context when embedding code directly into the href itself.\n var tryAttachingHandler = function() {\n var links = $('a.retry-link');\n if (links[0]) {\n links.click(function() {\n handle('dismiss');\n });\n } else {\n setTimeout(tryAttachingHandler, 50);\n }\n };\n tryAttachingHandler();\n },\n\n dismiss: function() {\n this.gotoState('notConnected');\n }\n },\n\n connected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connected\");\n canTare = true;\n isPlayable = true;\n isStopped = true;\n\n setColumn();\n\n if (canControl) {\n this.controlEnabled();\n } else {\n this.controlDisabled();\n }\n\n if (sensorConnectorInterface.isCollecting) {\n this.gotoState('started');\n }\n },\n\n leaveState: function() {\n canTare = false;\n isPlayable = false;\n },\n\n // Give some feedback on the currently selected column from which data will be collected.\n columnAdded: setColumn,\n columnRemoved: setColumn,\n columnTypeChanged: setColumn,\n columnMoved: setColumn,\n\n interfaceConnected: setColumn,\n interfaceRemoved: setColumn,\n\n tare: function() {\n if (dataColumn) {\n model.properties.tareValue = dataColumn.liveValue;\n }\n },\n\n // User requests collection\n start: function() {\n // NOTE. Due to architecture switch mid-way, the sensorConnectorInterface layer is turning the\n // start request into a promise, and we're turning it back to events. The lower layer\n // could just ditch promises and emit the corresponding events with no harm. (The state\n // machine prevents almost every practical scenario where we'd see an out-of-date\n // startRequestFailure event while in a state that would respond to it.)\n sensorConnectorInterface.requestStart().catch(function() {\n handle('startRequestFailed');\n });\n this.gotoState('starting');\n },\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.connected\");\n },\n\n controlDisabled: function() {\n if (sensorConnectorInterface.inControl.clientName) {\n message = i18n.t(\"sensor.messages.connected_start_sensorconnector\", {\n controlling_client: sensorConnectorInterface.inControl.clientName\n });\n } else {\n message = i18n.t(\"sensor.messages.connected_start_sensorconnector_noname\");\n }\n },\n\n sessionChanged: function() {\n sensorConnectorInterface.stopPolling();\n sensorConnectorInterface.startPolling();\n this.gotoState('connecting');\n },\n\n // Collection was started by a third party\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n starting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.starting_data_collection\");\n isStopped = false;\n var self = this;\n this._startTimerId = setTimeout(5000, function() {\n self.gotoState('startRequestFailed');\n });\n },\n\n leaveState: function() {\n clearTimeout(this._startTimerId);\n },\n\n startRequestFailed: function() {\n this.gotoState('errorStarting');\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n errorStarting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_starting_data_collection\");\n isStopped = true;\n\n notifier.alert(i18n.t(\"sensor.messages.error_starting_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStarting');\n }\n });\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n },\n\n dismissErrorStarting: function() {\n this.gotoState('connected');\n }\n },\n\n started: {\n enterState: function() {\n isStopped = false;\n setColumn();\n isPlayable = false;\n if (canControl) {\n message = i18n.t(\"sensor.messages.collecting_data\");\n } else {\n message = i18n.t(\"sensor.messages.collecting_data_stop_sensorconnector\");\n }\n\n // Check, just in case. Specifically, when errorStopping transitions here, collection\n // might have stopped in the meantime.\n if (!sensorConnectorInterface.isCollecting) {\n this.gotoState('stopped');\n }\n\n if (!dataColumn) {\n this.gotoState('startedWithNoDataColumn');\n }\n },\n\n data: handleData,\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data\");\n },\n\n controlDisabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data_stop_sensorconnector\");\n },\n\n stop: function() {\n sensorConnectorInterface.requestStop().catch(function() {\n handle('stopRequestFailed');\n });\n this.gotoState('stopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n // This can happen.\n startedWithNoDataColumn: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.no_data\");\n\n sensorConnectorInterface.requestStop();\n notifier.alert(i18n.t(\"sensor.messages.no_data_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n }\n });\n },\n\n collectionStopped: function() {\n this.gotoState('stoppedWithNoDataColumn');\n }\n },\n\n stoppedWithNoDataColumn: {\n enterState: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n },\n\n data: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n }\n },\n\n stopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.stopping_data_collection\");\n },\n\n data: handleData,\n\n stopRequestFailed: function() {\n this.gotoState('errorStopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n errorStopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_stopping_data_collection\");\n notifier.alert(i18n.t(\"sensor.messages.error_stopping_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStopping');\n }\n });\n },\n\n data: handleData,\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n },\n\n dismissErrorStopping: function() {\n this.gotoState('started');\n }\n },\n\n // The device reports the stop of data collection before all data can be received.\n collectionStopped: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_stopped\");\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n },\n\n data: function() {\n handleData();\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n }\n },\n\n collectionComplete: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_complete\");\n isStopped = true;\n dispatch.stop();\n },\n\n reset: function() {\n initializeStateVariables();\n setSensorReadingDescription();\n this.gotoState('connecting');\n dispatch.reset();\n }\n },\n\n disconnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.disconnected\");\n sensorConnectorInterface.stopPolling();\n var self = this;\n setTimeout(function() {\n self.gotoState('notConnected');\n }, 2000);\n }\n }\n });\n\n // Automatically wrap all event handlers invocations with makeInvalidatingChange so that\n // outputs update from closure variable state automatically.\n function handle(eventName) {\n var args = Array.prototype.slice.call(arguments, 0);\n\n model.makeInvalidatingChange(function() {\n var handled = stateMachine.handleEvent.apply(stateMachine, args);\n\n if (!handled) {\n // special handling of any events not handled by the current state:\n if (eventName === 'connectionTimedOut') {\n stateMachine.gotoState('disconnected');\n } else if (eventName === 'sessionChanged') {\n sensorConnectorInterface.stopPolling();\n stateMachine.gotoState('disconnected');\n } else if (eventName === 'statusErrored') {\n stateMachine.gotoState('initialConnectionFailure');\n }\n }\n });\n }\n\n sensorConnectorInterface = new SensorConnectorInterface();\n\n // At least for now, dispatch every interface event to the state machine.\n sensorConnectorInterface.on('*', function() {\n var args = Array.prototype.slice.call(arguments, 0);\n handle.apply(null, [this.event].concat(args));\n });\n\n // Also, handle \"live values\" every time they are received.\n sensorConnectorInterface.on('statusReceived', function() {\n if (dataColumn) {\n model.makeInvalidatingChange(function() {\n liveSensorValue = dataColumn.liveValue;\n });\n }\n });\n\n sensorConnectorInterface.on('controlEnabled', function() {\n canControl = true;\n });\n\n sensorConnectorInterface.on('controlDisabled', function() {\n canControl = false;\n });\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: {},\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n propertySupport = labModelerMixin.propertySupport;\n dispatch = labModelerMixin.dispatchSupport;\n dispatch.addEventTypes(\"tick\", \"play\", \"stop\", \"tickStart\", \"tickEnd\");\n\n labModelerMixin.mixInto(model);\n\n initializeStateVariables();\n\n if (model.properties.useRandomClientId) {\n model.properties.clientId = Math.floor((1 + Math.random()) * 0x100000000).toString(16); // a 9-digit hex string that always starts with 1\n }\n\n model.addObserver('clientName', function() {\n sensorConnectorInterface.clientName = model.properties.clientName;\n });\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.1f'\n }, function() {\n return time;\n });\n\n displayTimePropertyDescription = model.getPropertyDescription('displayTime');\n\n model.defineOutput('sensorReading', defaultSensorReadingDescription, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n /* Need custom implementation of duration options, because we don't use playbackSupport\n (and playbackSupport's implementation is designed for simulation models that have a\n fixed time per tick */\n\n model.defineOutput('durationOptions', {}, function() {\n return [1, 5, 10, 15, 20, 30, 45, 60];\n });\n\n model.formatTime = function(time) {\n return displayTimePropertyDescription.format(time);\n };\n\n model.defineOutput('actualUseDuration', {}, labModelerMixin.computeActualUseDuration);\n\n model.defineOutput('actualDuration', {\n label: \"Experiment duration\",\n unitType: 'time',\n format: 'f'\n }, labModelerMixin.computeActualDuration);\n\n // Because sensorReading updates are batched and delivered much later than the live sensor value\n // from the sensor status response, we define a separate liveSensorReading output that can be\n // updated every time the status is polled.\n model.defineOutput('liveSensorReading', defaultSensorReadingDescription, function() {\n if (liveSensorValue == null) {\n return liveSensorValue;\n }\n return liveSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorName;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isPlayable;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return stepCounter > 0;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return canTare && isSensorTareable;\n });\n\n model.defineOutput('canControl', {\n label: \"Can remotely start/stop the Sensor Connector?\"\n }, function() {\n return canControl;\n });\n\n model.defineOutput('hasMultipleSensors', {\n label: \"Are multiple sensors connected to the Sensor Connector?\"\n }, function() {\n return hasMultipleSensors;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n model.defineOutput('message', {\n label: \"User Message\"\n }, function() {\n return message;\n });\n\n // set in setupModelObservers() in controller.js\n model.defineParameter('isNewRunInProgress', {\n initialValue: false\n });\n\n // Clean up state before we go\n // TODO\n model.on('willReset.model', function() {\n sensorConnectorInterface.stopPolling();\n if (sensorConnectorInterface.isCollecting) {\n sensorConnectorInterface.requestStop();\n }\n });\n\n model.addObserver('actualDuration', updateDisplayTimeRange);\n updateDisplayTimeRange();\n\n model.updateAllOutputProperties();\n stateMachine.gotoState('notConnected');\n\n return model;\n};\n","import NumericOutputView from 'common/views/numeric-output-view';\nimport BasicDialog from 'common/controllers/basic-dialog';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport viewState from 'common/views/view-state';\n\n\nexport default function(model, modelUrl, i18n) {\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView;\n var view;\n\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setCanConnectState() {\n // if (model.properties.canConnect) {\n // viewState.enableView(view.$connectButton);\n // } else {\n // viewState.disableView(view.$connectButton);\n // }\n }\n\n function setHasMultipleSensorsState() {\n if (model.properties.hasMultipleSensors && model.properties.isPlayable) {\n viewState.enableView(view.$selectSensorButton);\n } else {\n viewState.disableView(view.$selectSensorButton);\n }\n }\n\n function setMessageText() {\n view.$message.html(model.properties.message);\n }\n\n function setupModelObservers() {\n model.addObserver('canTare', setCanTareState);\n setCanTareState();\n\n model.addObserver('canConnect', setCanConnectState);\n setCanConnectState();\n\n model.addObserver('hasMultipleSensors', setHasMultipleSensorsState);\n model.addObserver('isPlayable', setHasMultipleSensorsState);\n setHasMultipleSensorsState();\n\n model.addObserver('message', setMessageText);\n setMessageText();\n }\n\n function chooseSensorPopup() {\n var dialog = new BasicDialog({\n width: \"60%\",\n dialogClass: 'interactive-dialog no-close',\n closeOnEscape: false,\n title: i18n.t(\"sensor.choose_sensor_title\"),\n buttons: {\n OK: function() {\n console.log(\"OK Clicked\");\n $(this).dialog(\"close\");\n // Change the model's selected sensor\n model.setSelectedSensor($(this).find('input:checked').val());\n },\n Cancel: function() {\n console.log(\"Cancel Clicked\");\n $(this).dialog(\"close\");\n }\n }\n }, i18n);\n var content = \"\",\n label = \"\",\n sensors = model.connectedSensors(),\n first = true,\n selectedSensor = model.getSelectedSensor(),\n i, checked, sensorDef;\n for (i = 0; i < sensors.length; i++) {\n if (sensors[i].units !== 's') {\n checked = \"\";\n if (sensors[i].name) {\n sensorDef = {\n measurementName: sensors[i].name\n };\n } else {\n sensorDef = sensorDefinitions[sensors[i].units];\n if (!sensorDef) {\n sensorDef = {\n measurementName: \"Unknown\"\n };\n }\n }\n label = sensorDef.measurementName + \" (\" + sensors[i].units + \")\";\n if (selectedSensor == i || (first && selectedSensor == -1)) {\n checked = \"checked \";\n };\n content += \"\" + label + \"
\";\n first = false;\n }\n }\n dialog.setContent(content);\n dialog.open();\n }\n\n return view = {\n $el: $(\"
\"),\n remoteAddress: null,\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"2.8em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n view.$el.empty();\n view.$controlsContainer = $(\"
\");\n view.$statusContainer = $(\"
\");\n // view.$addressInput = $(\"
\");\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n\n // view.$connectButton = $(\"
\");\n view.$zeroButton = $(\"
\");\n view.$selectSensorButton = $(\"
\");\n view.$message = $(\"
\");\n view.$sensorReading = sensorReadingView.render().addClass(\"horizontal\");\n\n view.$controlsContainer\n // .append(view.$addressInput)\n // .append(view.$connectButton)\n .append(view.$sensorReading)\n .append(view.$zeroButton)\n .append(view.$selectSensorButton);\n\n view.$statusContainer\n .append(view.$message);\n\n view.$el.css('zIndex', 4)\n .append(view.$controlsContainer)\n .append(view.$statusContainer);\n\n view.$controlsContainer.find('div').addClass('component component-spacing');\n view.$statusContainer.find('div').addClass('component component-spacing');\n\n sensorReadingView.resize();\n setupModelObservers();\n\n // if (typeof(view.remoteAddress) == \"string\") {\n // view.$addressInput.find('input').val(view.remoteAddress);\n // }\n // view.$addressInput.find('input').on('change', function() {\n // view.remoteAddress = $(this).val();\n // });\n\n // view.$connectButton.on('click', 'button', function() {\n // model.connect(view.$addressInput.find('input').val());\n // });\n view.$zeroButton.on('click', 'button', model.tare);\n view.$selectSensorButton.on('click', 'button', chooseSensorPopup);\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.liveSensorReading));\n sensorReadingView.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function SensorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from './modeler';\nimport ModelContainer from './view';\nimport ScriptingAPI from './scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('liveSensorReading', function() {\n controller.updateView();\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.sensor-connector-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.sensor-connector-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n controller.model.willReset();\n });\n\n return controller;\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"labquest2\",\n immutable: true\n },\n sensorType: {\n defaultValue: null\n },\n tareValue: {\n defaultValue: 0\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","export default {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n },\n distance: {\n name: \"meter\",\n pluralName: \"meters\",\n symbol: \"m\"\n },\n temperature: {\n name: \"degree Celsius\",\n pluaralName: \"degrees Celsius\",\n symbol: \"°C\"\n },\n light: {\n name: \"lux\",\n pluralName: \"lux\",\n symbol: \"lux\"\n },\n force: {\n name: \"Newton\",\n pluralName: \"Newtons\",\n symbol: \"N\"\n },\n ph: {\n name: \"pH Unit\",\n pluralName: \"pH Units\",\n symbol: \"pH\"\n },\n co2: {\n name: \"part per million\",\n pluralName: \"parts per million\",\n symbol: \"ppm\"\n },\n o2: {\n name: \"part per million\",\n pluralName: \"parts per million\",\n symbol: \"ppm\"\n }\n }\n};\n"," \nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport PropertyDescription from 'common/property-description';\nimport metadata from './metadata';\nimport StateMachine from 'common/state-machine';\nimport labquest2Interface from 'labquest2-interface';\nimport unitsDefinition from './units-definition';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport Notifier from 'models/sensor-common/notifier';\nimport _ from 'underscore';\n\n\nexport default function Model(initialProperties, opt) {\n var i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n labModelerMixin,\n propertySupport,\n dispatch,\n stateMachine,\n timeColumn,\n dataColumn,\n selectedSensor,\n sensorName,\n isStopped,\n needsReload,\n time,\n rawSensorValue,\n liveSensorValue,\n lastLiveValueTimestamp,\n liveValueLastChanged,\n stepCounter,\n isPlayable,\n canConnect,\n canTare,\n liveMode,\n canControl,\n hasMultipleSensors,\n isSensorTareable,\n message,\n model;\n\n var defaultSensorReadingDescription = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 10\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function setSensorReadingDescription() {\n var sensorDefinition;\n var description;\n\n if (dataColumn) {\n sensorDefinition = sensorDefinitions[dataColumn.units];\n\n if (sensorDefinition) {\n description = {\n label: sensorDefinition.measurementName,\n format: '.2f',\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n };\n if (unitsDefinition.units[sensorDefinition.measurementType]) {\n description.unitType = sensorDefinition.measurementType;\n } else {\n description.unitAbbreviation = dataColumn.units;\n }\n isSensorTareable = sensorDefinition.tareable;\n sensorName = sensorDefinition.sensorName;\n } else {\n description = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: dataColumn.units,\n format: '.2f',\n min: 0,\n max: 10\n };\n isSensorTareable = true;\n sensorName = dataColumn.units + \" sensor\";\n }\n } else {\n description = defaultSensorReadingDescription;\n isSensorTareable = false;\n sensorName = \"(no sensor)\";\n }\n\n propertySupport.setPropertyDescription('sensorReading',\n new PropertyDescription(unitsDefinition, description));\n propertySupport.setPropertyDescription('liveSensorReading',\n new PropertyDescription(unitsDefinition, description));\n }\n\n function initializeStateVariables() {\n isStopped = true;\n canConnect = false;\n canControl = labquest2Interface.canControl;\n hasMultipleSensors = false;\n // Set selectedSensor if it hasn't been set yet\n if (typeof(selectedSensor) === \"undefined\" || selectedSensor === null) {\n selectedSensor = {\n index: -1\n };\n }\n stepCounter = 0;\n time = 0;\n rawSensorValue = undefined;\n liveSensorValue = undefined;\n lastLiveValueTimestamp = 0;\n liveValueLastChanged = 0;\n timeColumn = undefined;\n dataColumn = undefined;\n }\n\n function checkColumnAgainstSelected(dataset, idx) {\n var colCandidate = dataset.columns[idx];\n if (colCandidate && colCandidate.units === selectedSensor.units) {\n selectedSensor.index = idx;\n return true;\n }\n return false;\n }\n\n function setColumn() {\n var dataset = labquest2Interface.datasets[0];\n var newDataColumn, sIdx, colCandidate;\n\n hasMultipleSensors = dataset.columns.length > 2;\n\n timeColumn = _.find(dataset.columns, function(column) {\n return column.units === 's';\n });\n\n // TODO When we want to support multiple sensors, this will have to change.\n // Select the column chosen by the user\n sIdx = selectedSensor.index;\n if (sIdx == -1) {\n newDataColumn = _.find(dataset.columns, function(column, idx) {\n if (column.units !== 's') {\n selectedSensor.index = idx;\n selectedSensor.units = column.units;\n sIdx = idx;\n return true;\n }\n return false;\n });\n }\n if (sIdx >= dataset.columns.length && dataset.columns.length > 1) {\n // we seem to be pointing past the number of columns there are. reset to that last column.\n sIdx = dataset.columns.length - 1;\n\n }\n newDataColumn = dataset.columns[sIdx];\n if (newDataColumn && selectedSensor.units && newDataColumn.units !== selectedSensor.units) {\n // our selected column seems to have changed out from under us.\n // If a sensor was added to the device, it could be one column higher\n if (checkColumnAgainstSelected(dataset, sIdx + 1)) {\n newDataColumn = dataset.columns[sIdx + 1];\n } else if (sIdx > 1 && checkColumnAgainstSelected(dataset, sIdx - 1)) {\n // it wasn't the one after. let's check the one before.\n newDataColumn = dataset.columns[sIdx - 1];\n } else {\n // it seems to be none of them. Reset the selected sensor to the first one.\n newDataColumn = _.find(dataset.columns, function(column, idx) {\n if (column.units !== 's') {\n selectedSensor.index = idx;\n selectedSensor.units = column.units;\n sIdx = idx;\n return true;\n }\n return false;\n });\n }\n }\n\n dataColumn = newDataColumn;\n if (dataColumn) {\n selectedSensor.units = dataColumn.units;\n }\n setSensorReadingDescription();\n\n if (!dataColumn) {\n liveSensorValue = undefined;\n }\n }\n\n function handleData() {\n if (!timeColumn || !dataColumn) {\n return;\n }\n\n var numberOfValues = Math.min(timeColumn.data.length, dataColumn.data.length);\n for (; stepCounter < numberOfValues; stepCounter++) {\n time = timeColumn.data[stepCounter];\n rawSensorValue = dataColumn.data[stepCounter];\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n }\n\n function isAllColumnDataReceieved(column) {\n return column.receivedValuesTimeStamp >= column.requestedValuesTimeStamp;\n }\n\n function isAllDataReceived() {\n return isAllColumnDataReceieved(timeColumn) && (!dataColumn || isAllColumnDataReceieved(dataColumn));\n }\n\n function connectedSensors() {\n var sensors = [],\n dataset = labquest2Interface.datasets[0],\n i, unit;\n\n for (i = 0; i < dataset.columns.length; i++) {\n sensors.push(dataset.columns[i].units);\n }\n return sensors;\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n connect: function(address) {\n handle('connect', address);\n },\n\n start: function() {\n handle('start');\n },\n\n stop: function() {\n handle('stop');\n },\n\n tare: function() {\n var oldPlayable = isPlayable;\n isPlayable = false;\n handle('tare');\n isPlayable = oldPlayable;\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n handle('reset');\n },\n\n reload: function() {\n model.stop();\n model.makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n connectedSensors: connectedSensors,\n getSelectedSensor: function() {\n return selectedSensor.index;\n },\n setSelectedSensor: function(sensorIndex) {\n if (selectedSensor.index !== sensorIndex) {\n selectedSensor.index = sensorIndex;\n selectedSensor.units = null;\n model.properties.tareValue = 0; // Also reset our tare value\n setColumn();\n }\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n\n stateMachine = new StateMachine({\n\n notConnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.not_connected\");\n canConnect = true;\n },\n\n leaveState: function() {\n canConnect = false;\n },\n\n connect: function(address) {\n labquest2Interface.startPolling(address);\n this.gotoState('connecting');\n }\n },\n\n connecting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connecting\");\n if (labquest2Interface.isConnected) {\n this.gotoState('connected');\n }\n },\n\n statusErrored: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n connectionTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n statusReceived: function() {\n this.gotoState('connected');\n },\n\n sessionChanged: function() {\n // start a new session, stay connecting...\n labquest2Interface.stopPolling();\n labquest2Interface.startPolling();\n }\n },\n\n initialConnectionFailure: {\n enterState: function() {\n labquest2Interface.stopPolling();\n message = i18n.t(\"sensor.messages.connection_failed\");\n notifier.alert(i18n.t(\"sensor.messages.connection_failed_labquest2_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismiss');\n }\n });\n },\n\n dismiss: function() {\n this.gotoState('notConnected');\n }\n },\n\n connected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connected\");\n canTare = true;\n isPlayable = true;\n isStopped = true;\n\n setColumn();\n\n if (canControl) {\n this.controlEnabled();\n } else {\n this.controlDisabled();\n }\n\n if (labquest2Interface.isCollecting) {\n this.gotoState('started');\n }\n },\n\n leaveState: function() {\n canTare = false;\n isPlayable = false;\n },\n\n // Give some feedback on the currently selected column from which data will be collected.\n columnAdded: setColumn,\n columnRemoved: setColumn,\n columnTypeChanged: setColumn,\n columnMoved: setColumn,\n\n tare: function() {\n if (dataColumn) {\n if (liveMode) {\n model.properties.tareValue = dataColumn.liveValue;\n } else {\n canTare = false;\n // Display a message that we need to be in liveMode before we can tare\n notifier.alert(i18n.t(\"sensor.messages.tare_labquest2_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n canTare = true;\n }\n });\n }\n }\n },\n\n // User requests collection\n start: function() {\n // NOTE. Due to architecture switch mid-way, the labquest2Interface layer is turning the\n // start request into a promise, and we're turning it back to events. The lower layer\n // could just ditch promises and emit the corresponding events with no harm. (The state\n // machine prevents almost every practical scenario where we'd see an out-of-date\n // startRequestFailure event while in a state that would respond to it.)\n labquest2Interface.requestStart().catch(function() {\n handle('startRequestFailed');\n });\n this.gotoState('starting');\n },\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.connected\");\n },\n\n controlDisabled: function() {\n message = i18n.t(\"sensor.messages.connected_start_labquest2\");\n },\n\n sessionChanged: function() {\n labquest2Interface.stopPolling();\n labquest2Interface.startPolling();\n this.gotoState('connecting');\n },\n\n // Collection was started by a third party\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n starting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.starting_data_collection\");\n isStopped = false;\n var self = this;\n this._startTimerId = setTimeout(3000, function() {\n self.gotoState('startRequestFailed');\n });\n },\n\n leaveState: function() {\n clearTimeout(this._startTimerId);\n },\n\n startRequestFailed: function() {\n this.gotoState('errorStarting');\n },\n\n stop: function() {\n this.gotoState('canceling');\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n errorStarting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_starting_data_collection\");\n isStopped = true;\n\n notifier.alert(i18n.t(\"sensor.messages.error_starting_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStarting');\n }\n });\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n },\n\n dismissErrorStarting: function() {\n this.gotoState('connected');\n }\n },\n\n started: {\n enterState: function() {\n if (canControl) {\n message = i18n.t(\"sensor.messages.collecting_data\");\n } else {\n message = i18n.t(\"sensor.messages.collecting_data_stop_labquest2\");\n }\n isStopped = false;\n setColumn();\n\n // Check, just in case. Specifically, when errorStopping transitions here, collection\n // might have stopped in the meantime.\n if (!labquest2Interface.isCollecting) {\n this.gotoState('stopped');\n }\n\n if (!dataColumn) {\n this.gotoState('startedWithNoDataColumn');\n }\n },\n\n data: handleData,\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data\");\n },\n\n controlDisabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data_stop_labquest2\");\n },\n\n stop: function() {\n labquest2Interface.requestStop().catch(function() {\n handle('stopRequestFailed');\n });\n this.gotoState('stopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n // This can happen.\n startedWithNoDataColumn: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.no_data\");\n\n labquest2Interface.requestStop();\n notifier.alert(i18n.t(\"sensor.messages.no_data_labquest2_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n }\n });\n },\n\n collectionStopped: function() {\n this.gotoState('stoppedWithNoDataColumn');\n }\n },\n\n stoppedWithNoDataColumn: {\n enterState: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n },\n\n data: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n }\n },\n\n canceling: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.canceling_data_collection\");\n isStopped = true;\n },\n\n data: handleData,\n\n cancelRequestFailed: function() {\n this.gotoState('errorCanceling');\n },\n\n collectionStarted: function() {\n labquest2Interface.requestStop().catch(function() {\n handle('cancelRequestFailed');\n });\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n errorCanceling: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_canceling_data_collection\");\n notifier.alert(i18n.t(\"sensor.messages.error_canceling_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStopping');\n }\n });\n },\n\n data: handleData,\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n },\n\n dismissErrorStopping: function() {\n this.gotoState('started');\n }\n },\n\n stopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.stopping_data_collection\");\n },\n\n data: handleData,\n\n stopRequestFailed: function() {\n this.gotoState('errorStopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n errorStopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_stopping_data_collection\");\n notifier.alert(i18n.t(\"sensor.messages.error_stopping_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStopping');\n }\n });\n },\n\n data: handleData,\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n },\n\n dismissErrorStopping: function() {\n this.gotoState('started');\n }\n },\n\n // The device reports the stop of data collection before all data can be received.\n collectionStopped: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_stopped\");\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n },\n\n data: function() {\n handleData();\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n }\n },\n\n collectionComplete: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_complete\");\n isStopped = true;\n },\n\n reset: function() {\n initializeStateVariables();\n setSensorReadingDescription();\n this.gotoState('connecting');\n dispatch.reset();\n }\n },\n\n disconnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.disconnected\");\n canConnect = true;\n labquest2Interface.stopPolling();\n },\n\n leaveState: function() {\n canConnect = false;\n },\n\n connect: function(address) {\n labquest2Interface.startPolling(address);\n this.gotoState('connecting');\n }\n }\n });\n\n // Automatically wrap all event handlers invocations with makeInvalidatingChange so that\n // outputs update from closure variable state automatically.\n function handle(eventName) {\n var args = Array.prototype.slice.call(arguments, 0);\n\n model.makeInvalidatingChange(function() {\n var handled = stateMachine.handleEvent.apply(stateMachine, args);\n\n if (!handled) {\n // special handling of any events not handled by the current state:\n if (eventName === 'connectionTimedOut' ||\n eventName === 'sessionChanged') {\n stateMachine.gotoState('disconnected');\n }\n }\n });\n }\n\n // At least for now, dispatch every interface event to the state machine.\n labquest2Interface.on('*', function() {\n var args = Array.prototype.slice.call(arguments, 0);\n handle.apply(null, [this.event].concat(args));\n });\n\n // Also, handle \"live values\" every time they are received.\n labquest2Interface.on('statusReceived', function() {\n if (dataColumn) {\n model.makeInvalidatingChange(function() {\n // Figure out if we're in \"live\" mode, or if we're still viewing old data\n // (and therefore the live values aren't actually updating)\n var now = new Date();\n if ((dataColumn.liveValueTimeStamp - lastLiveValueTimestamp) > 0) {\n liveMode = true;\n lastLiveValueTimestamp = dataColumn.liveValueTimeStamp;\n liveValueLastChanged = now;\n } else {\n if ((now - liveValueLastChanged) < 2000) {\n liveMode = true;\n } else {\n liveMode = false;\n }\n }\n liveSensorValue = dataColumn.liveValue;\n });\n }\n });\n\n labquest2Interface.on('controlEnabled', function() {\n canControl = true;\n });\n\n labquest2Interface.on('controlDisabled', function() {\n canControl = false;\n });\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: {},\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n labModelerMixin.mixInto(model);\n propertySupport = labModelerMixin.propertySupport;\n dispatch = labModelerMixin.dispatchSupport;\n dispatch.addEventTypes(\"tick\", \"play\", \"stop\", \"tickStart\", \"tickEnd\");\n\n initializeStateVariables();\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('sensorReading', defaultSensorReadingDescription, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n // Because sensorReading updates are batched and delivered much later than the live sensor value\n // from the sensor status response, we define a separate liveSensorReading output that can be\n // updated every time the status is polled.\n model.defineOutput('liveSensorReading', defaultSensorReadingDescription, function() {\n if (liveSensorValue == null) {\n return liveSensorValue;\n }\n return liveSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorName;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isPlayable;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return stepCounter > 0;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return canTare && isSensorTareable;\n });\n\n model.defineOutput('canConnect', {\n label: \"Can begin connecting to the LabQuest2?\"\n }, function() {\n return canConnect;\n });\n\n model.defineOutput('canControl', {\n label: \"Can remotely start/stop the LabQuest2?\"\n }, function() {\n return canControl;\n });\n\n model.defineOutput('hasMultipleSensors', {\n label: \"Are multiple sensors connected to the LabQuest2?\"\n }, function() {\n return hasMultipleSensors;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n model.defineOutput('message', {\n label: \"User Message\"\n }, function() {\n return message;\n });\n\n // Clean up state before we go\n // TODO\n model.on('willReset.model', function() {\n labquest2Interface.stopPolling();\n labquest2Interface.requestStop();\n });\n\n model.updateAllOutputProperties();\n stateMachine.gotoState('notConnected');\n\n return model;\n};\n","import NumericOutputView from 'common/views/numeric-output-view';\nimport BasicDialog from 'common/controllers/basic-dialog';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport viewState from 'common/views/view-state';\n\n\nexport default function(model, modelUrl, i18n) {\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView;\n var view;\n\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setCanConnectState() {\n if (model.properties.canConnect) {\n viewState.enableView(view.$connectButton);\n } else {\n viewState.disableView(view.$connectButton);\n }\n }\n\n function setHasMultipleSensorsState() {\n if (model.properties.hasMultipleSensors && model.properties.isPlayable) {\n viewState.enableView(view.$selectSensorButton);\n } else {\n viewState.disableView(view.$selectSensorButton);\n }\n }\n\n function setMessageText() {\n view.$message.text(model.properties.message);\n }\n\n function setupModelObservers() {\n model.addObserver('canTare', setCanTareState);\n setCanTareState();\n\n model.addObserver('canConnect', setCanConnectState);\n setCanConnectState();\n\n model.addObserver('hasMultipleSensors', setHasMultipleSensorsState);\n model.addObserver('isPlayable', setHasMultipleSensorsState);\n setHasMultipleSensorsState();\n\n model.addObserver('message', setMessageText);\n setMessageText();\n }\n\n function chooseSensorPopup() {\n var dialog = new BasicDialog({\n width: \"60%\",\n dialogClass: 'interactive-dialog no-close',\n closeOnEscape: false,\n title: i18n.t(\"sensor.choose_sensor_title\"),\n buttons: {\n OK: function() {\n console.log(\"OK Clicked\");\n $(this).dialog(\"close\");\n // TODO Change the model's selected sensor\n model.setSelectedSensor($(this).find('input:checked').val());\n },\n Cancel: function() {\n console.log(\"Cancel Clicked\");\n $(this).dialog(\"close\");\n // TODO Make sure the model continues using the previously selected sensor\n }\n }\n }, i18n);\n var content = \"\",\n label = \"\",\n sensors = model.connectedSensors(),\n first = true,\n selectedSensor = model.getSelectedSensor(),\n i, checked, sensorDef;\n for (i = 0; i < sensors.length; i++) {\n if (sensors[i] !== 's') {\n checked = \"\";\n sensorDef = sensorDefinitions[sensors[i]];\n if (!sensorDef) {\n sensorDef = {\n measurementName: \"Unknown\"\n };\n }\n label = sensorDef.measurementName + \" (\" + sensors[i] + \")\";\n if (selectedSensor == i || (first && selectedSensor == -1)) {\n checked = \"checked \";\n };\n content += \"\" + label + \"
\";\n first = false;\n }\n }\n dialog.setContent(content);\n dialog.open();\n }\n\n return view = {\n $el: $(\"
\"),\n remoteAddress: null,\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"2.8em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n view.$el.empty();\n view.$controlsContainer = $(\"
\");\n view.$statusContainer = $(\"
\");\n view.$addressInput = $(\"
\");\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n\n view.$connectButton = $(\"
\");\n view.$zeroButton = $(\"
\");\n view.$selectSensorButton = $(\"
\");\n view.$message = $(\"
\");\n view.$sensorReading = sensorReadingView.render().addClass(\"horizontal\");\n\n view.$controlsContainer\n .append(view.$addressInput)\n .append(view.$connectButton)\n .append(view.$sensorReading)\n .append(view.$zeroButton)\n .append(view.$selectSensorButton);\n\n view.$statusContainer\n .append(view.$message);\n\n view.$el.css('zIndex', 4)\n .append(view.$controlsContainer)\n .append(view.$statusContainer);\n\n view.$controlsContainer.find('div').addClass('component component-spacing');\n view.$statusContainer.find('div').addClass('component component-spacing');\n\n sensorReadingView.resize();\n setupModelObservers();\n\n if (typeof(view.remoteAddress) == \"string\") {\n view.$addressInput.find('input').val(view.remoteAddress);\n }\n view.$addressInput.find('input').on('change', function() {\n view.remoteAddress = $(this).val();\n });\n\n // connect when the user hits enter\n view.$addressInput.find('input').on('keypress', function(evt) {\n var code = evt.keyCode || evt.which || 0;\n if (code == 13 && model.properties.canConnect) {\n model.connect(view.$addressInput.find('input').val());\n evt.preventDefault();\n }\n });\n\n view.$connectButton.on('click', 'button', function() {\n model.connect(view.$addressInput.find('input').val());\n });\n view.$zeroButton.on('click', 'button', model.tare);\n view.$selectSensorButton.on('click', 'button', chooseSensorPopup);\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.liveSensorReading));\n sensorReadingView.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function SensorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from './modeler';\nimport ModelContainer from './view';\nimport ScriptingAPI from './scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('liveSensorReading', function() {\n controller.updateView();\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.labquest2-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.labquest2-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n controller.model.willReset();\n });\n\n return controller;\n};\n","import constants from 'models/energy2d/models/constants';\n\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"energy2d\",\n immutable: true\n },\n use_WebGL: {\n defaultValue: false\n },\n grid_width: {\n defaultValue: 100,\n immutable: true\n },\n grid_height: {\n defaultValue: 100,\n immutable: true\n },\n model_width: {\n defaultValue: 10,\n immutable: true\n },\n model_height: {\n defaultValue: 10,\n immutable: true\n },\n timeStep: {\n defaultValue: 1\n },\n timeStepsPerTick: {\n defaultValue: 4\n },\n ticksPerGPUSync: {\n defaultValue: 30\n },\n convective: {\n defaultValue: true\n },\n background_temperature: {\n defaultValue: 0\n },\n background_conductivity: {\n defaultValue: constants.AIR_THERMAL_CONDUCTIVITY\n },\n background_specific_heat: {\n defaultValue: constants.AIR_SPECIFIC_HEAT\n },\n background_density: {\n defaultValue: constants.AIR_DENSITY\n },\n background_viscosity: {\n defaultValue: constants.AIR_VISCOSITY\n },\n thermal_buoyancy: {\n defaultValue: 0.00025\n },\n buoyancy_approximation: {\n defaultValue: 1\n },\n boundary: {\n defaultValue: {\n type: \"temperature\",\n upper: 0,\n lower: 0,\n left: 0,\n right: 0\n }\n },\n sunny: {\n defaultValue: false\n },\n sun_angle: {\n defaultValue: 1.5707964\n },\n solar_power_density: {\n defaultValue: 2000\n },\n solar_ray_count: {\n defaultValue: 24\n },\n solar_ray_speed: {\n defaultValue: 0.1\n },\n photon_emission_interval: {\n defaultValue: 20\n }\n },\n\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n },\n color_palette_type: {\n defaultValue: 0\n },\n velocity: {\n defaultValue: false\n },\n minimum_temperature: {\n defaultValue: 0\n },\n maximum_temperature: {\n defaultValue: 40.0\n },\n enableKeyboardHandlers: {\n defaultValue: true\n }\n },\n\n part: {\n shapeType: {\n // Available options: \"rectangle\", \"ellipse\", \"ring\" or \"polygon\".\n required: true,\n immutable: true\n },\n x: {\n defaultValue: 0\n },\n y: {\n defaultValue: 0\n },\n width: {},\n height: {},\n a: {},\n b: {},\n inner: {},\n outer: {},\n vertices: {},\n\n // Special shortcut properties which let user access polygon properties\n // faster and more convenient. They can be used both to get and set\n // value. They are not serialized.\n raw_x_coords: {\n serialize: false\n },\n raw_y_coords: {\n serialize: false\n },\n\n thermal_conductivity: {\n defaultValue: 1\n },\n specific_heat: {\n defaultValue: 1300\n },\n density: {\n defaultValue: 25\n },\n transmission: {\n defaultValue: 0\n },\n reflection: {\n defaultValue: 0\n },\n absorption: {\n defaultValue: 1\n },\n emissivity: {\n defaultValue: 0\n },\n temperature: {\n defaultValue: 0\n },\n constant_temperature: {\n defaultValue: false\n },\n power: {\n defaultValue: 0\n },\n wind_speed: {\n defaultValue: 0\n },\n wind_angle: {\n defaultValue: 0\n },\n visible: {\n defaultValue: true\n },\n filled: {\n defaultValue: true\n },\n color: {\n // Auto color means that part will use color matching its power or temperature\n // (when it has constant temperature) or gray color otherwise.\n defaultValue: \"auto\"\n },\n label: {\n defaultValue: \"\"\n },\n texture: {\n defaultValue: false\n },\n draggable: {\n defaultValue: true\n }\n },\n\n sensor: {\n type: {\n required: true,\n immutable: true\n },\n x: {\n required: true,\n unitType: \"length\"\n },\n y: {\n required: true,\n unitType: \"length\"\n },\n angle: {\n // Optional, defined only for heat flux sensors.\n immutable: true\n },\n label: {\n defaultValue: \"\"\n },\n value: {\n readOnly: true,\n serialize: false\n }\n }\n};\n"," \nimport arrays from 'arrays';\n\nvar RELAXATION_STEPS = 5;\n\nexport const makeHeatSolver = function(model) { var\n // Basic simulation parameters.\n props = model.getModelOptions(),\n nx = props.grid_width,\n ny = props.grid_height,\n\n relaxationSteps = RELAXATION_STEPS,\n\n // Simulation arrays provided by model.\n conductivity = model.getConductivityArray(),\n capacity = model.getCapacityArray(),\n density = model.getDensityArray(),\n u = model.getUVelocityArray(),\n v = model.getVVelocityArray(),\n tb = model.getBoundaryTemperatureArray(),\n fluidity = model.getFluidityArray(),\n\n // Internal array that stores the previous temperature results.\n t0 = arrays.create(nx * ny, 0, model.getArrayType()),\n\n // Convenience variables.\n nx1 = nx - 1,\n ny1 = ny - 1,\n nx2 = nx - 2,\n ny2 = ny - 2,\n\n deltaX = props.model_width / props.grid_width,\n deltaY = props.model_height / props.grid_height,\n\n //\n // Private methods\n //\n\n applyBoundary = function(t) {\n var boundary = props.boundary, vN = boundary.upper, vS = boundary.lower,\n vW = boundary.left,\n vE = boundary.right,\n i, j, inx, inx_ny1;\n\n if (boundary.type === \"temperature\") {\n for (i = 0; i < nx; i += 1) {\n inx = i * nx;\n t[inx] = vN;\n t[inx + ny1] = vS;\n }\n for (j = 0; j < ny; j += 1) {\n t[j] = vW;\n t[nx1 * nx + j] = vE;\n }\n } else if (boundary.type === \"flux\") {\n for (i = 0; i < nx; i += 1) {\n inx = i * nx;\n inx_ny1 = inx + ny1;\n t[inx] = t[inx + 1] + vN * deltaY / conductivity[inx];\n t[inx_ny1] = t[inx + ny2] - vS * deltaY / conductivity[inx_ny1];\n }\n for (j = 0; j < ny; j += 1) {\n t[j] = t[nx + j] - vW * deltaX / conductivity[j];\n t[nx1 * nx + j] = t[nx2 * nx + j] + vE * deltaX / conductivity[nx1 * nx + j];\n }\n }\n },\n\n macCormack = function(t) {\n var\n timeStep = props.timeStep,\n tx = 0.5 * timeStep / deltaX,\n ty = 0.5 * timeStep / deltaY,\n i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n if (fluidity[jinx]) {\n t0[jinx] = t[jinx] - tx * (u[jinx_plus_nx] * t[jinx_plus_nx] - u[jinx_minus_nx] * t[jinx_minus_nx]) - ty * (v[jinx_plus_1] * t[jinx_plus_1] - v[jinx_minus_1] * t[jinx_minus_1]);\n }\n }\n }\n applyBoundary(t0);\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n t[jinx] = 0.5 * (t[jinx] + t0[jinx]) - 0.5 * tx * u[jinx] * (t0[jinx_plus_nx] - t0[jinx_minus_nx]) - 0.5 * ty * v[jinx] * (t0[jinx_plus_1] - t0[jinx_minus_1]);\n }\n }\n }\n applyBoundary(t);\n };\n\n return {\n solve: function(convective, t, q) {\n var\n timeStep = props.timeStep,\n hx = 0.5 / (deltaX * deltaX),\n hy = 0.5 / (deltaY * deltaY),\n invTimeStep = 1.0 / timeStep,\n rij, sij, axij, bxij, ayij, byij,\n k, i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n arrays.copy(t, t0);\n\n for (k = 0; k < relaxationSteps; k += 1) {\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (isNaN(tb[jinx])) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n sij = capacity[jinx] * density[jinx] * invTimeStep;\n rij = conductivity[jinx];\n axij = hx * (rij + conductivity[jinx_minus_nx]);\n bxij = hx * (rij + conductivity[jinx_plus_nx]);\n ayij = hy * (rij + conductivity[jinx_minus_1]);\n byij = hy * (rij + conductivity[jinx_plus_1]);\n t[jinx] = (t0[jinx] * sij + q[jinx] + axij * t[jinx_minus_nx] + bxij * t[jinx_plus_nx] + ayij * t[jinx_minus_1] + byij * t[jinx_plus_1]) / (sij + axij + bxij + ayij + byij);\n } else {\n t[jinx] = tb[jinx];\n }\n }\n }\n applyBoundary(t);\n }\n if (convective) {\n // advect(t)\n macCormack(t);\n }\n }\n };\n};\n"," \n// WebGL Context Manager module.\n//\n// It provides access to one, global WebGL context.\n// All clients interested in WebGL context should call:\n// getWebGLContext() function. If WebGL is not available,\n// an appropriate error will be thrown.\n// The internal `gl` variable holds the current WebGL context.\nvar gl;\n\nexport default {\n getWebGLContext: function() {\n if (!gl) {\n var canvas = document.createElement('canvas');\n try {\n gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n } catch (e) {}\n if (!gl) {\n throw new Error('GL: WebGL not supported.');\n }\n }\n return gl;\n },\n\n get error() {\n if (!gl) return \"WebGL unavailable\";\n var error = gl.getError();\n return error === gl.NO_ERROR ? undefined : error;\n }\n};\n"," /*jslint indent: 2, browser: true, newcap: true, es5: true */ \nimport console from 'common/console';\nimport context from 'models/energy2d/gpu/context';\n\nvar\n// Dependencies. \n \n\n // The internal `gl` variable holds the current WebGL context.\n gl,\n\n // Local, private helper functions.\n regexMap = function(regex, text, callback) {\n var result;\n while ((result = regex.exec(text)) !== null) {\n callback(result);\n }\n },\n isArray = function(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Float32Array]';\n },\n isNumber = function(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Number]' || str === '[object Boolean]';\n },\n // Class to be exported.\n Shader;\n\n// Compiles a shader program using the provided vertex and fragment shaders.\nShader = function(vertexSource, fragmentSource) {\n var\n // Headers are prepended to the sources to provide some automatic functionality.\n vertexHeader =\n '\\\n attribute vec4 gl_Vertex;\\\n attribute vec4 gl_TexCoord;\\\n attribute vec3 gl_Normal;\\\n attribute vec4 gl_Color;\\\n ',\n fragmentHeader =\n '\\\n precision highp float;\\\n ',\n\n // The `gl_` prefix must be substituted for something else to avoid compile\n // errors, since it's a reserved prefix. This prefixes all reserved names with\n // `_`. The header is inserted after any extensions, since those must come\n // first.\n fix = function(header, source) {\n var replaced = {},\n match;\n match = /^((\\s*\\/\\/.*\\n|\\s*#extension.*\\n)+)[^]*$/.exec(source);\n source = match ? match[1] + header + source.substr(match[1].length) : header + source;\n regexMap(/\\bgl_\\w+\\b/g, header, function(result) {\n if (replaced[result] === undefined) {\n source = source.replace(new RegExp('\\\\b' + result + '\\\\b', 'g'), '_' + result);\n replaced[result] = true;\n }\n });\n return source;\n },\n\n isSampler = {};\n\n gl = context.getWebGLContext();\n\n vertexSource = fix(vertexHeader, vertexSource);\n fragmentSource = fix(fragmentHeader, fragmentSource);\n\n // Compile and link errors are thrown as strings.\n function compileSource(type, source) {\n var shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Shader: compile error.\\n' + gl.getShaderInfoLog(shader) +\n '\\nSource:\\n' + source);\n }\n return shader;\n }\n\n this.program = gl.createProgram();\n gl.attachShader(this.program, compileSource(gl.VERTEX_SHADER, vertexSource));\n gl.attachShader(this.program, compileSource(gl.FRAGMENT_SHADER, fragmentSource));\n gl.linkProgram(this.program);\n if (!gl.getProgramParameter(this.program, gl.LINK_STATUS)) {\n throw new Error('Shader: link error.\\n' + gl.getProgramInfoLog(this.program) +\n '\\nSource:\\n' + vertexSource + '\\n\\n' + fragmentSource);\n }\n this.attributes = {};\n this.uniformLocations = {};\n\n // Sampler uniforms need to be uploaded using `gl.uniform1i()` instead of `gl.uniform1f()`.\n // To do this automatically, we detect and remember all uniform samplers in the source code.\n regexMap(/uniform\\s+sampler(1D|2D|3D|Cube)\\s+(\\w+)\\s*;/g, vertexSource + fragmentSource, function(groups) {\n isSampler[groups[2]] = 1;\n });\n this.isSampler = isSampler;\n};\n\n// Set a uniform for each property of `uniforms`. The correct `gl.uniform*()` method is\n// inferred from the value types and from the stored uniform sampler flags.\nShader.prototype.uniforms = function(uniforms) {\n var name, location, value;\n\n gl.useProgram(this.program);\n\n for (name in uniforms) {\n if (uniforms.hasOwnProperty(name)) {\n if (this.uniformLocations[name] === undefined) {\n this.uniformLocations[name] = gl.getUniformLocation(this.program, name);\n }\n location = this.uniformLocations[name];\n if (location === null) {\n console.warn('Shader: name ' + name + ' does not correspond to an active uniform variable.');\n continue;\n }\n value = uniforms[name];\n if (isArray(value)) {\n switch (value.length) {\n case 1:\n gl.uniform1fv(location, new Float32Array(value));\n break;\n case 2:\n gl.uniform2fv(location, new Float32Array(value));\n break;\n case 3:\n gl.uniform3fv(location, new Float32Array(value));\n break;\n case 4:\n gl.uniform4fv(location, new Float32Array(value));\n break;\n // Matrices are automatically transposed, since WebGL uses column-major\n // indices instead of row-major indices.\n case 9:\n gl.uniformMatrix3fv(location, false, new Float32Array([\n value[0], value[3], value[6],\n value[1], value[4], value[7],\n value[2], value[5], value[8]\n ]));\n break;\n case 16:\n gl.uniformMatrix4fv(location, false, new Float32Array([\n value[0], value[4], value[8], value[12],\n value[1], value[5], value[9], value[13],\n value[2], value[6], value[10], value[14],\n value[3], value[7], value[11], value[15]\n ]));\n break;\n default:\n throw new Error('Shader: don\\'t know how to load uniform \"' + name + '\" of length ' + value.length);\n }\n } else if (isNumber(value)) {\n (this.isSampler[name] ? gl.uniform1i : gl.uniform1f).call(gl, location, value);\n } else {\n throw new Error('Shader: attempted to set uniform \"' + name + '\" to invalid value ' + value);\n }\n }\n }\n\n return this;\n};\n\n// Sets all uniform matrix attributes, binds all relevant buffers, and draws the\n// mesh geometry as indexed triangles or indexed lines. Set `mode` to `gl.LINES`\n// (and either add indices to `lines` or call `computeWireframe()`) to draw the\n// mesh in wireframe.\nShader.prototype.draw = function(mesh, mode) {\n gl.useProgram(this.program);\n\n this.drawBuffers(mesh.vertexBuffers,\n mesh.indexBuffers[mode === gl.LINES ? 'lines' : 'triangles'],\n arguments.length < 2 ? gl.TRIANGLES : mode);\n};\n\n// Sets all uniform matrix attributes, binds all relevant buffers, and draws the\n// indexed mesh geometry. The `vertexBuffers` argument is a map from attribute\n// names to `Buffer` objects of type `gl.ARRAY_BUFFER`, `indexBuffer` is a `Buffer`\n// object of type `gl.ELEMENT_ARRAY_BUFFER`, and `mode` is a WebGL primitive mode\n// like `gl.TRIANGLES` or `gl.LINES`. This method automatically creates and caches\n// vertex attribute pointers for attributes as needed.\nShader.prototype.drawBuffers = function(vertexBuffers, indexBuffer, mode) {\n // Create and enable attribute pointers as necessary.\n var length = 0,\n attribute, buffer, location;\n\n for (attribute in vertexBuffers) {\n if (vertexBuffers.hasOwnProperty(attribute)) {\n buffer = vertexBuffers[attribute];\n if (this.attributes[attribute] === undefined) {\n this.attributes[attribute] = gl.getAttribLocation(this.program, attribute.replace(/^gl_/, '_gl_'));\n }\n location = this.attributes[attribute];\n if (location === -1 || !buffer.buffer) {\n continue;\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.buffer);\n gl.enableVertexAttribArray(location);\n gl.vertexAttribPointer(location, buffer.buffer.spacing, gl.FLOAT, false, 0, 0);\n length = buffer.buffer.length / buffer.buffer.spacing;\n }\n }\n\n // Disable unused attribute pointers.\n for (attribute in this.attributes) {\n if (this.attributes.hasOwnProperty(attribute)) {\n if (vertexBuffers[attribute] === undefined) {\n gl.disableVertexAttribArray(this.attributes[attribute]);\n }\n }\n }\n\n // Draw the geometry.\n if (length && (!indexBuffer || indexBuffer.buffer)) {\n if (indexBuffer) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer.buffer);\n gl.drawElements(mode, indexBuffer.buffer.length, gl.UNSIGNED_SHORT, 0);\n } else {\n gl.drawArrays(mode, 0, length);\n }\n }\n};\n\n// Export constructor function.\nexport default Shader;\n","/*jslint indent: 2, browser: true, newcap: true */ \n// Simple wrapper around WebGL textures that supports render-to-texture.\n//\n// The arguments `width` and `height` give the size of the texture in texels.\n// WebGL texture dimensions must be powers of two unless `filter` is set to\n// either `gl.NEAREST` or `gl.REPEAT` and `wrap` is set to `gl.CLAMP_TO_EDGE`\n// (which they are by default).\n//\n// Texture parameters can be passed in via the `options` argument.\n// Example usage:\n//\n// var t = new Texture(256, 256, {\n// // Defaults to gl.LINEAR, set both at once with \"filter\"\n// mag_filter: gl.NEAREST,\n// min_filter: gl.LINEAR,\n//\n// // Defaults to gl.CLAMP_TO_EDGE, set both at once with \"wrap\"\n// wrap_s: gl.REPEAT,\n// wrap_t: gl.REPEAT,\n//\n// format: gl.RGB, // Defaults to gl.RGBA\n// type: gl.FLOAT // Defaults to gl.UNSIGNED_BYTE\n// });\n\nimport context from 'models/energy2d/gpu/context';\n\nvar\n// Dependencies.\n \n\n // WebGL context.\n gl,\n\n // Class to be exported.\n Texture;\n\nTexture = function(width, height, options) {\n gl = context.getWebGLContext();\n options = options || {};\n // Basic texture params.\n this.id = gl.createTexture();\n this.width = width;\n this.height = height;\n this.format = options.format || gl.RGBA;\n this.type = options.type || gl.UNSIGNED_BYTE;\n // Number of texture unit which contains this texture (if any).\n this.tex_unit = null;\n // Render target params.\n this.fbo = null;\n\n // Set parameters.\n gl.bindTexture(gl.TEXTURE_2D, this.id);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, options.mag_filter || options.filter || gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, options.min_filter || options.filter || gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, options.wrap || options.wrap_s || gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, options.wrap || options.wrap_t || gl.CLAMP_TO_EDGE);\n gl.texImage2D(gl.TEXTURE_2D, 0, this.format, width, height, 0, this.format, this.type, null);\n};\n\n// Set texture as render target.\n// After this call user can render to texture.\nTexture.prototype.setAsRenderTarget = function() {\n if (this.fbo === null) {\n // FBO initialization during first call.\n this.fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.id, 0);\n gl.viewport(0, 0, this.width, this.height);\n } else {\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n gl.viewport(0, 0, this.width, this.height);\n }\n};\n\n// Bind this texture to the given texture unit (0-7, defaults to 0).\nTexture.prototype.bind = function(unit) {\n this.tex_unit = unit || 0;\n gl.activeTexture(gl.TEXTURE0 + this.tex_unit);\n gl.bindTexture(gl.TEXTURE_2D, this.id);\n};\n\n// Unbind this texture.\nTexture.prototype.unbind = function(unit) {\n if (this.tex_unit === null) {\n return;\n }\n gl.activeTexture(gl.TEXTURE0 + this.tex_unit);\n gl.bindTexture(gl.TEXTURE_2D, null);\n this.tex_unit = null;\n};\n\n// Render all draw calls in `callback` to this texture. It also temporarily\n// changes the viewport to the size of the texture.\nTexture.prototype.drawTo = function(callback) {\n if (this.fbo === null) {\n throw new Error(\"Texture: call setupAsRenderTarget() method first.\");\n }\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n gl.viewport(0, 0, this.width, this.height);\n\n callback();\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n};\n\n// Switch this texture with 'other', useful for the ping-pong rendering\n// technique used in multi-stage rendering.\n// Textures should have identical dimensions, types and in general - parameters.\n// Only ID, FBO and active texture unit values are swapped.\nTexture.prototype.swapWith = function(other) {\n var temp;\n // Swap ID.\n temp = other.id;\n other.id = this.id;\n this.id = temp;\n // Swap active texture unit.\n temp = other.tex_unit;\n other.tex_unit = this.tex_unit;\n this.tex_unit = temp;\n // Swap FBO.\n temp = other.fbo;\n other.fbo = this.fbo;\n this.fbo = temp;\n};\n\n// Export constructor function.\nexport default Texture;\n"," /*jslint indent: 2, browser: true, newcap: true, es5: true */ \n// Represents a collection of vertex buffers and index buffers. Each vertex\n// buffer maps to one attribute in GLSL and has a corresponding property set\n// on the Mesh instance. There is one vertex buffer by default: `vertices`,\n// which maps to `gl_Vertex`. The `coords`, `normals`, and `colors` vertex\n// buffers map to `gl_TexCoord`, `gl_Normal`, and `gl_Color` respectively,\n// and can be enabled by setting the corresponding options to true. There are\n// two index buffers, `triangles` and `lines`, which are used for rendering\n// `gl.TRIANGLES` and `gl.LINES`, respectively. Only `triangles` is enabled by\n// default, although `computeWireframe()` will add a normal buffer if it wasn't\n// initially enabled.\n\nimport context from 'models/energy2d/gpu/context';\n\nvar\n// Dependencies.\n \n\n // The internal `gl` variable holds the current WebGL context.\n gl,\n\n // Internal, private class.\n Buffer,\n // Class to be exported.\n Mesh;\n\n// Provides a simple method of uploading data to a GPU buffer. Example usage:\n//\n// var vertices = new GL.Buffer(gl.ARRAY_BUFFER, Float32Array);\n// var indices = new GL.Buffer(gl.ELEMENT_ARRAY_BUFFER, Uint16Array);\n// vertices.data = [[0, 0, 0], [1, 0, 0], [0, 1, 0], [1, 1, 0]];\n// indices.data = [[0, 1, 2], [2, 1, 3]];\n// vertices.compile();\n// indices.compile();\nBuffer = function(target, type) {\n gl = context.getWebGLContext();\n this.buffer = null;\n this.target = target;\n this.type = type;\n this.data = [];\n};\n\n// Upload the contents of `data` to the GPU in preparation for rendering. The\n// data must be a list of lists where each inner list has the same length. For\n// example, each element of data for vertex normals would be a list of length three.\n// This will remember the data length and element length for later use by shaders.\n// The type can be either `gl.STATIC_DRAW` or `gl.DYNAMIC_DRAW`, and defaults to\n// `gl.STATIC_DRAW`.\n//\n// This could have used `[].concat.apply([], this.data)` to flatten\n// the array but Google Chrome has a maximum number of arguments so the\n// concatenations are chunked to avoid that limit.\nBuffer.prototype.compile = function(type) {\n var data = [],\n i, chunk, spacing;\n for (i = 0, chunk = 10000; i < this.data.length; i += chunk) {\n data = Array.prototype.concat.apply(data, this.data.slice(i, i + chunk));\n }\n spacing = this.data.length ? data.length / this.data.length : 0;\n if (spacing !== Math.round(spacing)) {\n throw new Error('Mesh: buffer elements not of consistent size, average size is ' + spacing);\n }\n this.buffer = this.buffer || gl.createBuffer();\n this.buffer.length = data.length;\n this.buffer.spacing = spacing;\n gl.bindBuffer(this.target, this.buffer);\n gl.bufferData(this.target, new this.type(data), type || gl.STATIC_DRAW);\n};\n\nMesh = function(options) {\n gl = context.getWebGLContext();\n options = options || {};\n this.vertexBuffers = {};\n this.indexBuffers = {};\n this.addVertexBuffer('vertices', 'gl_Vertex');\n if (options.coords) {\n this.addVertexBuffer('coords', 'gl_TexCoord');\n }\n if (options.normals) {\n this.addVertexBuffer('normals', 'gl_Normal');\n }\n if (options.colors) {\n this.addVertexBuffer('colors', 'gl_Color');\n }\n if (options.lines === undefined || options.triangles) {\n this.addIndexBuffer('triangles');\n }\n if (options.lines) {\n this.addIndexBuffer('lines');\n }\n};\n\n// Add a new vertex buffer with a list as a property called `name` on this object\n// and map it to the attribute called `attribute` in all shaders that draw this mesh.\nMesh.prototype.addVertexBuffer = function(name, attribute) {\n var buffer = this.vertexBuffers[attribute] = new Buffer(gl.ARRAY_BUFFER, Float32Array);\n buffer.name = name;\n this[name] = [];\n};\n\n// Add a new index buffer with a list as a property called `name` on this object.\nMesh.prototype.addIndexBuffer = function(name) {\n var buffer = this.indexBuffers[name] = new Buffer(gl.ELEMENT_ARRAY_BUFFER, Uint16Array);\n this[name] = [];\n};\n\n// Upload all attached buffers to the GPU in preparation for rendering. This\n// doesn't need to be called every frame, only needs to be done when the data\n// changes.\nMesh.prototype.compile = function() {\n var attribute, name, buffer;\n for (attribute in this.vertexBuffers) {\n if (this.vertexBuffers.hasOwnProperty(attribute)) {\n buffer = this.vertexBuffers[attribute];\n buffer.data = this[buffer.name];\n buffer.compile();\n }\n }\n\n for (name in this.indexBuffers) {\n if (this.indexBuffers.hasOwnProperty(name)) {\n buffer = this.indexBuffers[name];\n buffer.data = this[name];\n buffer.compile();\n }\n }\n};\n\n// Generates a square 2x2 mesh the xy plane centered at the origin. The\n// `options` argument specifies options to pass to the mesh constructor.\n// Additional options include `detailX` and `detailY`, which set the tesselation\n// in x and y, and `detail`, which sets both `detailX` and `detailY` at once.\n// Two triangles are generated by default.\n// Example usage:\n//\n// var mesh1 = GL.Mesh.plane();\n// var mesh2 = GL.Mesh.plane({ detail: 5 });\n// var mesh3 = GL.Mesh.plane({ detailX: 20, detailY: 40 });\n//\nMesh.plane = function(options) {\n var mesh, detailX, detailY, x, y, t, s, i;\n options = options || {};\n mesh = new Mesh(options);\n detailX = options.detailX || options.detail || 1;\n detailY = options.detailY || options.detail || 1;\n\n for (y = 0; y <= detailY; y += 1) {\n t = y / detailY;\n for (x = 0; x <= detailX; x += 1) {\n s = x / detailX;\n mesh.vertices.push([2 * s - 1, 2 * t - 1, 0]);\n if (mesh.coords) {\n mesh.coords.push([s, t]);\n }\n if (mesh.normals) {\n mesh.normals.push([0, 0, 1]);\n }\n if (x < detailX && y < detailY) {\n i = x + y * (detailX + 1);\n mesh.triangles.push([i, i + 1, i + detailX + 1]);\n mesh.triangles.push([i + detailX + 1, i + 1, i + detailX + 2]);\n }\n }\n }\n\n mesh.compile();\n return mesh;\n};\n\n// Export constructor function.\nexport default Mesh;\n"," /*jshint indent: 2, browser: true, newcap: true, multistr: true, es5: true */ \n// GPGPU Utils (singleton, one instance in the environment).\nimport context from 'models/energy2d/gpu/context';\nimport Texture from 'models/energy2d/gpu/texture';\nimport Shader from 'models/energy2d/gpu/shader';\nimport Mesh from 'models/energy2d/gpu/mesh';\n\nvar\n// Dependencies.\n \n \n \n \n\n // The internal `gl` variable holds the current WebGL context.\n gl,\n\n // GPGPU utils must know dimensions of data (grid).\n // This assumption that all the textures will have the same dimensions is\n // caused by performance reasons (helps avoiding recreating data structures).\n // To set grid dimensions and initialize WebGL context, call init(grid_width, grid_height).\n grid_width,\n grid_height,\n\n // Texture used as a temporary storage (Float, RGBA).\n temp_texture,\n // Texture used for Float to RGBA conversion (Unsigned Byte, RGBA).\n output_texture,\n // Array (Float32Array) used as temporal storage during writing RGBA textures.\n temp_storage,\n // Mesh used for rendering.\n plane,\n\n // Flag which determines if synchronization is allowed or not.\n sync_allowed = false,\n\n // Flag which determines if WebGL context and necessary objects are initialized.\n WebGL_initialized = false,\n\n // Special shader for encoding floats based on:\n // https://github.com/cscheid/facet/blob/master/src/shade/bits/encode_float.js\n encode_program,\n copy_program,\n\n // GLSL sources.\n basic_vertex_shader =\n '\\\n varying vec2 coord;\\\n void main() {\\\n coord = gl_Vertex.xy * 0.5 + 0.5;\\\n gl_Position = vec4(gl_Vertex.xyz, 1.0);\\\n }',\n\n encode_fragment_shader =\n '\\\n uniform sampler2D texture;\\\n uniform float channel;\\\n varying vec2 coord;\\\n float shift_right(float v, float amt) {\\\n v = floor(v) + 0.5;\\\n return floor(v / exp2(amt));\\\n }\\\n float shift_left(float v, float amt) {\\\n return floor(v * exp2(amt) + 0.5);\\\n }\\\n \\\n float mask_last(float v, float bits) {\\\n return mod(v, shift_left(1.0, bits));\\\n }\\\n float extract_bits(float num, float from, float to) {\\\n from = floor(from + 0.5);\\\n to = floor(to + 0.5);\\\n return mask_last(shift_right(num, from), to - from);\\\n }\\\n vec4 encode_float(float val) {\\\n if (val == 0.0)\\\n return vec4(0, 0, 0, 0);\\\n float sign = val > 0.0 ? 0.0 : 1.0;\\\n val = abs(val);\\\n float exponent = floor(log2(val));\\\n float biased_exponent = exponent + 127.0;\\\n float fraction = ((val / exp2(exponent)) - 1.0) * 8388608.0;\\\n \\\n float t = biased_exponent / 2.0;\\\n float last_bit_of_biased_exponent = fract(t) * 2.0;\\\n float remaining_bits_of_biased_exponent = floor(t);\\\n \\\n float byte4 = extract_bits(fraction, 0.0, 8.0) / 255.0;\\\n float byte3 = extract_bits(fraction, 8.0, 16.0) / 255.0;\\\n float byte2 = (last_bit_of_biased_exponent * 128.0 + extract_bits(fraction, 16.0, 23.0)) / 255.0;\\\n float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0;\\\n return vec4(byte4, byte3, byte2, byte1);\\\n }\\\n void main() {\\\n vec4 data = texture2D(texture, coord);\\\n if (channel == 0.0)\\\n gl_FragColor = encode_float(data.r);\\\n else if (channel == 1.0)\\\n gl_FragColor = encode_float(data.g);\\\n else if (channel == 2.0)\\\n gl_FragColor = encode_float(data.b);\\\n else\\\n gl_FragColor = encode_float(data.a);\\\n }',\n\n copy_fragment_shader =\n '\\\n uniform sampler2D texture;\\\n varying vec2 coord;\\\n void main() {\\\n gl_FragColor = texture2D(texture, coord);\\\n }',\n\n // Common error messages.\n INIT_ERR = 'GPGPU: call init(grid_width, grid_height) with proper dimensions first!',\n\n // Features and extensions. Their availability will be updated during initialization.\n feature = {\n 'WebGLContext': {\n required: true,\n available: false\n },\n 'OES_texture_float': {\n required: true,\n available: false\n },\n 'FLOAT texture as render target': {\n required: true,\n available: false\n },\n 'OES_texture_float_linear': {\n required: false,\n available: false\n }\n },\n\n //\n // Private methods.\n //\n initWebGL = function() {\n // Setup WebGL context.\n gl = context.getWebGLContext();\n if (gl) {\n feature['WebGLContext'].available = true;\n } else {\n feature['WebGLContext'].available = false;\n throw new Error(\"GPGPU: WebGL is not supported!\");\n }\n\n // Check if OES_texture_float is available.\n if (gl.getExtension('OES_texture_float')) {\n feature['OES_texture_float'].available = true;\n } else {\n feature['OES_texture_float'].available = false;\n throw new Error(\"GPGPU: OES_texture_float is not supported!\");\n }\n\n // Optional extension check.\n if (gl.getExtension('OES_texture_float_linear')) {\n feature['OES_texture_float_linear'].available = true;\n } else {\n feature['OES_texture_float_linear'].available = false;\n console.warn(\"GPGPU: OES_texture_float_linear is not supported. Renering quality will be affected.\");\n }\n\n // Check if rendering to FLOAT textures is supported.\n temp_texture = new Texture(1, 1, {\n type: gl.FLOAT,\n format: gl.RGBA,\n filter: feature['OES_texture_float_linear'].available ? gl.LINEAR : gl.NEAREST\n });\n temp_texture.setAsRenderTarget();\n if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) {\n feature['FLOAT texture as render target'].available = true;\n } else {\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n feature['FLOAT texture as render target'].available = false;\n throw new Error(\"GPGPU: FLOAT texture as render target is not supported!\");\n }\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n // Configure WebGL context and create necessary objects and structures.\n gl.disable(gl.DEPTH_TEST);\n plane = Mesh.plane();\n encode_program = new Shader(basic_vertex_shader, encode_fragment_shader);\n copy_program = new Shader(basic_vertex_shader, copy_fragment_shader);\n // Initialization successful.\n WebGL_initialized = true;\n },\n\n packRGBAData = function(R, G, B, A, storage) {\n var i, i4, len;\n\n if (R.length !== G.length || R.length !== B.length || R.length !== A.length ||\n storage.length !== R.length * 4) {\n throw new Error(\"GPGPU: Invalid input data length.\");\n }\n for (i = 0, len = R.length; i < len; i += 1) {\n i4 = i * 4;\n storage[i4] = R[i];\n storage[i4 + 1] = G[i];\n storage[i4 + 2] = B[i];\n storage[i4 + 3] = A[i];\n }\n };\n\n//\n// Public API.\n//\nexport default {\n // Setups rendering context (only during first call) and necessary storage (texture, array).\n init: function(width, height) {\n var filter;\n\n if (!WebGL_initialized) {\n initWebGL();\n }\n // Set dimensions.\n grid_width = width;\n grid_height = height;\n\n filter = feature['OES_texture_float_linear'].available ? gl.LINEAR : gl.NEAREST;\n\n // Setup storage for given dimensions.\n temp_texture = new Texture(grid_width, grid_height, {\n type: gl.FLOAT,\n format: gl.RGBA,\n filter: filter\n });\n output_texture = new Texture(grid_width, grid_height, {\n type: gl.UNSIGNED_BYTE,\n format: gl.RGBA,\n filter: filter\n });\n temp_storage = new Float32Array(grid_width * grid_height * 4);\n },\n\n get featuresInfo() {\n if (!WebGL_initialized) {\n try {\n // While testing features / extensions, we don't want to throw\n // exceptions.\n initWebGL();\n } catch (e) {}\n }\n return feature;\n },\n\n getWebGLContext: function() {\n if (gl === undefined) {\n initWebGL();\n }\n return gl;\n },\n\n // Creates a floating point texture with proper parameters.\n createTexture: function() {\n if (!grid_width || !grid_height) {\n return new Error(INIT_ERR);\n }\n // Use RGBA format as this is the safest option. Single channel textures aren't well supported\n // as render targets attached to FBO.\n return new Texture(grid_width, grid_height, {\n type: gl.FLOAT,\n format: gl.RGBA,\n filter: feature['OES_texture_float_linear'].available ? gl.LINEAR : gl.NEAREST\n });\n },\n\n // Convert given array to the RGBA FLoat32Array (which can be used\n // in the writeTexture function) and fill one of its channel.\n // Channel should be between 0 and 3, where 0 = R, 1 = G, 2 = B and 3 = A.\n convertToRGBA: function(data, channel, output) {\n var rgba, i, len, i4;\n\n if (data.length !== grid_width * grid_height) {\n throw new Error(\"GPGPU: Invalid input data length.\");\n }\n\n if (output === undefined) {\n rgba = new Float32Array(data.length * 4);\n } else {\n rgba = output;\n }\n\n if (channel === undefined) {\n channel = 0;\n }\n\n // Fill RGBA array.\n for (i = 0, len = data.length; i < len; i += 1) {\n i4 = i * 4;\n rgba[i4] = rgba[i4 + 1] = rgba[i4 + 2] = rgba[i4 + 3] = 0;\n rgba[i4 + channel] = data[i];\n }\n\n return rgba;\n },\n\n // Write a texture.\n writeTexture: function(tex, input) {\n var rgba = this.convertToRGBA(input, 0, temp_storage);\n // Make sure that texture is bound.\n gl.bindTexture(gl.TEXTURE_2D, tex.id);\n gl.texImage2D(gl.TEXTURE_2D, 0, tex.format, tex.width, tex.height, 0, tex.format, tex.type, rgba);\n },\n\n writeRGBATexture: function(tex, R, G, B, A) {\n packRGBAData(R, G, B, A, temp_storage);\n // Make sure that texture is bound.\n gl.bindTexture(gl.TEXTURE_2D, tex.id);\n gl.texImage2D(gl.TEXTURE_2D, 0, tex.format, tex.width, tex.height, 0, tex.format, tex.type, temp_storage);\n },\n\n // Read a floating point texture.\n // Returns Float32Array.\n readTexture: function(tex, output, channel) {\n var output_storage;\n if (!gl || tex.width !== grid_width || tex.height !== grid_height) {\n return new Error(INIT_ERR);\n }\n if (channel === undefined) {\n channel = 0;\n }\n // Use buffer of provided ouput array. So, when result is written there,\n // output is automaticaly updated in a right way.\n output_storage = new Uint8Array(output.buffer);\n\n tex.bind();\n output_texture.setAsRenderTarget();\n encode_program.uniforms({\n channel: channel\n });\n encode_program.draw(plane);\n // format: gl.RGBA, type: gl.UNSIGNED_BYTE - only this set is accepted by WebGL readPixels.\n gl.readPixels(0, 0, output_texture.width, output_texture.height, output_texture.format, output_texture.type, output_storage);\n },\n\n copyTexture: function(src_tex, dst_tex) {\n src_tex.bind();\n dst_tex.setAsRenderTarget();\n copy_program.draw(plane);\n },\n\n // Execute a GLSL program.\n // Arguments:\n // - program - GL.Shader\n // - textures - array of GL.Texture\n // - output - output texture\n executeProgram: function(program, textures, output) {\n var i, len;\n // Bind textures for reading.\n for (i = 0, len = textures.length; i < len; i += 1) {\n textures[i].bind(i);\n }\n // Use temp texture as writing and reading from the same texture is impossible.\n temp_texture.setAsRenderTarget();\n // Draw simple plane (coordinates x/y from -1 to 1 to cover whole viewport).\n program.draw(plane);\n // Unbind textures.\n for (i = 0, len = textures.length; i < len; i += 1) {\n textures[i].unbind(i);\n }\n output.swapWith(temp_texture);\n },\n\n // Synchronization can be useful for debugging.\n setSynchronizationAllowed: function(b) {\n sync_allowed = b;\n },\n\n // Block until all GL execution is complete if synchronization is allowed.\n tryFinish: function() {\n if (sync_allowed) {\n gl.finish();\n }\n }\n};\n","export default \"varying vec2 coord;\\n\\nvoid main() {\\n coord = gl_Vertex.xy * 0.5 + 0.5;\\n gl_Position = vec4(gl_Vertex.xy, 0.0, 1.0);\\n}\\n\";","export default \"// texture 0:\\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n// texture 1:\\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n\\nuniform vec2 grid;\\nuniform float hx;\\nuniform float hy;\\nuniform float inv_timeStep;\\n\\n// Boundary conditions uniforms\\nuniform float enforce_temp;\\nuniform float vN;\\nuniform float vS;\\nuniform float vW;\\nuniform float vE;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data0 = texture2D(data0_tex, coord);\\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y) {\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n float tb = data0.b;\\n // Check if tb is NaN. isnan() function is not available\\n // in OpenGL ES GLSL, so use some tricks. IEEE 754 spec defines\\n // that NaN != NaN, however this seems to not work on Windows.\\n // So, also check if the value is outside [-3.4e38, 3.4e38] (3.4e38\\n // is close to 32Float max value), as such values are not expected.\\n if (tb != tb || tb < -3.4e38 || tb > 3.4e38) {\\n vec4 data1 = texture2D(data1_tex, coord);\\n vec4 data0_m_dy = texture2D(data0_tex, coord - dy);\\n vec4 data0_p_dy = texture2D(data0_tex, coord + dy);\\n vec4 data0_m_dx = texture2D(data0_tex, coord - dx);\\n vec4 data0_p_dx = texture2D(data0_tex, coord + dx);\\n float sij = data1.g * data1.b * inv_timeStep;\\n float rij = data0.a;\\n float axij = hx * (rij + data0_m_dy.a);\\n float bxij = hx * (rij + data0_p_dy.a);\\n float ayij = hy * (rij + data0_m_dx.a);\\n float byij = hy * (rij + data0_p_dx.a);\\n data0.r = (data0.g * sij + data1.r\\n + axij * data0_m_dy.r\\n + bxij * data0_p_dy.r\\n + ayij * data0_m_dx.r\\n + byij * data0_p_dx.r)\\n / (sij + axij + bxij + ayij + byij);\\n } else {\\n data0.r = tb;\\n }\\n } else if (enforce_temp == 1.0) {\\n // \\\"temperature at border\\\" boundary conditions are\\n // integrated into this shader.\\n if (coord.x < grid.x) {\\n data0.r = vN;\\n } else if (coord.x > 1.0 - grid.x) {\\n data0.r = vS;\\n } else if (coord.y < grid.y) {\\n data0.r = vW;\\n } else if (coord.y > 1.0 - grid.y) {\\n data0.r = vE;\\n }\\n }\\n gl_FragColor = data0;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n\\nuniform vec2 grid;\\nuniform float vN;\\nuniform float vS;\\nuniform float vW;\\nuniform float vE;\\nuniform float delta_x;\\nuniform float delta_y;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data0 = texture2D(data0_tex, coord);\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n if (coord.x < grid.x) {\\n data0.r = texture2D(data0_tex, coord + dx).r\\n + vN * delta_y / data0.a;\\n } else if (coord.x > 1.0 - grid.x) {\\n data0.r = texture2D(data0_tex, coord - dx).r\\n - vS * delta_y / data0.a;\\n } else if (coord.y < grid.y) {\\n data0.r = texture2D(data0_tex, coord + dy).r\\n - vW * delta_x / data0.a;\\n } else if (coord.y > 1.0 - grid.y) {\\n data0.r = texture2D(data0_tex, coord - dy).r\\n + vE * delta_x / data0.a;\\n }\\n gl_FragColor = data0;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n\\tvec4 data0 = texture2D(data0_tex, coord);\\n\\tdata0.g = data0.r;\\n\\tgl_FragColor = data0;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float tx;\\nuniform float ty;\\n\\n// Boundary conditions uniforms.\\nuniform float enforce_temp;\\nuniform float vN;\\nuniform float vS;\\nuniform float vW;\\nuniform float vE;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data0 = texture2D(data0_tex, coord);\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y) {\\n \\n float fluidity = texture2D(data1_tex, coord).a;\\n if (fluidity == 1.0) {\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n\\n // Temperature.\\n float t_m_dy = texture2D(data0_tex, coord - dy).r;\\n float t_p_dy = texture2D(data0_tex, coord + dy).r;\\n float t_m_dx = texture2D(data0_tex, coord - dx).r;\\n float t_p_dx = texture2D(data0_tex, coord + dx).r;\\n // Velocity.\\n float u_m_dy = texture2D(data2_tex, coord - dy).r;\\n float u_p_dy = texture2D(data2_tex, coord + dy).r;\\n float v_m_dx = texture2D(data2_tex, coord - dx).g;\\n float v_p_dx = texture2D(data2_tex, coord + dx).g;\\n // Update T0.\\n data0.g = data0.r - tx * (u_p_dy * t_p_dy - u_m_dy * t_m_dy)\\n - ty * (v_p_dx * t_p_dx - v_m_dx * t_m_dx);\\n }\\n } else if (enforce_temp == 1.0) {\\n // \\\"temperature at border\\\" boundary conditions are\\n // integrated into this shader.\\n if (coord.x < grid.x) {\\n data0.g = vN;\\n } else if (coord.x > 1.0 - grid.x) {\\n data0.g = vS;\\n } else if (coord.y < grid.y) {\\n data0.g = vW;\\n } else if (coord.y > 1.0 - grid.y) {\\n data0.g = vE;\\n }\\n }\\n gl_FragColor = data0;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float tx;\\nuniform float ty;\\n\\n// Boundary conditions uniforms.\\nuniform float enforce_temp;\\nuniform float vN;\\nuniform float vS;\\nuniform float vW;\\nuniform float vE;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data0 = texture2D(data0_tex, coord);\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y) {\\n \\n float fluidity = texture2D(data1_tex, coord).a;\\n if (fluidity == 1.0) {\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n\\n // Temperature t0.\\n float t0_m_dy = texture2D(data0_tex, coord - dy).g;\\n float t0_p_dy = texture2D(data0_tex, coord + dy).g;\\n float t0_m_dx = texture2D(data0_tex, coord - dx).g;\\n float t0_p_dx = texture2D(data0_tex, coord + dx).g;\\n // Velocity.\\n float u = texture2D(data2_tex, coord).r;\\n float v = texture2D(data2_tex, coord).g;\\n // Update T.\\n data0.r = 0.5 * (data0.r + data0.g)\\n - 0.5 * tx * u * (t0_p_dy - t0_m_dy)\\n - 0.5 * ty * v * (t0_p_dx - t0_m_dx);\\n }\\n } else if (enforce_temp == 1.0) {\\n // \\\"temperature at border\\\" boundary conditions are\\n // integrated into this shader.\\n if (coord.x < grid.x) {\\n data0.r = vN;\\n } else if (coord.x > 1.0 - grid.x) {\\n data0.r = vS;\\n } else if (coord.y < grid.y) {\\n data0.r = vW;\\n } else if (coord.y > 1.0 - grid.y) {\\n data0.r = vE;\\n }\\n }\\n gl_FragColor = data0;\\n}\\n\";"," import Shader from 'models/energy2d/gpu/shader';\nimport gpgpu from 'models/energy2d/gpu/gpgpu';\nimport basic_vs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/basic.vs.glsl';\nimport solver_fs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/solver.fs.glsl';\nimport force_flux_t_fs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/force-flux-t.fs.glsl';\nimport t_to_t0 from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/t-to-t0.fs.glsl';\nimport maccormack_step1_fs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/maccormack-step1.fs.glsl';\nimport maccormack_step2_fs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/maccormack-step2.fs.glsl';\n\nvar\n// Dependencies. \n // GPGPU utilities. It's a singleton instance.\n // It should have been previously initialized by core-model.\n \n // Shader sources.\n \n \n \n \n \n \n \n\n RELAXATION_STEPS = 10;\n\nexport const makeHeatSolverGPU = function(model) {\n var\n // ========================================================================\n // GLSL Shaders:\n // - Main solver.\n solver_program = new Shader(basic_vs, solver_fs),\n // - Force flux boundary (for T).\n force_flux_t_program = new Shader(basic_vs, force_flux_t_fs),\n // - Force flux boundary (for T0).\n force_flux_t0_program = new Shader(basic_vs, force_flux_t0_fs),\n // - Copy single channel of texture (t to t0).\n t_to_t0_program = new Shader(basic_vs, t_to_t0),\n // - MacCormack advection step 1.\n maccormack_step1_program = new Shader(basic_vs, maccormack_step1_fs),\n // - MacCormack advection step 2.\n maccormack_step2_program = new Shader(basic_vs, maccormack_step2_fs),\n // ========================================================================\n\n // Basic simulation parameters.\n props = model.getModelOptions(),\n nx = props.grid_width,\n ny = props.grid_height,\n\n timeStep = props.timeStep,\n boundary = props.boundary,\n\n delta_x = props.model_width / props.grid_width,\n delta_y = props.model_height / props.grid_height,\n\n relaxation_steps = RELAXATION_STEPS,\n\n // Simulation textures provided by model.\n // texture 0:\n // - R: t\n // - G: t0\n // - B: tb\n // - A: conductivity\n data0_tex = model.getSimulationTexture(0),\n // texture 1:\n // - R: q\n // - G: capacity\n // - B: density\n // - A: fluidity\n data1_tex = model.getSimulationTexture(1),\n // texture 2:\n // - R: u\n // - G: v\n // - B: u0\n // - A: v0\n data2_tex = model.getSimulationTexture(2),\n\n // Convenience variables.\n data_0_1_2_array = [data0_tex, data1_tex, data2_tex],\n data_0_1_array = [data0_tex, data1_tex],\n data_0_array = [data0_tex],\n grid_vec = [1 / ny, 1 / nx],\n\n init = function() {\n var uniforms;\n\n // Solver program uniforms.\n uniforms = {\n // Texture units.\n data0_tex: 0,\n data1_tex: 1,\n // Uniforms.\n grid: grid_vec,\n enforce_temp: 0.0,\n hx: 0.5 / (delta_x * delta_x),\n hy: 0.5 / (delta_y * delta_y),\n inv_timeStep: 1.0 / timeStep\n };\n solver_program.uniforms(uniforms);\n\n // MacCormack step 1 program uniforms.\n uniforms = {\n // Texture units.\n data0_tex: 0,\n data1_tex: 1,\n data2_tex: 2,\n // Uniforms.\n grid: grid_vec,\n enforce_temp: 0.0,\n tx: 0.5 * timeStep / delta_x,\n ty: 0.5 * timeStep / delta_y\n };\n maccormack_step1_program.uniforms(uniforms);\n maccormack_step2_program.uniforms(uniforms);\n\n if (boundary.type === \"temperature\") {\n uniforms = {\n // Additional uniforms.\n enforce_temp: 1.0,\n vN: boundary.upper,\n vS: boundary.lower,\n vW: boundary.left,\n vE: boundary.right\n };\n // Integrate boundary conditions with other programs.\n // This is optimization that allows to limit render-to-texture calls.\n solver_program.uniforms(uniforms);\n maccormack_step1_program.uniforms(uniforms);\n maccormack_step2_program.uniforms(uniforms);\n } else if (boundary.type === \"flux\") {\n uniforms = {\n // Texture units.\n data0_tex: 0,\n // Uniforms.\n grid: grid_vec,\n vN: boundary.upper,\n vS: boundary.lower,\n vW: boundary.left,\n vE: boundary.right,\n delta_x: delta_x,\n delta_y: delta_y\n };\n // Flux boundary conditions can't be integrated into solver program,\n // so use separate GLSL programs.\n force_flux_t_program.uniforms(uniforms);\n force_flux_t0_program.uniforms(uniforms);\n }\n },\n\n macCormack = function() {\n // MacCormack step 1.\n gpgpu.executeProgram(\n maccormack_step1_program,\n data_0_1_2_array,\n data0_tex\n );\n if (boundary.type === \"flux\") {\n // Additional program for boundary conditions\n // is required only for \"flux at border\" option.\n // If \"temperature at border\" is used, boundary\n // conditions are enforced by the MacCormack program.\n gpgpu.executeProgram(\n force_flux_t0_program,\n data_0_array,\n data0_tex\n );\n }\n // MacCormack step 2.\n gpgpu.executeProgram(\n maccormack_step2_program,\n data_0_1_2_array,\n data0_tex\n );\n if (boundary.type === \"flux\") {\n // Additional program for boundary conditions\n // is required only for \"flux at border\" option.\n // If \"temperature at border\" is used, boundary\n // conditions are enforced by the MacCormack program.\n gpgpu.executeProgram(\n force_flux_t_program,\n data_0_array,\n data0_tex\n );\n }\n },\n\n heat_solver_gpu = {\n solve: function(convective) {\n var k;\n // Store previous values of t in t0.\n gpgpu.executeProgram(\n t_to_t0_program,\n data_0_array,\n data0_tex\n );\n for (k = 0; k < relaxation_steps; k += 1) {\n gpgpu.executeProgram(\n solver_program,\n data_0_1_array,\n data0_tex\n );\n if (boundary.type === \"flux\") {\n // Additional program for boundary conditions\n // is required only for \"flux at border\" option.\n // If \"temperature at border\" is used, boundary\n // conditions are enforced by the solver program.\n gpgpu.executeProgram(\n force_flux_t_program,\n data_0_array,\n data0_tex\n );\n }\n }\n if (convective) {\n macCormack();\n }\n }\n };\n // One-off initialization.\n init();\n return heat_solver_gpu;\n};\n"," \nimport arrays from 'arrays';\n\nvar RELAXATION_STEPS = 5, GRAVITY = 0,\n\n BUOYANCY_AVERAGE_ALL = 0,\n BUOYANCY_AVERAGE_COLUMN = 1;\n\nexport const makeFluidSolver = function(model) {\n var\n // Basic simulation parameters.\n props = model.getModelOptions(),\n nx = props.grid_width,\n ny = props.grid_height,\n\n relaxationSteps = RELAXATION_STEPS,\n gravity = GRAVITY,\n\n // Simulation arrays provided by model.\n t = model.getTemperatureArray(),\n fluidity = model.getFluidityArray(),\n uWind = model.getUWindArray(),\n vWind = model.getVWindArray(),\n\n // Internal simulation arrays.\n array_type = model.getArrayType(),\n u0 = arrays.create(nx * ny, 0, array_type),\n v0 = arrays.create(nx * ny, 0, array_type),\n\n // Convenience variables.\n nx1 = nx - 1,\n ny1 = ny - 1,\n nx2 = nx - 2,\n ny2 = ny - 2,\n\n deltaX = props.model_width / props.grid_width,\n deltaY = props.model_height / props.grid_height,\n\n i2dx = 0.5 / deltaX,\n i2dy = 0.5 / deltaY,\n idxsq = 1.0 / (deltaX * deltaX),\n idysq = 1.0 / (deltaY * deltaY),\n\n //\n // Private methods\n //\n\n // b = 1 horizontal; b = 2 vertical\n applyBoundary = function(b, f) {\n var horizontal = b === 1, vertical = b === 2, nx1nx = nx1 * nx, nx2nx = nx2 * nx, i, j, inx, inx_plus1, inx_plus_ny1, inx_plus_ny2, nx_plusj;\n\n for (i = 1; i < nx1; i += 1) { inx = i * nx; inx_plus1 = inx + 1;\n inx_plus_ny1 = inx + ny1;\n inx_plus_ny2 = inx + ny2;\n // upper side\n f[inx] = vertical ? -f[inx_plus1] : f[inx_plus1];\n // lower side\n f[inx_plus_ny1] = vertical ? -f[inx_plus_ny2] : f[inx_plus_ny2];\n }\n for (j = 1; j < ny1; j += 1) {\n // left side\n nx_plusj = nx + j;\n f[j] = horizontal ? -f[nx_plusj] : f[nx_plusj];\n // right side\n f[nx1nx + j] = horizontal ? -f[nx2nx + j] : f[nx2nx + j];\n }\n\n // upper-left corner\n f[0] = 0.5 * (f[nx] + f[1]);\n // upper-right corner\n f[nx1nx] = 0.5 * (f[nx2nx] + f[nx1nx + 1]);\n // lower-left corner\n f[ny1] = 0.5 * (f[nx + ny1] + f[ny2]);\n // lower-right corner\n f[nx1nx + ny1] = 0.5 * (f[nx2nx + ny1] + f[nx1nx + ny2]);\n },\n\n setObstacleVelocity = function(u, v) {\n var\n count = 0,\n uw, vw,\n i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n if (!fluidity[jinx]) {\n uw = uWind[jinx];\n vw = vWind[jinx];\n count = 0;\n if (fluidity[jinx_minus_nx]) { count += 1;\n u[jinx] = uw - u[jinx_minus_nx];\n v[jinx] = vw + v[jinx_minus_nx];\n } else if (fluidity[jinx_plus_nx]) {\n count += 1;\n u[jinx] = uw - u[jinx_plus_nx];\n v[jinx] = vw + v[jinx_plus_nx];\n }\n if (fluidity[jinx_minus_1]) {\n count += 1;\n u[jinx] = uw + u[jinx_minus_1];\n v[jinx] = vw - v[jinx_minus_1];\n } else if (fluidity[jinx_plus_1]) {\n count += 1;\n u[jinx] = uw + u[jinx_plus_1];\n v[jinx] = vw - v[jinx_plus_1];\n }\n if (count === 0) {\n u[jinx] = uw;\n v[jinx] = vw;\n }\n }\n }\n }\n },\n\n // ensure dx/dn = 0 at the boundary (the Neumann boundary condition)\n // float[][] x\n setObstacleBoundary = function(x) {\n var i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (!fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n if (fluidity[jinx_minus_nx]) {\n x[jinx] = x[jinx_minus_nx];\n } else if (fluidity[jinx_plus_nx]) {\n x[jinx] = x[jinx_plus_nx];\n }\n if (fluidity[jinx_minus_1]) {\n x[jinx] = x[jinx_minus_1];\n } else if (fluidity[jinx_plus_1]) {\n x[jinx] = x[jinx_plus_1];\n }\n }\n }\n }\n },\n\n getMeanTemperature = function(i, j) {\n var\n lowerBound = 0,\n upperBound = ny,\n t0 = 0,\n k, inx_plus_k;\n\n // search for the upper bound\n for (k = j - 1; k > 0; k -= 1) {\n inx_plus_k = i * nx + k;\n if (!fluidity[inx_plus_k]) {\n lowerBound = k;\n break;\n }\n }\n\n for (k = j + 1; k < ny; k += 1) {\n inx_plus_k = i * nx + k;\n if (!fluidity[inx_plus_k]) {\n upperBound = k;\n break;\n }\n }\n\n for (k = lowerBound; k < upperBound; k += 1) {\n inx_plus_k = i * nx + k;\n t0 += t[inx_plus_k];\n }\n return t0 / (upperBound - lowerBound);\n },\n\n applyBuoyancy = function(f) {\n var\n g = gravity * props.timeStep,\n b = props.thermal_buoyancy * props.timeStep,\n t0,\n i, j, inx, jinx;\n\n switch (props.buoyancy_approximation) {\n case BUOYANCY_AVERAGE_ALL:\n t0 = (function(array) {\n // Returns average value of an array.\n var\n acc = 0,\n length = array.length,\n i;\n for (i = 0; i < length; i += 1) {\n acc += array[i];\n }\n return acc / length;\n }(t)); // Call with the temperature array.\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n f[jinx] += (g - b) * t[jinx] + b * t0;\n }\n }\n }\n break;\n case BUOYANCY_AVERAGE_COLUMN:\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n t0 = getMeanTemperature(i, j);\n f[jinx] += (g - b) * t[jinx] + b * t0;\n }\n }\n }\n break;\n }\n },\n\n conserve = function(u, v, phi, div) {\n var\n s = 0.5 / (idxsq + idysq),\n k, i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n div[jinx] = (u[jinx_plus_nx] - u[jinx_minus_nx]) * i2dx + (v[jinx_plus_1] - v[jinx_minus_1]) * i2dy;\n phi[jinx] = 0;\n }\n }\n }\n applyBoundary(0, div);\n applyBoundary(0, phi);\n setObstacleBoundary(div);\n setObstacleBoundary(phi);\n\n for (k = 0; k < relaxationSteps; k += 1) {\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n phi[jinx] = s * ((phi[jinx_minus_nx] + phi[jinx_plus_nx]) * idxsq + (phi[jinx_minus_1] + phi[jinx_plus_1]) * idysq - div[jinx]);\n }\n }\n }\n }\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n u[jinx] -= (phi[jinx_plus_nx] - phi[jinx_minus_nx]) * i2dx;\n v[jinx] -= (phi[jinx_plus_1] - phi[jinx_minus_1]) * i2dy;\n }\n }\n }\n applyBoundary(1, u);\n applyBoundary(2, v);\n },\n\n diffuse = function(b, f0, f) {\n var\n timeStep = props.timeStep,\n viscosity = props.background_viscosity,\n hx = timeStep * viscosity * idxsq,\n hy = timeStep * viscosity * idysq,\n dn = 1.0 / (1 + 2 * (hx + hy)),\n k, i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n arrays.copy(f, f0);\n for (k = 0; k < relaxationSteps; k += 1) {\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n f[jinx] = (f0[jinx] + hx * (f[jinx_minus_nx] + f[jinx_plus_nx]) + hy * (f[jinx_minus_1] + f[jinx_plus_1])) * dn;\n }\n }\n }\n applyBoundary(b, f);\n }\n },\n\n // MacCormack\n macCormack = function(b, f0, f) {\n var\n timeStep = props.timeStep,\n tx = 0.5 * timeStep / deltaX,\n ty = 0.5 * timeStep / deltaY,\n i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n f[jinx] = f0[jinx] - tx * (u0[jinx_plus_nx] * f0[jinx_plus_nx] - u0[jinx_minus_nx] * f0[jinx_minus_nx]) - ty * (v0[jinx_plus_1] * f0[jinx_plus_1] - v0[jinx_minus_1] * f0[jinx_minus_1]);\n }\n }\n }\n\n applyBoundary(b, f);\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n f0[jinx] = 0.5 * (f0[jinx] + f[jinx]) - 0.5 * tx * u0[jinx] * (f[jinx_plus_nx] - f[jinx_minus_nx]) - 0.5 * ty * v0[jinx] * (f[jinx_plus_1] - f[jinx_minus_1]);\n }\n }\n }\n\n arrays.copy(f0, f);\n\n applyBoundary(b, f);\n },\n\n advect = function(b, f0, f) {\n macCormack(b, f0, f);\n };\n\n return {\n // TODO: swap the two arrays instead of copying them every time?\n solve: function(u, v) {\n if (props.thermal_buoyancy !== 0) {\n applyBuoyancy(v);\n }\n setObstacleVelocity(u, v);\n if (props.background_viscosity > 0) {\n // inviscid case\n diffuse(1, u0, u);\n diffuse(2, v0, v);\n conserve(u, v, u0, v0);\n setObstacleVelocity(u, v);\n }\n arrays.copy(u, u0);\n arrays.copy(v, v0);\n advect(1, u0, u);\n advect(2, v0, v);\n conserve(u, v, u0, v0);\n setObstacleVelocity(u, v);\n }\n };\n};\n","export default \"varying vec2 coord;\\n\\nvoid main() {\\n coord = gl_Vertex.xy * 0.5 + 0.5;\\n gl_Position = vec4(gl_Vertex.xy, 0.0, 1.0);\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float tx;\\nuniform float ty;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n // Update velocity UV components.\\n data2.rg = data2.ba - tx * (data2_p_dy.bb * data2_p_dy.ba - data2_m_dy.bb * data2_m_dy.ba)\\n - ty * (data2_p_dx.aa * data2_p_dx.ba - data2_m_dx.aa * data2_m_dx.ba);\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float tx;\\nuniform float ty;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n // Update velocity UV components.\\n data2.rg = 0.5 * (data2.ba + data2.rg) \\n - 0.5 * tx * data2.bb * (data2_p_dy.rg - data2_m_dy.rg)\\n - 0.5 * ty * data2.aa * (data2_p_dx.rg - data2_m_dx.rg);\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n // Process corners.\\n // TODO: values from previous step are used for corners.\\n if (coord.x < grid.x && coord.y < grid.y) { \\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.rg = 0.5 * (data2_p_dy.rg + data2_p_dx.rg);\\n }\\n else if (coord.x > 1.0 - grid.x && coord.y < grid.y) { \\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.rg = 0.5 * (data2_p_dy.rg + data2_m_dx.rg);\\n }\\n else if (coord.x > 1.0 - grid.x && coord.y > 1.0 - grid.y) { \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.rg = 0.5 * (data2_m_dy.rg + data2_m_dx.rg);\\n }\\n else if (coord.x < grid.x && coord.y > 1.0 - grid.y) { \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.rg = 0.5 * (data2_m_dy.rg + data2_p_dx.rg);\\n }\\n // Process boundaries.\\n // Left.\\n else if (coord.x < grid.x) {\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.rg = vec2(data2_p_dx.r, -data2_p_dx.g);\\n }\\n // Right.\\n else if (coord.x > 1.0 - grid.x) {\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.rg = vec2(data2_m_dx.r, -data2_m_dx.g);\\n }\\n // Down.\\n else if (coord.y < grid.y) {\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n data2.rg = vec2(-data2_p_dy.r, data2_p_dy.g);\\n }\\n // Up.\\n else if (coord.y > 1.0 - grid.y) {\\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n data2.rg = vec2(-data2_m_dy.r, data2_m_dy.g);\\n }\\n \\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n // Process corners.\\n // TODO: values from previous step are used for corners.\\n if (coord.x < grid.x && coord.y < grid.y) { \\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.ba = 0.5 * (data2_p_dy.ba + data2_p_dx.ba);\\n }\\n else if (coord.x > 1.0 - grid.x && coord.y < grid.y) { \\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.ba = 0.5 * (data2_p_dy.ba + data2_m_dx.ba);\\n }\\n else if (coord.x > 1.0 - grid.x && coord.y > 1.0 - grid.y) { \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.ba = 0.5 * (data2_m_dy.ba + data2_m_dx.ba);\\n }\\n else if (coord.x < grid.x && coord.y > 1.0 - grid.y) { \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.ba = 0.5 * (data2_m_dy.ba + data2_p_dx.ba);\\n }\\n // Process boundaries.\\n // Left.\\n else if (coord.x < grid.x) {\\n data2.ba = texture2D(data2_tex, coord + dx).ba;\\n }\\n // Right.\\n else if (coord.x > 1.0 - grid.x) {\\n data2.ba = texture2D(data2_tex, coord - dx).ba;\\n }\\n // Down.\\n else if (coord.y < grid.y) {\\n data2.ba = texture2D(data2_tex, coord + dy).ba;\\n }\\n // Up.\\n else if (coord.y > 1.0 - grid.y) {\\n data2.ba = texture2D(data2_tex, coord - dy).ba;\\n }\\n \\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 0.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n\\n if (texture2D(data1_tex, coord - dy).a == 1.0) {\\n data2.ba = texture2D(data2_tex, coord - dy).ba;\\n } \\n else if (texture2D(data1_tex, coord + dy).a == 1.0) {\\n data2.ba = texture2D(data2_tex, coord + dy).ba;\\n } \\n\\n if (texture2D(data1_tex, coord - dx).a == 1.0) {\\n data2.ba = texture2D(data2_tex, coord - dx).ba;\\n } \\n else if (texture2D(data1_tex, coord + dx).a == 1.0) {\\n data2.ba = texture2D(data2_tex, coord + dx).ba;\\n } \\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n// texture 3: \\n// - R: uWind\\n// - G: vWind\\n// - B: undefined\\n// - A: undefined\\nuniform sampler2D data3_tex;\\n\\nuniform vec2 grid;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n\\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 0.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n\\n int count = 0;\\n\\n if (texture2D(data1_tex, coord - dy).a == 1.0) {\\n count += 1;\\n vec2 data2_m_dy = texture2D(data2_tex, coord - dy).rg;\\n data2.rg = texture2D(data3_tex, coord).rg + vec2(-data2_m_dy.r, data2_m_dy.g);\\n } \\n else if (texture2D(data1_tex, coord + dy).a == 1.0) {\\n count += 1;\\n vec2 data2_p_dy = texture2D(data2_tex, coord + dy).rg;\\n data2.rg = texture2D(data3_tex, coord).rg + vec2(-data2_p_dy.r, data2_p_dy.g);\\n } \\n\\n if (texture2D(data1_tex, coord - dx).a == 1.0) {\\n count += 1;\\n vec2 data2_m_dx = texture2D(data2_tex, coord - dx).rg;\\n data2.rg = texture2D(data3_tex, coord).rg + vec2(data2_m_dx.r, -data2_m_dx.g);\\n } \\n else if (texture2D(data1_tex, coord + dx).a == 1.0) {\\n count += 1;\\n vec2 data2_p_dx = texture2D(data2_tex, coord + dx).rg;\\n data2.rg = texture2D(data3_tex, coord).rg + vec2(data2_p_dx.r, -data2_p_dx.g);\\n } \\n\\n if (count == 0) {\\n data2.rg = texture2D(data3_tex, coord).rg;\\n }\\n }\\n \\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n\\tvec4 data2 = texture2D(data2_tex, coord);\\n\\tdata2.ba = data2.rg;\\n\\tgl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float i2dx;\\nuniform float i2dy;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n \\n // Phi.\\n data2.b = 0.0;\\n // Div.\\n data2.a = (data2_p_dy.r - data2_m_dy.r) * i2dx + (data2_p_dx.g - data2_m_dx.g) * i2dy;\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float s;\\nuniform float idxsq;\\nuniform float idysq;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n \\n // Phi.\\n data2.b = s * ((data2_m_dy.b + data2_p_dy.b) * idxsq + (data2_m_dx.b + data2_p_dx.b) * idysq - data2.a);\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float i2dx;\\nuniform float i2dy;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n \\n // U.\\n data2.r -= (data2_p_dy.b - data2_m_dy.b) * i2dx;\\n // V.\\n data2.g -= (data2_p_dx.b - data2_m_dx.b) * i2dy;\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float hx;\\nuniform float hy;\\nuniform float dn;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n // Update velocity UV components.\\n data2.rg = (data2.ba + hx * (data2_m_dy.rg + data2_p_dy.rg)\\n + hy * (data2_m_dx.rg + data2_p_dx.rg)) * dn;\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float g;\\nuniform float b;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n float t = texture2D(data0_tex, coord).r;\\n // Get average column temperature.\\n\\n float avg_t = t;\\n float count = 1.0;\\n vec2 n_coord = coord - dx;\\n // Silly while(true) loop (almost).\\n // While loops are not allowed.\\n // For loops with non-constant expressions also.\\n for (int i = 1; i != 0; i++) {\\n if (n_coord.x > 0.0 && texture2D(data1_tex, n_coord).a == 1.0) {\\n avg_t += texture2D(data0_tex, n_coord).r;\\n count += 1.0;\\n n_coord -= dx;\\n } else {\\n break;\\n }\\n }\\n n_coord = coord + dx;\\n // Silly while(true) loop (almost).\\n // While loops are not allowed.\\n // For loops with non-constant expressions also.\\n for (int i = 1; i != 0; i++) {\\n if (n_coord.x < 1.0 && texture2D(data1_tex, n_coord).a == 1.0) {\\n avg_t += texture2D(data0_tex, n_coord).r;\\n count += 1.0;\\n n_coord += dx;\\n } else {\\n break;\\n }\\n }\\n avg_t /= count;\\n\\n // Update velocity V component.\\n data2.g += (g - b) * t + b * avg_t;\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";"," import Shader from 'models/energy2d/gpu/shader';\nimport gpgpu from 'models/energy2d/gpu/gpgpu';\nimport basic_vs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/basic.vs.glsl';\nimport maccormack_step1_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/maccormack-step1.fs.glsl';\nimport maccormack_step2_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/maccormack-step2.fs.glsl';\nimport apply_uv_boundary_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-uv-boundary.fs.glsl';\nimport apply_u0v0_boundary_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-u0v0-boundary.fs.glsl';\nimport set_obstacle_boundary_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/set-obstacle-boundary.fs.glsl';\nimport set_obstacle_velocity_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/set-obstacle-velocity.fs.glsl';\nimport uv_to_u0v0_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/uv-to-u0v0.fs.glsl';\nimport conserve_step1_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step1.fs.glsl';\nimport conserve_step2_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step2.fs.glsl';\nimport conserve_step3_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step3.fs.glsl';\nimport diffuse_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/diffuse.fs.glsl';\nimport apply_buoyancy_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-buoyancy.fs.glsl';\n\nvar\n// Dependencies. \n // GPGPU utilities. It's a singleton instance.\n // It should have been previously initialized by core-model.\n \n // Shader sources. One of Lab build steps converts sources to JavaScript file.\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n RELAXATION_STEPS = 10,\n GRAVITY = 0;\n\nexport const makeFluidSolverGPU = function(model) {\n var\n // ========================================================================\n // GLSL Shaders:\n // - MacCormack advection, first step.\n maccormack_step1_program = new Shader(basic_vs, maccormack_step1_fs),\n maccormack_step2_program = new Shader(basic_vs, maccormack_step2_fs),\n apply_uv_boundary_program = new Shader(basic_vs, apply_uv_boundary_fs),\n apply_u0v0_boundary_program = new Shader(basic_vs, apply_u0v0_boundary_fs),\n set_obstacle_boundary_program = new Shader(basic_vs, set_obstacle_boundary_fs),\n set_obstacle_velocity_program = new Shader(basic_vs, set_obstacle_velocity_fs),\n uv_to_u0v0_program = new Shader(basic_vs, uv_to_u0v0_fs),\n conserve_step1_program = new Shader(basic_vs, conserve_step1_fs),\n conserve_step2_program = new Shader(basic_vs, conserve_step2_fs),\n conserve_step3_program = new Shader(basic_vs, conserve_step3_fs),\n diffuse_program = new Shader(basic_vs, diffuse_fs),\n apply_buoyancy_program = new Shader(basic_vs, apply_buoyancy_fs),\n // ========================================================================\n\n // Simulation arrays provided by model.\n // texture 0:\n // - R: t\n // - G: t0\n // - B: tb\n // - A: conductivity\n data0_tex = model.getSimulationTexture(0),\n // texture 1:\n // - R: q\n // - G: capacity\n // - B: density\n // - A: fluidity\n data1_tex = model.getSimulationTexture(1),\n // texture 2:\n // - R: u\n // - G: v\n // - B: u0\n // - A: v0\n data2_tex = model.getSimulationTexture(2),\n // texture 3:\n // - R: uWind\n // - G: vWind\n // - B: undefined\n // - A: undefined\n data3_tex = model.getSimulationTexture(3),\n\n // Basic simulation parameters.\n props = model.getModelOptions(),\n nx = props.grid_width,\n ny = props.grid_height,\n\n timeStep = props.timeStep,\n thermal_buoyancy = props.thermal_buoyancy,\n viscosity = props.background_viscosity,\n\n delta_x = props.model_width / props.grid_width,\n delta_y = props.model_height / props.grid_height,\n\n relaxation_steps = RELAXATION_STEPS,\n gravity = GRAVITY,\n\n // Convenience variables.\n i2dx = 0.5 / delta_x,\n i2dy = 0.5 / delta_y,\n idxsq = 1.0 / (delta_x * delta_x),\n idysq = 1.0 / (delta_y * delta_y),\n s = 0.5 / (idxsq + idysq),\n\n hx = timeStep * viscosity * idxsq,\n hy = timeStep * viscosity * idysq,\n dn = 1.0 / (1 + 2 * (hx + hy)),\n\n g = gravity * timeStep,\n b = thermal_buoyancy * timeStep,\n\n grid_vec = [1 / ny, 1 / nx],\n\n // Textures sets.\n data_2_array = [data2_tex],\n data_1_2_array = [data1_tex, data2_tex],\n data_0_1_2_array = [data0_tex, data1_tex, data2_tex],\n data_1_2_3_array = [data1_tex, data2_tex, data3_tex],\n\n init = function() {\n var uniforms;\n\n // MacCormack step 1 and 2 uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec,\n tx: 0.5 * timeStep / delta_x,\n ty: 0.5 * timeStep / delta_y\n };\n maccormack_step1_program.uniforms(uniforms);\n maccormack_step2_program.uniforms(uniforms);\n\n // Apply UV / U0V0 boundary uniforms.\n uniforms = {\n // Texture units.\n data2_tex: 0,\n // Uniforms.\n grid: grid_vec\n };\n apply_uv_boundary_program.uniforms(uniforms);\n apply_u0v0_boundary_program.uniforms(uniforms);\n\n // Set obstacle boundary uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec\n };\n set_obstacle_boundary_program.uniforms(uniforms);\n\n // Set obstacle velocity uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n data3_tex: 2,\n // Uniforms.\n grid: grid_vec\n };\n set_obstacle_velocity_program.uniforms(uniforms);\n\n // Conserve step 1 and 3 uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec,\n i2dx: i2dx,\n i2dy: i2dy\n };\n conserve_step1_program.uniforms(uniforms);\n conserve_step3_program.uniforms(uniforms);\n\n // Conserve step 2 uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec,\n s: s,\n idxsq: idxsq,\n idysq: idysq\n };\n conserve_step2_program.uniforms(uniforms);\n\n // Diffuse uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec,\n hx: hx,\n hy: hy,\n dn: dn\n };\n diffuse_program.uniforms(uniforms);\n\n // Apply buoyancy uniforms.\n uniforms = {\n // Texture units.\n data0_tex: 0,\n data1_tex: 1,\n data2_tex: 2,\n // Uniforms.\n grid: grid_vec,\n g: g,\n b: b\n };\n apply_buoyancy_program.uniforms(uniforms);\n },\n\n applyBuoyancy = function() {\n gpgpu.executeProgram(\n apply_buoyancy_program,\n data_0_1_2_array,\n data2_tex\n );\n },\n\n macCormack = function() {\n // Step 1.\n gpgpu.executeProgram(\n maccormack_step1_program,\n data_1_2_array,\n data2_tex\n );\n // Apply boundary.\n gpgpu.executeProgram(\n apply_uv_boundary_program,\n data_2_array,\n data2_tex\n );\n // Step 2.\n gpgpu.executeProgram(\n maccormack_step2_program,\n data_1_2_array,\n data2_tex\n );\n // Apply boundary again.\n gpgpu.executeProgram(\n apply_uv_boundary_program,\n data_2_array,\n data2_tex\n );\n },\n\n conserve = function() {\n var k;\n // Step 1.\n gpgpu.executeProgram(\n conserve_step1_program,\n data_1_2_array,\n data2_tex\n );\n // Apply boundary.\n gpgpu.executeProgram(\n apply_u0v0_boundary_program,\n data_2_array,\n data2_tex\n );\n // Set obstacle boundary.\n gpgpu.executeProgram(\n set_obstacle_boundary_program,\n data_1_2_array,\n data2_tex\n );\n // Relaxation.\n for (k = 0; k < relaxation_steps; k += 1) {\n // Step 2.\n gpgpu.executeProgram(\n conserve_step2_program,\n data_1_2_array,\n data2_tex\n );\n }\n // Step 3.\n gpgpu.executeProgram(\n conserve_step3_program,\n data_1_2_array,\n data2_tex\n );\n // Apply boundary.\n gpgpu.executeProgram(\n apply_uv_boundary_program,\n data_2_array,\n data2_tex\n );\n },\n\n diffuse = function() {\n var k;\n // Copy UV to U0V0.\n gpgpu.executeProgram(\n uv_to_u0v0_program,\n data_2_array,\n data2_tex\n );\n // Relaxation.\n for (k = 0; k < relaxation_steps; k += 1) {\n // Step 2.\n gpgpu.executeProgram(\n diffuse_program,\n data_1_2_array,\n data2_tex\n );\n\n // Apply boundary.\n gpgpu.executeProgram(\n apply_uv_boundary_program,\n data_2_array,\n data2_tex\n );\n }\n },\n\n setObstacleVelocity = function() {\n gpgpu.executeProgram(\n set_obstacle_velocity_program,\n data_1_2_3_array,\n data2_tex\n );\n },\n\n copyUVtoU0V0 = function() {\n gpgpu.executeProgram(\n uv_to_u0v0_program,\n data_2_array,\n data2_tex\n );\n },\n\n fluid_solver_gpu = {\n solve: function() {\n if (thermal_buoyancy !== 0) {\n applyBuoyancy();\n }\n setObstacleVelocity();\n if (viscosity > 0) {\n diffuse();\n conserve();\n setObstacleVelocity();\n }\n copyUVtoU0V0();\n macCormack();\n conserve();\n setObstacleVelocity();\n }\n };\n\n // One-off initialization.\n init();\n\n return fluid_solver_gpu;\n};\n","/*jslint indent: 2, browser: true, newcap: true */\n\nexport const hypot = function(x, y) {\n var t;\n x = Math.abs(x);\n y = Math.abs(y);\n t = Math.min(x, y);\n x = Math.max(x, y);\n if (x === 0) return 0;\n t = t / x;\n return x * Math.sqrt(1 + t * t);\n};\n","/*jslint indent: 2, browser: true, newcap: true */\n\n// Based on: http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n// It is optional to repeat the first vertex at the end of list of polygon vertices.\nexport const pointInsidePolygon = function(nvert, vertx, verty, testx, testy) {\n var c = 0, i, j;\n for (i = 0, j = nvert - 1; i < nvert; j = i, i += 1) { if (((verty[i] > testy) !== (verty[j] > testy)) && (testx < (vertx[j] - vertx[i]) * (testy - verty[i]) / (verty[j] - verty[i]) + vertx[i])) { c = !c; }\n }\n return !!c;\n};\n\n//\n// Line in 2D.\n//\n// It is defined by two points - (x1, y1) and (x2, y2).\nexport const Line = function(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n};\n\nLine.prototype.intersectsLine = function(line) {\n var result,\n a1 = {\n x: this.x1,\n y: this.y1\n },\n a2 = {\n x: this.x2,\n y: this.y2\n },\n b1 = {\n x: line.x1,\n y: line.y1\n },\n b2 = {\n x: line.x2,\n y: line.y2\n },\n ua_t = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),\n ub_t = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),\n u_b = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y),\n ua, ub;\n\n if (u_b !== 0) {\n ua = ua_t / u_b;\n ub = ub_t / u_b;\n\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result = true;\n } else {\n result = false;\n }\n } else {\n if (ua_t === 0 || ub_t === 0) {\n result = true; // Coincident.\n } else {\n result = false; // Parallel.\n }\n }\n return result;\n};\n\n//\n// Polygon.\n//\n// Implements Shape2D interface:\n// - polygonize()\n// - contains(x, y)\nexport const Polygon = function(count, x_coords, y_coords, x, y) {\n this.count = count;\n this.raw_x_coords = x_coords;\n this.raw_y_coords = y_coords;\n this.x_coords = new Array(count);\n this.y_coords = new Array(count);\n // x_coords and y_coors will be updated now:\n this.x = x || 0;\n this.y = y || 0;\n};\n\nObject.defineProperty(Polygon.prototype, 'x', {\n get: function() {\n return this._x;\n },\n set: function(v) {\n var i, len;\n for (i = 0, len = this.count; i < len; i++) {\n this.x_coords[i] = this.raw_x_coords[i] + v;\n }\n this._x = v;\n }\n});\n\nObject.defineProperty(Polygon.prototype, 'y', {\n get: function() {\n return this._y;\n },\n set: function(v) {\n var i, len;\n for (i = 0, len = this.count; i < len; i++) {\n this.y_coords[i] = this.raw_y_coords[i] + v;\n }\n this._y = v;\n }\n});\n\nPolygon.prototype.polygonize = function() {\n return this;\n};\n\n// Based on: http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n// It is optional to repeat the first vertex at the end of list of polygon vertices.\nPolygon.prototype.contains = function(x, y) {\n var\n x_coords = this.x_coords,\n y_coords = this.y_coords,\n count = this.count,\n c = 0,\n i, j;\n\n for (i = 0, j = count - 1; i < count; j = i, i += 1) {\n if (((y_coords[i] > y) !== (y_coords[j] > y)) &&\n (x < (x_coords[j] - x_coords[i]) * (y - y_coords[i]) / (y_coords[j] - y_coords[i]) + x_coords[i])) {\n c = !c;\n }\n }\n // Convert to Boolean.\n return !!c;\n};\n\n//\n// Rectangle.\n// x, y - left-top corner\n//\n// Implements Shape2D interface:\n// - polygonize()\n// - contains(x, y)\nexport const Rectangle = function(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.polygon_cache = undefined;\n};\n\nRectangle.prototype.polygonize = function() {\n var\n x, y, w, h;\n\n if (!this.polygon_cache) {\n x = this.x;\n y = this.y;\n w = this.width;\n h = this.height;\n this.polygon_cache = new Polygon(4, [x, x + w, x + w, x], [y, y, y + h, y + h]);\n }\n return this.polygon_cache;\n};\n\nRectangle.prototype.contains = function(x, y) {\n return x >= this.x && x <= this.x + this.width &&\n y >= this.y && y <= this.y + this.height;\n};\n\n// Helper function, used by Ellipse and Ring.\nvar polygonizeEllipse = function(x, y, ra, rb, segments) {\n var\n vx = new Array(segments),\n vy = new Array(segments),\n delta = 2 * Math.PI / segments,\n theta, i;\n\n for (i = 0; i < segments; i += 1) {\n theta = delta * i;\n vx[i] = x + ra * Math.cos(theta);\n vy[i] = y + rb * Math.sin(theta);\n }\n return new Polygon(segments, vx, vy);\n};\n\n//\n// Ellipse.\n// x, y - center\n// a, b - diameter (not radius)\n//\n// Implements Shape2D interface:\n// - polygonize()\n// - contains(x, y)\nexport const Ellipse = function(x, y, a, b) {\n this.x = x;\n this.y = y;\n this.a = a;\n this.b = b;\n this.polygon_cache = undefined;\n};\n\nEllipse.prototype.POLYGON_SEGMENTS = 50;\n\nEllipse.prototype.polygonize = function() {\n if (!this.polygon_cache) {\n this.polygon_cache = polygonizeEllipse(this.x, this.y, this.a * 0.5, this.b * 0.5, this.POLYGON_SEGMENTS);\n }\n return this.polygon_cache;\n};\n\nEllipse.prototype.contains = function(x, y) {\n var\n px = x - this.x,\n py = y - this.y,\n ra = this.a * 0.5,\n rb = this.b * 0.5;\n\n return px * px / (ra * ra) + py * py / (rb * rb) <= 1;\n};\n\n//\n// Ring.\n// x, y - center\n// inner, outer - diameter (not radius)\n//\n// Implements Shape2D interface:\n// - polygonize()\n// - contains(x, y)\nexport const Ring = function(x, y, inner, outer) {\n this.x = x;\n this.y = y;\n this.inner = inner;\n this.outer = outer;\n this.polygon_cache = undefined;\n};\n\nRing.prototype.POLYGON_SEGMENTS = 50;\n\n// Returns OUTER circle polygonization.\nRing.prototype.polygonize = function() {\n if (!this.polygon_cache) {\n this.polygon_cache = polygonizeEllipse(this.x, this.y, this.outer * 0.5, this.outer * 0.5, this.POLYGON_SEGMENTS);\n }\n return this.polygon_cache;\n};\n\nRing.prototype.contains = function(x, y) {\n var\n px = x - this.x,\n py = y - this.y,\n ra_outer = this.outer * 0.5,\n rb_outer = this.outer * 0.5,\n ra_inner = this.inner * 0.5,\n rb_inner = this.inner * 0.5;\n\n return (px * px / (ra_outer * ra_outer) + py * py / (rb_outer * rb_outer) <= 1) &&\n (px * px / (ra_inner * ra_inner) + py * py / (rb_inner * rb_inner) >= 1);\n};\n","/*jslint indent: 2, browser: true, newcap: true */\nimport { hypot } from 'models/energy2d/models/helpers';\nimport { Line, Rectangle } from 'models/energy2d/models/shape';\n\n//\n// Photon class.\n//\nexport const Photon = function(x, y, energy, c, angle) {\n this.x = x;\n this.y = y;\n this.energy = energy;\n this.c = c;\n\n if (angle !== undefined) { this.vx = Math.cos(angle) * c; this.vy = Math.sin(angle) * c;\n }\n};\n\nPhoton.prototype.isContained = function(xmin, xmax, ymin, ymax) {\n return this.x >= xmin && this.x <= xmax && this.y >= ymin && this.y <= ymax;\n};\n\nPhoton.prototype.move = function(dt) {\n this.x += this.vx * dt;\n this.y += this.vy * dt;\n};\n\nPhoton.prototype.reflectFromLine = function(line, time_step) {\n var x1 = this.x,\n y1 = this.y,\n x2 = this.x - this.vx * time_step,\n y2 = this.y - this.vy * time_step,\n photon_line = new Line(x1, y1, x2, y2),\n vx = this.vx,\n vy = this.vy,\n r12, sin, cos, u, w;\n\n if (photon_line.intersectsLine(line)) {\n x1 = line.x1;\n y1 = line.y1;\n x2 = line.x2;\n y2 = line.y2;\n r12 = 1.0 / hypot(x1 - x2, y1 - y2);\n sin = (y2 - y1) * r12;\n cos = (x2 - x1) * r12;\n // Velocity component parallel to the line.\n u = vx * cos + vy * sin;\n // Velocity component perpendicular to the line.\n w = vy * cos - vx * sin;\n // Update velocities.\n this.vx = u * cos + w * sin;\n this.vy = u * sin - w * cos;\n return true;\n }\n return false;\n};\n\nPhoton.prototype.reflectFromRectangle = function(rectangle, time_step) {\n var\n x0 = rectangle.x,\n y0 = rectangle.y,\n x1 = rectangle.x + rectangle.width,\n y1 = rectangle.y + rectangle.height,\n dx, dy;\n\n dx = this.vx * time_step;\n if (this.x - dx < x0) {\n this.vx = -Math.abs(this.vx);\n } else if (this.x - dx > x1) {\n this.vx = Math.abs(this.vx);\n }\n dy = this.vy * time_step;\n if (this.y - dy < y0) {\n this.vy = -Math.abs(this.vy);\n } else if (this.y - dy > y1) {\n this.vy = Math.abs(this.vy);\n }\n};\n\nPhoton.prototype.reflectFromPolygon = function(polygon, time_step) {\n var\n line = new Line(), // no params, as this object will be reused many times\n i, len;\n\n for (i = 0, len = polygon.count - 1; i < len; i += 1) {\n line.x1 = polygon.x_coords[i];\n line.y1 = polygon.y_coords[i];\n line.x2 = polygon.x_coords[i + 1];\n line.y2 = polygon.y_coords[i + 1];\n if (this.reflectFromLine(line, time_step)) {\n return;\n }\n }\n line.x1 = polygon.x_coords[polygon.count - 1];\n line.y1 = polygon.y_coords[polygon.count - 1];\n line.x2 = polygon.x_coords[0];\n line.y2 = polygon.y_coords[0];\n this.reflectFromLine(line, time_step);\n};\n\nPhoton.prototype.reflect = function(shape, time_step) {\n // Check if part contains a photon BEFORE possible polygonization.\n if (!shape.contains(this.x, this.y)) {\n return false;\n }\n\n if (shape instanceof Rectangle) {\n // Rectangle also can be polygonized, but for performance reasons\n // use separate method.\n this.reflectFromRectangle(shape, time_step);\n } else {\n // Other shapes (ellipses, rings, polygons) - polygonize() first\n // (polygonize() for polygon returns itself).\n this.reflectFromPolygon(shape.polygonize(), time_step);\n }\n return true;\n};\n"," import { Photon } from 'models/energy2d/models/photon';\n\nexport const makeRaySolver = function(model) { var\n // Basic simulation parameters.\n props = model.getModelOptions(),\n\n // Simulation arrays provided by model.\n q = model.getPowerArray(),\n parts = model.getPartsArray(),\n photons = model.getPhotonsArray(),\n\n // Convenience variables.\n lx = props.model_width,\n ly = props.model_height,\n\n nx = props.grid_width,\n ny = props.grid_height,\n nx1 = nx - 1,\n ny1 = ny - 1,\n\n delta_x = props.model_width / props.grid_width,\n delta_y = props.model_height / props.grid_height,\n\n //\n // Private methods\n //\n\n sunAngle = function() {\n return Math.PI - props.sun_angle;\n },\n\n // TODO: implement something efficient. Linked list?\n cleanupPhotonsArray = function() {\n var i = 0;\n while (i < photons.length) { if (photons[i] === undefined) { photons.splice(i, 1); } else {\n i += 1;\n }\n }\n },\n\n applyBoundary = function() {\n var i, len;\n for (i = 0, len = photons.length; i < len; i += 1) {\n if (!photons[i].isContained(0, lx, 0, ly)) {\n photons[i] = undefined;\n }\n }\n cleanupPhotonsArray();\n },\n\n isContained = function(x, y) {\n var i, len;\n for (i = 0, len = parts.length; i < len; i += 1) {\n if (parts[i].contains(x, y)) {\n return true;\n }\n }\n return false;\n },\n\n shootAtAngle = function(dx, dy) {\n var\n sun_angle = sunAngle(),\n ray_power = props.solar_power_density,\n ray_speed = props.solar_ray_speed,\n m = Math.floor(lx / dx),\n n = Math.floor(ly / dy),\n x, y, i;\n if (sun_angle >= 0 && sun_angle < 0.5 * Math.PI) {\n y = 0;\n for (i = 1; i <= m; i += 1) {\n x = dx * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n x = 0;\n for (i = 0; i <= n; i += 1) {\n y = dy * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n } else if (sun_angle < 0 && sun_angle >= -0.5 * Math.PI) {\n y = ly;\n for (i = 1; i <= m; i += 1) {\n x = dx * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n x = 0;\n for (i = 0; i <= n; i += 1) {\n y = ly - dy * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n } else if (sun_angle < Math.PI + 0.001 && sun_angle >= 0.5 * Math.PI) {\n y = 0;\n for (i = 0; i <= m; i += 1) {\n x = lx - dx * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n x = lx;\n for (i = 1; i <= n; i += 1) {\n y = dy * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n } else if (sun_angle >= -Math.PI && sun_angle < -0.5 * Math.PI) {\n y = ly;\n for (i = 0; i <= m; i += 1) {\n x = lx - dx * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n x = lx;\n for (i = 1; i <= n; i += 1) {\n y = ly - dy * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n }\n };\n\n return {\n solve: function() {\n var\n timeStep = props.timeStep,\n photon_emission_interval = props.photon_emission_interval,\n\n factor = 1.0 / (timeStep * photon_emission_interval),\n idx = 1.0 / delta_x,\n idy = 1.0 / delta_y,\n photon, part, x, y,\n i, j, photons_len, parts_len;\n\n for (i = 0, photons_len = photons.length; i < photons_len; i += 1) {\n photon = photons[i];\n photon.move(timeStep);\n\n for (j = 0, parts_len = parts.length; j < parts_len; j += 1) {\n part = parts[j];\n if (part.reflect(photon, timeStep)) {\n break;\n } else if (part.absorb(photon)) {\n x = Math.max(Math.min(Math.round(photon.x * idx), nx1), 0);\n y = Math.max(Math.min(Math.round(photon.y * idy), ny1), 0);\n q[x * ny + y] = photon.energy * factor;\n // Remove photon.\n photons[i] = undefined;\n break;\n }\n }\n }\n // Clean up absorbed photons.\n cleanupPhotonsArray();\n // Remove photons that are out of bounds.\n applyBoundary();\n },\n\n radiate: function() {\n var part, i, len;\n for (i = 0, len = parts.length; i < len; i += 1) {\n part = parts[i];\n if (part.emissivity > 0) {\n part.radiate(model);\n }\n }\n },\n\n sunShine: function() {\n var\n sun_angle = sunAngle(),\n s, c, spacing;\n\n if (sun_angle < 0) {\n return;\n }\n s = Math.abs(Math.sin(sun_angle));\n c = Math.abs(Math.cos(sun_angle));\n spacing = s * ly < c * lx ? ly / c : lx / s;\n spacing /= props.solar_ray_count;\n shootAtAngle(spacing / s, spacing / c);\n }\n };\n};\n","import constants from 'models/energy2d/models/constants';\nimport { hypot } from 'models/energy2d/models/helpers';\nimport { Photon } from 'models/energy2d/models/photon';\nimport { Line, Polygon, Rectangle, Ellipse, Ring, pointInsidePolygon } from 'models/energy2d/models/shape';\n\nvar // Part's constants.\n RADIATOR_SPACING = 0.5,\n MINIMUM_RADIATING_TEMPERATUE = 20,\n UNIT_SURFACE_AREA = 100,\n SIN30 = Math.sin(Math.PI / 6),\n COS30 = Math.cos(Math.PI / 6),\n SIN60 = Math.sin(Math.PI / 3),\n COS60 = Math.cos(Math.PI / 3);\n\n // Constructor function.\nexport const Part = function(options) {\n var vertices, count, i;\n this._options = options;\n\n // Validate and process options.\n if (options.shapeType === \"rectangle\") { this.shape = new Rectangle(options.x, options.y, options.width, options.height);\n } else if (options.shapeType === \"ellipse\") {\n this.shape = new Ellipse(options.x, options.y, options.a, options.b);\n } else if (options.shapeType === \"ring\") {\n this.shape = new Ring(options.x, options.y, options.inner, options.outer);\n } else if (options.shapeType === \"polygon\") {\n vertices = options.vertices.split(', ');\n this.x_coords = [];\n this.y_coords = [];\n for (i = 0, count = vertices.length * 0.5; i < count; i += 1) {\n this.x_coords[i] = Number(vertices[2 * i]);\n this.y_coords[i] = Number(vertices[2 * i + 1]);\n }\n this.shape = new Polygon(count, this.x_coords, this.y_coords, options.x, options.y);\n } else {\n throw new Error(\"Part: shape not defined or not supported.\");\n }\n};\n\nObject.defineProperty(Part.prototype, \"shapeType\", {\n get: function() {\n return this._options.shapeType;\n }\n});\n\n[\"x\", \"y\", \"width\", \"height\", \"inner\", \"outer\", \"a\", \"b\", \"raw_x_coords\", \"raw_y_coords\"].forEach(function(key) {\n Object.defineProperty(Part.prototype, key, {\n get: function() {\n return this.shape[key];\n },\n set: function(v) {\n this.shape[key] = v;\n this.polygon_cache = undefined;\n }\n });\n});\n\nObject.defineProperty(Part.prototype, \"vertices\", {\n get: function() {\n if (this.shapeType !== \"polygon\") return undefined;\n var x = this.shape.raw_x_coords,\n y = this.shape.raw_y_coords,\n r = [],\n i, len;\n for (i = 0, len = x.length; i < len; i++) {\n r.push(x[i]);\n r.push(y[i]);\n }\n return r.join(\", \");\n }\n});\n\n[\"thermal_conductivity\", \"specific_heat\", \"density\", \"temperature\", \"constant_temperature\", \"power\", \"wind_speed\", \"wind_angle\",\n \"transmission\", \"reflection\", \"absorption\", \"emissivity\",\n \"visible\", \"filled\", \"color\", \"texture\", \"label\", \"draggable\"\n].forEach(function(key) {\n Object.defineProperty(Part.prototype, key, {\n get: function() {\n return this._options[key];\n },\n set: function(v) {\n this._options[key] = v;\n }\n });\n});\n\nPart.prototype.getLabel = function() {\n var label = this.label,\n s;\n\n function formatLabel(value, suffix) {\n var valueStr;\n if (value >= 100) {\n valueStr = value.toFixed();\n } else if (value >= 10) {\n valueStr = value.toFixed(1);\n } else {\n valueStr = value.toFixed(2);\n }\n return valueStr + suffix;\n }\n\n if (label === \"%temperature\") {\n s = formatLabel(this.temperature, \" \\u00b0C\");\n } else if (label === \"%density\") {\n s = formatLabel(this.density, \" kg/m\\u00b3\");\n } else if (label === \"%specific_heat\") {\n s = formatLabel(this.specific_heat, \" J/(kg\\u00d7\\u00b0C)\");\n } else if (label === \"%thermal_conductivity\") {\n s = formatLabel(this.thermal_conductivity, \" W/(m\\u00d7\\u00b0C)\");\n } else if (label === \"%power_density\") {\n s = formatLabel(this.power, \" W/m\\u00b3\");\n } else if (label === \"%area\") {\n if (this.shapeType === \"rectangle\") {\n s = formatLabel(this.width * this.height, \" m\\u00b2\");\n } else if (this.shapeType === \"ellipse\") {\n s = formatLabel(this.a * this.b * 0.25 * Math.PI, \" m\\u00b2\");\n }\n } else if (label === \"%width\") {\n if (this.shapeType === \"rectangle\") {\n s = formatLabel(this.width, \" m\");\n } else if (this.shapeType === \"ellipse\") {\n s = formatLabel(this.a, \" m\");\n }\n } else if (label === \"%height\") {\n if (this.shapeType === \"rectangle\") {\n s = formatLabel(this.height, \" m\");\n } else if (this.shapeType === \"ellipse\") {\n s = formatLabel(this.b, \" m\");\n }\n } else {\n s = label;\n }\n return s;\n};\n\n// Returns cells occupied by part on the given grid\n// Grid is described by:\n// nx - grid columns count\n// ny - grid rows count\n// lx - grid width\n// ly - grid height\n// TODO: refactor it, probably using contains method.\nPart.prototype.getGridCells = function(nx, ny, lx, ly) {\n var\n nx1 = nx - 1,\n ny1 = ny - 1,\n dx = nx / lx,\n dy = ny / ly,\n\n rectangleIndices = function(rect) {\n var i, j, i0, j0, i_max, j_max, idx, indices = [];\n\n i0 = Math.min(Math.max(Math.ceil(rect.x * dx), 0), nx1);\n j0 = Math.min(Math.max(Math.ceil(rect.y * dy), 0), ny1);\n i_max = Math.min(Math.max(Math.floor((rect.x + rect.width) * dx), 0), nx1);\n j_max = Math.min(Math.max(Math.floor((rect.y + rect.height) * dy), 0), ny1);\n indices = new Array((i_max - i0 + 1) * (j_max - j0 + 1));\n idx = 0;\n for (i = i0; i <= i_max; i += 1) { for (j = j0; j <= j_max; j += 1) { indices[idx += 1] = i * ny + j; }\n }\n return indices;\n },\n\n ellipseIndices = function(ellipse) {\n var\n px = ellipse.x * dx,\n py = ellipse.y * dy,\n ra = ellipse.a * 0.5 * dx,\n rb = ellipse.b * 0.5 * dy,\n eq, i, i0, i_max, j, j0, j_max,\n idx, indices = [];\n\n i0 = Math.min(Math.max(Math.ceil(px - ra), 0), nx1);\n i_max = Math.min(Math.max(Math.floor(px + ra), 0), nx1);\n indices = [];\n idx = 0;\n for (i = i0; i <= i_max; i += 1) {\n // solve equation x^2/a^2 + y^2/b^2 < 1 for given x (=> i)\n // to get range of y (=> j)\n eq = Math.sqrt(1 - (i - px) * (i - px) / (ra * ra));\n j0 = Math.min(Math.max(Math.ceil(py - rb * eq), 0), ny1);\n j_max = Math.min(Math.max(Math.floor(py + rb * eq), 0), ny1);\n for (j = j0; j <= j_max; j += 1) {\n indices[idx += 1] = i * ny + j;\n }\n }\n return indices;\n },\n\n ringIndices = function(ring) {\n var\n px = ring.x * dx,\n py = ring.y * dy,\n ra = ring.outer * 0.5 * dx,\n rb = ring.outer * 0.5 * dy,\n ra_inner = ring.inner * 0.5 * dx,\n rb_inner = ring.inner * 0.5 * dy,\n i, i0, i_max, j, j0, j1, j2, j_max, eq,\n idx, indices = [];\n\n i0 = Math.min(Math.max(Math.ceil(px - ra), 0), nx1);\n i_max = Math.min(Math.max(Math.floor(px + ra), 0), nx1);\n\n for (i = i0; i <= i_max; i += 1) {\n // solve equation x^2/a^2 + y^2/b^2 < 1 for given x (=> i)\n // to get range of y (=> j)\n eq = Math.sqrt(1 - (i - px) * (i - px) / (ra * ra));\n j0 = Math.min(Math.max(Math.ceil(py - rb * eq), 0), ny1);\n j_max = Math.min(Math.max(Math.floor(py + rb * eq), 0), ny1);\n\n if (Math.abs(i - px) < ra_inner) {\n // also calculate inner ellipse\n eq = Math.sqrt(1 - (i - px) * (i - px) / (ra_inner * ra_inner));\n j1 = Math.min(Math.max(Math.ceil(py - rb_inner * eq), 0), ny1);\n j2 = Math.min(Math.max(Math.floor(py + rb_inner * eq), 0), ny1);\n for (j = j0; j <= j1; j += 1) {\n indices[idx += 1] = i * ny + j;\n }\n for (j = j2; j <= j_max; j += 1) {\n indices[idx += 1] = i * ny + j;\n }\n } else {\n // consider only outer ellipse\n for (j = j0; j <= j_max; j += 1) {\n indices[idx += 1] = i * ny + j;\n }\n }\n }\n return indices;\n },\n\n polygonIndices = function(polygon) {\n var\n count = polygon.x_coords.length,\n x_coords = new Array(count),\n y_coords = new Array(count),\n x_min = Number.MAX_VALUE,\n x_max = Number.MIN_VALUE,\n y_min = Number.MAX_VALUE,\n y_max = Number.MIN_VALUE,\n i, i0, i_max, j, j0, j_max,\n idx, indices = [];\n\n for (i = 0; i < count; i += 1) {\n x_coords[i] = polygon.x_coords[i] * dx;\n y_coords[i] = polygon.y_coords[i] * dy;\n if (x_coords[i] < x_min) {\n x_min = x_coords[i];\n }\n if (x_coords[i] > x_max) {\n x_max = x_coords[i];\n }\n if (y_coords[i] < y_min) {\n y_min = y_coords[i];\n }\n if (y_coords[i] > y_max) {\n y_max = y_coords[i];\n }\n }\n\n i0 = Math.min(Math.max(Math.round(x_min), 0), nx1);\n j0 = Math.min(Math.max(Math.round(y_min), 0), ny1);\n i_max = Math.min(Math.max(Math.round(x_max), 0), nx1);\n j_max = Math.min(Math.max(Math.round(y_max), 0), ny1);\n indices = [];\n idx = 0;\n for (i = i0; i <= i_max; i += 1) {\n for (j = j0; j <= j_max; j += 1) {\n if (pointInsidePolygon(count, x_coords, y_coords, i, j)) {\n indices[idx += 1] = i * ny + j;\n }\n }\n }\n return indices;\n };\n\n if (this.shapeType === \"rectangle\") {\n return rectangleIndices(this.shape);\n }\n if (this.shapeType === \"ellipse\") {\n return ellipseIndices(this.shape);\n }\n if (this.shapeType === \"ring\") {\n return ringIndices(this.shape);\n }\n if (this.shapeType === \"polygon\") {\n return polygonIndices(this.shape);\n }\n throw new Error(\"Part: unknown shape.\");\n};\n\n// Tests if the specified coordinates are inside the boundary of the Part.\nPart.prototype.contains = function(x, y) {\n return this.shape.contains(x, y);\n};\n\n// Test whether part reflects given Photon p.\nPart.prototype.reflect = function(p, time_step) {\n // Try to reflect when part's reflection equals ~1.\n if (Math.abs(this.reflection - 1) < 0.001) {\n return p.reflect(this.shape, time_step);\n }\n // Other case.\n return false;\n};\n\n// Test whether part absorbs given Photon p.\nPart.prototype.absorb = function(p) {\n // Absorb when absorption equals ~1 and photon is inside part's shape.\n if (Math.abs(this.absorption - 1) < 0.001) {\n return this.shape.contains(p.x, p.y);\n }\n // Other case.\n return false;\n};\n\nPart.prototype.getIrradiance = function(temperature) {\n var t2;\n if (this.emissivity === 0) {\n return 0;\n }\n t2 = 273 + temperature;\n t2 *= t2;\n return this.emissivity * constants.STEFAN_CONSTANT * UNIT_SURFACE_AREA * t2 * t2;\n};\n\n// Emit photons if part meets radiation conditions.\nPart.prototype.radiate = function(model) {\n var\n // The shape is polygonized and radiateFromLine() is called for each line.\n poly = this.shape.polygonize(),\n line = new Line(),\n i, len;\n\n if (this.emissivity === 0) {\n return;\n }\n // Must follow the clockwise direction in setting lines.\n for (i = 0, len = poly.count - 1; i < len; i += 1) {\n line.x1 = poly.x_coords[i];\n line.y1 = poly.y_coords[i];\n line.x2 = poly.x_coords[i + 1];\n line.y2 = poly.y_coords[i + 1];\n this.radiateFromLine(model, line);\n }\n line.x1 = poly.x_coords[poly.count - 1];\n line.y1 = poly.y_coords[poly.count - 1];\n line.x2 = poly.x_coords[0];\n line.y2 = poly.y_coords[0];\n this.radiateFromLine(model, line);\n};\n\n// Helper function for radiate() method.\nPart.prototype.radiateFromLine = function(model, line) {\n var options, length, cos, sin, n, x, y, p, d, vx, vy, vxi, vyi, nray, ir,\n i, k;\n\n if (this.emissivity === 0) {\n return;\n }\n options = model.getModelOptions();\n length = hypot(line.x1 - line.x2, line.y1 - line.y2);\n cos = (line.x2 - line.x1) / length;\n sin = (line.y2 - line.y1) / length;\n n = Math.max(1, Math.round(length / RADIATOR_SPACING));\n vx = options.solar_ray_speed * sin;\n vy = -options.solar_ray_speed * cos;\n if (n === 1) {\n d = 0.5 * length;\n x = line.x1 + d * cos;\n y = line.y1 + d * sin;\n d = model.getAverageTemperatureAt(x, y);\n if (d > MINIMUM_RADIATING_TEMPERATUE) {\n d = model.getTemperatureAt(x, y);\n p = new Photon(x, y, this.getIrradiance(d), options.solar_ray_speed);\n p.vx = vx;\n p.vy = vy;\n model.addPhoton(p);\n if (!this.constant_temperature) {\n model.setTemperatureAt(x, y, d - p.energy / this.specific_heat);\n }\n }\n } else {\n vxi = new Array(4);\n vyi = new Array(4);\n vxi[0] = vx * COS30 - vy * SIN30;\n vyi[0] = vx * SIN30 + vy * COS30;\n vxi[1] = vy * SIN30 + vx * COS30;\n vyi[1] = vy * COS30 - vx * SIN30;\n vxi[2] = vx * COS60 - vy * SIN60;\n vyi[2] = vx * SIN60 + vy * COS60;\n vxi[3] = vy * SIN60 + vx * COS60;\n vyi[3] = vy * COS60 - vx * SIN60;\n nray = 1 + vxi.length;\n for (i = 0; i < n; i += 1) {\n d = (i + 0.5) * RADIATOR_SPACING;\n x = line.x1 + d * cos;\n y = line.y1 + d * sin;\n d = model.getAverageTemperatureAt(x, y);\n ir = this.getIrradiance(d) / nray;\n if (d > MINIMUM_RADIATING_TEMPERATUE) {\n p = new Photon(x, y, ir, options.solar_ray_speed);\n p.vx = vx;\n p.vy = vy;\n model.addPhoton(p);\n for (k = 0; k < nray - 1; k += 1) {\n p = new Photon(x, y, ir, options.solar_ray_speed);\n p.vx = vxi[k];\n p.vy = vyi[k];\n model.addPhoton(p);\n }\n if (!this.constant_temperature) {\n model.changeAverageTemperatureAt(x, y, -ir * nray / this.specific_heat);\n }\n }\n }\n }\n};\n"," \nimport arrays from 'arrays';\nimport { makeHeatSolver } from 'models/energy2d/models/physics-solvers/heat-solver';\nimport { makeHeatSolverGPU } from 'models/energy2d/models/physics-solvers-gpu/heat-solver-gpu';\nimport { makeFluidSolver } from 'models/energy2d/models/physics-solvers/fluid-solver';\nimport { makeFluidSolverGPU } from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-gpu';\nimport { makeRaySolver } from 'models/energy2d/models/physics-solvers/ray-solver';\nimport { Part } from 'models/energy2d/models/part';\nimport gpgpu from 'models/energy2d/gpu/gpgpu';\nimport { hypot } from 'models/energy2d/models/helpers';\n\nvar array_type = (function() { try {\n new Float32Array();\n } catch (e) {\n return 'regular';\n }\n return 'Float32Array';\n }());\n\n// Core Energy2D model.\n//\n// It creates and manages all the data and parameters used for calculations.\nexport const makeCoreModel = function(opt, partsOpt) {\n var\n // Simulation grid dimensions.\n nx = opt.grid_width,\n ny = opt.grid_height,\n array_size = nx * ny,\n\n // Spacing.\n delta_x = opt.model_width / nx,\n delta_y = opt.model_height / ny,\n\n // Simulation steps counter.\n indexOfStep = 0,\n\n // Physics solvers\n // (initialized later, when core model object is built).\n heatSolver,\n fluidSolver,\n ray_solver,\n\n // GPU versions of solvers.\n heat_solver_gpu,\n fluid_solver_gpu,\n\n // Optimization flags.\n radiative,\n has_part_power,\n\n // WebGL GPGPU optimization.\n WebGL_active = false,\n // This variable holds possible error message connected with WebGL.\n WebGL_error,\n\n // Performance model.\n // By default, mock this object.\n // To measure performance, set valid object\n // using core_model.setPerformanceTools(tools);\n perf = {\n start: function() {},\n stop: function() {},\n startFPS: function() {},\n updateFPS: function() {},\n stopFPS: function() {}\n },\n\n //\n // Simulation arrays:\n //\n // - temperature array\n t = arrays.create(array_size, opt.background_temperature, array_type),\n // - internal temperature boundary array\n tb = arrays.create(array_size, NaN, array_type),\n // - velocity x-component array (m/s)\n u = arrays.create(array_size, 0, array_type),\n // - velocity y-component array (m/s)\n v = arrays.create(array_size, 0, array_type),\n // - internal heat generation array\n q = arrays.create(array_size, 0, array_type),\n // - wind speed\n uWind = arrays.create(array_size, 0, array_type),\n vWind = arrays.create(array_size, 0, array_type),\n // - conductivity array\n conductivity = arrays.create(array_size, opt.background_conductivity, array_type),\n // - specific heat capacity array\n capacity = arrays.create(array_size, opt.background_specific_heat, array_type),\n // - density array\n density = arrays.create(array_size, opt.background_density, array_type),\n // - fluid cell array\n fluidity = arrays.create(array_size, true, array_type),\n // - photons array\n photons = [],\n\n //\n // [GPGPU] Simulation textures:\n //\n // texture 0:\n // - R: t\n // - G: t0\n // - B: tb\n // - A: conductivity\n // texture 1:\n // - R: q\n // - G: capacity\n // - B: density\n // - A: fluidity\n // texture 2:\n // - R: u\n // - G: v\n // - B: u0\n // - A: v0\n // texture 3:\n // - R: uWind\n // - G: vWind\n // - B: undefined\n // - A: undefined\n texture = [],\n\n // Generate parts array.\n parts = (function() {\n var result = [], i, len;\n\n if (partsOpt) {\n if (!arrays.isArray(partsOpt)) { partsOpt = [partsOpt];\n }\n result = new Array(partsOpt.length);\n for (i = 0, len = partsOpt.length; i < len; i += 1) { result[i] = new Part(partsOpt[i]);\n }\n }\n return result;\n }()),\n\n //\n // Private methods\n //\n initGPGPU = function() {\n WebGL_active = false;\n\n // Make sure that environment is a browser.\n if (typeof window === 'undefined') {\n throw new Error(\"Core model: WebGL GPGPU unavailable in the node.js environment.\");\n }\n // Init module.\n // Width is ny, height is nx (due to data organization).\n gpgpu.init(ny, nx);\n\n // Create simulation textures.\n texture[0] = gpgpu.createTexture();\n texture[1] = gpgpu.createTexture();\n texture[2] = gpgpu.createTexture();\n texture[3] = gpgpu.createTexture();\n\n // Update textures as material properties should be already set.\n fillGPGPUTextures();\n\n // Create GPU solvers.\n // GPU version of heat solver.\n heat_solver_gpu = makeHeatSolverGPU(core_model);\n // GPU version of fluid solver.\n fluid_solver_gpu = makeFluidSolverGPU(core_model);\n\n WebGL_active = true;\n },\n\n fillGPGPUTextures = function() {\n // texture 0:\n // - R: t\n // - G: t0\n // - B: tb\n // - A: conductivity\n gpgpu.writeRGBATexture(texture[0], t, t, tb, conductivity);\n // texture 1:\n // - R: q\n // - G: capacity\n // - B: density\n // - A: fluidity\n gpgpu.writeRGBATexture(texture[1], q, capacity, density, fluidity);\n // texture 2:\n // - R: u\n // - G: v\n // - B: u0\n // - A: v0\n gpgpu.writeRGBATexture(texture[2], u, v, u, v);\n // texture 3:\n // - R: uWind\n // - G: vWind\n // - B: undefined\n // - A: undefined\n gpgpu.writeRGBATexture(texture[3], uWind, vWind, uWind, vWind);\n },\n\n setupOptimizationFlags = function() {\n radiative = (function() {\n var i, len;\n if (opt.sunny) { return true;\n }\n for (i = 0, len = parts.length; i < len; i += 1) { if (parts[i].emissivity > 0) { return true; }\n }\n return false;\n }());\n\n has_part_power = (function() {\n var i, len;\n for (i = 0, len = parts.length; i < len; i += 1) {\n if (parts[i].power > 0) {\n return true;\n }\n }\n return false;\n }());\n },\n\n setupPart = function(part, updateOnly) {\n var\n lx = opt.model_width,\n ly = opt.model_height,\n indices, idx,\n ii, len;\n\n indices = part.getGridCells(nx, ny, lx, ly);\n for (ii = 0, len = indices.length; ii < len; ii += 1) {\n idx = indices[ii];\n\n if (!updateOnly) {\n t[idx] = part.temperature;\n }\n fluidity[idx] = false;\n conductivity[idx] = part.thermal_conductivity;\n capacity[idx] = part.specific_heat;\n density[idx] = part.density;\n\n if (part.wind_speed !== 0) {\n uWind[idx] = part.wind_speed * Math.cos(part.wind_angle);\n vWind[idx] = part.wind_speed * Math.sin(part.wind_angle);\n }\n\n if (part.constant_temperature) {\n tb[idx] = part.temperature;\n }\n }\n },\n\n resetArrays = function(skipTempAndVelocity) {\n if (!skipTempAndVelocity) {\n arrays.fill(t, opt.background_temperature);\n arrays.fill(u, 0);\n arrays.fill(v, 0);\n }\n arrays.fill(tb, NaN);\n arrays.fill(q, 0);\n arrays.fill(uWind, 0);\n arrays.fill(vWind, 0);\n arrays.fill(conductivity, opt.background_conductivity);\n arrays.fill(capacity, opt.background_specific_heat);\n arrays.fill(density, opt.background_density);\n arrays.fill(fluidity, true);\n },\n\n setupMaterialProperties = function(updateOnly) {\n if (!parts || parts.length === 0) return;\n var i;\n // Treat overlapping parts as original Energy2D.\n for (i = parts.length - 1; i >= 0; i -= 1) {\n setupPart(parts[i], updateOnly);\n }\n },\n\n refreshPowerArray = function() {\n var part, x, y, i, iny, j, k, len, count;\n for (i = 0; i < nx; i += 1) {\n x = i * delta_x;\n iny = i * ny;\n for (j = 0; j < ny; j += 1) {\n y = j * delta_y;\n q[iny + j] = 0;\n count = 0;\n if (has_part_power) {\n for (k = 0, len = parts.length; k < len; k += 1) {\n part = parts[k];\n if (part.shape.contains(x, y)) {\n q[iny + j] += part.power;\n count++;\n }\n }\n if (count > 0) q[iny + j] /= count;\n }\n }\n }\n },\n\n getVorticityAt = function(i, j) {\n var du_dy = (u[i * ny + j + 1] - u[i * ny + j - 1]) / delta_x,\n dv_dx = (v[(i + 1) * ny + j] - v[(i - 1) * ny + j]) / delta_y;\n return 0.5 * (du_dy - dv_dx);\n },\n\n //\n // Public API\n //\n core_model = {\n // !!!\n // Performs next step of a simulation.\n // !!!\n nextStep: function() {\n perf.start('Core model step');\n if (WebGL_active) {\n // GPU solvers.\n if (opt.convective) {\n perf.start('Fluid solver GPU');\n fluid_solver_gpu.solve();\n perf.stop('Fluid solver GPU');\n }\n perf.start('Heat solver GPU');\n heat_solver_gpu.solve(opt.convective);\n perf.stop('Heat solver GPU');\n } else {\n // CPU solvers.\n if (radiative) {\n perf.start('Ray solver CPU');\n if (indexOfStep % opt.photon_emission_interval === 0) {\n refreshPowerArray();\n if (opt.sunny) {\n ray_solver.sunShine();\n }\n ray_solver.radiate();\n }\n ray_solver.solve();\n perf.stop('Ray solver CPU');\n }\n if (opt.convective) {\n perf.start('Fluid solver CPU');\n fluidSolver.solve(u, v);\n perf.stop('Fluid solver CPU');\n }\n perf.start('Heat solver CPU');\n heatSolver.solve(opt.convective, t, q);\n perf.stop('Heat solver CPU');\n }\n indexOfStep += 1;\n perf.stop('Core model step');\n },\n\n // Sets performance tools.\n // It's expected to be an object created by\n // energy2d.utils.performance.makePerformanceTools\n setPerformanceTools: function(perf_tools) {\n perf = perf_tools;\n },\n\n reset: function() {\n indexOfStep = 0;\n resetArrays();\n setupOptimizationFlags();\n setupMaterialProperties();\n refreshPowerArray();\n if (WebGL_active) {\n fillGPGPUTextures();\n }\n },\n\n partsChanged: function(part, propChanged) {\n // TODO: in theory we don't have to process all parts. If needed\n // implement something tricker.\n // Note that temperature and velocity aren't reset to provide better\n // interactivity.\n resetArrays(true);\n setupOptimizationFlags();\n setupMaterialProperties(true);\n refreshPowerArray();\n\n if (propChanged === \"temperature\") {\n setupPart(part);\n }\n },\n\n addPart: function(props) {\n var part = new Part(props);\n parts.push(part);\n setupPart(part);\n },\n\n removePart: function(i) {\n parts.splice(i, 1);\n core_model.partsChanged();\n },\n\n useWebGL: function(v) {\n if (WebGL_active === v) return;\n if (!core_model.isWebGLCompatible()) {\n // Some models are incompatible with WebGL.\n WebGL_active = false;\n return;\n }\n\n if (v) {\n // Initialize GPGPU, this will also copy current temperature\n // and velocity arrays into textures.\n initGPGPU();\n } else {\n // Copy data back from GPU to main memory.\n core_model.syncTemperature();\n core_model.syncVelocity();\n WebGL_active = false;\n }\n },\n\n isWebGLActive: function() {\n return WebGL_active;\n },\n\n isWebGLCompatible: function() {\n return !radiative;\n },\n\n getWebGLError: function() {\n return WebGL_error;\n },\n\n syncTemperature: function() {\n if (WebGL_active) {\n gpgpu.readTexture(texture[0], t);\n }\n },\n\n syncVelocity: function() {\n if (WebGL_active) {\n gpgpu.readTexture(texture[2], u, 0);\n gpgpu.readTexture(texture[2], v, 1);\n }\n },\n\n getIndexOfStep: function() {\n return indexOfStep;\n },\n // Returns loaded options after validation.\n getModelOptions: function() {\n return opt;\n },\n\n // Temperature manipulation.\n getTemperatureAt: function(x, y) {\n var\n i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0);\n\n return t[i * ny + j];\n },\n\n setTemperatureAt: function(x, y, temperature) {\n var\n i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0);\n\n t[i * ny + j] = temperature;\n },\n\n getAverageTemperatureAt: function(x, y) {\n var\n temp = 0,\n nx1 = nx - 1,\n ny1 = ny - 1,\n i0 = Math.round(x / delta_x),\n j0 = Math.round(y / delta_y),\n i, j;\n\n i = Math.max(Math.min(nx1, i0), 0);\n j = Math.max(Math.min(ny1, j0), 0);\n temp += t[i * ny + j];\n i = Math.max(Math.min(nx1, i0 + 1), 0);\n j = Math.max(Math.min(ny1, j0), 0);\n temp += t[i * ny + j];\n i = Math.max(Math.min(nx1, i0 - 1), 0);\n j = Math.max(Math.min(ny1, j0), 0);\n temp += t[i * ny + j];\n i = Math.max(Math.min(nx1, i0), 0);\n j = Math.max(Math.min(ny1, j0 + 1), 0);\n temp += t[i * ny + j];\n i = Math.max(Math.min(nx1, i0), 0);\n j = Math.max(Math.min(ny1, j0 - 1), 0);\n temp += t[i * ny + j];\n return temp * 0.2;\n },\n\n // TODO: based on Java version, check it as the logic seems to be weird.\n changeAverageTemperatureAt: function(x, y, increment) {\n var\n nx1 = nx - 1,\n ny1 = ny - 1,\n i0 = Math.round(x / delta_x),\n j0 = Math.round(y / delta_y),\n i, j;\n\n increment *= 0.2;\n i = Math.min(nx1, i0);\n j = Math.min(ny1, j0);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n i = Math.min(nx1, i0 + 1);\n j = Math.min(ny1, j0);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n i = Math.min(nx1, i0 - 1);\n j = Math.min(ny1, j0);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n i = Math.min(nx1, i0);\n j = Math.min(ny1, j0 + 1);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n i = Math.min(nx1, i0);\n j = Math.min(ny1, j0 - 1);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n },\n\n getVorticityAt: function(x, y) {\n var i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0);\n return getVorticityAt(i, j);\n },\n\n getAverageVorticityAt: function(x, y) {\n var i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0),\n vor = getVorticityAt(i, j);\n vor += getVorticityAt(i - 1, j);\n vor += getVorticityAt(i + 1, j);\n vor += getVorticityAt(i, j - 1);\n vor += getVorticityAt(i, j + 1);\n vor += getVorticityAt(i - 1, j - 1);\n vor += getVorticityAt(i - 1, j + 1);\n vor += getVorticityAt(i + 1, j - 1);\n vor += getVorticityAt(i + 1, j + 1);\n return vor / 9;\n },\n\n getSpeedAt: function(x, y) {\n var\n i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0);\n\n return hypot(u[i * ny + j], v[i * ny + j]);\n },\n\n getHeatFluxAt: function(x, y) {\n var\n i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0),\n fx = conductivity[i * ny + j] * (t[(i - 1) * ny + j] - t[(i + 1) * ny + j]) / (2 * delta_x),\n fy = conductivity[i * ny + j] * (t[i * ny + j - 1] - t[i * ny + j + 1]) / (2 * delta_y);\n return [fx, fy];\n },\n\n addPhoton: function(photon) {\n photons.push(photon);\n },\n\n removePhoton: function(photon) {\n var idx = photons.indexOf(photon);\n if (idx !== -1) {\n photons.splice(idx, 1);\n }\n },\n\n // Simple getters.\n getArrayType: function() {\n // return module variable\n return array_type;\n },\n getPerformanceModel: function() {\n return perf;\n },\n // Arrays.\n getTemperatureArray: function() {\n return t;\n },\n getUVelocityArray: function() {\n return u;\n },\n getVVelocityArray: function() {\n return v;\n },\n getUWindArray: function() {\n return uWind;\n },\n getVWindArray: function() {\n return vWind;\n },\n getBoundaryTemperatureArray: function() {\n return tb;\n },\n getPowerArray: function() {\n return q;\n },\n getConductivityArray: function() {\n return conductivity;\n },\n getCapacityArray: function() {\n return capacity;\n },\n getDensityArray: function() {\n return density;\n },\n getFluidityArray: function() {\n return fluidity;\n },\n getPhotonsArray: function() {\n return photons;\n },\n getPartsArray: function() {\n return parts;\n },\n // Textures.\n getTemperatureTexture: function() {\n return texture[0];\n },\n getVelocityTexture: function() {\n return texture[2];\n },\n getSimulationTexture: function(id) {\n return texture[id];\n }\n };\n\n //\n // One-off initialization.\n //\n setupOptimizationFlags();\n setupMaterialProperties();\n refreshPowerArray();\n\n // CPU version of solvers.\n heatSolver = makeHeatSolver(core_model);\n fluidSolver = makeFluidSolver(core_model);\n ray_solver = makeRaySolver(core_model);\n\n // Finally, return public API object.\n return core_model;\n};\n","\nimport alert from 'common/alert';\nimport console from 'common/console';\nimport validator from 'common/validator';\nimport serialize from 'common/serialize';\nimport performance from 'common/performance';\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport metadata from 'models/energy2d/metadata';\nimport { makeCoreModel } from 'models/energy2d/models/core-model';\n\nvar unitsDefinition = {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n },\n temperature: {\n name: \"degree Celsius\",\n pluralName: \"degrees Celsius\",\n symbol: \"°C\"\n },\n length: {\n name: \"meter\",\n pluralName: \"meters\",\n symbol: \"m\"\n },\n velocity: {\n name: \"meter per second\",\n pluralName: \"meters per second\",\n symbol: \"m/s\"\n }\n }\n },\n\n energy2dModelCount = 0;\n\n\nexport default function Modeler(initialProperties) {\n var model,\n coreModel,\n namespace = \"energy2dModel\" + (++energy2dModelCount),\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n setters: {\n use_WebGL: function(v) {\n if (coreModel) {\n setWebGLEnabled(v);\n }\n ticksToGPUSync = model.properties.ticksPerGPUSync;\n },\n ticksPerGPUSync: function(v) {\n if (coreModel) syncGPU();\n ticksToGPUSync = Number(v); // support \"Infinity\" value\n }\n }\n }),\n propertySupport = labModelerMixin.propertySupport,\n dispatch = labModelerMixin.dispatchSupport,\n\n ticksToGPUSync = 0,\n\n // Sensors are modeler-level objects, they only define outputs\n // and have nothing to do with physics calculations.\n sensors = [],\n anemometers = [],\n\n viewModel = {\n parts: [],\n sensors: []\n },\n\n updatePartsViewModel = (function() {\n function PartWrapper(rawPart) {\n Object.defineProperty(this, '_rawPart', {\n enumerable: false,\n get: function() {\n return rawPart;\n }\n });\n }\n Object.keys(metadata.part).forEach(function(key) {\n Object.defineProperty(PartWrapper.prototype, key, {\n enumerable: true,\n get: function() {\n return this._rawPart[key];\n },\n set: function(v) {\n var WebGLOrg = model.properties.use_WebGL;\n // This will update CPU array.\n model.properties.use_WebGL = false;\n\n propertySupport.invalidatingChangePreHook();\n\n // Update raw part object.\n this._rawPart[key] = validator.validateSingleProperty(metadata.part[key], key, v);\n\n if (model.isStopped()) {\n // Recalculate all arrays, \"authoring\" mode.\n coreModel.reset();\n } else {\n // Update core model arrays based on part's properties.\n coreModel.partsChanged(this._rawPart, key);\n }\n\n propertySupport.invalidatingChangePostHook();\n\n // Restore original WebGL option value. It will\n // copy CPU arrays to GPU in case of need.\n model.properties.use_WebGL = WebGLOrg;\n dispatch.partsChanged();\n }\n });\n });\n PartWrapper.prototype.computeLabel = function() {\n return this._rawPart.getLabel();\n };\n\n return function() {\n var rawParts = coreModel.getPartsArray(),\n viewParts = viewModel.parts,\n i, len;\n viewParts.length = 0;\n for (i = 0, len = rawParts.length; i < len; i++) {\n viewParts.push(new PartWrapper(rawParts[i]));\n }\n };\n }()),\n\n updateSensorViewModel = (function() {\n function SensorWrapper(rawObj) {\n Object.defineProperty(this, '_rawObj', {\n enumerable: false,\n get: function() {\n return rawObj;\n }\n });\n }\n var constraint = {\n x: function(v) {\n return Math.max(0, Math.min(model.properties.model_width, v));\n },\n y: function(v) {\n return Math.max(0, Math.min(model.properties.model_height, v));\n }\n };\n Object.keys(metadata.sensor).forEach(function(key) {\n Object.defineProperty(SensorWrapper.prototype, key, {\n enumerable: true,\n get: function() {\n return this._rawObj[key];\n },\n set: function(v) {\n propertySupport.invalidatingChangePreHook();\n v = constraint[key] ? constraint[key](v) : v;\n this._rawObj[key] = validator.validateSingleProperty(metadata.sensor[key], key, v);\n propertySupport.invalidatingChangePostHook();\n dispatch.sensorsChanged();\n }\n });\n });\n\n return function() {\n var viewSensors = viewModel.sensors,\n i, len;\n viewSensors.length = 0;\n for (i = 0, len = sensors.length; i < len; i++) {\n viewSensors.push(new SensorWrapper(sensors[i]));\n }\n };\n }());\n\n function setWebGLEnabled(v) {\n try {\n coreModel.useWebGL(v);\n } catch (e) {\n console.warn(\"WebGL initialization failed. CPU solvers and rendering will be used.\");\n console.warn(e.message);\n }\n }\n\n function syncGPU() {\n coreModel.syncTemperature();\n coreModel.syncVelocity();\n }\n\n function hasDiverged() {\n var t = model.getTemperatureArray(),\n i, len;\n\n for (i = 0, len = t.length; i < len; i++) {\n if (isNaN(t[i]) || Math.abs(t[i]) > 1e10) {\n model.stop();\n coreModel.reset();\n return true;\n }\n }\n return false;\n }\n\n function validateParts(partsArray) {\n var result = [];\n partsArray.forEach(function(v) {\n result.push(validator.validateCompleteness(metadata.part, v));\n });\n return result;\n }\n\n function createSensors(sensorsSpec) {\n var sensorValue = {\n thermometer: function() {\n return model.getTemperatureAt(this.x, this.y);\n },\n anemometer: function() {\n return this._rot;\n },\n heatFlux: function() {\n var flux = model.getHeatFluxAt(this.x, this.y);\n return flux[0] * this._sin + flux[1] * this._cos;\n }\n },\n sensorOutputDesc = {\n thermometer: {\n label: \"Temperature\",\n unitType: 'temperature',\n format: '.1f'\n },\n anemometer: {},\n heatFlux: {\n label: \"Heat Flux\",\n unitName: \"Watt Per Square Meter\",\n unitPluralName: \"Watts Per Square Meter\",\n unitAbbreviation: \"W/m²\",\n format: '.1f'\n }\n };\n\n sensors = [];\n sensorsSpec.forEach(function(s, idx) {\n s = validator.validateCompleteness(metadata.sensor, s);\n if (s.type === \"anemometer\") {\n s._rot = 0;\n anemometers.push(s);\n }\n if (s.type === \"heatFlux\") {\n s.angle = s.angle || 0;\n s._sin = Math.sin(-s.angle * Math.PI / 180);\n s._cos = Math.cos(s.angle * Math.PI / 180);\n }\n Object.defineProperty(s, \"value\", {\n enumerable: true,\n get: sensorValue[s.type]\n });\n sensors.push(s);\n\n model.defineOutput(\"sensor-\" + idx, sensorOutputDesc[s.type], function() {\n return s.value;\n });\n });\n }\n\n function updateAnemometers() {\n var a, i, len;\n for (i = 0, len = anemometers.length; i < len; i++) {\n a = anemometers[i];\n a._rot += model.getSpeedAt(a.x, a.y) * (model.getVorticityAt(a.x, a.y) < 0 ? -1 : 1) *\n model.properties.timeStep * 700;\n a._rot = a._rot % 360;\n }\n }\n\n model = {\n namespace: namespace,\n\n tick: function() {\n var i, len, diverged;\n\n performance.enterScope(\"engine\");\n for (i = 0, len = model.properties.timeStepsPerTick; i < len; i++) {\n coreModel.nextStep();\n }\n performance.leaveScope(\"engine\");\n\n if (coreModel.isWebGLActive()) {\n if (ticksToGPUSync > 0) {\n ticksToGPUSync--;\n } else {\n syncGPU();\n ticksToGPUSync = Number(model.properties.ticksPerGPUSync); // support \"Infinity\" value\n diverged = hasDiverged();\n }\n } else {\n diverged = hasDiverged();\n }\n updateAnemometers();\n model.updateAllOutputProperties();\n dispatch.tick();\n\n if (diverged) {\n alert(\"The model has diverged and has been reset!\\n\\nTry changing its parameters \" +\n \"(e.g. 'timeStep', positions of parts etc.) or reload it to restore the initial configuration.\");\n }\n },\n\n syncTemperature: function() {\n propertySupport.invalidatingChangePreHook();\n coreModel.syncTemperature();\n propertySupport.invalidatingChangePostHook();\n },\n syncVelocity: function() {\n propertySupport.invalidatingChangePreHook();\n coreModel.syncVelocity();\n propertySupport.invalidatingChangePostHook();\n },\n\n addPart: function(props) {\n var WebGLOrg = model.properties.use_WebGL;\n\n // This will update CPU array.\n model.properties.use_WebGL = false;\n\n props = validator.validateCompleteness(metadata.part, props);\n\n propertySupport.invalidatingChangePreHook();\n\n coreModel.addPart(props);\n updatePartsViewModel();\n\n propertySupport.invalidatingChangePostHook();\n\n // Restore original WebGL option value. It will\n // copy CPU arrays to GPU in case of need.\n model.properties.use_WebGL = WebGLOrg;\n dispatch.partsChanged();\n },\n\n removePart: function(i) {\n var WebGLOrg = model.properties.use_WebGL;\n\n // This will update CPU array.\n model.properties.use_WebGL = false;\n\n propertySupport.invalidatingChangePreHook();\n\n coreModel.removePart(i);\n updatePartsViewModel();\n\n propertySupport.invalidatingChangePostHook();\n\n // Restore original WebGL option value. It will\n // copy CPU arrays to GPU in case of need.\n model.properties.use_WebGL = WebGLOrg;\n dispatch.partsChanged();\n },\n\n // Beware. The \"reset\" button in Lab interactives do not call this method. Instead they \"reload\"\n // the model, discarding this model object and creating a new one from the model JSON.\n reset: function() {\n dispatch.willReset();\n propertySupport.invalidatingChangePreHook();\n\n model.stop();\n coreModel.reset();\n\n var parts;\n // Validate parts before passing options to coreModel.\n if (initialProperties.structure && initialProperties.structure.part) {\n parts = validateParts(initialProperties.structure.part);\n }\n coreModel = makeCoreModel(model.properties, parts);\n setWebGLEnabled(model.properties.use_WebGL);\n if (initialProperties.sensors) {\n createSensors(initialProperties.sensors);\n }\n updatePartsViewModel();\n updateSensorViewModel();\n\n propertySupport.invalidatingChangePostHook();\n model.resetAllOutputProperties();\n dispatch.reset();\n dispatch.invalidation();\n },\n\n stepCounter: function() {\n return coreModel.getIndexOfStep();\n },\n isNewStep: function() {\n return true;\n },\n stepBack: function(num) {\n return coreModel.getIndexOfStep();\n },\n stepForward: function(num) {\n if (!arguments.length) {\n num = 1;\n }\n if (!this.isStopped()) {\n this.stop();\n }\n var i = -1;\n while (++i < num) {\n model.tick();\n }\n return coreModel.getIndexOfStep();\n },\n getTime: function() {\n return model.properties.timeStep * coreModel.getIndexOfStep();\n },\n isWebGLActive: function() {\n return coreModel.isWebGLActive();\n },\n isWebGLCompatible: function() {\n return coreModel.isWebGLCompatible();\n },\n getWebGLError: function() {\n return coreModel.getWebGLError();\n },\n getIndexOfStep: function() {\n return coreModel.getIndexOfStep();\n },\n getTemperatureAt: function(x, y) {\n return coreModel.getTemperatureAt(x, y);\n },\n getAverageTemperatureAt: function(x, y) {\n return coreModel.getAverageTemperatureAt(x, y);\n },\n getVorticityAt: function(x, y) {\n return coreModel.getVorticityAt(x, y);\n },\n getHeatFluxAt: function(x, y) {\n return coreModel.getHeatFluxAt(x, y);\n },\n getAverageVorticityAt: function(x, y) {\n return coreModel.getAverageVorticityAt(x, y);\n },\n getSpeedAt: function(x, y) {\n return coreModel.getSpeedAt(x, y);\n },\n getTemperatureArray: function() {\n return coreModel.getTemperatureArray();\n },\n getTemperatureTexture: function() {\n return coreModel.getTemperatureTexture();\n },\n getUVelocityArray: function() {\n return coreModel.getUVelocityArray();\n },\n getVVelocityArray: function() {\n return coreModel.getVVelocityArray();\n },\n getVelocityTexture: function() {\n return coreModel.getVelocityTexture();\n },\n getPhotonsArray: function() {\n return coreModel.getPhotonsArray();\n },\n\n getPartsArray: function() {\n return viewModel.parts;\n },\n\n getSensorsArray: function() {\n return viewModel.sensors;\n },\n\n serialize: function() {\n var propCopy = {},\n rawProperties = propertySupport.rawValues;\n\n propCopy = serialize(metadata.mainProperties, rawProperties);\n propCopy.viewOptions = serialize(metadata.viewOptions, rawProperties);\n\n propCopy.structure = {\n part: []\n };\n viewModel.parts.forEach(function(p) {\n propCopy.structure.part.push(serialize(metadata.part, p));\n });\n\n propCopy.sensors = [];\n viewModel.sensors.forEach(function(s) {\n propCopy.sensors.push(serialize(metadata.sensor, s));\n });\n\n return propCopy;\n }\n };\n\n (function() {\n var parts;\n\n labModelerMixin.mixInto(model);\n dispatch.addEventTypes(\"tick\", \"partsChanged\", \"sensorsChanged\");\n\n // Validate parts before passing options to coreModel.\n if (initialProperties.structure && initialProperties.structure.part) {\n parts = validateParts(initialProperties.structure.part);\n }\n\n coreModel = makeCoreModel(model.properties, parts);\n setWebGLEnabled(model.properties.use_WebGL);\n\n if (initialProperties.sensors) {\n createSensors(initialProperties.sensors);\n }\n\n updatePartsViewModel();\n updateSensorViewModel();\n\n // FIXME. More yuck: We still need a pattern for recompute model properties which don't depend\n // on physics (and which therefore can be recomputed without invalidating and recomputing all\n // the physics based properties) while still making them (1) observable and (2) read-only.\n\n // used to triggers recomputation of isPlayable property based on isStopped and isReady:\n model.on('play.model', recomputeProperties);\n model.on('stop.model', recomputeProperties);\n\n function recomputeProperties() {\n propertySupport.invalidatingChangePreHook();\n propertySupport.invalidatingChangePostHook();\n }\n\n // Temporal workaround. In fact width and height should\n // be outputs based on min / max.\n model.defineOutput('minX', {}, function() {\n return 0;\n });\n model.defineOutput('minY', {}, function() {\n return 0;\n });\n model.defineOutput('maxX', {}, function() {\n return model.properties.model_width;\n });\n model.defineOutput('maxY', {}, function() {\n return model.properties.model_height;\n });\n\n model.defineOutput('time', {\n label: \"Time\",\n unitType: 'time',\n format: '.2f'\n }, function() {\n return model.getTime();\n });\n\n model.defineOutput('displayTime', {\n label: \"Time\"\n }, (function() {\n var f = d3.format(\"02d\");\n return function() {\n var time = model.getTime(),\n seconds, minutes, hours, days;\n time = Math.floor(time);\n seconds = time % 60;\n time = Math.floor(time / 60);\n minutes = time % 60;\n time = Math.floor(time / 60);\n hours = time % 24;\n time = Math.floor(time / 24);\n days = time;\n return days + ':' + f(hours) + ':' + f(minutes) + ':' + f(seconds);\n };\n }()));\n\n (function() {\n var hasPlayed = false;\n model.on('play.has-played-support', function() {\n hasPlayed = true;\n });\n model.on('reset.has-played-support', function() {\n hasPlayed = false;\n });\n model.defineOutput('hasPlayed', {\n label: \"has Played\"\n }, function() {\n return hasPlayed;\n });\n }());\n }());\n\n return model;\n};\n","/*jslint indent: 2, browser: true, newcap: true */\n\n\n// Return module with functions.\nexport default {\n // HSV to RGB color conversion.\n //\n // H runs from 0 to 360 degrees,\n // S and V run from 0 to 100.\n // \n // Ported from the excellent java algorithm by Eugene Vishnevsky at:\n // http://www.cs.rit.edu/~ncs/color/t_convert.html\n // http://snipplr.com/view.php?codeview&id=14590\n HSVToRGB: function(h, s, v) {\n var r, g, b,\n i,\n f, p, q, t;\n\n // Make sure our arguments stay in-range\n h = Math.max(0, Math.min(360, h));\n s = Math.max(0, Math.min(100, s));\n v = Math.max(0, Math.min(100, v));\n\n // We accept saturation and value arguments from 0 to 100 because that's\n // how Photoshop represents those values. Internally, however, the\n // saturation and value are calculated from a range of 0 to 1. We make\n // That conversion here.\n s /= 100;\n v /= 100;\n\n if (s === 0) {\n // Achromatic (grey)\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n }\n\n h /= 60; // sector 0 to 5\n i = Math.floor(h);\n f = h - i; // factorial part of h\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n default: // case 5:\n r = v;\n g = p;\n b = q;\n }\n\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n }\n};\n","/*jslint indent: 2, browser: true, newcap: true, sub: true */ \nimport view_helpers from 'models/energy2d/views/helpers';\n\nvar\n// Dependencies.\n \n\n // Object with available color palettes.\n color_palette,\n // Constructor function.\n ColorPalette;\n\n// Setup basic color palettes.\ncolor_palette = {};\ncolor_palette['0'] = color_palette['RAINBOW'] = [\n [0, 0, 128],\n [20, 50, 120],\n [20, 100, 200],\n [10, 150, 150],\n [120, 180, 50],\n [220, 200, 10],\n [240, 160, 36],\n [225, 50, 50],\n [230, 85, 110],\n [250, 250, 250],\n [255, 255, 255]\n];\ncolor_palette['1'] = color_palette['IRON'] = [\n [40, 20, 100],\n [80, 20, 150],\n [150, 20, 150],\n [200, 50, 120],\n [220, 80, 80],\n [230, 120, 30],\n [240, 200, 20],\n [240, 220, 80],\n [255, 255, 125],\n [250, 250, 250],\n [255, 255, 255]\n];\ncolor_palette['2'] = color_palette['GRAY'] = [\n [50, 50, 50],\n [75, 75, 75],\n [100, 100, 100],\n [125, 125, 125],\n [150, 150, 150],\n [175, 175, 175],\n [200, 200, 200],\n [225, 225, 225],\n [250, 250, 250],\n [255, 255, 255]\n];\ncolor_palette['3'] = color_palette['RAINBOW2'] = (function() {\n var HSVToRGB = view_helpers.HSVToRGB,\n length = 256,\n rgb = new Array(length),\n i;\n\n for (i = 0; i < length; i += 1) {\n rgb[i] = view_helpers.HSVToRGB(length - 1 - i, 100, 90);\n }\n return rgb;\n}());\n\nColorPalette = function(color_palette_id) {\n if (color_palette_id === undefined || color_palette_id === 'DEFAULT') {\n color_palette_id = 'RAINBOW';\n }\n this.color_palette_id = color_palette_id;\n};\n\nColorPalette.prototype.getRGBArray = function() {\n if (color_palette[this.color_palette_id] !== undefined) {\n return color_palette[this.color_palette_id];\n }\n};\n\n// Export constructor function.\nexport default ColorPalette;\n","// Heatmap view.\n//\n// It uses HTML5 Canvas for rendering.\n// getHTMLElement() returns jQuery object with the canvas used for rendering.\n// Before use, this view should be bound with a heatmap using bindHeapmap(heatmap, grid_width, grid_height).\n// To render the heatmap use renderHeatmap() method.\n// Set size of the heatmap using CSS rules. The view fits canvas dimensions to the real\n// size of the HTML element to avoid low quality CSS scaling *ONLY* when HQ rendering is enabled.\n// Otherwise, the canvas has the same dimensions as heatmap grid and fast CSS scaling is used.\nimport ColorPalette from 'models/energy2d/views/color-palette';\n\nexport default function HeatmapView(html_id) {\n var DEFAULT_ID = 'energy2d-heatmap-view',\n\n $heatmap_canvas,\n canvas_ctx,\n\n rgb_array,\n max_rgb_idx,\n\n heatmap,\n grid_width,\n grid_height,\n min_temp = 0,\n max_temp = 50,\n\n //\n // Private methods.\n //\n initHTMLelement = function() {\n $heatmap_canvas = $('');\n $heatmap_canvas.attr('id', html_id || DEFAULT_ID);\n canvas_ctx = $heatmap_canvas[0].getContext('2d');\n },\n\n //\n // Public API.\n //\n heatmap_view = {\n // Render heat map on the canvas.\n renderHeatmap: function() {\n var scale, rgb_idx, val, color1, color2,\n image_data, data,\n i, j, iny, pix_index, pix_stride;\n\n if (!heatmap) {\n throw new Error(\"Heatmap: bind heatmap before rendering.\");\n }\n\n canvas_ctx.clearRect(0, 0, grid_width, grid_height);\n // TODO: is it really necessary?\n canvas_ctx.fillStyle = \"rgb(0,0,0)\";\n\n scale = max_rgb_idx / Math.max(1, max_temp - min_temp);\n image_data = canvas_ctx.getImageData(0, 0, grid_width, grid_height);\n data = image_data.data;\n\n pix_index = 0;\n pix_stride = 4 * grid_width;\n for (i = 0; i < grid_width; i += 1) {\n iny = i * grid_height;\n pix_index = 4 * i;\n for (j = 0; j < grid_height; j += 1) {\n val = scale * (heatmap[iny + j] - min_temp);\n rgb_idx = Math.floor(val);\n // Get fractional part of val.\n val -= rgb_idx;\n if (rgb_idx < 0) {\n rgb_idx = 0;\n val = 0;\n } else if (rgb_idx > max_rgb_idx - 1) {\n rgb_idx = max_rgb_idx - 1;\n val = 1;\n }\n color1 = rgb_array[rgb_idx];\n color2 = rgb_array[rgb_idx + 1];\n data[pix_index] = color1[0] * (1 - val) + color2[0] * val;\n data[pix_index + 1] = color1[1] * (1 - val) + color2[1] * val;\n data[pix_index + 2] = color1[2] * (1 - val) + color2[2] * val;\n data[pix_index + 3] = 255;\n pix_index += pix_stride;\n }\n }\n canvas_ctx.putImageData(image_data, 0, 0);\n },\n\n // Bind heatmap to the view.\n bindHeatmap: function(new_heatmap, new_grid_width, new_grid_height) {\n if (new_grid_width * new_grid_height !== new_heatmap.length) {\n throw new Error(\"Heatmap: provided heatmap has wrong dimensions.\");\n }\n heatmap = new_heatmap;\n grid_width = new_grid_width;\n grid_height = new_grid_height;\n this.setCanvasSize(grid_width, grid_height);\n },\n\n getHTMLElement: function() {\n return $heatmap_canvas;\n },\n\n resize: function() {\n // Don't do anything, canvas width and height depend on grid\n // dimensions, not CSS dimensions of canvas itself.\n // If grid is 100x100, but CSS dimensions are 500x500, CSS scaling\n // will be used.\n },\n\n setCanvasSize: function(w, h) {\n $heatmap_canvas.attr('width', w);\n $heatmap_canvas.attr('height', h);\n },\n\n setMinTemperature: function(v) {\n min_temp = v;\n },\n setMaxTemperature: function(v) {\n max_temp = v;\n },\n setColorPalette: function(id) {\n rgb_array = new ColorPalette(id).getRGBArray();\n max_rgb_idx = rgb_array.length - 1;\n }\n };\n // One-off initialization.\n // Set the default color palette.\n heatmap_view.setColorPalette('DEFAULT');\n\n initHTMLelement();\n\n return heatmap_view;\n};\n","export default \"varying vec2 coord;\\n\\nvoid main() {\\n coord = gl_TexCoord.xy;\\n gl_Position = vec4(gl_Vertex.xyz, 1.0);\\n}\\n\";","export default \"// Provided textur contains temperature data in R channel.\\nuniform sampler2D heatmap_tex;\\nuniform sampler2D palette_tex;\\n\\nuniform float max_temp;\\nuniform float min_temp;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n float temp = texture2D(heatmap_tex, coord).r;\\n float scaled_temp = (temp - min_temp) / max(1.0, max_temp - min_temp);\\n gl_FragColor = texture2D(palette_tex, vec2(scaled_temp, 0.5));\\n}\\n\";","// Heatmap WebGL view.\n//\n// It uses HTML5 Canvas and WebGL for rendering.\n// getHTMLElement() returns jQuery object with the canvas used for rendering.\n// Before use, this view should be bound with a heatmap texture using bindHeapmapTexture(heatmap_tex).\n// To render the heatmap use renderHeatmapTexture() method.\n// Set size of the heatmap using CSS rules.\nimport context from 'models/energy2d/gpu/context';\nimport Texture from 'models/energy2d/gpu/texture';\nimport Shader from 'models/energy2d/gpu/shader';\nimport Mesh from 'models/energy2d/gpu/mesh';\nimport ColorPalette from 'models/energy2d/views/color-palette';\nimport basic_vs from 'models/energy2d/views/heatmap-webgl-glsl/basic.vs.glsl';\nimport temp_renderer_fs from 'models/energy2d/views/heatmap-webgl-glsl/temp-renderer.fs.glsl';\n\nexport default function HeatmapWebGLView(html_id) {\n var\n // Get WebGL context.\n gl = context.getWebGLContext(),\n // GLSL Render program.\n render_program = new Shader(basic_vs, temp_renderer_fs),\n // Plane used for rendering.\n plane = Mesh.plane({\n coords: true\n }),\n // Color palette texture (init later).\n palette_tex,\n\n DEFAULT_ID = 'energy2d-heatmap-webgl-view',\n\n $heatmap_canvas,\n canvas_width,\n canvas_height,\n\n heatmap_tex,\n min_temp = 0,\n max_temp = 50,\n\n //\n // Private methods.\n //\n initHTMLelement = function() {\n $heatmap_canvas = $(gl.canvas);\n $heatmap_canvas.attr('id', html_id || DEFAULT_ID);\n },\n\n // Make sure that no FBO is bound and viewport has proper dimensions\n // (it's not obvious as this context is also used for GPGPU calculations).\n setupRenderTarget = function() {\n // Ensure that FBO is null, as GPGPU operations which use FBOs also take place.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n // This is necessary, as GPGPU operations can modify viewport size.\n gl.viewport(0, 0, canvas_width, canvas_height);\n },\n\n //\n // Public API.\n //\n heatmap_view = {\n // Render heat map on the canvas.\n renderHeatmap: function() {\n\n if (!heatmap_tex) {\n throw new Error(\"Heatmap: bind heatmap texture before rendering.\");\n }\n\n setupRenderTarget();\n\n gl.clear(gl.COLOR_BUFFER_BIT);\n heatmap_tex.bind(0);\n palette_tex.bind(1);\n render_program.draw(plane);\n palette_tex.unbind(1);\n heatmap_tex.unbind(0);\n },\n\n resize: function() {\n canvas_width = $heatmap_canvas.width();\n canvas_height = $heatmap_canvas.height();\n $heatmap_canvas.attr('width', canvas_width);\n $heatmap_canvas.attr('height', canvas_height);\n },\n\n // Bind heatmap to the view.\n bindHeatmapTexture: function(new_heatmap_tex) {\n heatmap_tex = new_heatmap_tex;\n },\n\n getHTMLElement: function() {\n return $heatmap_canvas;\n },\n\n setMinTemperature: function(v) {\n min_temp = v;\n render_program.uniforms({\n min_temp: min_temp\n });\n },\n setMaxTemperature: function(v) {\n max_temp = v;\n render_program.uniforms({\n max_temp: max_temp\n });\n },\n setColorPalette: function(id) {\n var rgb_array, len, tex_data, i, i4;\n rgb_array = new ColorPalette(id).getRGBArray();\n len = rgb_array.length;\n tex_data = new Uint8Array(len * 4);\n for (i = 0; i < len; i += 1) {\n i4 = i * 4;\n tex_data[i4] = rgb_array[i][0];\n tex_data[i4 + 1] = rgb_array[i][1];\n tex_data[i4 + 2] = rgb_array[i][2];\n tex_data[i4 + 3] = 255;\n }\n palette_tex = new Texture(len, 1, {\n type: gl.UNSIGNED_BYTE,\n format: gl.RGBA,\n filter: gl.LINEAR\n });\n gl.bindTexture(gl.TEXTURE_2D, palette_tex.id);\n gl.texImage2D(gl.TEXTURE_2D, 0, palette_tex.format, len, 1, 0, palette_tex.format, palette_tex.type, tex_data);\n }\n };\n\n // One-off initialization.\n // Set the default color palette.\n heatmap_view.setColorPalette('DEFAULT');\n // Set render program uniforms.\n render_program.uniforms({\n // Texture units.\n heatmap_tex: 0,\n palette_tex: 1,\n // Uniforms.\n min_temp: min_temp,\n max_temp: max_temp\n });\n // Setup texture coordinates.\n plane.coords = [\n [1, 0],\n [1, 1],\n [0, 0],\n [0, 1]\n ];\n // Update buffers.\n plane.compile();\n\n initHTMLelement();\n\n return heatmap_view;\n};\n","// WebGL Status.\n// Presents available WebGL features.\n//\n// getHTMLElement() method returns JQuery object with DIV that contains status.\n\nimport CheckboxController from 'common/controllers/checkbox-controller';\nimport gpgpu from 'models/energy2d/gpu/gpgpu';\n\nvar\n// Dependencies.\n \n \n\n GET_WEBGL = '

Click to learn more about WebGL.

';\n\nexport default function WebGLStatusView(html_id, model) {\n var DEFAULT_ID = 'e2d-webgl-status',\n $div,\n $webgl_icon,\n $status_wrapper,\n $status,\n webgl_checkbox,\n $checkbox,\n energy2d_modeler,\n WebGL_status_view,\n interactiveControllerProxy = {\n getModel: function() {\n return model;\n },\n getScriptingAPI: function() {\n return function() {};\n },\n getNextTabIndex: function() {\n return function() {};\n }\n };\n\n //\n // Private methods.\n //\n\n function initHTMLelement() {\n var $closeBtn;\n\n $div = $('
');\n $div.attr('id', html_id || DEFAULT_ID);\n $status_wrapper = $('
');\n $status_wrapper.appendTo($div);\n $status = $('
');\n $status.appendTo($status_wrapper);\n\n $closeBtn = $('');\n $closeBtn.on('click', hide);\n $closeBtn.appendTo($status_wrapper);\n\n $checkbox.appendTo($status_wrapper);\n\n $webgl_icon = $('');\n $webgl_icon.on('click', show);\n $webgl_icon.appendTo($div);\n\n $status_wrapper.hide();\n }\n\n function show() {\n $webgl_icon.hide();\n $status_wrapper.fadeIn();\n }\n\n function hide() {\n $webgl_icon.fadeIn();\n $status_wrapper.fadeOut();\n }\n\n function initialize() {\n // Second argument to new CheckboxController replicates part of an\n // interactiveController to generate the necessary API a checkbox\n // controller component needs\n webgl_checkbox = new CheckboxController({\n \"type\": \"checkbox\",\n \"id\": \"webgl-status-checkbox\",\n \"text\": \"WebGL-accelerated physics engine\",\n \"property\": \"use_WebGL\"\n }, interactiveControllerProxy);\n $checkbox = webgl_checkbox.getViewContainer();\n initHTMLelement();\n }\n\n //\n // Public API.\n //\n WebGL_status_view = {\n bindModel: function(model) {\n energy2d_modeler = model;\n interactiveControllerProxy.getModel = function() {\n return model;\n };\n webgl_checkbox.modelLoadedCallback(interactiveControllerProxy);\n },\n\n render: function() {\n var modelCompatible = energy2d_modeler.isWebGLCompatible(),\n feature = gpgpu.featuresInfo,\n requiredFeatures = true,\n optionalFeatures = true,\n initError = energy2d_modeler.properties.use_WebGL && !energy2d_modeler.isWebGLActive(),\n content;\n\n $status.empty();\n\n Object.keys(feature).forEach(function(name) {\n var f = feature[name];\n if (f.required && !f.available) {\n requiredFeatures = false;\n }\n if (!f.required && !f.available) {\n optionalFeatures = false;\n }\n });\n\n // WebGL + required extensions availability message.\n if (requiredFeatures && optionalFeatures) {\n $status.append('

Your browser supports WebGL as well as all required and optional extensions!

');\n } else if (requiredFeatures) {\n $status.append('

Your browser supports WebGL and all required extensions! However some ' +\n 'optional extensions are unavailable:

');\n Object.keys(feature).forEach(function(name) {\n var f = feature[name],\n supported;\n if (!f.required) {\n supported = f.available ? '' : '';\n $status.append('

' + supported + ' ' + name + '

');\n }\n });\n $status.append('

WebGL rendering quality can be affected.

');\n } else if (feature['WebGL']) {\n $status.append('

Your browser supports WebGL, however not all required extensions are available:

');\n Object.keys(feature).forEach(function(name) {\n var f = feature[name],\n supported;\n if (f.required) {\n supported = f.available ? '' : '';\n $status.append('

' + supported + ' ' + name + '

');\n }\n });\n $status.append(GET_WEBGL);\n } else {\n $status.append('

Sorry, your browser does not support WebGL.');\n $status.append(GET_WEBGL);\n }\n\n // Model compatibility message.\n if (modelCompatible) {\n content = 'This model is compatible with WebGL-accelerated physics engine';\n if (energy2d_modeler.isWebGLActive()) {\n content += ' and it is active.';\n } else {\n content += ', but it is inactive.';\n if (initError) {\n content += ' Unfortunately, its initialization failed. Check the browser console for details.';\n } else if (requiredFeatures) {\n content += ' Enable it to speed up simulation:';\n }\n }\n $status.append('

' + content + '

');\n } else {\n $status.append('

Unfortunately, some features used in this model are incompatible ' +\n 'with WebGL-accelerated physics engine.

');\n }\n\n // WebGL solvers checkbox.\n if (!requiredFeatures || !modelCompatible || initError) {\n // If any test failed hide the checkbox.\n $checkbox.hide();\n } else {\n $checkbox.show();\n }\n\n // WebGL icon tooltip message and color.\n if (initError) {\n content = 'WebGL initialization failed.';\n $webgl_icon.removeClass(\"happy\");\n $webgl_icon.addClass(\"sad\");\n } else if (!requiredFeatures || !modelCompatible) {\n content = 'WebGL unavailable.';\n $webgl_icon.removeClass(\"happy\");\n $webgl_icon.addClass(\"sad\");\n } else if (!energy2d_modeler.isWebGLActive()) {\n content = 'WebGL available, but inactive.';\n $webgl_icon.removeClass(\"happy\");\n $webgl_icon.removeClass(\"sad\");\n } else {\n content = 'WebGL available and active.';\n $webgl_icon.removeClass(\"sad\");\n $webgl_icon.addClass(\"happy\");\n }\n content += ' Click for detailed information.';\n $webgl_icon.attr('title', content);\n\n if (initError) {\n // Display panel when user requested WebGL, but it wasn't\n // initialized correctly.\n show();\n }\n },\n\n getHTMLElement: function() {\n return $div;\n }\n };\n\n // One-off initialization.\n initialize();\n\n return WebGL_status_view;\n};\n","/*jslint indent: 2, browser: true, newcap: true */\n\n// Vector map view.\n//\n// It uses HTML5 Canvas for rendering.\n// getHTMLElement() returns jQuery object with canvas used for rendering.\n// Before use, this view should be bound with the vector map using bindVectormap(vectormap_u, vectormap_v, width, height, spacing).\n// To render vector map use renderVectormap() method.\n// Set size of the vectormap using CSS rules. The view fits canvas dimensions to the real\n// size of the HTML element to avoid low quality CSS scaling.\n\nexport default function VectormapView(html_id) {\n var DEFAULT_ID = 'energy2d-vectormap-view',\n VECTOR_SCALE = 100,\n VECTOR_BASE_LEN = 8,\n WING_COS = Math.cos(0.523598776),\n WING_SIN = Math.sin(0.523598776),\n WING_LEN = 4,\n ARROW_COLOR = \"rgb(175,175,175)\",\n\n $vectormap_canvas,\n canvas_ctx,\n canvas_width,\n canvas_height,\n\n vectormap_u,\n vectormap_v,\n grid_width,\n grid_height,\n spacing,\n\n enabled = true,\n\n //\n // Private methods.\n //\n initHTMLelement = function() {\n $vectormap_canvas = $('');\n $vectormap_canvas.attr('id', html_id || DEFAULT_ID);\n canvas_ctx = $vectormap_canvas[0].getContext('2d');\n },\n\n // Helper method for drawing a single vector.\n drawVector = function(x, y, vx, vy) {\n var r = 1.0 / Math.sqrt(vx * vx + vy * vy),\n arrowx = vx * r,\n arrowy = vy * r,\n x1 = x + arrowx * VECTOR_BASE_LEN + vx * VECTOR_SCALE,\n y1 = y + arrowy * VECTOR_BASE_LEN + vy * VECTOR_SCALE,\n wingx = WING_LEN * (arrowx * WING_COS + arrowy * WING_SIN),\n wingy = WING_LEN * (arrowy * WING_COS - arrowx * WING_SIN);\n\n canvas_ctx.beginPath();\n canvas_ctx.moveTo(x, y);\n canvas_ctx.lineTo(x1, y1);\n\n canvas_ctx.lineTo(x1 - wingx, y1 - wingy);\n canvas_ctx.moveTo(x1, y1);\n\n wingx = WING_LEN * (arrowx * WING_COS - arrowy * WING_SIN);\n wingy = WING_LEN * (arrowy * WING_COS + arrowx * WING_SIN);\n canvas_ctx.lineTo(x1 - wingx, y1 - wingy);\n\n canvas_ctx.stroke();\n },\n\n //\n // Public API.\n //\n vectormap_view = {\n // Render vectormap on the canvas.\n renderVectormap: function() {\n if (!enabled) return;\n\n var dx, dy, x0, y0, uij, vij,\n i, j, iny, ijny;\n\n if (!vectormap_u || !vectormap_v) {\n throw new Error(\"Vectormap: bind vectormap before rendering.\");\n }\n\n dx = canvas_width / grid_width;\n dy = canvas_height / grid_height;\n\n canvas_ctx.clearRect(0, 0, canvas_width, canvas_height);\n canvas_ctx.strokeStyle = ARROW_COLOR;\n canvas_ctx.lineWidth = 1;\n\n for (i = 1; i < grid_width - 1; i += spacing) {\n iny = i * grid_height;\n x0 = (i + 0.5) * dx; // + 0.5 to move arrow into field center\n for (j = 1; j < grid_height - 1; j += spacing) {\n ijny = iny + j;\n y0 = (j + 0.5) * dy; // + 0.5 to move arrow into field center\n uij = vectormap_u[ijny];\n vij = vectormap_v[ijny];\n if (uij * uij + vij * vij > 1e-15) {\n drawVector(x0, y0, uij, vij);\n }\n }\n }\n },\n\n clear: function() {\n canvas_ctx.clearRect(0, 0, canvas_width, canvas_height);\n },\n\n get enabled() {\n return enabled;\n },\n set enabled(v) {\n enabled = v;\n // Clear vectormap, as .renderVectormap() call won't do it.\n if (!enabled) vectormap_view.clear();\n },\n\n // Bind vector map to the view.\n bindVectormap: function(new_vectormap_u, new_vectormap_v, new_grid_width, new_grid_height, arrows_per_row) {\n if (new_grid_width * new_grid_height !== new_vectormap_u.length) {\n throw new Error(\"Heatmap: provided U component of vectormap has wrong dimensions.\");\n }\n if (new_grid_width * new_grid_height !== new_vectormap_v.length) {\n throw new Error(\"Heatmap: provided V component of vectormap has wrong dimensions.\");\n }\n vectormap_u = new_vectormap_u;\n vectormap_v = new_vectormap_v;\n grid_width = new_grid_width;\n grid_height = new_grid_height;\n spacing = Math.round(new_grid_width / arrows_per_row);\n },\n\n getHTMLElement: function() {\n return $vectormap_canvas;\n },\n\n resize: function() {\n canvas_width = $vectormap_canvas.width();\n canvas_height = $vectormap_canvas.height();\n $vectormap_canvas.attr('width', canvas_width);\n $vectormap_canvas.attr('height', canvas_height);\n }\n };\n\n // One-off initialization.\n initHTMLelement();\n\n return vectormap_view;\n};\n","export default \"// Provided texture contains vector data in RG channels.\\nattribute vec2 origin;\\n\\nuniform sampler2D vectormap_tex;\\nuniform float base_length;\\nuniform float vector_scale;\\nuniform vec2 scale;\\n\\nvoid main() {\\n // Read vector which should be visualized.\\n vec2 vec = texture2D(vectormap_tex, gl_TexCoord.xy).xy;\\n vec.y = -vec.y;\\n\\n if (length(vec) < 1e-15) {\\n // Do not draw to small vectors.\\n // Set position outside [-1, 1] region, which is rendered.\\n gl_Position = vec4(2.0);\\n return;\\n }\\n\\n // Test which part of the vector arrow is being processed. \\n if (gl_Vertex.x == 0.0 && gl_Vertex.y == 0.0) {\\n // Origin of the arrow is being processed.\\n // Just transform its coordinates.\\n gl_Position = vec4(origin, 0.0, 1.0);\\n } else {\\n // Other parts of arrow are being processed.\\n // Set proper length of the arrow, rotate it, scale\\n // and finally transform.\\n\\n // Calculate arrow length.\\n vec2 new_pos = gl_Vertex.xy;\\n new_pos.x += base_length + vector_scale * length(vec);\\n\\n // Calculate angle between reference arrow (horizontal).\\n vec = normalize(vec);\\n float angle = acos(dot(vec, vec2(1.0, 0.0)));\\n if (vec.y < 0.0) {\\n angle = -angle;\\n }\\n // Prepare rotation matrix.\\n // See: http://en.wikipedia.org/wiki/Rotation_matrix\\n mat2 rot_m = mat2(\\n cos(angle), sin(angle),\\n -sin(angle), cos(angle)\\n );\\n // Rotate.\\n new_pos = rot_m * new_pos;\\n // Scale.\\n new_pos = new_pos * scale;\\n // Transform.\\n gl_Position = vec4(new_pos + origin, 0.0, 1.0);\\n }\\n}\\n\";","export default \"uniform vec4 color;\\n\\nvoid main() {\\n gl_FragColor = color;\\n}\\n\";","// Vectormap WebGL view.\n//\n// It uses HTML5 Canvas and WebGL for rendering.\n// getHTMLElement() returns jQuery object with the canvas used for rendering.\n// Before use, this view should be bound with a heatmap texture using bindHeapmapTexture(vectormap_tex).\n// To render the heatmap use renderVectormapTexture() method.\n// Set size of the heatmap using CSS rules.\nimport context from 'models/energy2d/gpu/context';\nimport Shader from 'models/energy2d/gpu/shader';\nimport Mesh from 'models/energy2d/gpu/mesh';\nimport vectormap_vs from 'models/energy2d/views/vectormap-webgl-glsl/vectormap.vs.glsl';\nimport vectormap_fs from 'models/energy2d/views/vectormap-webgl-glsl/vectormap.fs.glsl';\n\nexport default function VectormapWebGLView(html_id) {\n var\n // Get WebGL context.\n gl = context.getWebGLContext(),\n // GLSL Render program.\n render_program = new Shader(vectormap_vs, vectormap_fs),\n // Plane used for rendering.\n arrows = new Mesh({\n coords: true,\n lines: true\n }),\n\n DEFAULT_ID = 'energy2d-vectormap-webgl-view',\n VECTOR_SCALE = 100,\n VECTOR_BASE_LEN = 8,\n ARROW_COLOR = [0.7, 0.7, 0.7, 1.0],\n\n $vectormap_canvas,\n canvas_width,\n canvas_height,\n\n vectormap_tex,\n grid_width,\n grid_height,\n spacing,\n\n enabled = true,\n\n //\n // Private methods.\n //\n initGeometry = function() {\n var i, j, idx, origin, coord,\n gdx = 2.0 / grid_width,\n gdy = 2.0 / grid_height,\n tdx = 1.0 / grid_width,\n tdy = 1.0 / grid_height;\n\n arrows.addVertexBuffer('origins', 'origin');\n arrows.vertices = [];\n arrows.origins = [];\n arrows.coords = [];\n arrows.lines = [];\n\n idx = 0;\n for (i = 1; i < grid_width - 1; i += spacing) {\n for (j = 1; j < grid_height - 1; j += spacing) {\n // Base arrows vertices. Origin, front and two wings. The unit is pixel.\n // Base length is 0.01 px - just for convenience (it distinguish front of the arrows from the origin).\n arrows.vertices.push([0, 0, 0], [0.01, 0, 0], [-3, 2, 0], [-3, -2, 0]);\n // All of these vertices have to know which vector they are representing.\n origin = [-1.0 + (i + 0.5) * gdx, 1.0 - (j + 0.5) * gdy, 0];\n arrows.origins.push(origin, origin, origin, origin);\n // Texture coordinates.\n coord = [(j + 0.5) * tdy, (i + 0.5) * tdx];\n arrows.coords.push(coord, coord, coord, coord);\n // Draw three lines. From origin to the fron of the arrows + two wings.\n arrows.lines.push([idx, idx + 1], [idx + 1, idx + 2], [idx + 1, idx + 3]);\n idx += 4;\n }\n }\n // Update buffers.\n arrows.compile();\n },\n\n initHTMLelement = function() {\n $vectormap_canvas = $(gl.canvas);\n $vectormap_canvas.attr('id', html_id || DEFAULT_ID);\n },\n\n // Make sure that no FBO is bound and viewport has proper dimensions\n // (it's not obvious as this context is also used for GPGPU calculations).\n setupRenderTarget = function() {\n // Ensure that FBO is null, as GPGPU operations which use FBOs also take place.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n // This is necessary, as GPGPU operations can modify viewport size.\n gl.viewport(0, 0, canvas_width, canvas_height);\n },\n\n //\n // Public API.\n //\n vectormap_view = {\n // Render heat map on the canvas.\n renderVectormap: function() {\n if (!enabled) return;\n\n if (!vectormap_tex) {\n throw new Error(\"Vectormap: bind heatmap texture before rendering.\");\n }\n\n setupRenderTarget();\n\n vectormap_tex.bind(0);\n render_program.draw(arrows, gl.LINES);\n vectormap_tex.unbind(0);\n },\n\n get enabled() {\n return enabled;\n },\n set enabled(v) {\n enabled = v;\n },\n\n resize: function() {\n canvas_width = $vectormap_canvas.width();\n canvas_height = $vectormap_canvas.height();\n $vectormap_canvas.attr('width', canvas_width);\n $vectormap_canvas.attr('height', canvas_height);\n // Render ara has dimensions from -1.0 to 1.0, so its width/height is 2.0.\n render_program.uniforms({\n scale: [2.0 / canvas_width, 2.0 / canvas_height]\n });\n },\n\n // Bind vectormap to the view.\n bindVectormapTexture: function(new_vectormap_tex, new_grid_width, new_grid_height, arrows_per_row) {\n vectormap_tex = new_vectormap_tex;\n grid_width = new_grid_width;\n grid_height = new_grid_height;\n spacing = Math.round(grid_width / arrows_per_row);\n\n initGeometry();\n },\n\n getHTMLElement: function() {\n return $vectormap_canvas;\n }\n };\n\n // One-off initialization.\n // Set render program uniforms.\n render_program.uniforms({\n // Texture units.\n vectormap_tex: 0,\n // Uniforms.\n base_length: VECTOR_BASE_LEN,\n vector_scale: VECTOR_SCALE,\n color: ARROW_COLOR\n });\n\n initHTMLelement();\n\n return vectormap_view;\n};\n","\n// Energy2D photons view.\n//\n// It uses HTML5 Canvas for rendering.\n// getHTMLElement() returns jQuery object with canvas used for rendering.\n// Before use, this view should be bound with the parts array using bindPhotonsArray(photons).\n// To render parts use renderPhotons() method.\n// Set size of the parts view using CSS rules. The view fits canvas dimensions to the real\n// size of the HTML element to avoid low quality scaling.\n\nexport default function PhotonsView(html_id) {\n var DEFAULT_ID = 'energy2d-photons-view',\n DEFAULT_CLASS = 'energy2d-photons-view',\n\n PHOTON_LENGTH = 10,\n\n $photons_canvas,\n canvas_ctx,\n canvas_width,\n canvas_height,\n\n photons,\n scale_x,\n scale_y,\n scene_width,\n scene_height,\n\n //\n // Private methods.\n //\n initHTMLelement = function() {\n $photons_canvas = $('');\n $photons_canvas.attr('id', html_id || DEFAULT_ID);\n $photons_canvas.addClass(DEFAULT_CLASS);\n\n canvas_ctx = $photons_canvas[0].getContext('2d');\n },\n\n setCanvasStyle = function() {\n canvas_ctx.strokeStyle = \"rgba(255,255,255,128)\";\n canvas_ctx.lineWidth = 0.5;\n },\n\n //\n // Public API.\n //\n photons_view = {\n // Render vectormap on the canvas.\n renderPhotons: function() {\n var photon, sx, sy, r,\n i, len;\n\n if (!photons) {\n throw new Error(\"Photons view: bind parts array before rendering.\");\n }\n\n canvas_ctx.clearRect(0, 0, canvas_width, canvas_height);\n for (i = 0, len = photons.length; i < len; i += 1) {\n photon = photons[i];\n\n sx = photon.x * scale_x;\n sy = photon.y * scale_y;\n r = 1 / Math.sqrt(photon.vx * photon.vx + photon.vy * photon.vy);\n\n canvas_ctx.beginPath();\n canvas_ctx.moveTo(sx, sy);\n canvas_ctx.lineTo(sx + PHOTON_LENGTH * photon.vx * r, sy + PHOTON_LENGTH * photon.vy * r);\n canvas_ctx.stroke();\n }\n },\n\n // Bind vector map to the view.\n bindPhotonsArray: function(new_photons, new_scene_width, new_scene_height) {\n photons = new_photons;\n scene_width = new_scene_width;\n scene_height = new_scene_height;\n scale_x = canvas_width / scene_width;\n scale_y = canvas_height / scene_height;\n },\n\n getHTMLElement: function() {\n return $photons_canvas;\n },\n\n resize: function() {\n canvas_width = $photons_canvas.width();\n canvas_height = $photons_canvas.height();\n scale_x = canvas_width / scene_width;\n scale_y = canvas_height / scene_height;\n $photons_canvas.attr('width', canvas_width);\n $photons_canvas.attr('height', canvas_height);\n setCanvasStyle();\n }\n };\n\n // One-off initialization.\n initHTMLelement();\n setCanvasStyle();\n\n return photons_view;\n};","\n// Classic version of Energy2D was rendering rectangles with small shift.\n// If we do the same then converted models look better.\nvar E2D_XY_SHIFT = 1,\n E2D_DIM_SHIFT = 2;\n\nexport default function PartsView(SVGContainer, g) {\n var api,\n parts,\n\n m2px = SVGContainer.model2px,\n m2pxInv = SVGContainer.model2pxInv,\n\n shapeTest = {\n \"rect\": function(d) {\n return d.shapeType === \"rectangle\" ? this : null;\n },\n \"ellipse\": function(d) {\n return d.shapeType === \"ellipse\" ? this : null;\n },\n \"path\": function(d) {\n return d.shapeType === \"polygon\" || d.shapeType === \"ring\" ? this : null;\n }\n },\n\n ringPathSpec = d3.svg.arc()\n .innerRadius(function(d) {\n return m2px(d.inner * 0.5);\n })\n .outerRadius(function(d) {\n return m2px(d.outer * 0.5);\n })\n .startAngle(0)\n .endAngle(Math.PI * 2),\n\n dragBehavior = (function() {\n var x, y, minX, maxX, minY, maxY, bbox;\n return d3.behavior.drag()\n .origin(function(d) {\n return {\n x: m2px(d.x),\n y: m2pxInv(d.y)\n };\n })\n .on(\"dragstart\", function(d) {\n var rx, ry;\n if (d.draggable) {\n x = y = null;\n rx = m2px.range();\n ry = m2pxInv.range();\n minX = Math.min(rx[0], rx[1]);\n maxX = Math.max(rx[0], rx[1]);\n minY = Math.min(ry[0], ry[1]);\n maxY = Math.max(ry[0], ry[1]);\n bbox = this.getBBox();\n bbox.x0 = bbox.x + 10;\n bbox.y0 = bbox.y + 10;\n bbox.x1 = bbox.x + bbox.width - 10;\n bbox.y1 = bbox.y + bbox.height - 10;\n d3.select(this).style(\"opacity\", 0.7);\n }\n })\n .on(\"drag\", function(d) {\n if (d.draggable) {\n x = d3.event.x;\n y = d3.event.y;\n x -= Math.max(0, bbox.x0 + x - maxX) + Math.min(0, bbox.x1 + x - minX);\n y -= Math.max(0, bbox.y0 + y - maxY) + Math.min(0, bbox.y1 + y - minY);\n d3.select(this).attr(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n }\n })\n .on(\"dragend\", function(d) {\n if (d.draggable) {\n d3.select(this).style(\"opacity\", 1);\n if (x !== null) { // no need to check 'y' too\n d.x = m2px.invert(x);\n d.y = m2pxInv.invert(y);\n }\n }\n });\n }());\n\n function transform(d) {\n return \"translate(\" + m2px(d.x || 0) + \",\" + m2pxInv(d.y || 0) + \")\";\n }\n\n function width(d) {\n return m2px(d.width) + E2D_DIM_SHIFT;\n }\n\n function height(d) {\n return m2px(d.height) + E2D_DIM_SHIFT;\n }\n\n function rx(d) {\n return m2px(d.a * 0.5);\n }\n\n function ry(d) {\n return m2px(d.b * 0.5);\n }\n\n function visibility(d) {\n return d.visible ? \"visible\" : \"hidden\";\n }\n\n function textureFill(d) {\n return d.texture ? \"url(#texture-1)\" : \"none\";\n }\n\n function label(d) {\n return d.computeLabel();\n }\n\n function dx() {\n return -this.getBBox().width / 2;\n }\n\n function fill(d) {\n if (!d.filled) return 'rgba(0, 0, 0, 0)';\n var color;\n if (d.color === \"auto\") {\n if (d.power > 0) {\n color = '#FFFF00';\n } else if (d.power < 0) {\n color = '#B0C4DE';\n } else if (d.constant_temperature) {\n // Heatmap will be visible.\n color = 'rgba(0, 0, 0, 0)';\n } else {\n color = \"#999\";\n }\n } else {\n // Typical color definition.\n color = d.color;\n // TODO: this should be done during XML->JSON conversion.\n if (!isNaN(parseInt(color, 16))) {\n while (color.length < 6) {\n color = '0' + color;\n }\n color = '#' + color;\n }\n }\n return color;\n }\n\n function polygonPathSpec(d) {\n var res = [],\n x = d.raw_x_coords,\n y = d.raw_y_coords,\n i, len;\n for (i = 0, len = x.length; i < len; i++) {\n res.push(m2px(x[i]));\n res.push(m2pxInv(y[i]));\n }\n return \"M\" + res.join(\",\") + \"Z\";\n }\n\n function pathSpec(d) {\n switch (d.shapeType) {\n case \"polygon\":\n return polygonPathSpec(d);\n case \"ring\":\n return ringPathSpec(d);\n }\n }\n\n function xLabel(d) {\n var s = d.shapeType;\n return s === \"rectangle\" || s === \"polygon\" ? this.parentNode.firstElementChild.getBBox().width / 2 : 0;\n }\n\n function yLabel(d) {\n var s = d.shapeType;\n return s === \"rectangle\" || s === \"polygon\" ? this.parentNode.firstElementChild.getBBox().height / 2 : 0;\n }\n\n function generateTextures() {\n var p = g.append(\"defs\").append(\"pattern\")\n .attr(\"id\", \"texture-1\")\n .attr(\"patternUnits\", \"userSpaceOnUse\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", \"0.7em\")\n .attr(\"height\", \"0.7em\")\n .attr(\"viewBox\", \"0 0 16 16\");\n p.append(\"path\")\n .attr(\"class\", \"e2d-texture-path-shadow\")\n .attr(\"d\", \"M0,0 L16,16 M-1,15 L1,17 M15,-1 L17,1\");\n p.append(\"path\")\n .attr(\"class\", \"e2d-texture-path\")\n .attr(\"d\", \"M0,0 L16,16 M-1,15 L1,17 M15,-1 L17,1\");\n }\n\n function renderShape(shape, enter, update) {\n enter = enter.select(shapeTest[shape]);\n enter.append(shape)\n .attr(\"class\", \"e2d-part-shape\");\n enter.append(shape)\n .attr(\"class\", \"e2d-part-shape-outline\")\n .attr(\"fill\", textureFill);\n\n // Propagate data.\n update.select(\".e2d-part-shape\");\n update.select(\".e2d-part-shape-outline\");\n\n switch (shape) {\n case \"rect\":\n update.selectAll(\"rect\")\n .attr(\"x\", E2D_XY_SHIFT)\n .attr(\"y\", E2D_XY_SHIFT)\n .attr(\"width\", width)\n .attr(\"height\", height);\n break;\n case \"ellipse\":\n update.selectAll(\"ellipse\")\n .attr(\"rx\", rx)\n .attr(\"ry\", ry);\n break;\n case \"path\":\n update.selectAll(\"path\")\n .attr(\"d\", pathSpec);\n break;\n }\n }\n\n function renderLabels(enter, update) {\n enter.append(\"text\")\n .attr(\"class\", \"e2d-part-label-shadow\")\n .attr(\"dy\", \".35em\");\n enter.append(\"text\")\n .attr(\"class\", \"e2d-part-label\")\n .attr(\"dy\", \".35em\");\n\n // Propagate data.\n update.select(\".e2d-part-label\");\n update.select(\".e2d-part-label-shadow\");\n update.selectAll(\".e2d-part-label, .e2d-part-label-shadow\")\n .text(label)\n .attr(\"dx\", dx)\n .attr(\"x\", xLabel)\n .attr(\"y\", yLabel);\n }\n\n // Public API.\n api = {\n renderParts: function() {\n if (!parts) return;\n\n var part, partEnter;\n\n part = g.selectAll(\".e2d-part\").data(parts);\n partEnter = part.enter().append(\"g\")\n // \"part\" class is useful for onClick handles, so author\n // can call: onClick(\"part\", function () { ... }).\n .attr(\"class\", \"e2d-part part\");\n\n renderShape(\"rect\", partEnter, part);\n renderShape(\"ellipse\", partEnter, part);\n renderShape(\"path\", partEnter, part);\n renderLabels(partEnter, part);\n\n partEnter.call(dragBehavior);\n\n part\n .attr(\"transform\", transform);\n part.select(\".e2d-part-shape\")\n .attr(\"fill\", fill)\n .style(\"visibility\", visibility);\n\n part.exit().remove();\n },\n\n bindPartsArray: function(newParts) {\n parts = newParts;\n }\n };\n\n (function() {\n generateTextures();\n }());\n\n return api;\n};\n","\nvar TH_W = 2,\n TH_H = 4;\n\nexport default function SensorsView(SVGContainer, g) {\n var api,\n\n m2px = SVGContainer.model2px,\n m2pxInv = SVGContainer.model2pxInv,\n\n sensors,\n\n thermBg, // d3.selection\n thermReading, // d3.selection\n thermValScale = d3.scale.linear().clamp(true).domain([0, 50]).range([TH_H, 0]),\n\n anemoRot, // d3.selection\n\n heatFluxReading, // d3.selection\n\n dragBehavior = d3.behavior.drag()\n .origin(function(d) {\n return {\n x: m2px(d.x),\n y: m2pxInv(d.y)\n };\n })\n .on(\"drag\", function(d) {\n d.x = m2px.invert(d3.event.x);\n d.y = m2pxInv.invert(d3.event.y);\n });\n\n function em(val) {\n return val + \"%\";\n }\n\n function transform(d) {\n return \"translate(\" + m2px(d.x) + \",\" + m2pxInv(d.y) + \")\";\n }\n\n function labelDx() {\n return -this.getBBox().width / 2;\n }\n\n function labelText(d) {\n return d.label;\n }\n\n function readingText(d) {\n return d.value.toFixed(1) + \" °C\";\n }\n\n function bgHeight(d) {\n return em(thermValScale(d.value));\n }\n\n function anemometerRotation(d) {\n return \"rotate(\" + d.value + \")\";\n }\n\n function heatFluxReadingText(d) {\n return d.value.toFixed(1) + \" W/m²\";\n }\n\n function heatFluxRot(d) {\n return \"rotate(\" + d.angle + \")\";\n }\n\n function measuringPoint(g) {\n g = g.append(\"g\").attr(\"class\", \"e2d-measuring-point\");\n g.append(\"line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", \"-0.8%\")\n .attr(\"x2\", 0)\n .attr(\"y2\", \"0.8%\");\n g.append(\"line\")\n .attr(\"x1\", \"-0.8%\")\n .attr(\"y1\", 0)\n .attr(\"x2\", \"0.8%\")\n .attr(\"y2\", 0);\n g.append(\"circle\")\n .attr(\"r\", \"0.8%\");\n }\n\n function supportLabels(enter, update) {\n enter.append(\"text\").attr(\"class\", \"e2d-sensor-reading-shadow\");\n enter.append(\"text\").attr(\"class\", \"e2d-sensor-reading\");\n enter.append(\"text\").attr(\"class\", \"e2d-sensor-label-shadow\");\n enter.append(\"text\").attr(\"class\", \"e2d-sensor-label\");\n\n // Looks strange, but it propagates data from parent to labels.\n // .selectAll() doesn't do it. We can do it here, before rendering.\n // If labels don't exist yet, enter will propagate data. If they\n // exist, data binding will be updated.\n update.select(\".e2d-sensor-label\");\n update.select(\".e2d-sensor-label-shadow\");\n update.select(\".e2d-sensor-reading\");\n update.select(\".e2d-sensor-reading-shadow\");\n }\n\n function renderThermometers(data) {\n var update = g.selectAll(\".e2d-sensor.thermometer\").data(data.filter(function(d) {\n return d.type === \"thermometer\";\n })),\n enter = update.enter().append(\"g\")\n .attr(\"class\", \"e2d-sensor sensor thermometer\")\n .call(dragBehavior);\n supportLabels(enter, update);\n\n // Note that background and fill are inverted (background covers\n // fill). It's easier to change only height of background instead of\n // manipulating both Y coordinate and height of fill.\n enter.append(\"rect\").attr(\"class\", \"e2d-thermometer-fill\");\n enter.append(\"rect\").attr(\"class\", \"e2d-thermometer-background\");\n enter.call(measuringPoint);\n\n update.attr(\"transform\", transform);\n update.select(\".e2d-thermometer-fill\")\n .attr(\"x\", em(-0.5 * TH_W))\n .attr(\"y\", em(-0.5 * TH_H))\n .attr(\"width\", em(TH_W))\n .attr(\"height\", em(TH_H));\n thermBg = update.select(\".e2d-thermometer-background\")\n .attr(\"x\", em(-0.5 * TH_W))\n .attr(\"y\", em(-0.5 * TH_H))\n .attr(\"width\", em(TH_W))\n .attr(\"height\", bgHeight);\n thermReading = update.selectAll(\".e2d-sensor-reading, .e2d-sensor-reading-shadow\")\n .text(readingText)\n .attr(\"y\", em(-0.5 * TH_H))\n .attr(\"dy\", \"-.2em\")\n .attr(\"dx\", \"-.7em\");\n update.selectAll(\".e2d-sensor-label, .e2d-sensor-label-shadow\")\n .text(labelText)\n .attr(\"dx\", labelDx)\n .attr(\"dy\", \"1em\")\n .attr(\"y\", em(0.5 * TH_H));\n\n update.exit().remove();\n }\n\n function renderAnemometer(data) {\n var update = g.selectAll(\".e2d-sensor.anemometer\").data(data.filter(function(d) {\n return d.type === \"anemometer\";\n })),\n enter = update.enter().append(\"g\")\n .attr(\"class\", \"e2d-sensor sensor anemometer\")\n .call(dragBehavior);\n supportLabels(enter, update);\n\n enter = enter\n .append(\"svg\")\n .attr(\"class\", \"e2d-anemometer-shape\")\n .attr(\"viewBox\", \"-50 -50 100 100\")\n .attr(\"x\", \"-3%\")\n .attr(\"y\", \"-3%\")\n .attr(\"width\", \"6%\")\n .attr(\"height\", \"6%\")\n .append(\"g\")\n .attr(\"class\", \"e2d-anemometer-rot\");\n\n enter.append(\"path\")\n .attr(\"d\", \"M-10,10 L0,50 L10,10 Z\")\n .attr(\"transform\", \"rotate(0)\");\n enter.append(\"path\")\n .attr(\"d\", \"M-10,10 L0,50 L10,10 Z\")\n .attr(\"transform\", \"rotate(120)\");\n enter.append(\"path\")\n .attr(\"d\", \"M-10,10 L0,50 L10,10 Z\")\n .attr(\"transform\", \"rotate(240)\");\n enter.append(\"circle\")\n .attr(\"r\", 12);\n\n update.attr(\"transform\", transform);\n anemoRot = update.select(\".e2d-anemometer-rot\")\n .attr(\"transform\", anemometerRotation);\n update.selectAll(\".e2d-sensor-label, .e2d-sensor-label-shadow\")\n .text(labelText)\n .attr(\"dx\", labelDx)\n .attr(\"dy\", \"0.7em\")\n .attr(\"y\", \"3%\");\n\n update.exit().remove();\n }\n\n function renderHeatFluxSensors(data) {\n var update = g.selectAll(\".e2d-sensor.heatFlux\").data(data.filter(function(d) {\n return d.type === \"heatFlux\";\n })),\n enter = update.enter().append(\"g\")\n .attr(\"class\", \"e2d-sensor sensor heatFlux\")\n .call(dragBehavior);\n\n enter = enter.append(\"g\")\n .attr(\"transform\", heatFluxRot);\n enter.append(\"rect\")\n .attr(\"class\", \"e2d-heatflux-shape\")\n .attr(\"x\", \"-3%\")\n .attr(\"y\", \"-1%\")\n .attr(\"width\", \"6%\")\n .attr(\"height\", \"2%\");\n enter.append(\"svg\")\n .attr(\"viewBox\", \"0 0 6 1\")\n .attr(\"x\", \"-3%\")\n .attr(\"y\", \"-1%\")\n .attr(\"width\", \"6%\")\n .attr(\"height\", \"2%\")\n .append(\"path\")\n .attr(\"class\", \"e2d-heatflux-pattern\")\n .attr(\"d\", \"M0,0L1,1L2,0L3,1L4,0L5,1L6,0\");\n enter.call(measuringPoint);\n\n supportLabels(enter, update);\n\n update.attr(\"transform\", transform);\n heatFluxReading = update.selectAll(\".e2d-sensor-reading, .e2d-sensor-reading-shadow\")\n .text(heatFluxReadingText)\n .attr(\"y\", \"-1%\")\n .attr(\"dy\", \"-.2em\")\n .attr(\"dx\", \"-1.8em\");\n update.selectAll(\".e2d-sensor-label, .e2d-sensor-label-shadow\")\n .text(labelText)\n .attr(\"dx\", labelDx)\n .attr(\"dy\", \"0.9em\")\n .attr(\"y\", \"1%\");\n\n update.exit().remove();\n }\n\n // Public API.\n api = {\n update: function() {\n thermBg.attr(\"height\", bgHeight);\n thermReading.text(readingText);\n anemoRot.attr(\"transform\", anemometerRotation);\n heatFluxReading.text(heatFluxReadingText);\n },\n\n renderSensors: function() {\n if (!sensors) return;\n\n renderThermometers(sensors);\n renderAnemometer(sensors);\n renderHeatFluxSensors(sensors);\n },\n\n bindSensorsArray: function(newSensors) {\n sensors = newSensors;\n },\n\n setMinMaxTemp: function(min, max) {\n thermValScale.domain([min, max]);\n }\n };\n\n return api;\n};\n","\nimport HeatmapView from 'models/energy2d/views/heatmap';\nimport HeatmapWebGLView from 'models/energy2d/views/heatmap-webgl';\nimport WebGLStatusView from 'models/energy2d/views/webgl-status';\nimport VectormapView from 'models/energy2d/views/vectormap';\nimport VectormapWebGLView from 'models/energy2d/views/vectormap-webgl';\nimport PhotonsView from 'models/energy2d/views/photons';\nimport PartsView from 'models/energy2d/views/parts';\nimport SensorsView from 'models/energy2d/views/sensors';\n\n\nexport default function Renderer(SVGContainer, model) {\n var api,\n\n heatmap_view,\n velocity_view,\n photons_view,\n parts_view,\n sensors_view,\n webgl_status = new WebGLStatusView(null, model),\n $status = webgl_status.getHTMLElement(),\n $canvasCont = $(\"
\"),\n canvasCount = 0,\n\n isSetup = false;\n\n function setAsNextLayer(view) {\n var $layer = view.getHTMLElement();\n\n $layer.css('width', '100%');\n $layer.css('height', '100%');\n $layer.css('position', 'absolute');\n $layer.css('top', 0);\n $layer.css('left', 0);\n $layer.css('z-index', canvasCount);\n canvasCount += 1;\n\n $canvasCont.append($layer);\n\n // Note that we SHOULD implement it in the following way:\n //\n // var $layer = view.getHTMLElement(),\n // fo = g.append(\"foreignObject\").attr({\n // width: \"100%\",\n // height: \"100%\"\n // }).style({\n // width: \"100%\",\n // height: \"100%\"\n // });\n // $layer.css('width', '100%');\n // if (!customHeight) $layer.css('height', '100%');\n // $layer.appendTo(fo);\n //\n // but foreignObject support is completely broken in Chrome (works fine in Firefox).\n // TODO: check if new version (30+?) fixes that.\n }\n\n function setupCanvasViews() {\n var props = model.properties;\n\n $canvasCont.empty();\n canvasCount = 0;\n // Use isWebGLActive() method, not use_WebGL property. The fact that\n // use_WebGL option is set to true doesn't mean that WebGL can be\n // initialized. It's only a preference.\n if (model.isWebGLActive()) {\n heatmap_view = new HeatmapWebGLView();\n velocity_view = new VectormapWebGLView();\n // Both VectormapWebGL and HeatmapWebGL use common canvas,\n // so it's enough to set it only once as the next layer.\n setAsNextLayer(velocity_view);\n } else {\n heatmap_view = new HeatmapView();\n setAsNextLayer(heatmap_view);\n velocity_view = new VectormapView();\n setAsNextLayer(velocity_view);\n }\n photons_view = new PhotonsView();\n setAsNextLayer(photons_view);\n\n // It must be called after attaching to parent node.\n heatmap_view.resize();\n velocity_view.resize();\n photons_view.resize();\n\n // Bind models to freshly created views.\n if (model.isWebGLActive()) {\n heatmap_view.bindHeatmapTexture(model.getTemperatureTexture());\n velocity_view.bindVectormapTexture(model.getVelocityTexture(), props.grid_width, props.grid_height, 25);\n } else {\n heatmap_view.bindHeatmap(model.getTemperatureArray(), props.grid_width, props.grid_height);\n velocity_view.bindVectormap(model.getUVelocityArray(), model.getVVelocityArray(), props.grid_width, props.grid_height, 25);\n }\n photons_view.bindPhotonsArray(model.getPhotonsArray(), props.model_width, props.model_height);\n }\n\n function setVisOptions() {\n var props = model.properties;\n velocity_view.enabled = props.velocity;\n heatmap_view.setMinTemperature(props.minimum_temperature);\n heatmap_view.setMaxTemperature(props.maximum_temperature);\n heatmap_view.setColorPalette(props.color_palette_type);\n sensors_view.setMinMaxTemp(props.minimum_temperature, props.maximum_temperature);\n }\n\n api = {\n getHeightForWidth: function(width) {\n return width * model.properties.grid_height / model.properties.grid_width;\n },\n\n setup: function(model) {\n isSetup = true;\n setupCanvasViews();\n\n parts_view.bindPartsArray(model.getPartsArray());\n sensors_view.bindSensorsArray(model.getSensorsArray());\n webgl_status.bindModel(model);\n setVisOptions();\n\n parts_view.renderParts();\n sensors_view.renderSensors();\n webgl_status.render();\n api.update();\n\n model.addPropertiesListener(\"use_WebGL\", function() {\n setupCanvasViews();\n setVisOptions();\n webgl_status.render();\n api.update();\n });\n model.addPropertiesListener([\"color_palette_type\", \"velocity\",\n \"minimum_temperature\", \"maximum_temperature\"\n ], function() {\n setVisOptions();\n api.update();\n });\n model.on('tick.view-update', api.update);\n model.on('partsChanged.view-update', function() {\n parts_view.renderParts();\n });\n model.on('sensorsChanged.view-update', function() {\n sensors_view.renderSensors();\n });\n },\n\n update: function() {\n if (!isSetup) return;\n heatmap_view.renderHeatmap();\n velocity_view.renderVectormap();\n photons_view.renderPhotons();\n sensors_view.update();\n },\n\n resize: function() {\n // Ignore all resize() callbacks if view isn't already set up.\n if (!isSetup) return;\n heatmap_view.resize();\n velocity_view.resize();\n photons_view.resize();\n parts_view.renderParts();\n sensors_view.renderSensors();\n api.update();\n },\n\n reset: function() {},\n\n setFocus: function() {\n if (model.get(\"enableKeyboardHandlers\")) {\n this.$el.focus();\n }\n },\n\n bindModel: function(newModel) {\n model = newModel;\n }\n };\n\n (function() {\n // Instantiate SVG views.\n var viewport = SVGContainer.appendViewport();\n\n parts_view = new PartsView(SVGContainer, viewport.append(\"g\"));\n sensors_view = new SensorsView(SVGContainer, viewport.append(\"g\"));\n SVGContainer.$el.append($canvasCont);\n SVGContainer.$el.append($status);\n }());\n\n return api;\n};","\nimport SVGContainer from 'common/views/svg-container';\nimport Renderer from 'models/energy2d/views/renderer';\n\nexport default function(model, modelUrl) {\n return new SVGContainer(model, modelUrl, Renderer, {\n origin: 'top-left'\n });\n};\n","\nimport performance from \"common/performance\";\n\nvar TEST_TIME = 5000,\n WARMUP_TIME = 1000;\n\nexport default function Benchmarks(controller) {\n var start;\n\n var benchmarks = [\n //\n // WebGL OFF\n //\n {\n name: \"engine (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n // warmup\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n controller.model.properties.use_WebGL = false;\n performance.collectData(true);\n start = controller.model.get(\"time\");\n\n setTimeout(function() {\n // actual fps calculation\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n performance.collectData(false);\n done(performance.getAvgTime(\"engine\"));\n\n }, TEST_TIME);\n }, 100);\n }, WARMUP_TIME);\n }\n }, {\n name: \"JS rendering (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"js-rendering\"));\n }\n }, {\n name: \"tick (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"tick\"));\n }\n }, {\n name: \"gap b/w frames (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"gap\"));\n }\n }, {\n name: \"fps\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n var elapsedModelTime = controller.model.get('time') - start;\n done(elapsedModelTime / (controller.model.get('timeStepsPerTick') * controller.model.get('timeStep')) * 1000 / TEST_TIME);\n }\n },\n //\n // WebGL ON\n //\n {\n name: \"engine WebGL (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n // warmup\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n controller.model.properties.use_WebGL = true;\n performance.collectData(true);\n start = controller.model.get(\"time\");\n\n setTimeout(function() {\n // actual fps calculation\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n performance.collectData(false);\n done(performance.getAvgTime(\"engine\"));\n\n }, TEST_TIME);\n }, 100);\n }, WARMUP_TIME);\n }\n }, {\n name: \"JS rendering WebGL (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"js-rendering\"));\n }\n }, {\n name: \"tick WebGL (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"tick\"));\n }\n }, {\n name: \"gap b/w frames WebGL (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"gap\"));\n }\n }, {\n name: \"fps WebGL\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n var elapsedModelTime = controller.model.get('time') - start;\n done(elapsedModelTime / (controller.model.get('timeStepsPerTick') * controller.model.get('timeStep')) * 1000 / TEST_TIME);\n }\n }\n ];\n\n return benchmarks;\n\n};\n","\nexport default function Energy2DScriptingAPI(parent) {\n\n return {\n getTemperatureAt: function getTemperatureAt(x, y) {\n return parent.model.getTemperatureAt(x, y);\n },\n\n getAverageTemperatureAt: function getAverageTemperatureAt(x, y) {\n return parent.model.getAverageTemperatureAt(x, y);\n },\n\n getSensor: function getSensor(i) {\n return parent.model.getSensorsArray()[i];\n },\n\n getPart: function getPart(i) {\n return parent.model.getPartsArray()[i];\n },\n\n addPart: function addPart(props) {\n parent.model.addPart(props);\n },\n\n removePart: function removePart(i) {\n parent.model.removePart(i);\n },\n\n getNumberOfParts: function getNumberOfParts() {\n return parent.model.getPartsArray().length;\n },\n\n syncTemperature: function syncTemperature() {\n parent.model.syncTemperature();\n }\n };\n};\n","import ModelController from \"common/controllers/model-controller\";\nimport Model from 'models/energy2d/modeler';\nimport ModelContainer from 'models/energy2d/views/view';\nimport Benchmarks from 'models/energy2d/benchmarks/benchmarks';\nimport ScriptingAPI from 'models/energy2d/controllers/scripting-api';\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n return new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI, Benchmarks);\n}\n","\nvar datasetCount = 0;\n\nexport default function Dataset(definition, model) {\n // Public API.\n var dataset,\n rowIndex,\n tableData,\n xProperty,\n properties,\n namespace = \"dataset\" + (++datasetCount);\n\n function initialize() {\n rowIndex = 0;\n tableData = [];\n registerModelListeners();\n xProperty = definition.timeSeries.xProperty;\n properties = definition.timeSeries.properties;\n appendPropertyRow();\n }\n\n function appendPropertyRow() {\n var i, rowData = [];\n rowIndex++;\n rowData.push(model.get(xProperty));\n for (i = 0; i < properties.length; i++) {\n rowData.push(model.get(properties[i]));\n }\n tableData.push(rowData);\n }\n\n function registerModelListeners() {\n // Namespace listeners to '.dataset'\n model.on('tick.' + namespace, function() {\n appendPropertyRow();\n });\n }\n\n // Public API.\n dataset = {\n\n getData: function(propArray) {\n function copy(array) {\n var ret = [];\n array.forEach(function(element) {\n ret.push(element);\n });\n return ret;\n }\n var i, row, index, j, result = [],\n rowResult;\n if (propArray === undefined) {\n return copy(tableData);\n } else {\n for (i = 0; i < tableData.length; i++) {\n row = tableData[i];\n rowResult = [];\n for (j = 0; j < propArray.length; j++) {\n index = definition.properties.indexOf(propArray[j]);\n rowResult.push(row[index]);\n }\n result.push(rowResult);\n }\n return [result];\n }\n },\n\n reset: function() {\n tableData = $.extend(true, [], definition.tableData);\n rowIndex = 0;\n },\n\n /**\n Used when manually adding a row of property values to the table.\n */\n appendPropertyRow: appendPropertyRow,\n\n // Returns serialized component definition.\n serialize: function() {\n // start with the initial dataset definition.\n var result = $.extend(true, {}, definition);\n // add tableData\n result.tableData = tableData;\n return result;\n }\n };\n\n initialize();\n\n // Return Public API object.\n return dataset;\n};\n","\nimport metadata from 'common/controllers/interactive-metadata';\nimport validator from 'common/validator';\nimport Dataset from 'common/models/dataset';\n\nexport default function ExperimentController(experimentDefinition, interactivesController) {\n // Public API.\n var controller,\n model,\n scriptingAPI,\n timeSeriesDatasets,\n currentDataset,\n timeSeries,\n inputs,\n outputs,\n destinations,\n stateButtons,\n onLoadFunc,\n // the state transition button components\n startRun,\n stopRun,\n saveRun,\n nextRun,\n clearAll,\n // arrays of components (graphs or tables) that data are sent to ...\n timeSeriesDestinations,\n parameterSeriesDestinations,\n timeSeriesGraph;\n\n function initialize() {\n // Validate component definition, use validated copy of the properties.\n experimentDefinition = validator.validateCompleteness(metadata.experiment, experimentDefinition);\n timeSeries = experimentDefinition.timeSeries;\n inputs = experimentDefinition.parameters.inputs;\n outputs = experimentDefinition.parameters.outputs;\n destinations = experimentDefinition.destinations;\n stateButtons = experimentDefinition.stateButtons;\n timeSeriesDatasets = [];\n\n interactivesController.on(\"modelLoaded.experimentController\", function() {\n scriptingAPI = interactivesController.getScriptingAPI();\n model = interactivesController.getModel();\n setupModelParameters();\n });\n\n setup();\n }\n\n function setupModelParameters() {\n model.defineParameter('experimentCleared', {\n initialValue: false\n }, function() {\n if (model.get('experimentCleared')) {\n goToNextRun();\n model.set('experimentCleared', false);\n }\n });\n model.defineParameter('experimentRunning', {\n initialValue: false\n }, function() {\n if (model.get('experimentRunning')) {\n goToRunStarted();\n } else {\n goToRunStopped();\n }\n });\n }\n\n function setup() {\n\n // private functions ...\n function setupStateButtons() {\n startRun = interactivesController.getComponent(stateButtons.startRun);\n stopRun = interactivesController.getComponent(stateButtons.stopRun);\n saveRun = interactivesController.getComponent(stateButtons.saveRun);\n nextRun = interactivesController.getComponent(stateButtons.nextRun);\n clearAll = interactivesController.getComponent(stateButtons.clearAll);\n }\n\n function setupDestinationComponents() {\n var i, j, destination, component;\n timeSeriesDestinations = [];\n parameterSeriesDestinations = [];\n for (i = 0; i < destinations.length; i++) {\n destination = destinations[i];\n destination.components = [];\n for (j = 0; j < destination.componentIds.length; j++) {\n destination.components.push(interactivesController.getComponent(destination.componentIds[j]));\n }\n switch (destination.type) {\n case \"timeSeries\":\n timeSeriesDestinations.push(destination);\n break;\n case \"parameterSeries\":\n parameterSeriesDestinations.push(destination);\n break;\n default:\n throw new Error(\"Experiment destination: invalid destination type: \" + destination.type);\n }\n }\n timeSeriesGraph = undefined;\n for (i = 0; i < timeSeriesDestinations.length; i++) {\n destination = timeSeriesDestinations[i];\n for (j = 0; j < destination.components.length; j++) {\n component = destination.components[j];\n if (component.type !== undefined && component.type === \"graph\") {\n timeSeriesGraph = component;\n return;\n }\n }\n }\n }\n\n function setupStateButtonActions() {\n startRun.setAction(\"set('experimentRunning', true);\");\n stopRun.setAction(\"set('experimentRunning', false);\");\n saveRun.setAction(function() {\n var i, j, parameterSeriesDestination;\n timeSeriesDatasets.push(currentDataset);\n for (i = 0; i < parameterSeriesDestinations.length; i++) {\n parameterSeriesDestination = parameterSeriesDestinations[i];\n for (j = 0; j < parameterSeriesDestination.components.length; j++) {\n parameterSeriesDestination.components[j].appendDataPropertiesToComponent();\n }\n }\n saveRun.setDisabled(true);\n });\n nextRun.setAction(\"set('experimentCleared', true);\");\n clearAll.setAction(function() {\n interactivesController.reloadInteractive();\n });\n }\n\n // setup experiment ...\n setupStateButtons();\n setupDestinationComponents();\n setupStateButtonActions();\n }\n\n function addOlderRunsToGraph() {\n var i;\n if (timeSeriesGraph) {\n for (i = 0; i < timeSeriesDatasets.length; i++) {\n timeSeriesGraph.addDataSet(timeSeriesDatasets[i].getData());\n }\n timeSeriesGraph.update();\n }\n }\n\n function unfreezeInputParameters() {\n for (var i = 0; i < inputs.length; i++) {\n model.unfreeze(inputs[i]);\n }\n }\n\n\n function freezeInputParameters() {\n for (var i = 0; i < inputs.length; i++) {\n model.freeze(inputs[i]);\n }\n }\n\n function goToRunStarted() {\n startRun.setDisabled(true);\n stopRun.setDisabled(false);\n saveRun.setDisabled(true);\n nextRun.setDisabled(true);\n clearAll.setDisabled(false);\n freezeInputParameters();\n currentDataset = new Dataset({\n timeSeries: timeSeries\n }, model);\n scriptingAPI.api.start();\n }\n\n function goToRunStopped() {\n startRun.setDisabled(true);\n stopRun.setDisabled(true);\n saveRun.setDisabled(false);\n nextRun.setDisabled(false);\n scriptingAPI.api.stop();\n }\n\n function goToNextRun() {\n startRun.setDisabled(false);\n stopRun.setDisabled(true);\n saveRun.setDisabled(true);\n nextRun.setDisabled(true);\n model.set('experimentCleared', false);\n interactivesController.reloadModel({\n propertiesToRetain: inputs,\n cause: \"new-run\"\n });\n unfreezeInputParameters();\n addOlderRunsToGraph();\n }\n\n // Public API.\n controller = {\n\n setOnLoadScript: function(onLoadScript) {\n onLoadFunc = onLoadScript;\n },\n\n // Returns serialized component definition.\n serialize: function() {\n // start with the initial experimentDefinition.\n var result = $.extend(true, {}, experimentDefinition);\n // possibly add saved data\n return result;\n }\n };\n\n initialize();\n\n // Return Public API object.\n return controller;\n};\n","\nimport seedrandom from 'seedrandom';\nimport labConfig from 'lab.config';\nimport arrays from 'arrays';\nimport FastClick from 'fastclick';\nimport _ from 'underscore';\nimport alert from 'common/alert';\nimport validator from 'common/validator';\nimport getI18n from 'common/i18n';\nimport metadata from 'common/controllers/interactive-metadata';\nimport languageSelect from 'common/controllers/language-select';\nimport DataSet from 'common/controllers/data-set';\nimport BarGraphController from 'common/controllers/bar-graph-controller';\nimport GraphController from 'common/controllers/graph-controller';\nimport ExportController from 'common/controllers/export-controller';\nimport LogController from 'common/controllers/log-controller';\nimport ScriptingAPI from 'common/controllers/scripting-api';\nimport ButtonController from 'common/controllers/button-controller';\nimport CheckboxController from 'common/controllers/checkbox-controller';\nimport TextController from 'common/controllers/text-controller';\nimport ImageController from 'common/controllers/image-controller';\nimport RadioController from 'common/controllers/radio-controller';\nimport SliderController from 'common/controllers/slider-controller';\nimport PulldownController from 'common/controllers/pulldown-controller';\nimport JoystickController from 'common/controllers/joystick-controller';\nimport ColorIndicatorController from 'common/controllers/color-indicator-controller';\nimport SpectrometerController from 'common/controllers/spectrometer-controller';\nimport NumericOutputController from 'common/controllers/numeric-output-controller';\nimport TableController from 'common/controllers/table-controller';\nimport ParentMessageAPI from 'common/controllers/parent-message-api';\nimport ThermometerController from 'common/controllers/thermometer-controller';\nimport PlaybackController from 'common/controllers/playback-controller';\nimport DivController from 'common/controllers/div-controller';\nimport DispatchSupport from 'common/dispatch-support';\nimport HelpSystem from 'common/controllers/help-system';\nimport tooltip from 'common/views/tooltip';\nimport cookies from 'common/cookies';\nimport setupBanner from 'common/controllers/setup-banner';\nimport AboutDialog from 'common/controllers/about-dialog';\nimport ShareDialog from 'common/controllers/share-dialog';\nimport CreditsDialog from 'common/controllers/credits-dialog';\nimport SemanticLayout from 'common/layout/semantic-layout';\nimport templates from 'common/layout/templates';\nimport $__models_md_d_controllers_controller from 'models/md2d/controllers/controller';\nimport $__models_signal_generator_controller from 'models/signal-generator/controller';\nimport $__models_iframe_controller from 'models/iframe/controller';\nimport $__models_sensor_controller from 'models/sensor/controller';\nimport $__models_dual_sensor_controller from 'models/dual-sensor/controller';\nimport $__models_dual_sensor_connector_controller from 'models/dual-sensor-connector/controller';\nimport $__models_sensor_connector_controller from 'models/sensor-connector/controller';\nimport $__models_labquest__controller from 'models/labquest2/controller';\nimport $__models_energy_d_controllers_controller from 'models/energy2d/controllers/controller';\nimport ExperimentController from 'common/controllers/experiment-controller';\n\nvar // Helper function which just provides banner definition.\n ModelControllerFor = {\n 'md2d': $__models_md_d_controllers_controller,\n 'signal-generator': $__models_signal_generator_controller,\n 'iframe-model': $__models_iframe_controller,\n 'sensor': $__models_sensor_controller,\n 'dual-sensor': $__models_dual_sensor_controller,\n 'dual-sensor-connector': $__models_dual_sensor_connector_controller,\n 'sensor-connector': $__models_sensor_connector_controller,\n 'labquest2': $__models_labquest__controller,\n 'energy2d': $__models_energy_d_controllers_controller\n },\n\n // Set of available components.\n // - Key defines 'type', which is used in the interactive JSON.\n // - Value is a constructor function of the given component.\n // Each constructor should assume that it will be called with\n // following arguments:\n // 1. component definition (unmodified object from the interactive JSON),\n // 2. scripting API object,\n // 3. public API of the InteractiveController.\n // Of course, some of them can be passed unnecessarily, but\n // the InteractiveController follows this convention.\n //\n // The instantiated component should provide following interface:\n // # serialize() - function returning a JSON object, which represents current state\n // of the component. When component doesn't change its state,\n // it should just return a copy (!) of the initial component definition.\n // # getViewContainer() - function returning a jQuery object containing\n // DOM elements of the component.\n // # modelLoadedCallback(model) - optional function with , a callback which is called when the model is loaded.\n // # resize() - optional function taking no arguments, a callback\n // which is called by the layout algorithm when component's container\n // dimensions are changed. This lets component to adjust itself to the\n // new container dimensions.\n //\n // Note that each components view container (so, jQuery object returned by getViewContainer() has to\n // have class 'component'! It's required and checked in the runtime by the interactive controller.\n // It ensures good practices while implementing new components.\n // Please see: src/sass/lab/_interactive-component.sass to check what this CSS class defines.\n ComponentConstructor = {\n 'text': TextController,\n 'image': ImageController,\n 'button': ButtonController,\n 'checkbox': CheckboxController,\n 'pulldown': PulldownController,\n 'radio': RadioController,\n 'thermometer': ThermometerController,\n 'barGraph': BarGraphController,\n 'graph': GraphController,\n 'slider': SliderController,\n 'colorIndicator': ColorIndicatorController,\n 'joystick': JoystickController,\n 'spectrometer': SpectrometerController,\n 'numericOutput': NumericOutputController,\n 'table': TableController,\n 'div': DivController,\n 'playback': PlaybackController\n };\n\nfunction clone(obj) {\n var copy;\n // Handle the 3 simple types, and null or undefined.\n if (null == obj || \"object\" !== typeof obj) return obj;\n // Handle Date\n if (obj instanceof Date) {\n copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n // Handle Array\n if (obj instanceof Array) {\n copy = [];\n for (var i = 0, len = obj.length; i < len; i++) {\n copy[i] = clone(obj[i]);\n }\n return copy;\n }\n // Handle Object\n if (obj instanceof Object) {\n copy = {};\n for (var attr in obj) {\n if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);\n }\n return copy;\n }\n throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n}\n\nexport default function InteractivesController(interactiveReference, viewSelector) {\n\n var interactive = {},\n controller = {},\n initialInteractiveConfig,\n initialModelConfig,\n experimentController,\n experimentDefinition,\n modelController,\n model,\n currentModelID,\n $interactiveContainer,\n $fastClickContainer,\n helpSystem,\n i18n,\n modelDefinitions = [],\n modelHash = {},\n componentModelLoadedCallbacks,\n dataSetModelLoadedCallbacks,\n willResetModelCallbacks = [],\n ignoreModelResetEvent = false,\n initialModelLoad,\n\n // Hash of instantiated components.\n // Key - component ID.\n // Value - array of component instances.\n componentByID = {},\n\n // Simple list of instantiated components.\n componentList = [],\n\n // List of properties that are bound to components and should be retained during\n // model reload / reset.\n propertiesRetainedByComponents = [],\n\n // Hash containing all public (see .addDataSet() method) data sets.\n publicDataSetsByName,\n\n // API for scripts defined in the interactive JSON file.\n // and additional model-specific scripting api if one is defined\n scriptingAPI,\n\n // Handles exporting data to DataGames, if 'exports' are specified.\n exportController,\n\n // Handles logging events to LARA or any parent that implements LARA-logging interface.\n logController,\n\n // Doesn't currently have any public methods, but probably will.\n parentMessageAPI,\n\n // Dialogs which can be shown using banner.\n aboutDialog,\n shareDialog,\n creditsDialog,\n\n semanticLayout,\n getNextTabIndex,\n randSeed,\n\n dispatch = new DispatchSupport(\"modelLoaded\", \"interactiveRendered\", \"modelReset\", \"resize\",\n \"interactiveRequested\", \"interactiveWillReload\");\n\n // simple tabindex support, also exposed via api.getNextTabIndex()\n getNextTabIndex = function() {\n var tabIndex = -1;\n return function() {\n return tabIndex++;\n };\n };\n\n // Use seedrandom library (see vendor/seedrandom) that substitutes an explicitly seeded\n // RC4-based algorithm for Math.random().\n function generateRandomSeed() {\n randSeed = interactive.randomSeed;\n if (randSeed === undefined) {\n // Generate random seed.\n randSeed = Math.random().toString();\n }\n Math.seedrandom = seedrandom(randSeed);\n }\n\n function getModelDefinition(id) {\n if (modelHash[id]) {\n return modelHash[id];\n }\n throw new Error(\"No model found with id \" + id);\n }\n\n function layoutInteractive() {\n // Do nothing if this is called before the model loads (for example via a resize event).\n // The interactive will be laid out as soon as the model loads anyway, and furthermore the\n // semantic layout mechanism calls at least one modelController method.\n if (!semanticLayout.isReady()) {\n return;\n }\n semanticLayout.layoutInteractive();\n }\n\n // ------------------------------------------------------------\n //\n // Handle keyboard shortcuts for model operation.\n //\n // ------------------------------------------------------------\n\n function setupModelPlayerKeyboardHandler() {\n // Deregister previous keydown handlers. Use namespaces so the code\n // will not inadvertently remove event handlers attached by other code.\n $interactiveContainer.off('keydown.interactiveController');\n if (modelController && modelController.enableKeyboardHandlers()) {\n $interactiveContainer.on('keydown.interactiveController', function(event) {\n var keycode = event.keycode || event.which;\n switch (keycode) {\n case 13: // return\n event.preventDefault();\n scriptingAPI.api.start();\n break;\n\n case 32: // space\n event.preventDefault();\n if (!scriptingAPI.api.isStopped()) {\n scriptingAPI.api.stop();\n } else {\n scriptingAPI.api.start();\n }\n break;\n\n case 37: // left-arrow\n event.preventDefault();\n if (!scriptingAPI.api.isStopped()) {\n scriptingAPI.api.stop();\n } else {\n scriptingAPI.api.stepBack();\n }\n break;\n\n case 39: // right-arrow\n event.preventDefault();\n if (!scriptingAPI.api.isStopped()) {\n scriptingAPI.api.stop();\n } else {\n scriptingAPI.api.stepForward();\n }\n break;\n }\n });\n // $interactiveContainer.focus();\n }\n }\n\n function setupLayout() {\n var template, layout, comp, components, banner, resizeAfterFullscreen;\n\n if (typeof interactive.template === \"string\") {\n template = templates[interactive.template];\n } else {\n template = interactive.template;\n }\n\n // The authored definition of which components go in which container.\n layout = interactive.layout;\n\n // Banner hash containing components, layout containers and layout definition\n // (components location). Keep it in a separate structure, because we do not\n // expect these objects to be serialized!\n banner = setupBanner(controller, interactive, creditsDialog, aboutDialog, shareDialog);\n // Register callbacks of banner components.\n components = banner.components;\n for (comp in components) {\n if (components.hasOwnProperty(comp)) {\n comp = components[comp];\n if (comp.modelLoadedCallback) {\n // $.proxy ensures that callback will be always executed\n // in the context of correct object ('this' binding).\n componentModelLoadedCallbacks.push($.proxy(comp.modelLoadedCallback, comp));\n }\n }\n }\n // Note that all of these operations create a new object.\n // So interactive definition specified by the author won't be affected.\n // This is important for serialization correctness.\n template = banner.template.concat(template);\n template.forEach(function(container, idx) {\n template[idx] = $.extend({}, container);\n });\n layout = $.extend({}, layout, banner.layout);\n components = $.extend({}, componentByID, banner.components);\n\n // Setup layout using both author components and components\n // created automatically in this controller.\n semanticLayout.initialize({\n $mainContainer: $interactiveContainer,\n $containersParent: $fastClickContainer,\n containers: template,\n layout: layout,\n components: components,\n aspectRatio: interactive.aspectRatio,\n fontScale: interactive.fontScale,\n padding: interactive.padding\n });\n\n // We are rendering in embeddable mode if only element on page\n // so resize when window resizes.\n if (onlyElementOnPage()) {\n $(window).off(\"resize.lab-resize-handler\");\n $(window).on(\"resize.lab-resize-handler\", function() {\n controller.resize();\n });\n }\n\n // in all cases, call resize when entering and existing fullscreen\n resizeAfterFullscreen = function() {\n // need to call twice, as safari requires two attempts before it has\n // the correct dimensions.\n controller.resize();\n setTimeout(controller.resize, 50);\n };\n $(document).off(\".lab-fullscreen-change\");\n $(document).on(\"fullscreenchange.lab-fullscreen-change\", resizeAfterFullscreen)\n .on(\"mozfullscreenchange.lab-fullscreen-change\", resizeAfterFullscreen)\n .on(\"webkitfullscreenchange.lab-fullscreen-change\", resizeAfterFullscreen);\n }\n\n function createComponent(component) {\n // Get type and ID of the requested component from JSON definition.\n var type = component.type,\n id = component.id,\n comp;\n\n // Use an appropriate constructor function and create a new instance of the given type.\n // Note that we use constant set of parameters for every type:\n // 1. component definition (exact object from interactive JSON),\n // 2. scripting API object,\n // 3. public API of the InteractiveController.\n comp = new ComponentConstructor[type](component, controller);\n\n if (!comp.getViewContainer().hasClass(\"component\")) {\n throw new Error(\"Invalid Interactive Component implementation. Each component has to have 'component' class.\");\n }\n\n // Save the new instance.\n componentByID[id] = comp;\n componentList.push(comp);\n if (component.retainProperty && component.property != null) {\n // All properties that are bound to some interactive component should be retained during\n // model reset or reload.\n propertiesRetainedByComponents.push(component.property);\n }\n\n // Register component modelLoaded callbacks if available.\n // FIXME. These callbacks should be event listeners.\n if (comp.modelLoadedCallback) {\n // $.proxy ensures that callback will be always executed\n // in the context of correct object ('this' binding).\n componentModelLoadedCallbacks.push($.proxy(comp.modelLoadedCallback, comp));\n }\n }\n\n /**\n Generic function that accepts either a string or an array of strings,\n and returns the complete string\n */\n function getStringFromArray(str) {\n if (typeof str === 'string') {\n return str;\n }\n return str.join('\\n');\n }\n\n /**\n Validates interactive definition.\n\n Displays meaningful info in case of any errors. Also an exception is being thrown.\n\n @param interactive\n hash representing the interactive specification\n */\n function validateInteractive(interactive) {\n var i, len, modelDefinitions, modelDefinition, components, errMsg;\n\n function validateArray(modelName, array) {\n var i, len, errMsg;\n // Support undefined / null values - just return.\n if (!array) return;\n\n try {\n for (i = 0, len = array.length; i < len; i++) {\n array[i] = validator.validateCompleteness(metadata[modelName], array[i]);\n }\n } catch (e) {\n errMsg = \"Incorrect \" + modelName + \" definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n }\n\n // Validate top level interactive properties.\n try {\n interactive = validator.validateCompleteness(metadata.interactive, interactive);\n } catch (e) {\n errMsg = \"Incorrect interactive definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n\n validateArray(\"model\", interactive.models);\n validateArray(\"parameter\", interactive.parameters);\n validateArray(\"output\", interactive.outputs);\n validateArray(\"dataSet\", interactive.dataSets);\n validateArray(\"filteredOutput\", interactive.filteredOutputs);\n validateArray(\"helpTip\", interactive.helpTips);\n\n // Validate also nested structures.\n modelDefinitions = interactive.models;\n for (i = 0, len = modelDefinitions.length; i < len; i++) {\n modelDefinition = modelDefinitions[i];\n validateArray(\"parameter\", modelDefinition.parameters);\n validateArray(\"output\", modelDefinition.outputs);\n validateArray(\"filteredOutput\", modelDefinition.filteredOutputs);\n }\n\n\n // If an experiment template exists validate nested experiment structures.\n if (interactive.experiment) {\n experimentDefinition = interactive.experiment;\n validator.validateCompleteness(metadata.experimentTimeSeries, experimentDefinition.timeSeries);\n validateArray(\"experimentParameter\", experimentDefinition.parameters);\n validateArray(\"experimentDestination\", experimentDefinition.destinations);\n validateArray(\"experimentSavedRun\", experimentDefinition.savedRuns);\n }\n\n components = interactive.components;\n try {\n for (i = 0, len = components.length; i < len; i++) {\n components[i] = validator.validateCompleteness(metadata[components[i].type], components[i]);\n }\n } catch (e) {\n errMsg = \"Incorrect \" + components[i].type + \" component definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n\n // Validate exporter, if any...\n if (interactive.exports) {\n try {\n interactive.exports = validator.validateCompleteness(metadata.exports, interactive.exports);\n } catch (e) {\n errMsg = \"Incorrect exports definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n }\n\n if (interactive.logging) {\n try {\n interactive.logging = validator.validateCompleteness(metadata.logging, interactive.logging);\n } catch (e) {\n errMsg = \"Incorrect logging definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n }\n\n return interactive;\n }\n\n /**\n Is the Interactive the only element on the page?\n\n An Interactive can either be displayed as the only content on a page\n (often in an iframe) or in a dom element on a page with other elements.\n\n TODO: make more robust\n This function makes a simplifying assumption that the Interactive is the\n only content on the page if the parent is the element\n */\n function onlyElementOnPage() {\n return $interactiveContainer.parent().prop(\"nodeName\") === \"BODY\";\n }\n\n /**\n Setup theme (which is just a CSS class of the main interactive container).\n */\n function setupTheme() {\n var theme = interactive.theme;\n if (arrays.isArray(theme)) {\n // [\"a\", \"b\"] => \"lab-theme-a lab-theme-b\"\n theme = theme.map(function(el) {\n return 'lab-theme-' + el;\n }).join(' ');\n } else if (theme) {\n theme = 'lab-theme-' + theme;\n } else {\n theme = '';\n }\n $interactiveContainer.alterClass('lab-theme-*', theme);\n }\n\n /**\n The main method called when this controller is created.\n\n Populates the element pointed to by viewSelector with divs to contain the\n molecule container (view) and the various components specified in the interactive\n definition, and\n\n @param newInteractive\n hash representing the interactive specification\n */\n function loadInteractive(newInteractive) {\n // Cleanup container!\n $interactiveContainer.empty();\n\n // Attach FastClick only to the .lab-fastclick-container DIV. We don't want to affect rest of the\n // web page (e.g. by attaching FastClick to \"body\" or window), let its developer decide whether\n // FastClick should be used there or not. It solves two issues on mobile browsers:\n // - eliminates 300ms delay between a physical tap and the firing of a click event\n // - fixes sticky :hover state (https://www.pivotaltracker.com/story/show/58373748)\n //\n // Unfortunatelly we cannot attach FastClick to the whole interactive container, as it breaks\n // e.g. jQuery context menu.\n // See: https://www.pivotaltracker.com/story/show/63386470\n // Components have choice whether to attach themselves to .lab-interactive-container\n // or .lab-fastclick-container.\n $fastClickContainer = $('
');\n $fastClickContainer.appendTo($interactiveContainer);\n FastClick.attach($fastClickContainer[0]);\n\n // We have to create a new container for dialogs. When jQuery UI dialog is open, it moves\n // all its sibling elements before itself (kind of z indexing). It means all the siblings\n // are removed from DOM and then added again. Besides performance it can cause unwanted\n // effects in some cases (e.g. iframe content is reloaded). Separate container that contains\n // only dialogs ensures that it won't happen.\n $fastClickContainer.append('
');\n\n // Each time we load a new interactive, we assume that it would be an \"initial\" model load.\n // This flag is used to decide whether parameters should be retained or not.\n // During the initial model load we obviously don't want to retain parameters.\n initialModelLoad = true;\n\n controller.interactive = newInteractive;\n\n // Save initial interactive config for reload method (so it can be synchronous).\n initialInteractiveConfig = $.extend(true, {}, controller.interactive);\n // Validate interactive.\n controller.interactive = validateInteractive(controller.interactive);\n interactive = controller.interactive;\n // Ensure that interactive initialization is always the same if it's desired\n // (\"randomSeed\" paramenter is provided).\n generateRandomSeed();\n // Setup CSS class of the main container.\n setupTheme();\n // Set up the list of possible modelDefinitions.\n modelDefinitions = interactive.models;\n for (var i = 0, len = modelDefinitions.length; i < len; i++) {\n modelHash[modelDefinitions[i].id] = modelDefinitions[i];\n }\n // Try to load the first model (in order) and initialize interactive.\n var firstModel = modelDefinitions[0];\n if (firstModel && firstModel.url) {\n // Model has to be downloaded, it's async operation so start with it.\n loadModel(firstModel.id);\n initializeInteractive();\n } else if (firstModel && firstModel.model) {\n // Model is provided inside Interactive JSON, so setup interactive first and then\n // load a model.\n initializeInteractive();\n loadModel(firstModel.id, firstModel.model);\n }\n }\n\n function cleanupInteractive() {\n // Clear component instances.\n componentList = [];\n componentByID = {};\n // Internal onLoad callbacks (TODO REFACTOR ME)\n dataSetModelLoadedCallbacks = [];\n componentModelLoadedCallbacks = [];\n // And list of properties bound to components.\n propertiesRetainedByComponents = [];\n }\n\n function initializeInteractive() {\n cleanupInteractive();\n\n i18n = getI18n(interactive.lang);\n // Setup menu that lets users change language of the interactive. Do it ASAP, as it involves\n // async download of interactive metadata.\n languageSelect('#lang-icon', controller);\n\n creditsDialog = new CreditsDialog(\".lab-dialog-container\", i18n, interactive);\n shareDialog = new ShareDialog(\".lab-dialog-container\", viewSelector, i18n, interactive);\n if (interactive.about || interactive.subtitle) {\n aboutDialog = new AboutDialog(\".lab-dialog-container\", i18n, interactive);\n } else {\n // Display credits if author hasn't provided any specific information.\n aboutDialog = creditsDialog;\n }\n\n var modelDef = controller.interactive.models[0];\n modelController = createModelController(modelDef.type, modelDef.modelUrl, null);\n // also be sure to get notified when the underlying model changes\n // (this catches reloads)\n modelController.on('modelReset', modelResetHandler);\n\n // Create Scripting API\n scriptingAPI = new ScriptingAPI(controller, null);\n // Extend universal Interactive scriptingAPI with optional model-specific scripting API\n if (modelController.ScriptingAPI) {\n scriptingAPI.extend(modelController.ScriptingAPI);\n }\n // Expose API to global namespace (prototyping / testing using the browser console).\n scriptingAPI.exposeScriptingAPI();\n\n // Setup data sets.\n publicDataSetsByName = {};\n interactive.dataSets.forEach(function(dataSetDefinition) {\n // Data set will automatically register itself in interactive controller (it will call\n // .addDataSet() method).\n new DataSet(dataSetDefinition, controller);\n });\n\n // Setup help system if help tips are defined.\n if (interactive.helpTips.length > 0) {\n helpSystem = new HelpSystem(interactive.helpTips, $fastClickContainer);\n }\n\n if (interactive.helpOnLoad || interactive.aboutOnLoad) {\n controller.on(\"interactiveRendered.helpOnLoad\", function() {\n // Make sure that this callback is executed only once.\n controller.on(\"interactiveRendered.helpOnLoad\", null);\n\n function hashCode(string) {\n var hash = 0,\n len = string.length,\n i, c;\n if (len === 0) return hash;\n for (i = 0; i < len; i++) {\n c = string.charCodeAt(i);\n hash = ((hash << 5) - hash) + c;\n hash = hash & hash;\n }\n return hash;\n }\n var hash = hashCode(JSON.stringify(interactive));\n // When `helpOnLoad` is set to true, the help mode will be automatically shown,\n // but only when user opens interactive for the first time.\n if (helpSystem && interactive.helpOnLoad && !cookies.hasItem(\"lab-help-\" + hash)) {\n helpSystem.start();\n cookies.setItem(\"lab-help-\" + hash, true);\n }\n // `aboutOnLoad` follows the same pattern.\n if (interactive.aboutOnLoad && !cookies.hasItem(\"lab-about-\" + hash)) {\n aboutDialog.open();\n cookies.setItem(\"lab-about-\" + hash, true);\n }\n });\n }\n\n // Replace native tooltips with custom, styled and responsive tooltips.\n tooltip($interactiveContainer);\n\n // Create interactive components\n var componentJsons = controller.interactive.components || [];\n\n for (var i = 0, len = componentJsons.length; i < len; i++) {\n createComponent(componentJsons[i]);\n }\n\n // Setup messaging with CODAP (or other data manager) if present\n\n // WARNING: due to deficiencies in iframePhone (as of iframePhone 1.1), this must take\n // place in the same event loop as the creation of parentMessageAPI (otherwise, the\n // codap-present message may be swallowed by parentMessageAPI's iframePhone instance, with the\n // result that exportController.canExportData never becomes true)\n\n exportController = new ExportController(controller);\n\n logController = new LogController({\n // Use logging config if provided or use default one (validation will fill an empty hash with default values).\n config: interactive.logging || validator.validateCompleteness(metadata.logging, {}),\n componentByID: componentByID,\n // List of components that implement .enableLogging() method and should have logging enabled by default.\n additionalComponents: [aboutDialog, shareDialog, creditsDialog, helpSystem],\n boundProperties: getBoundProperties(),\n interactivesController: controller\n });\n\n // Setup experimentController, if defined.\n if (interactive.experiment) {\n experimentController = new ExperimentController(interactive.experiment, controller);\n }\n\n // When all components are created, we can initialize semantic layout.\n setupLayout();\n }\n\n function createModelController(type, modelUrl, modelOptions) {\n // set default model type to \"md2d\"\n var modelType = type || \"md2d\";\n var modelController;\n\n if (ModelControllerFor[modelType] === null) {\n throw new Error(\"Couldn't understand modelType '\" + modelType + \"'!\");\n }\n\n modelController = new ModelControllerFor[modelType](modelUrl, modelOptions, controller);\n\n return modelController;\n }\n\n /**\n Load the model from the model definitions hash.\n\n @param: currentModelID.\n @optionalParam modelObject\n @optionalParam additionalPropertiesToRetain properties that should be retained during load\n process except from ones defined in 'propertiesToRetain' interactive section\n @optionalParam cause cause of the load (can be load, reload or custom)\n */\n function loadModel(id, modelConfig, additionalPropertiesToRetain, cause) {\n var modelDefinition = getModelDefinition(id),\n interactiveViewOptions,\n interactiveModelOptions,\n retainedProperties;\n\n // Ensure that model load is always the same if it's desired (\"randomSeed\" parameter\n // is provided).\n generateRandomSeed();\n\n // Check initialModelLoad flag. If it's equal to false, it means that it's a subsequent model\n // load and properties really can be retained.\n if (!initialModelLoad) {\n retainedProperties = getRetainedProperties(additionalPropertiesToRetain);\n }\n\n currentModelID = id;\n controller.currentModel = modelDefinition;\n\n if (modelDefinition.viewOptions) {\n // Make a deep copy of modelDefinition.viewOptions, so we can freely mutate interactiveViewOptions\n // without the results being serialized or displayed in the interactives editor.\n interactiveViewOptions = $.extend(true, {}, modelDefinition.viewOptions);\n } else {\n interactiveViewOptions = {\n controlButtons: 'play'\n };\n }\n\n if (modelDefinition.modelOptions) {\n // Make a deep copy of modelDefinition.modelOptions.\n interactiveModelOptions = $.extend(true, {}, modelDefinition.modelOptions);\n }\n\n // Load provided modelConfig (highest priority), model definition placed directly inside\n // interactive JSON or model defined by URL.\n if (modelConfig) {\n finishWithLoadedModel(modelDefinition.url, modelConfig, retainedProperties, cause);\n } else if (modelDefinition.model) {\n finishWithLoadedModel(modelDefinition.url, modelDefinition.model, retainedProperties, cause);\n } else if (modelDefinition.url) {\n $.get(labConfig.modelsRootUrl + modelDefinition.url).done(function(modelConfig) {\n // Deal with the servers that return the json as text/plain\n modelConfig = typeof modelConfig === 'string' ? JSON.parse(modelConfig) : modelConfig;\n finishWithLoadedModel(modelDefinition.url, modelConfig, retainedProperties, cause);\n }).fail(function() {\n modelConfig = {\n \"type\": \"md2d\",\n \"width\": 2.5,\n \"height\": 1.5,\n \"viewOptions\": {\n \"backgroundColor\": \"rgba(245,200,200,255)\",\n \"showClock\": false,\n \"textBoxes\": [{\n \"text\": \"Model could not be loaded:\",\n \"x\": 0.0,\n \"y\": 1.0,\n \"width\": 2.5,\n \"height\": 0.25,\n \"fontScale\": 1.4,\n \"layer\": 1,\n \"frame\": \"rectangle\",\n \"textAlign\": \"center\",\n \"strokeOpacity\": 0,\n \"backgroundColor\": \"rgb(232,231,231)\"\n }, {\n \"text\": modelDefinition.url,\n \"x\": 0.0,\n \"y\": 0.8,\n \"width\": 2.5,\n \"height\": 0.25,\n \"fontScale\": 0.9,\n \"layer\": 1,\n \"frame\": \"rectangle\",\n \"textAlign\": \"center\",\n \"strokeOpacity\": 0,\n \"backgroundColor\": \"rgb(232,231,231)\"\n }]\n }\n };\n finishWithLoadedModel(modelDefinition.url, modelConfig, retainedProperties, cause);\n });\n }\n\n function processOptions(modelConfig, interactiveModelConfig, interactiveViewConfig) {\n var modelOptions,\n viewOptions;\n\n function meldOptions(base, overlay) {\n var p;\n for (p in base) {\n if (overlay[p] === undefined) {\n if (arrays.isArray(base[p])) {\n // Array.\n overlay[p] = $.extend(true, [], base[p]);\n } else if (base[p] === null) {\n // Explicit check for null is necessary. `typeof null` returns \"object\", so the next `if` statement\n // would be triggered incorrectly.\n // `undefined` value doesn't have this problem (`typeof undefined` returns \"undefined\"), so it will\n // be handled by the last `if` statement (basic type).\n overlay[p] = null;\n } else if (typeof base[p] === \"object\") {\n // Object.\n overlay[p] = $.extend(true, {}, base[p]);\n } else {\n // Basic type.\n overlay[p] = base[p];\n }\n } else if (typeof overlay[p] === \"object\" && !(overlay[p] instanceof Array)) {\n overlay[p] = meldOptions(base[p], overlay[p]);\n } else if (overlay[p] instanceof Array && base[p] instanceof Array) {\n overlay[p] = $.extend(true, base[p], overlay[p]);\n }\n }\n return overlay;\n }\n\n // 1. Process view options.\n // Do not modify initial configuration.\n viewOptions = $.extend(true, {}, interactiveViewConfig);\n // Merge view options defined in interactive (interactiveViewConfig)\n // with view options defined in the basic model description.\n viewOptions = meldOptions(modelConfig.viewOptions || {}, viewOptions);\n\n // 2. Process model options.\n // Do not modify initial configuration.\n modelOptions = $.extend(true, {}, interactiveModelConfig);\n // Merge model options defined in interactive (interactiveModelConfig)\n // with the basic model description.\n modelOptions = meldOptions(modelConfig || {}, modelOptions);\n\n // Update view options in the basic model description after merge.\n // Note that many unnecessary options can be passed to Model constructor\n // because of that (e.g. view-only options defined in the interactive).\n // However, all options which are unknown for Model will be discarded\n // during options validation, so this is not a problem\n // (but significantly simplifies configuration).\n modelOptions.viewOptions = viewOptions;\n\n return modelOptions;\n }\n\n function finishWithLoadedModel(modelUrl, modelConfig, retainedProperties, cause) {\n // Save initial model config for reload method (so it can be synchronous).\n initialModelConfig = $.extend(true, {}, modelConfig);\n\n var modelOptions = processOptions(modelConfig, interactiveModelOptions, interactiveViewOptions);\n var possiblySetButtonStyle;\n\n if (modelController) {\n modelController.reload(modelUrl, modelOptions, true);\n } else {\n throw new Error(\"REF something went wrong\");\n }\n\n model = modelController.model;\n\n setupModelPlayerKeyboardHandler();\n\n // Update model references in various objects.\n scriptingAPI.bindModel(model);\n // FIXME: this doesn't seem like a necessary step. However, without it md2d-scripting-api\n // tests fail, but only when all tests are run (e.g. make test-src)! When you run just this\n // single test everything works (e.g. mocha test/md2d/md2d-scripting-api). It looks like\n // window.script variable references some old API instance and seems to be related to the\n // test environment setup. Temporarily put this call here for safety.\n scriptingAPI.exposeScriptingAPI();\n parentMessageAPI.bindModel(model);\n\n initializeModelOutputsAndParameters();\n\n if (retainedProperties) {\n model.set(retainedProperties);\n }\n\n for (var i = 0; i < dataSetModelLoadedCallbacks.length; i++) {\n dataSetModelLoadedCallbacks[i]();\n }\n\n // We call component loaded callbacks before onLoad scripts because some onLoad scripts\n // may require that components are already initialized.\n for (i = 0; i < componentModelLoadedCallbacks.length; i++) {\n componentModelLoadedCallbacks[i](model, scriptingAPI);\n }\n\n var onLoadScript = null;\n if (controller.currentModel.onLoad) {\n onLoadScript = scriptingAPI.makeFunctionInScriptContext(getStringFromArray(controller.currentModel.onLoad));\n onLoadScript();\n }\n\n if (experimentController) {\n experimentController.setOnLoadScript(onLoadScript);\n }\n\n // Setup exporter. Has to happen before modelLoaded. Time-based dependencies FTW.\n exportController.init(interactive.exports || getDefaultExports());\n\n exportController.on('canExportData.interactivesController', function() {\n // hacky, but this updates the 'actualUseDuration' output which depends on canExportData\n modelController.model.makeInvalidatingChange();\n });\n\n if (exportController.modelCanExportData()) {\n modelController.model.properties.controlButtonStyle = 'codap';\n }\n\n exportController.on('modelCanExportData.interactivesController', function() {\n modelController.model.properties.controlButtonStyle = 'codap';\n });\n\n dispatch.modelLoaded(cause || \"initialLoad\");\n\n // Call .ready *after* all previous operations. Note that it will trigger e.g. tick\n // history push of an initial state. It should include all modifications applied\n // by on load scripts and callbacks.\n if (model.ready) model.ready();\n\n // This will attach model container to DOM.\n semanticLayout.setupModel(modelController);\n layoutInteractive();\n\n modelController.initializeView();\n\n dispatch.interactiveRendered();\n\n // Each subsequent model won't be treated as initial one so e.g. properties can be retained.\n initialModelLoad = false;\n }\n }\n\n function initializeModelOutputsAndParameters() {\n setupCustomOutputs(\"basic\", controller.currentModel.outputs, interactive.outputs);\n setupCustomParameters(controller.currentModel.parameters, interactive.parameters);\n // Setup filtered outputs after basic outputs and parameters, as filtered output require its input\n // to exist during its definition.\n setupCustomOutputs(\"filtered\", controller.currentModel.filteredOutputs, interactive.filteredOutputs);\n }\n\n function modelResetHandler(cause) {\n if (!ignoreModelResetEvent) {\n notifyModelResetCallbacks(cause);\n }\n }\n\n /**\n Notify observers that a model was reset, passing along the cause of the reset event.\n */\n function notifyModelResetCallbacks(cause) {\n dispatch.modelReset(cause);\n }\n\n /**\n Notify observers that a reset event is pending for a given model, passing them the model that\n will be reset and a reset-request object that is unique for each observer.\n\n If any observers return true, the reset operation will be paused. They can cache the reset\n request object and asynchronously indicate that it is ok to proceed with the reset by calling\n the cached object's 'proceed' or 'cancel' method.\n\n Once the a reset request's 'proceed' method has been called, calling its 'cancel' method has\n no effect, and vice versa.\n\n If any observers that returned true fail to later call either method of the reset request,\n then the reset will be put off indefinitely.\n\n (Note that, for the time being, there is no practical difference between canceling a reset and\n putting it off indefintely. However, almost surely we will want to keep track of whether\n reset has been canceled or not, so that we can block subsequent requests to reset the model,\n give UI feedback, etc.)\n\n If no observers return a truthy value--and also do not call their reset request's 'cancel'\n method during their execution--then the reset will take place synchronously.\n\n Note that observers that do not return a truthy value are treated like observers that call the\n 'proceed' method: subsequently calling the 'cancel' method of their reset request will have no\n effect.\n */\n function notifyWillResetModelAnd(closure) {\n\n // Fast path; also required because no callbacks => we never call resetRequest.proceed()\n if (willResetModelCallbacks.length === 0) {\n closure();\n }\n\n var numberOfResponsesRequired = willResetModelCallbacks.length;\n var numberOfProceedResponses = 0;\n var resetWasCanceled = false;\n\n function proceedIfReady() {\n if (!resetWasCanceled && numberOfProceedResponses === numberOfResponsesRequired) {\n closure();\n }\n }\n\n // Returns a new \"use once\" object that the willResetModel callback can use to asynchronously\n // allow the reset to proceed or cancel.\n function makeResetRequest() {\n var wasUsed = false;\n\n return {\n proceed: function() {\n if (wasUsed) {\n return;\n }\n wasUsed = true;\n numberOfProceedResponses++;\n proceedIfReady();\n },\n\n cancel: function() {\n if (wasUsed) {\n return;\n }\n wasUsed = true;\n resetWasCanceled = true;\n }\n };\n }\n\n willResetModelCallbacks.forEach(function(willResetModelCallback) {\n var resetRequest = makeResetRequest();\n\n // willResetModel callbacks that don't return a value (or return a falsy value) without\n // having invoked resetRequest.cancel() should be treated as having requested to proceed.\n if (!willResetModelCallback(model, resetRequest)) {\n // remember this has no effect if the callback already called resetRequest.cancel():\n resetRequest.proceed();\n }\n });\n }\n\n /**\n After a model loads, this method sets up the custom output properties specified in the \"model\"\n section of the interactive and in the interactive.\n\n Any output property definitions in the model section of the interactive specification override\n properties with the same that are specified in the main body if the interactive specification.\n\n @outputType - accept two values \"basic\" and \"filtered\", as this function can be used for processing\n both types of outputs.\n */\n function setupCustomOutputs(outputType, modelOutputs, interactiveOutputs) {\n if (!modelOutputs && !interactiveOutputs) return;\n\n var outputs = {},\n prop,\n output;\n\n function processOutputsArray(outputsArray) {\n if (!outputsArray) return;\n for (var i = 0; i < outputsArray.length; i++) {\n outputs[outputsArray[i].name] = outputsArray[i];\n }\n }\n\n // per-model output definitions override output definitions from interactives\n processOutputsArray(interactiveOutputs);\n processOutputsArray(modelOutputs);\n\n for (prop in outputs) {\n if (outputs.hasOwnProperty(prop)) {\n output = outputs[prop];\n // DOM elements (and, by analogy, Next Gen MW interactive components like slides)\n // have \"ids\". But, in English, properties have \"names\", but not \"ids\".\n switch (outputType) {\n case \"basic\":\n model.defineOutput(output.name, {\n label: output.label,\n unitType: output.unitType,\n unitName: output.unitName,\n unitPluralName: output.unitPluralName,\n unitAbbreviation: output.unitAbbreviation\n }, scriptingAPI.makeFunctionInScriptContext(getStringFromArray(output.value)));\n break;\n case \"filtered\":\n model.defineFilteredOutput(output.name, {\n label: output.label,\n unitType: output.unitType,\n unitName: output.unitName,\n unitPluralName: output.unitPluralName,\n unitAbbreviation: output.unitAbbreviation\n }, output.property, output.type, output.period);\n break;\n }\n }\n }\n }\n\n /**\n After a model loads, this method is used to set up the custom parameters specified in the\n model section of the interactive, or in the toplevel of the interactive\n */\n function setupCustomParameters(modelParameters, interactiveParameters) {\n if (!modelParameters && !interactiveParameters) return;\n\n var initialValues = {},\n customParameters,\n i, parameter, onChangeFunc;\n\n // append modelParameters second so they're processed later (and override entries of the\n // same name in interactiveParameters)\n customParameters = (interactiveParameters || []).concat(modelParameters || []);\n\n for (i = 0; i < customParameters.length; i++) {\n parameter = customParameters[i];\n // onChange callback is optional.\n onChangeFunc = undefined;\n if (parameter.onChange) {\n onChangeFunc = scriptingAPI.makeFunctionInScriptContext('value', getStringFromArray(parameter.onChange));\n }\n // Define parameter using modeler.\n model.defineParameter(parameter.name, {\n label: parameter.label,\n unitType: parameter.unitType,\n unitName: parameter.unitName,\n unitPluralName: parameter.unitPluralName,\n unitAbbreviation: parameter.unitAbbreviation\n }, onChangeFunc);\n\n if (parameter.initialValue !== undefined) {\n // Deep copy of the initial value. Otherwise, if initial value is an object or array,\n // all updates to parameter value will be shared with its initial value.\n initialValues[parameter.name] = clone(parameter.initialValue);\n }\n }\n\n model.set(initialValues);\n }\n\n function getRetainedProperties(additionalProps) {\n var propertiesToRetain;\n\n if (interactive.propertiesToRetain) {\n // interactive specifies properties to retain; use them\n propertiesToRetain = interactive.propertiesToRetain;\n } else if (exportController.canExportData()) {\n // We're in CODAP (or something similar) and interactive is not explicit about which\n // properties to retain; start with a default list of properties\n propertiesToRetain = getDefaultPropertiesToRetain();\n }\n\n // retain duration-related properties if they are defined\n var durationProps = ['useDuration', 'requestedDuration'].filter(function(key) {\n return model.properties[key] !== undefined;\n });\n additionalProps = (additionalProps || []).concat(durationProps);\n\n // Also retain properties bound to components that specify retainProperty: true, and any\n // properties in additionalProps (which come from the optional parameter to resetModel and\n // loadModel in the interactive scripting API)\n var propertyKeys = _.uniq(_.flatten([\n propertiesToRetain, propertiesRetainedByComponents, additionalProps || []\n ])).filter(isPropertyWritable);\n\n var properties = {};\n\n propertyKeys.forEach(function(key) {\n properties[key] = model.properties[key];\n });\n\n return properties;\n }\n\n function getBoundProperties() {\n var componentProperties = _.pluck(interactive.components, 'property');\n var graphProperties = _.pluck(_.where(interactive.components, {\n type: 'graph'\n }), 'properties');\n\n return _.without(_.uniq(_.flatten([componentProperties, graphProperties])), undefined);\n }\n\n function isPropertyWritable(name) {\n return !!model && !!model.isPropertyWritable && model.isPropertyWritable(name);\n }\n\n function getDefaultExports() {\n // start with a list of all properties bound to components\n var boundProperties = getBoundProperties();\n var additionalPerTickProperties = [];\n\n // assume that writable properties are experimental parameters; log them once per run\n var perRunProperties = boundProperties.filter(isPropertyWritable);\n\n // assume that read-only properties change due to model physics; log them at every tick\n var perTickProperties = _.difference(boundProperties, perRunProperties);\n\n // As a special case, MD2D models should log kinetic and potential energy (and if we are in\n // the molecular size scale, also temperature)\n\n if (model && model.properties.type === 'md2d') {\n additionalPerTickProperties =\n model.properties.unitsScheme === 'md2d' ? ['kineticEnergy', 'potentialEnergy', 'temperature'] : ['kineticEnergy', 'potentialEnergy'];\n }\n\n perTickProperties = _.uniq(perTickProperties.concat(additionalPerTickProperties));\n\n return {\n perRun: perRunProperties,\n perTick: perTickProperties\n };\n }\n\n function getDefaultPropertiesToRetain() {\n var boundProperties = getBoundProperties();\n var writableProperties = boundProperties.filter(isPropertyWritable);\n\n return writableProperties;\n }\n\n //\n // Public API.\n //\n controller = {\n get interactiveContainer() {\n // Note that by default fastclick container is returned here. It's interactive container\n // child with FastClick attached.\n // Some elements may want to attach themselves to interactive container itself when they\n // don't work well with FastClick (e.g. jQuery Context Menu).\n return $fastClickContainer;\n },\n get scriptingAPI() {\n return scriptingAPI;\n },\n get helpSystem() {\n return helpSystem;\n },\n get i18n() {\n return i18n;\n },\n get modelController() {\n return modelController;\n },\n get randomSeed() {\n return randSeed;\n },\n get exportController() {\n return exportController;\n },\n get defaultExports() {\n return getDefaultExports();\n },\n get propertiesToRetain() {\n return getRetainedProperties();\n },\n get fontFamily() {\n return $interactiveContainer.css('font-family');\n },\n\n /**\n Return the model object. Note this is provided behind a method because we eventually\n want to support multiple model objects accesible by id.\n */\n getModel: function() {\n return model;\n },\n\n /**\n Return public data set (e.g. defined in interactive JSON).\n */\n getDataSet: function(name) {\n return publicDataSetsByName[name];\n },\n\n /*\n Add a new data set.\n If data set is 'isPrivate', it won't be accessible via .getDataSet() method and it won't be\n serialized as a part of interactive JSON.\n */\n addDataSet: function(dataSet, isPrivate) {\n // $.proxy ensures that callback will be always executed\n // in the context of correct object ('this' binding).\n dataSetModelLoadedCallbacks.push($.proxy(dataSet.modelLoadedCallback, dataSet));\n if (!isPrivate) {\n publicDataSetsByName[dataSet.name] = dataSet;\n }\n },\n\n getScriptingAPI: function() {\n return scriptingAPI;\n },\n\n getModelController: function() {\n return modelController;\n },\n\n getComponent: function(id) {\n return componentByID[id];\n },\n\n getNextTabIndex: getNextTabIndex,\n\n /**\n * Loads a new interactive. It accepts an object (hash) representing interactive definition.\n * @param {object} newInteractive new interactive definition\n */\n loadInteractive: loadInteractive,\n\n /**\n * Emits \"interactiveRequested\" event that should be handled by the embedding page.\n * It provides a new URL at which interactive is available.\n * @param {string} url new interactive URL\n */\n requestInteractiveAt: function(url) {\n dispatch.interactiveRequested(url);\n },\n\n reloadInteractive: function() {\n model.stop();\n notifyWillResetModelAnd(function() {\n dispatch.interactiveWillReload();\n controller.loadInteractive(initialInteractiveConfig);\n });\n },\n\n loadModel: loadModel,\n\n /**\n * Reload the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before the model\n * is actually reset; see the notifyWillResetModelAnd function.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reload and restore after reload.\n * * cause - cause of the reload action, it can be e.g. \"reload\"\n * or \"new-run\". It will be passed to \"modelLoaded\" event handlers.\n */\n reloadModel: function(options) {\n if (!options) options = {};\n if (!options.cause) options.cause = \"reload\";\n\n model.stop();\n notifyWillResetModelAnd(function() {\n // Ensure that model reload is always the same if it's desired (\"randomSeed\" paramenter\n // is provided).\n generateRandomSeed();\n controller.loadModel(currentModelID, initialModelConfig, options.propertiesToRetain, options.cause);\n });\n },\n\n /**\n * Reset the model to its initial state. The interactives controller will emit\n * a 'willResetModel'. The willResetModel observers can ask to wait for asynchronous\n * confirmation before the model is actually reset; see the notifyWillResetModelAnd function.\n *\n * Once the reset is confirmed, model will issue a 'willReset' event, reset its tick history,\n * and emit a 'reset' event.\n *\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action, e.g. \"new-run\".\n */\n resetModel: function(options) {\n model.stop();\n notifyWillResetModelAnd(function() {\n options = options || {};\n var retainedProperties = getRetainedProperties(options.propertiesToRetain);\n\n // Consumers of the model's events will see a reset event followed by the invalidation event\n // emitted when we set the model's parameters to their desired initial state. That's because\n // the model semantics don't include reset-with-saving-of-parameters, just reset-to-initial-\n // state. However, consumers of the interactive controller's modelReset event would expect\n // reset-to-initial-state and restoration-of-saved-parameter-values to be a single,\n // atomic event, given that they are triggered by the single\n // interactiveController.resetModel() method. (This is similar to the reason that the\n // interactive controller decorates its modelReset with a \"cause\" -- the model itself has no\n // notion of *why* it's reset, and doesn't distinguish \"setting up an experimental run\" from\n // \"starting over\"; those are interactive-level concepts.)\n //\n // Therefore, make sure to supress the modelReset event that would be automatically\n // emitted by our listener to the modelController's modelReset event, and emit modelReset\n // only after parameter values have been reset/restored.\n ignoreModelResetEvent = true;\n\n modelController.reset(options.cause);\n model.set(retainedProperties);\n notifyModelResetCallbacks(options.cause);\n\n ignoreModelResetEvent = false;\n });\n },\n\n /**\n * Logs custom event specified by author. Note that logging needs to be enabled in interactive JSON!\n * It means \"logging\": {\"enabled\": true} needs to be specified.\n * Log message will be sent to parent window, so parent window needs to handle it.\n * Currently, only LARA does it and sends logs to CC Log Manager App.\n *\n * @param {string} actionName\n * @param {object} data Hash of key-values that should be logged.\n */\n logAction: function(actionName, data) {\n logController && logController.logAction(actionName, data);\n },\n\n updateModelView: function() {\n modelController.updateView();\n },\n\n repaintModelView: function() {\n modelController.repaint();\n },\n\n /**\n Notifies interactive controller that the dimensions of its container have changed.\n It triggers the layout algorithm again.\n */\n resize: function() {\n layoutInteractive();\n dispatch.resize();\n },\n /**\n * Adds an event listener for the specified type. Supported events:\n * \"resize\", \"modelLoaded\", \"modelReset\", \"interactiveRendered\" and \"layoutUpdated\".\n *\n * @param {string} type\n * @param {function|null} callback Callback function or null (to remove callback).\n *\n * FIXME: We should using DispatchSupport exclusively to emit events (i.e., instead of\n * maintaining custom arrays of callbacks in interactives controller, pass each callback we\n * are given to dispatch.on()). The first step would be to modify dispatchSupport to handle\n * multiple listeners for a given event, instead of reusing d3.dispatch, which is intended for\n * a simpler use case. Similar code is already checked into Lab!\n *\n * As a second step, we should modify components so that instead of defining a\n * 'modelLoadedCallback' they simply register listeners for some event. (Note that we will\n * want to create 2 events to disambiguate the 2 senses of 'modelLoaded';\n * componentModelLoadedCallbacks are called at a slightly different point in the model loading\n * sequence than 'regular' modelLoadedCallbacks.)\n */\n on: function(type, callback) {\n // Note that we can't use DispatchSupport as willResetModel event is a special one.\n // We have know number of objects interested in this event and we have to let them cancel\n // reset operation.\n if (type === \"willResetModel\") {\n willResetModelCallbacks.push(callback);\n } else {\n dispatch.on(type, callback);\n }\n },\n\n /**\n * Gets interactive property from interactive JSON definition.\n * @param {string} name Property name.\n * @return {*} Property value.\n */\n get: function(name) {\n return interactive[name];\n },\n\n /**\n Serializes interactive, returns object ready to be stringified.\n e.g. JSON.stringify(interactiveController.serialize());\n */\n serialize: function() {\n var result, i, len;\n // Copy basic properties from the initial definition, as they are immutable.\n // FIXME: this should be based on enumerating properties in the metadata. The issue is properties\n // added to the metadata like \"importedFrom\" have to be then manually added here.\n // NP: +1 on enumerating the metadata props here.\n result = {\n title: interactive.title,\n publicationStatus: interactive.publicationStatus,\n labEnvironment: interactive.labEnvironment,\n subtitle: interactive.subtitle,\n category: interactive.category,\n subCategory: interactive.subCategory,\n screenshot: interactive.screenshot,\n aspectRatio: interactive.aspectRatio,\n fontScale: interactive.fontScale,\n lang: interactive.lang,\n i18nMetadata: interactive.i18nMetadata,\n credits: interactive.credits,\n helpOnLoad: interactive.helpOnLoad,\n aboutOnLoad: interactive.aboutOnLoad,\n about: arrays.isArray(interactive.about) ? $.extend(true, [], interactive.about) : interactive.about,\n theme: interactive.theme,\n showTopBar: interactive.showTopBar,\n showBottomBar: interactive.showBottomBar,\n padding: interactive.padding,\n // Node that modelDefinitions section can also contain custom parameters definition. However, their initial values\n // should be already updated (take a look at the beginning of this function), so we can just serialize whole array.\n models: $.extend(true, [], interactive.models),\n propertiesToRetain: $.extend(true, [], interactive.propertiesToRetain),\n // All used parameters are already updated, they contain currently used values.\n parameters: $.extend(true, [], interactive.parameters),\n // Outputs are directly bound to the model, we can copy their initial definitions.\n outputs: $.extend(true, [], interactive.outputs),\n filteredOutputs: $.extend(true, [], interactive.filteredOutputs),\n helpTips: $.extend(true, [], interactive.helpTips)\n };\n\n // Update parameters' initial values.\n if (model !== undefined && model.get !== undefined) {\n // Basically, parameters can be defined in two places - in model definition object or just as a top-level\n // property of the interactive definition. Note that when particular parameter is defined in both places\n // it means that the parameter from *model* definition will be used. That's why we keep track\n // of parameters defined in the model definition.\n var modelParams = (function() {\n for (var i = 0, len = result.models.length; i < len; i++) {\n if (result.models[i].id === currentModelID) {\n return result.models[i].parameters || [];\n }\n }\n return [];\n }());\n var interactiveParams = result.parameters;\n var isModelParameter = {};\n modelParams.forEach(function(param) {\n isModelParameter[param.name] = true;\n var val = model.get(param.name);\n if (val !== undefined) {\n // Deep copy of the initial value. Otherwise, if value is an object or array, all\n // updates to parameter value will be shared with serialized value.\n param.initialValue = clone(val);\n }\n });\n interactiveParams.forEach(function(param) {\n // The parameter is overwritten by model parameter and shouldn't be updated here.\n if (isModelParameter[param.name]) return;\n var val = model.get(param.name);\n if (val !== undefined) {\n // Deep copy of the initial value. Otherwise, if value is an object or array, all\n // updates to parameter value will be shared with serialized value.\n param.initialValue = clone(val);\n }\n });\n }\n\n // add optional attributes to result if defined\n if (interactive.importedFrom !== undefined) {\n result.importedFrom = interactive.importedFrom;\n }\n\n if (interactive.exports !== undefined) {\n result.exports = $.extend(true, {}, interactive.exports);\n }\n\n if (interactive.logging !== undefined) {\n result.logging = $.extend(true, {}, interactive.logging);\n }\n\n if (interactive.experiment !== undefined) {\n result.experiment = $.extend(true, {}, interactive.experiment);\n }\n\n if (interactive.randomSeed !== undefined) {\n result.randomSeed = interactive.randomSeed;\n }\n\n // Serialize only public data sets. Data sets automatically created by components\n // (e.g. table of graph) won't be serialized as a first-class objects in interactive JSON.\n result.dataSets = [];\n for (var dsName in publicDataSetsByName) {\n result.dataSets.push(publicDataSetsByName[dsName].serialize());\n\n }\n\n // Serialize components.\n result.components = [];\n for (i = 0, len = componentList.length; i < len; i++) {\n if (componentList[i].serialize) {\n result.components.push(componentList[i].serialize());\n }\n }\n\n // Copy layout from the initial definition, as it is immutable.\n result.layout = $.extend(true, {}, interactive.layout);\n if (typeof interactive.template === \"string\") {\n result.template = interactive.template;\n } else {\n result.template = $.extend(true, [], interactive.template);\n }\n\n return result;\n },\n\n benchmarks: [{\n name: \"interactive\",\n numeric: false,\n run: function(done) {\n done(window.location.pathname + window.location.hash);\n }\n }, {\n name: \"layout (iterations)\",\n numeric: true,\n formatter: d3.format(\"g\"),\n run: function(done) {\n done(semanticLayout.layoutInteractive());\n }\n }, {\n name: \"layout (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n var start = +Date.now();\n semanticLayout.layoutInteractive();\n done(Date.now() - start);\n }\n }],\n\n getLoadedModelId: function() {\n return currentModelID;\n },\n\n validateInteractive: validateInteractive\n };\n\n //\n // Initialization.\n //\n\n // Select interactive container.\n $interactiveContainer = $(viewSelector);\n $interactiveContainer.addClass(\"lab-interactive-container\");\n\n // Initialize semantic layout.\n semanticLayout = new SemanticLayout();\n controller.on(\"resize.share-dialog\", function() {\n shareDialog.updateIframeSize();\n });\n\n // Setup messaging with embedding parent window.\n parentMessageAPI = new ParentMessageAPI(controller);\n\n // Load interactive if it's provided.\n if (interactiveReference != null) {\n loadInteractive(interactiveReference);\n }\n\n return controller;\n};\n","\nimport _ from 'underscore';\n\nvar fields = [\"computationalInputs\", \"computationalOutputs\", \"studentInputs\"];\n\nfunction columnLabelWithUnits(col) {\n return col.units ? col.label + \" (\" + col.units + \")\" : col.label;\n}\n\nexport default {\n importRun: function(data, run) {\n if (typeof data === 'string') data = JSON.parse(data);\n\n return {\n perRunLabels: _.flatten(fields.map(function(field) {\n return data.description[field];\n })).map(columnLabelWithUnits),\n\n perRunValues: _.flatten(fields.map(function(field) {\n return data.runs[run][field];\n })),\n\n perTickLabels: data.description.timeSeriesData.map(columnLabelWithUnits),\n\n // Just a fancy way of copying the nested arrays\n perTickValues: data.runs[run].timeSeriesData.map(function(list) {\n return list.map(_.identity);\n })\n };\n },\n\n numberOfRuns: function(data) {\n if (typeof data === 'string') data = JSON.parse(data);\n return data.runs.length;\n },\n\n timeStamps: function(data) {\n if (typeof data === 'string') data = JSON.parse(data);\n return _.pluck(data.runs, 'timeStamp');\n },\n\n runHavingTimeStamp: function(data, timeStamp) {\n if (typeof data === 'string') data = JSON.parse(data);\n\n // Would be nice to have a generator expression/lazy-list equivalent, so we could use 'pluck'\n // and 'indexOf' without having to iterate over all runs before filtering the first one.\n\n for (var i = 0; i < data.runs.length; i++) {\n if (data.runs[i].timeStamp === timeStamp) {\n return i;\n }\n }\n return null;\n\n }\n\n};\n","// Setup libraries that used to be required directly in the script tag.\n// Note that there are two D3 versions available in this project. webpack.config.js sets an alias pointing to vendor/d3 submodule, as DNA renderer doesn't work\n// with D3 newer than v3.3.8. But v3.3.8 won't work with with modern build tools and recent Node versions (e.g. 10 and 12). So we have to use different version\n// (v3.5.17) in the testing environment (it's specified in package.json in devDependencies).\nimport \"d3\";\nimport \"jquery-ui-dist/jquery-ui\";\nimport \"jquery-ui-touch-punch\";\nimport \"jquery-contextmenu\";\nimport \"selectboxit/src/javascripts/jquery.selectBoxIt\";\n\nimport version from 'lab.version';\nimport config from 'lab.config';\nimport InteractivesController from 'common/controllers/interactives-controller';\nimport benchmark from 'common/benchmark/benchmark';\nimport codapInterface from 'import-export/codap-interface';\nimport netlogoImporter from 'import-export/netlogo-importer';\n\n// Create or get 'Lab' global object (namespace).\nwindow.Lab = window.Lab || {};\nwindow.Lab.version = version;\nwindow.Lab.config = config;\nwindow.Lab.InteractivesController = InteractivesController;\nwindow.Lab.benchmark = benchmark;\nwindow.Lab.importExport = {\n codapInterface,\n netlogoImporter\n};\n\n// This will automatically extend Lab public API with Grapher API.\nimport 'grapher/index';\n"," /*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nlet Solvent;\nconst TYPES = {\n vacuum: {\n forceType: 0,\n dielectricConstant: 1,\n color: \"#eee\"\n },\n oil: {\n forceType: -1,\n dielectricConstant: 10,\n color: \"#f5f1dd\"\n },\n water: {\n forceType: 1,\n dielectricConstant: 80,\n color: \"#B8EBF0\"\n }\n};\n\n/*\nSimple class representing a solvent.\n*/\nexport default Solvent = class Solvent {\n\n /*\n Constructs a new Solvent.\n @type is expected to be 'oil', 'water' or 'vacuum' string.\n */\n constructor(type) {\n this.type = type;\n const propsHash = TYPES[this.type];\n if ((propsHash == null)) {\n throw new Error(\"Solvent: unknown type. Use 'vacuum', 'oil' or 'water'.\");\n }\n\n // Copy solvent properties.\n for (let property in propsHash) {\n const value = propsHash[property];\n this[property] = value;\n }\n }\n};\n","// Underscore.js 1.9.2\n// https://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.2';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](https://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\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 _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","/*jslint eqnull: true */\n/**\n Returns a function which accepts a single numeric argument and returns:\n\n * the arithmetic mean of the windowSize most recent inputs, including the current input\n * NaN if there have not been windowSize inputs yet.\n\n The default windowSize is 1000.\n\n*/\nexports.getWindowedAverager = function(windowSize) {\n\n if (windowSize == null) windowSize = 1000; // default window size\n\n var i = 0,\n vals = [],\n sum_vals = 0;\n\n return function(val) {\n sum_vals -= (vals[i] || 0);\n sum_vals += val;\n vals[i] = val;\n\n if (++i === windowSize) i = 0;\n\n if (vals.length === windowSize) {\n return sum_vals / windowSize;\n } else {\n // don't allow any numerical comparisons with result to be true\n return NaN;\n }\n };\n};\n\n/**\n Returns angle in radians between vectors AC and BC.\n Point A is defined by (xa, ya), B by (xb, yb) and C by (xc, yc) arguments.\n */\nexports.getAngleBetweenVec = function(xa, ya, xb, yb, xc, yc) {\n var dxij = xa - xc;\n var dxkj = xb - xc;\n var dyij = ya - yc;\n var dykj = yb - yc;\n var rijSquared = dxij * dxij + dyij * dyij;\n var rkjSquared = dxkj * dxkj + dykj * dykj;\n var rij = Math.sqrt(rijSquared);\n var rkj = Math.sqrt(rkjSquared);\n // Calculate cos using dot product definition.\n var cosTheta = (dxij * dxkj + dyij * dykj) / (rij * rkj);\n if (cosTheta > 1.0) cosTheta = 1.0;\n else if (cosTheta < -1.0) cosTheta = -1.0;\n\n return Math.acos(cosTheta);\n};\n","/*!\n* screenfull\n* v4.2.1 - 2019-07-27\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\tvar keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit (Safari 5.1)\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (elem) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar request = fn.requestFullscreen;\n\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telem = elem || document.documentElement;\n\n\t\t\t\tvar promise;\n\n\t\t\t\t// Work around Safari 5.1 bug: reports support for\n\t\t\t\t// keyboard in fullscreen even though it doesn't.\n\t\t\t\t// Browser sniffing, since the alternative with\n\t\t\t\t// setTimeout is even worse.\n\t\t\t\tif (/ Version\\/5\\.1(?:\\.\\d+)? Safari\\//.test(navigator.userAgent)) {\n\t\t\t\t\tpromise = elem[request]();\n\t\t\t\t} else {\n\t\t\t\t\tpromise = elem[request](keyboardAllowed ? Element.ALLOW_KEYBOARD_INPUT : {});\n\t\t\t\t}\n\n\t\t\t\tPromise.resolve(promise).catch(reject);\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tdocument[fn.exitFullscreen]();\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (elem) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(elem);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = false;\n\t\t} else {\n\t\t\twindow.screenfull = false;\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tenabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t\t// TODO: remove this in the next major version\n\t\tmodule.exports.default = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar arr = [];\n\nvar document = window.document;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"2.2.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\n\t\t\t\tscript = document.createElement( \"script\" );\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t\t// and removal by using an indirect global eval\n\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE9-10 only\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tregister: function( owner, initial ) {\n\t\tvar value = initial || {};\n\n\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t// use plain assignment\n\t\tif ( owner.nodeType ) {\n\t\t\towner[ this.expando ] = value;\n\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\n\t\t// configurability must be true to allow the property to be\n\t\t// deleted with the delete operator\n\t\t} else {\n\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\tvalue: value,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t} );\n\t\t}\n\t\treturn owner[ this.expando ];\n\t},\n\tcache: function( owner ) {\n\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return an empty object.\n\t\tif ( !acceptData( owner ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( key ) );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.register( owner );\n\n\t\t} else {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <= 35-45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data, camelKey;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = dataUser.get( elem, key ) ||\n\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\n\t\t\t\t\t// This is for 2.2.x only\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\n\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = dataUser.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tcamelKey = jQuery.camelCase( key );\n\t\t\tthis.each( function() {\n\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = dataUser.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdataUser.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE9\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE9-11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0-4.3, Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"';\n document.body.appendChild(obj);\n this._launchFrame = document.getElementById('sensor-connector-launch-frame-parent');\n }\n\n});\n\nfunction SensorConnectorInterface() {\n return {\n stateMachine: new SensorConnectorState(),\n\n startPolling: function(addresses, clientId, clientName) {\n this.stateMachine.setHosts(addresses);\n this.stateMachine.setParam('client', clientId);\n this.stateMachine.setParam('clientName', clientName);\n\n this.stateMachine.transition('connecting');\n },\n\n stopPolling: function() {\n this.stateMachine.transition('disconnected');\n },\n\n requestStart: function() { return this.stateMachine.promisifyRequest('/control/start'); },\n\n requestStop: function() { return this.stateMachine.promisifyRequest('/control/stop'); },\n\n on: function() {\n events.on.apply(events, arguments);\n },\n\n off: function() {\n events.off.apply(events, arguments);\n },\n\n get clientId() {\n return this.stateMachine.getParam('client');\n },\n\n set clientId(id) {\n this.stateMachine.setParam('client', id);\n },\n\n get clientName() {\n return this.stateMachine.getParam('clientName');\n },\n\n set clientName(name) {\n this.stateMachine.setParam('clientName', name);\n },\n\n get hasAttachedInterface() {\n return this.stateMachine.state !== 'interfaceMissing';\n },\n\n get datasets() {\n return this.stateMachine.datasets;\n },\n\n get isConnected() {\n return ['polling','collecting','controlDisabled','interfaceMissing'].indexOf(this.stateMachine.state) !== -1;\n },\n\n get isCollecting() {\n return this.stateMachine.state === 'collecting';\n },\n\n get inControl() {\n return this.stateMachine.state !== 'controlDisabled';\n },\n\n get launchTimedOut() {\n return this.stateMachine.state === 'launchTimedOut';\n },\n\n get canControl() {\n return this.stateMachine.state !== 'controlDisabled';\n }\n };\n}\n\nmodule.exports = SensorConnectorInterface;\n\n},{\"eventemitter2\":3,\"lodash\":4,\"machina\":5,\"rsvp\":7}],2:[function(require,module,exports){\n// shim for using process in browser\n\nvar process = module.exports = {};\n\nprocess.nextTick = (function () {\n var canSetImmediate = typeof window !== 'undefined'\n && window.setImmediate;\n var canPost = typeof window !== 'undefined'\n && window.postMessage && window.addEventListener\n ;\n\n if (canSetImmediate) {\n return function (f) { return window.setImmediate(f) };\n }\n\n if (canPost) {\n var queue = [];\n window.addEventListener('message', function (ev) {\n var source = ev.source;\n if ((source === window || source === null) && ev.data === 'process-tick') {\n ev.stopPropagation();\n if (queue.length > 0) {\n var fn = queue.shift();\n fn();\n }\n }\n }, true);\n\n return function nextTick(fn) {\n queue.push(fn);\n window.postMessage('process-tick', '*');\n };\n }\n\n return function nextTick(fn) {\n setTimeout(fn, 0);\n };\n})();\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n}\n\n// TODO(shtylman)\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\n},{}],3:[function(require,module,exports){\n/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n conf.maxListeners && (this._events.maxListeners = conf.maxListeners);\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this.newListener = conf.newListener);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this.newListener = false;\n configure.call(this, conf);\n }\n\n //\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i) {\n if (!tree) {\n return [];\n }\n var listeners=[], leaf, len, branch, xTree, xxTree, isolatedBranch, endReached,\n typeLength = type.length, currentType = type[i], nextType = type[i+1];\n if (i === typeLength && tree._listeners) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n return [tree];\n } else {\n for (leaf = 0, len = tree._listeners.length; leaf < len; leaf++) {\n handlers && handlers.push(tree._listeners[leaf]);\n }\n return [tree];\n }\n }\n\n if ((currentType === '*' || currentType === '**') || tree[currentType]) {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n if (currentType === '*') {\n for (branch in tree) {\n if (branch !== '_listeners' && tree.hasOwnProperty(branch)) {\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i+1));\n }\n }\n return listeners;\n } else if(currentType === '**') {\n endReached = (i+1 === typeLength || (i+2 === typeLength && nextType === '*'));\n if(endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = listeners.concat(searchListenerTree(handlers, type, tree, typeLength));\n }\n\n for (branch in tree) {\n if (branch !== '_listeners' && tree.hasOwnProperty(branch)) {\n if(branch === '*' || branch === '**') {\n if(tree[branch]._listeners && !endReached) {\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], typeLength));\n }\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i));\n } else if(branch === nextType) {\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i+2));\n } else {\n // No match on this one, shift into the tree but not in the type array.\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i));\n }\n }\n }\n return listeners;\n }\n\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[currentType], i+1));\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i+1);\n }\n\n xxTree = tree['**'];\n if(xxTree) {\n if(i < typeLength) {\n if(xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n for(branch in xxTree) {\n if(branch !== '_listeners' && xxTree.hasOwnProperty(branch)) {\n if(branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i+2);\n } else if(branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i+1);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, { '**': isolatedBranch }, i+1);\n }\n }\n }\n } else if(xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength);\n } else if(xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener) {\n\n type = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n for(var i = 0, len = type.length; i+1 < len; i++) {\n if(type[i] === '**' && type[i+1] === '**') {\n return;\n }\n }\n\n var tree = this.listenerTree;\n var name = type.shift();\n\n while (name) {\n\n if (!tree[name]) {\n tree[name] = {};\n }\n\n tree = tree[name];\n\n if (type.length === 0) {\n\n if (!tree._listeners) {\n tree._listeners = listener;\n }\n else if(typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners, listener];\n }\n else if (isArray(tree._listeners)) {\n\n tree._listeners.push(listener);\n\n if (!tree._listeners.warned) {\n\n var m = defaultMaxListeners;\n\n if (typeof this._events.maxListeners !== 'undefined') {\n m = this._events.maxListeners;\n }\n\n if (m > 0 && tree._listeners.length > m) {\n\n tree._listeners.warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n tree._listeners.length);\n console.trace();\n }\n }\n }\n return true;\n }\n name = type.shift();\n }\n return true;\n }\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n this._events || init.call(this);\n this._events.maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn) {\n this.many(event, 1, fn);\n return this;\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n this.on(event, listener);\n\n return self;\n };\n\n EventEmitter.prototype.emit = function() {\n\n this._events || init.call(this);\n\n var type = arguments[0];\n\n if (type === 'newListener' && !this.newListener) {\n if (!this._events.newListener) { return false; }\n }\n\n // Loop through the *_all* functions and invoke them.\n if (this._all) {\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) args[i - 1] = arguments[i];\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n this._all[i].apply(this, args);\n }\n }\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n\n if (!this._all &&\n !this._events.error &&\n !(this.wildcard && this.listenerTree.error)) {\n\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n return false;\n }\n }\n\n var handler;\n\n if(this.wildcard) {\n handler = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n }\n else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n if (arguments.length === 1) {\n handler.call(this);\n }\n else if (arguments.length > 1)\n switch (arguments.length) {\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) args[i - 1] = arguments[i];\n handler.apply(this, args);\n }\n return true;\n }\n else if (handler) {\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) args[i - 1] = arguments[i];\n\n var listeners = handler.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n this.event = type;\n listeners[i].apply(this, args);\n }\n return (listeners.length > 0) || !!this._all;\n }\n else {\n return !!this._all;\n }\n\n };\n\n EventEmitter.prototype.on = function(type, listener) {\n\n if (typeof type === 'function') {\n this.onAny(type);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n this.emit('newListener', type, listener);\n\n if(this.wildcard) {\n growListenerTree.call(this, type, listener);\n return this;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n }\n else if(typeof this._events[type] === 'function') {\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n }\n else if (isArray(this._events[type])) {\n // If we've already got an array, just append.\n this._events[type].push(listener);\n\n // Check for listener leak\n if (!this._events[type].warned) {\n\n var m = defaultMaxListeners;\n\n if (typeof this._events.maxListeners !== 'undefined') {\n m = this._events.maxListeners;\n }\n\n if (m > 0 && this._events[type].length > m) {\n\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n console.trace();\n }\n }\n }\n return this;\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if(!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n this._all.push(fn);\n return this;\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n }\n else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n return this;\n }\n }\n } else {\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function(type) {\n if (arguments.length === 0) {\n !this._events || init.call(this);\n return this;\n }\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n var leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n\n for (var iLeaf=0; iLeaf\n * Build: `lodash modern -d -o ./index.js`\n * Copyright 2012-2015 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '3.10.0';\n\n /** Used to compose bitmasks for wrapper metadata. */\n var BIND_FLAG = 1,\n BIND_KEY_FLAG = 2,\n CURRY_BOUND_FLAG = 4,\n CURRY_FLAG = 8,\n CURRY_RIGHT_FLAG = 16,\n PARTIAL_FLAG = 32,\n PARTIAL_RIGHT_FLAG = 64,\n ARY_FLAG = 128,\n REARG_FLAG = 256;\n\n /** Used as default options for `_.trunc`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect when a function becomes hot. */\n var HOT_COUNT = 150,\n HOT_SPAN = 16;\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2;\n\n /** Used as the `TypeError` message for \"Functions\" methods. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,\n reUnescapedHtml = /[&<>\"'`]/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\n\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g;\n\n /**\n * Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns)\n * and those outlined by [`EscapeRegExpPattern`](http://ecma-international.org/ecma-262/6.0/#sec-escaperegexppattern).\n */\n var reRegExpChars = /^[:!,]|[\\\\^$.*+?()[\\]{}|\\/]|(^[0-9a-fA-Fnrtuvx])|([\\n\\r\\u2028\\u2029])/g,\n reHasRegExpChars = RegExp(reRegExpChars.source);\n\n /** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */\n var reComboMark = /[\\u0300-\\u036f\\ufe20-\\ufe23]/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect hexadecimal string values. */\n var reHasHexPrefix = /^0[xX]/;\n\n /** Used to detect host constructors (Safari > 5). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^\\d+$/;\n\n /** Used to match latin-1 supplementary letters (excluding mathematical operators). */\n var reLatin1 = /[\\xc0-\\xd6\\xd8-\\xde\\xdf-\\xf6\\xf8-\\xff]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to match words to create compound words. */\n var reWords = (function() {\n var upper = '[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]',\n lower = '[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+';\n\n return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g');\n }());\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number',\n 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'isFinite',\n 'parseFloat', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dateTag] = typedArrayTags[errorTag] =\n typedArrayTags[funcTag] = typedArrayTags[mapTag] =\n typedArrayTags[numberTag] = typedArrayTags[objectTag] =\n typedArrayTags[regexpTag] = typedArrayTags[setTag] =\n typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\n cloneableTags[dateTag] = cloneableTags[float32Tag] =\n cloneableTags[float64Tag] = cloneableTags[int8Tag] =\n cloneableTags[int16Tag] = cloneableTags[int32Tag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[stringTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[mapTag] = cloneableTags[setTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map latin-1 supplementary letters to basic latin letters. */\n var deburredLetters = {\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcC': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xeC': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '`': '`'\n };\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used to escape characters for inclusion in compiled regexes. */\n var regexpEscapes = {\n '0': 'x30', '1': 'x31', '2': 'x32', '3': 'x33', '4': 'x34',\n '5': 'x35', '6': 'x36', '7': 'x37', '8': 'x38', '9': 'x39',\n 'A': 'x41', 'B': 'x42', 'C': 'x43', 'D': 'x44', 'E': 'x45', 'F': 'x46',\n 'a': 'x61', 'b': 'x62', 'c': 'x63', 'd': 'x64', 'e': 'x65', 'f': 'x66',\n 'n': 'x6e', 'r': 'x72', 't': 'x74', 'u': 'x75', 'v': 'x76', 'x': 'x78'\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = objectTypes[typeof self] && self && self.Object && self;\n\n /** Detect free variable `window`. */\n var freeWindow = objectTypes[typeof window] && window && window.Object && window;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;\n\n /**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\n var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * The base implementation of `compareAscending` which compares values and\n * sorts them in ascending order without guaranteeing a stable sort.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function baseCompareAscending(value, other) {\n if (value !== other) {\n var valIsNull = value === null,\n valIsUndef = value === undefined,\n valIsReflexive = value === value;\n\n var othIsNull = other === null,\n othIsUndef = other === undefined,\n othIsReflexive = other === other;\n\n if ((value > other && !othIsNull) || !valIsReflexive ||\n (valIsNull && !othIsUndef && othIsReflexive) ||\n (valIsUndef && othIsReflexive)) {\n return 1;\n }\n if ((value < other && !valIsNull) || !othIsReflexive ||\n (othIsNull && !valIsUndef && valIsReflexive) ||\n (othIsUndef && valIsReflexive)) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without support for binary searches.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return indexOfNaN(array, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isFunction` without support for environments\n * with incorrect `typeof` results.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n */\n function baseIsFunction(value) {\n // Avoid a Chakra JIT bug in compatibility modes of IE 11.\n // See https://github.com/jashkenas/underscore/issues/1621 for more details.\n return typeof value == 'function' || false;\n }\n\n /**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` or `undefined` values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n return value == null ? '' : (value + '');\n }\n\n /**\n * Used by `_.trim` and `_.trimLeft` to get the index of the first character\n * of `string` that is not found in `chars`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @param {string} chars The characters to find.\n * @returns {number} Returns the index of the first character not found in `chars`.\n */\n function charsLeftIndex(string, chars) {\n var index = -1,\n length = string.length;\n\n while (++index < length && chars.indexOf(string.charAt(index)) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimRight` to get the index of the last character\n * of `string` that is not found in `chars`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @param {string} chars The characters to find.\n * @returns {number} Returns the index of the last character not found in `chars`.\n */\n function charsRightIndex(string, chars) {\n var index = string.length;\n\n while (index-- && chars.indexOf(string.charAt(index)) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.sortBy` to compare transformed elements of a collection and stable\n * sort them in ascending order.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareAscending(object, other) {\n return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index);\n }\n\n /**\n * Used by `_.sortByOrder` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all valuess are sorted in ascending order. Otherwise,\n * a value is sorted in ascending order if its corresponding order is \"asc\", and\n * descending if \"desc\".\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = baseCompareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * ((order === 'asc' || order === true) ? 1 : -1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://code.google.com/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n function deburrLetter(letter) {\n return deburredLetters[letter];\n }\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeHtmlChar(chr) {\n return htmlEscapes[chr];\n }\n\n /**\n * Used by `_.escapeRegExp` to escape characters for inclusion in compiled regexes.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @param {string} leadingChar The capture group for a leading character.\n * @param {string} whitespaceChar The capture group for a whitespace character.\n * @returns {string} Returns the escaped character.\n */\n function escapeRegExpChar(chr, leadingChar, whitespaceChar) {\n if (leadingChar) {\n chr = regexpEscapes[chr];\n } else if (whitespaceChar) {\n chr = stringEscapes[chr];\n }\n return '\\\\' + chr;\n }\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the index at which the first occurrence of `NaN` is found in `array`.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched `NaN`, else `-1`.\n */\n function indexOfNaN(array, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 0 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n var other = array[index];\n if (other !== other) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\n function isObjectLike(value) {\n return !!value && typeof value == 'object';\n }\n\n /**\n * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a\n * character code is whitespace.\n *\n * @private\n * @param {number} charCode The character code to inspect.\n * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`.\n */\n function isSpace(charCode) {\n return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 ||\n (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279)));\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n if (array[index] === placeholder) {\n array[index] = PLACEHOLDER;\n result[++resIndex] = index;\n }\n }\n return result;\n }\n\n /**\n * An implementation of `_.uniq` optimized for sorted arrays without support\n * for callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The function invoked per iteration.\n * @returns {Array} Returns the new duplicate-value-free array.\n */\n function sortedUniq(array, iteratee) {\n var seen,\n index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value, index, array) : value;\n\n if (!index || seen !== computed) {\n seen = computed;\n result[++resIndex] = value;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the first non-whitespace character.\n */\n function trimmedLeftIndex(string) {\n var index = -1,\n length = string.length;\n\n while (++index < length && isSpace(string.charCodeAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedRightIndex(string) {\n var index = string.length;\n\n while (index-- && isSpace(string.charCodeAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n function unescapeHtmlChar(chr) {\n return htmlUnescapes[chr];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the given `context` object.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // using `context` to mock `Date#getTime` use in `_.now`\n * var mock = _.runInContext({\n * 'Date': function() {\n * return { 'getTime': getTimeMock };\n * }\n * });\n *\n * // or creating a suped-up `defer` in Node.js\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n function runInContext(context) {\n // Avoid issues with some ES3 environments that attempt to use values, named\n // after built-in constructors like `Object`, for the creation of literals.\n // ES5 clears this up by stating that literals must use built-in constructors.\n // See https://es5.github.io/#x11.1.5 for more details.\n context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;\n\n /** Native constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Number = context.Number,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for native method references. */\n var arrayProto = Array.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n /** Used to resolve the decompiled source of functions. */\n var fnToString = Function.prototype.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objToString = objectProto.toString;\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Native method references. */\n var ArrayBuffer = context.ArrayBuffer,\n clearTimeout = context.clearTimeout,\n parseFloat = context.parseFloat,\n pow = Math.pow,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n Set = getNative(context, 'Set'),\n setTimeout = context.setTimeout,\n splice = arrayProto.splice,\n Uint8Array = context.Uint8Array,\n WeakMap = getNative(context, 'WeakMap');\n\n /* Native method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeCreate = getNative(Object, 'create'),\n nativeFloor = Math.floor,\n nativeIsArray = getNative(Array, 'isArray'),\n nativeIsFinite = context.isFinite,\n nativeKeys = getNative(Object, 'keys'),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = getNative(Date, 'now'),\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random;\n\n /** Used as references for `-Infinity` and `Infinity`. */\n var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY,\n POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit chaining.\n * Methods that operate on and return arrays, collections, and functions can\n * be chained together. Methods that retrieve a single value or may return a\n * primitive value will automatically end the chain returning the unwrapped\n * value. Explicit chaining may be enabled using `_.chain`. The execution of\n * chained methods is lazy, that is, execution is deferred until `_#value`\n * is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion. Shortcut\n * fusion is an optimization strategy which merge iteratee calls; this can help\n * to avoid the creation of intermediate data structures and greatly reduce the\n * number of iteratee executions.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,\n * `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,\n * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,\n * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,\n * and `where`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,\n * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,\n * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`,\n * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`,\n * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`,\n * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,\n * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`,\n * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`,\n * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`,\n * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`,\n * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,\n * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`,\n * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`,\n * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`,\n * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`,\n * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`,\n * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`,\n * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`,\n * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`,\n * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`,\n * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`,\n * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`,\n * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`,\n * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`,\n * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`,\n * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`,\n * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`,\n * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`,\n * `unescape`, `uniqueId`, `value`, and `words`\n *\n * The wrapper method `sample` will return a wrapped value when `n` is provided,\n * otherwise an unwrapped value is returned.\n *\n * @name _\n * @constructor\n * @category Chain\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // returns an unwrapped value\n * wrapped.reduce(function(total, n) {\n * return total + n;\n * });\n * // => 6\n *\n * // returns a wrapped value\n * var squares = wrapped.map(function(n) {\n * return n * n;\n * });\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The function whose prototype all chaining wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable chaining for all wrapper methods.\n * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.\n */\n function LodashWrapper(value, chainAll, actions) {\n this.__wrapped__ = value;\n this.__actions__ = actions || [];\n this.__chain__ = !!chainAll;\n }\n\n /**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\n var support = lodash.support = {};\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB). Change the following template settings to use\n * alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type Object\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type RegExp\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type RegExp\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type RegExp\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type string\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type Object\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type Function\n */\n '_': lodash\n }\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = POSITIVE_INFINITY;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = arrayCopy(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = arrayCopy(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = arrayCopy(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) {\n return baseWrapperValue((isRight && isArr) ? array.reverse() : array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a cache object to store key/value pairs.\n *\n * @private\n * @static\n * @name Cache\n * @memberOf _.memoize\n */\n function MapCache() {\n this.__data__ = {};\n }\n\n /**\n * Removes `key` and its value from the cache.\n *\n * @private\n * @name delete\n * @memberOf _.memoize.Cache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`.\n */\n function mapDelete(key) {\n return this.has(key) && delete this.__data__[key];\n }\n\n /**\n * Gets the cached value for `key`.\n *\n * @private\n * @name get\n * @memberOf _.memoize.Cache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the cached value.\n */\n function mapGet(key) {\n return key == '__proto__' ? undefined : this.__data__[key];\n }\n\n /**\n * Checks if a cached value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf _.memoize.Cache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapHas(key) {\n return key != '__proto__' && hasOwnProperty.call(this.__data__, key);\n }\n\n /**\n * Sets `value` to `key` of the cache.\n *\n * @private\n * @name set\n * @memberOf _.memoize.Cache\n * @param {string} key The key of the value to cache.\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache object.\n */\n function mapSet(key, value) {\n if (key != '__proto__') {\n this.__data__[key] = value;\n }\n return this;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates a cache object to store unique values.\n *\n * @private\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var length = values ? values.length : 0;\n\n this.data = { 'hash': nativeCreate(null), 'set': new Set };\n while (length--) {\n this.push(values[length]);\n }\n }\n\n /**\n * Checks if `value` is in `cache` mimicking the return signature of\n * `_.indexOf` by returning `0` if the value is found, else `-1`.\n *\n * @private\n * @param {Object} cache The cache to search.\n * @param {*} value The value to search for.\n * @returns {number} Returns `0` if `value` is found, else `-1`.\n */\n function cacheIndexOf(cache, value) {\n var data = cache.data,\n result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];\n\n return result ? 0 : -1;\n }\n\n /**\n * Adds `value` to the cache.\n *\n * @private\n * @name push\n * @memberOf SetCache\n * @param {*} value The value to cache.\n */\n function cachePush(value) {\n var data = this.data;\n if (typeof value == 'string' || isObject(value)) {\n data.set.add(value);\n } else {\n data.hash[value] = true;\n }\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a new array joining `array` with `other`.\n *\n * @private\n * @param {Array} array The array to join.\n * @param {Array} other The other array to join.\n * @returns {Array} Returns the new concatenated array.\n */\n function arrayConcat(array, other) {\n var index = -1,\n length = array.length,\n othIndex = -1,\n othLength = other.length,\n result = Array(length + othLength);\n\n while (++index < length) {\n result[index] = array[index];\n }\n while (++othIndex < othLength) {\n result[index++] = other[othIndex];\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `baseExtremum` for arrays which invokes `iteratee`\n * with one argument: (value).\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} comparator The function used to compare values.\n * @param {*} exValue The initial extremum value.\n * @returns {*} Returns the extremum value.\n */\n function arrayExtremum(array, iteratee, comparator, exValue) {\n var index = -1,\n length = array.length,\n computed = exValue,\n result = computed;\n\n while (++index < length) {\n var value = array[index],\n current = +iteratee(value);\n\n if (comparator(current, computed)) {\n computed = current;\n result = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[++resIndex] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initFromArray] Specify using the first element of `array`\n * as the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initFromArray) {\n var index = -1,\n length = array.length;\n\n if (initFromArray && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initFromArray] Specify using the last element of `array`\n * as the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initFromArray) {\n var length = array.length;\n if (initFromArray && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.sum` for arrays without support for callback\n * shorthands and `this` binding..\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function arraySum(array, iteratee) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n result += +iteratee(array[length]) || 0;\n }\n return result;\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assign` use.\n *\n * @private\n * @param {*} objectValue The destination object property value.\n * @param {*} sourceValue The source object property value.\n * @returns {*} Returns the value to assign to the destination object.\n */\n function assignDefaults(objectValue, sourceValue) {\n return objectValue === undefined ? sourceValue : objectValue;\n }\n\n /**\n * Used by `_.template` to customize its `_.assign` use.\n *\n * **Note:** This function is like `assignDefaults` except that it ignores\n * inherited property values when checking if a property is `undefined`.\n *\n * @private\n * @param {*} objectValue The destination object property value.\n * @param {*} sourceValue The source object property value.\n * @param {string} key The key associated with the object and source values.\n * @param {Object} object The destination object.\n * @returns {*} Returns the value to assign to the destination object.\n */\n function assignOwnDefaults(objectValue, sourceValue, key, object) {\n return (objectValue === undefined || !hasOwnProperty.call(object, key))\n ? sourceValue\n : objectValue;\n }\n\n /**\n * A specialized version of `_.assign` for customizing assigned values without\n * support for argument juggling, multiple sources, and `this` binding `customizer`\n * functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n */\n function assignWith(object, source, customizer) {\n var index = -1,\n props = keys(source),\n length = props.length;\n\n while (++index < length) {\n var key = props[index],\n value = object[key],\n result = customizer(value, source[key], key, object, source);\n\n if ((result === result ? (result !== value) : (value === value)) ||\n (value === undefined && !(key in object))) {\n object[key] = result;\n }\n }\n return object;\n }\n\n /**\n * The base implementation of `_.assign` without support for argument juggling,\n * multiple sources, and `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return source == null\n ? object\n : baseCopy(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.at` without support for string collections\n * and individual key arguments.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {number[]|string[]} props The property names or indexes of elements to pick.\n * @returns {Array} Returns the new array of picked elements.\n */\n function baseAt(collection, props) {\n var index = -1,\n isNil = collection == null,\n isArr = !isNil && isArrayLike(collection),\n length = isArr ? collection.length : 0,\n propsLength = props.length,\n result = Array(propsLength);\n\n while(++index < propsLength) {\n var key = props[index];\n if (isArr) {\n result[index] = isIndex(key, length) ? collection[key] : undefined;\n } else {\n result[index] = isNil ? undefined : collection[key];\n }\n }\n return result;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\n function baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `_.callback` which supports specifying the\n * number of arguments to provide to `func`.\n *\n * @private\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\n function baseCallback(func, thisArg, argCount) {\n var type = typeof func;\n if (type == 'function') {\n return thisArg === undefined\n ? func\n : bindCallback(func, thisArg, argCount);\n }\n if (func == null) {\n return identity;\n }\n if (type == 'object') {\n return baseMatches(func);\n }\n return thisArg === undefined\n ? property(func)\n : baseMatchesProperty(func, thisArg);\n }\n\n /**\n * The base implementation of `_.clone` without support for argument juggling\n * and `this` binding `customizer` functions.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {Function} [customizer] The function to customize cloning values.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The object `value` belongs to.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates clones with source counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return arrayCopy(value, result);\n }\n } else {\n var tag = objToString.call(value),\n isFunc = tag == funcTag;\n\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return baseAssign(result, value);\n }\n } else {\n return cloneableTags[tag]\n ? initCloneByTag(value, tag, isDeep)\n : (object ? value : {});\n }\n }\n // Check for circular references and return its corresponding clone.\n stackA || (stackA = []);\n stackB || (stackB = []);\n\n var length = stackA.length;\n while (length--) {\n if (stackA[length] == value) {\n return stackB[length];\n }\n }\n // Add the source value to the stack of traversed objects and associate it with its clone.\n stackA.push(value);\n stackB.push(result);\n\n // Recursively populate clone (susceptible to call stack limits).\n (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(prototype) {\n if (isObject(prototype)) {\n object.prototype = prototype;\n var result = new object;\n object.prototype = undefined;\n }\n return result || {};\n };\n }());\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts an index\n * of where to slice the arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Object} args The arguments provide to `func`.\n * @returns {number} Returns the timer id.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of `_.difference` which accepts a single array\n * of values to exclude.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values) {\n var length = array ? array.length : 0,\n result = [];\n\n if (!length) {\n return result;\n }\n var index = -1,\n indexOf = getIndexOf(),\n isCommon = indexOf == baseIndexOf,\n cache = (isCommon && values.length >= LARGE_ARRAY_SIZE) ? createCache(values) : null,\n valuesLength = values.length;\n\n if (cache) {\n indexOf = cacheIndexOf;\n isCommon = false;\n values = cache;\n }\n outer:\n while (++index < length) {\n var value = array[index];\n\n if (isCommon && value === value) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === value) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (indexOf(values, value, 0) < 0) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object|string} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object|string} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * Gets the extremum value of `collection` invoking `iteratee` for each value\n * in `collection` to generate the criterion by which the value is ranked.\n * The `iteratee` is invoked with three arguments: (value, index|key, collection).\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} comparator The function used to compare values.\n * @param {*} exValue The initial extremum value.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(collection, iteratee, comparator, exValue) {\n var computed = exValue,\n result = computed;\n\n baseEach(collection, function(value, index, collection) {\n var current = +iteratee(value, index, collection);\n if (comparator(current, computed) || (current === exValue && current === result)) {\n computed = current;\n result = value;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = start == null ? 0 : (+start || 0);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : (+end || 0);\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : (end >>> 0);\n start >>>= 0;\n\n while (start < length) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,\n * without support for callback shorthands and `this` binding, which iterates\n * over `collection` using the provided `eachFunc`.\n *\n * @private\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @param {boolean} [retKey] Specify returning the key of the found element\n * instead of the element itself.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFind(collection, predicate, eachFunc, retKey) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = retKey ? key : value;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with added support for restricting\n * flattening and specifying the start index.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {boolean} [isDeep] Specify a deep flatten.\n * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, isDeep, isStrict, result) {\n result || (result = []);\n\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index];\n if (isObjectLike(value) && isArrayLike(value) &&\n (isStrict || isArray(value) || isArguments(value))) {\n if (isDeep) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, isDeep, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n }\n\n /**\n * The base implementation of `_.forOwn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from those provided.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the new array of filtered property names.\n */\n function baseFunctions(object, props) {\n var index = -1,\n length = props.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var key = props[index];\n if (isFunction(object[key])) {\n result[++resIndex] = key;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `get` without support for string paths\n * and default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path of the property to get.\n * @param {string} [pathKey] The key representation of path.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path, pathKey) {\n if (object == null) {\n return;\n }\n if (pathKey !== undefined && pathKey in toObject(object)) {\n path = [pathKey];\n }\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `_.isEqual` without support for `this` binding\n * `customizer` functions.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparing values.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing objects.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA=[]] Tracks traversed `value` objects.\n * @param {Array} [stackB=[]] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = objToString.call(object);\n if (objTag == argsTag) {\n objTag = objectTag;\n } else if (objTag != objectTag) {\n objIsArr = isTypedArray(object);\n }\n }\n if (!othIsArr) {\n othTag = objToString.call(other);\n if (othTag == argsTag) {\n othTag = objectTag;\n } else if (othTag != objectTag) {\n othIsArr = isTypedArray(other);\n }\n }\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && !(objIsArr || objIsObj)) {\n return equalByTag(object, other, objTag);\n }\n if (!isLoose) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);\n }\n }\n if (!isSameTag) {\n return false;\n }\n // Assume cyclic values are equal.\n // For more information on detecting circular references see https://es5.github.io/#JO.\n stackA || (stackA = []);\n stackB || (stackB = []);\n\n var length = stackA.length;\n while (length--) {\n if (stackA[length] == object) {\n return stackB[length] == other;\n }\n }\n // Add `object` and `other` to the stack of traversed objects.\n stackA.push(object);\n stackB.push(other);\n\n var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);\n\n stackA.pop();\n stackB.pop();\n\n return result;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} matchData The propery names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparing objects.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = toObject(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var result = customizer ? customizer(objValue, srcValue, key) : undefined;\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.map` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which does not clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n var key = matchData[0][0],\n value = matchData[0][1];\n\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === value && (value !== undefined || (key in toObject(object)));\n };\n }\n return function(object) {\n return baseIsMatch(object, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which does not clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to compare.\n * @returns {Function} Returns the new function.\n */\n function baseMatchesProperty(path, srcValue) {\n var isArr = isArray(path),\n isCommon = isKey(path) && isStrictComparable(srcValue),\n pathKey = (path + '');\n\n path = toPath(path);\n return function(object) {\n if (object == null) {\n return false;\n }\n var key = pathKey;\n object = toObject(object);\n if ((isArr || !isCommon) && !(key in object)) {\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n if (object == null) {\n return false;\n }\n key = last(path);\n object = toObject(object);\n }\n return object[key] === srcValue\n ? (srcValue !== undefined || (key in object))\n : baseIsEqual(srcValue, object[key], undefined, true);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\n function baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n */\n function basePropertyDeep(path) {\n var pathKey = (path + '');\n path = toPath(path);\n return function(object) {\n return baseGet(object, path, pathKey);\n };\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * index arguments and capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0;\n while (length--) {\n var index = indexes[length];\n if (index != previous && isIndex(index)) {\n var previous = index;\n splice.call(array, index, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for argument juggling\n * and returning floating-point numbers.\n *\n * @private\n * @param {number} min The minimum possible value.\n * @param {number} max The maximum possible value.\n * @returns {number} Returns the random number.\n */\n function baseRandom(min, max) {\n return min + nativeFloor(nativeRandom() * (max - min + 1));\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight` without support\n * for callback shorthands and `this` binding, which iterates over `collection`\n * using the provided `eachFunc`.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initFromCollection Specify using the first or last element\n * of `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initFromCollection\n ? (initFromCollection = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop detection.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n start = start == null ? 0 : (+start || 0);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : (+end || 0);\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define\n * the sort order of `array` and replaces criteria objects with their\n * corresponding values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sortByOrder` without param guards.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {boolean[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseSortByOrder(collection, iteratees, orders) {\n var callback = getCallback(),\n index = -1;\n\n iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); });\n\n var result = baseMap(collection, function(value) {\n var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.sum` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(collection, iteratee) {\n var result = 0;\n baseEach(collection, function(value, index, collection) {\n result += +iteratee(value, index, collection) || 0;\n });\n return result;\n }\n\n /**\n * The base implementation of `_.uniq` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The function invoked per iteration.\n * @returns {Array} Returns the new duplicate-value-free array.\n */\n function baseUniq(array, iteratee) {\n var index = -1,\n indexOf = getIndexOf(),\n length = array.length,\n isCommon = indexOf == baseIndexOf,\n isLarge = isCommon && length >= LARGE_ARRAY_SIZE,\n seen = isLarge ? createCache() : null,\n result = [];\n\n if (seen) {\n indexOf = cacheIndexOf;\n isCommon = false;\n } else {\n isLarge = false;\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value, index, array) : value;\n\n if (isCommon && value === value) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (indexOf(seen, computed, 0) < 0) {\n if (iteratee || isLarge) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n var index = -1,\n length = props.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = object[props[index]];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.dropRightWhile`, `_.dropWhile`, `_.takeRightWhile`,\n * and `_.takeWhile` without support for callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {}\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to peform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n var index = -1,\n length = actions.length;\n\n while (++index < length) {\n var action = actions[index];\n result = action.func.apply(action.thisArg, arrayPush([result], action.args));\n }\n return result;\n }\n\n /**\n * Performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function binaryIndex(array, value, retHighest) {\n var low = 0,\n high = array ? array.length : low;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return binaryIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * This function is like `binaryIndex` except that it invokes `iteratee` for\n * `value` and each element of `array` to compute their sort ranking. The\n * iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function binaryIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array ? array.length : 0,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsUndef = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n isDef = computed !== undefined,\n isReflexive = computed === computed;\n\n if (valIsNaN) {\n var setLow = isReflexive || retHighest;\n } else if (valIsNull) {\n setLow = isReflexive && isDef && (retHighest || computed != null);\n } else if (valIsUndef) {\n setLow = isReflexive && (retHighest || isDef);\n } else if (computed == null) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\n function bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n }\n\n /**\n * Creates a clone of the given array buffer.\n *\n * @private\n * @param {ArrayBuffer} buffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function bufferClone(buffer) {\n var result = new ArrayBuffer(buffer.byteLength),\n view = new Uint8Array(result);\n\n view.set(new Uint8Array(buffer));\n return result;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array|Object} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders) {\n var holdersLength = holders.length,\n argsIndex = -1,\n argsLength = nativeMax(args.length - holdersLength, 0),\n leftIndex = -1,\n leftLength = partials.length,\n result = Array(leftLength + argsLength);\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n while (argsLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array|Object} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders) {\n var holdersIndex = -1,\n holdersLength = holders.length,\n argsIndex = -1,\n argsLength = nativeMax(args.length - holdersLength, 0),\n rightIndex = -1,\n rightLength = partials.length,\n result = Array(argsLength + rightLength);\n\n while (++argsIndex < argsLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * Creates a `_.countBy`, `_.groupBy`, `_.indexBy`, or `_.partition` function.\n *\n * @private\n * @param {Function} setter The function to set keys and values of the accumulator object.\n * @param {Function} [initializer] The function to initialize the accumulator object.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee, thisArg) {\n var result = initializer ? initializer() : {};\n iteratee = getCallback(iteratee, thisArg, 3);\n\n if (isArray(collection)) {\n var index = -1,\n length = collection.length;\n\n while (++index < length) {\n var value = collection[index];\n setter(result, value, iteratee(value, index, collection), collection);\n }\n } else {\n baseEach(collection, function(value, key, collection) {\n setter(result, value, iteratee(value, key, collection), collection);\n });\n }\n return result;\n };\n }\n\n /**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n var length = collection ? getLength(collection) : 0;\n if (!isLength(length)) {\n return eachFunc(collection, iteratee);\n }\n var index = fromRight ? length : -1,\n iterable = toObject(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with the `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new bound function.\n */\n function createBindWrapper(func, thisArg) {\n var Ctor = createCtorWrapper(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(thisArg, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a `Set` cache object to optimize linear searches of large arrays.\n *\n * @private\n * @param {Array} [values] The values to cache.\n * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.\n */\n function createCache(values) {\n return (nativeCreate && Set) ? new SetCache(values) : null;\n }\n\n /**\n * Creates a function that produces compound words out of the words in a\n * given string.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n var index = -1,\n array = words(deburr(string)),\n length = array.length,\n result = '';\n\n while (++index < length) {\n result = callback(result, array[index], index);\n }\n return result;\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtorWrapper(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors.\n // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a `_.curry` or `_.curryRight` function.\n *\n * @private\n * @param {boolean} flag The curry bit flag.\n * @returns {Function} Returns the new curry function.\n */\n function createCurry(flag) {\n function curryFunc(func, arity, guard) {\n if (guard && isIterateeCall(func, arity, guard)) {\n arity = undefined;\n }\n var result = createWrapper(func, flag, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryFunc.placeholder;\n return result;\n }\n return curryFunc;\n }\n\n /**\n * Creates a `_.defaults` or `_.defaultsDeep` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Function} Returns the new defaults function.\n */\n function createDefaults(assigner, customizer) {\n return restParam(function(args) {\n var object = args[0];\n if (object == null) {\n return object;\n }\n args.push(customizer);\n return assigner.apply(undefined, args);\n });\n }\n\n /**\n * Creates a `_.max` or `_.min` function.\n *\n * @private\n * @param {Function} comparator The function used to compare values.\n * @param {*} exValue The initial extremum value.\n * @returns {Function} Returns the new extremum function.\n */\n function createExtremum(comparator, exValue) {\n return function(collection, iteratee, thisArg) {\n if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n iteratee = undefined;\n }\n iteratee = getCallback(iteratee, thisArg, 3);\n if (iteratee.length == 1) {\n collection = isArray(collection) ? collection : toIterable(collection);\n var result = arrayExtremum(collection, iteratee, comparator, exValue);\n if (!(collection.length && result === exValue)) {\n return result;\n }\n }\n return baseExtremum(collection, iteratee, comparator, exValue);\n };\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new find function.\n */\n function createFind(eachFunc, fromRight) {\n return function(collection, predicate, thisArg) {\n predicate = getCallback(predicate, thisArg, 3);\n if (isArray(collection)) {\n var index = baseFindIndex(collection, predicate, fromRight);\n return index > -1 ? collection[index] : undefined;\n }\n return baseFind(collection, predicate, eachFunc);\n };\n }\n\n /**\n * Creates a `_.findIndex` or `_.findLastIndex` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new find function.\n */\n function createFindIndex(fromRight) {\n return function(array, predicate, thisArg) {\n if (!(array && array.length)) {\n return -1;\n }\n predicate = getCallback(predicate, thisArg, 3);\n return baseFindIndex(array, predicate, fromRight);\n };\n }\n\n /**\n * Creates a `_.findKey` or `_.findLastKey` function.\n *\n * @private\n * @param {Function} objectFunc The function to iterate over an object.\n * @returns {Function} Returns the new find function.\n */\n function createFindKey(objectFunc) {\n return function(object, predicate, thisArg) {\n predicate = getCallback(predicate, thisArg, 3);\n return baseFind(object, predicate, objectFunc, true);\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return function() {\n var wrapper,\n length = arguments.length,\n index = fromRight ? length : -1,\n leftIndex = 0,\n funcs = Array(length);\n\n while ((fromRight ? index-- : ++index < length)) {\n var func = funcs[leftIndex++] = arguments[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (!wrapper && LodashWrapper.prototype.thru && getFuncName(func) == 'wrapper') {\n wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? -1 : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) && data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && !data[4].length && data[9] == 1) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func)) ? wrapper[funcName]() : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value) && value.length >= LARGE_ARRAY_SIZE) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n };\n }\n\n /**\n * Creates a function for `_.forEach` or `_.forEachRight`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over an array.\n * @param {Function} eachFunc The function to iterate over a collection.\n * @returns {Function} Returns the new each function.\n */\n function createForEach(arrayFunc, eachFunc) {\n return function(collection, iteratee, thisArg) {\n return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))\n ? arrayFunc(collection, iteratee)\n : eachFunc(collection, bindCallback(iteratee, thisArg, 3));\n };\n }\n\n /**\n * Creates a function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {Function} objectFunc The function to iterate over an object.\n * @returns {Function} Returns the new each function.\n */\n function createForIn(objectFunc) {\n return function(object, iteratee, thisArg) {\n if (typeof iteratee != 'function' || thisArg !== undefined) {\n iteratee = bindCallback(iteratee, thisArg, 3);\n }\n return objectFunc(object, iteratee, keysIn);\n };\n }\n\n /**\n * Creates a function for `_.forOwn` or `_.forOwnRight`.\n *\n * @private\n * @param {Function} objectFunc The function to iterate over an object.\n * @returns {Function} Returns the new each function.\n */\n function createForOwn(objectFunc) {\n return function(object, iteratee, thisArg) {\n if (typeof iteratee != 'function' || thisArg !== undefined) {\n iteratee = bindCallback(iteratee, thisArg, 3);\n }\n return objectFunc(object, iteratee);\n };\n }\n\n /**\n * Creates a function for `_.mapKeys` or `_.mapValues`.\n *\n * @private\n * @param {boolean} [isMapKeys] Specify mapping keys instead of values.\n * @returns {Function} Returns the new map function.\n */\n function createObjectMapper(isMapKeys) {\n return function(object, iteratee, thisArg) {\n var result = {};\n iteratee = getCallback(iteratee, thisArg, 3);\n\n baseForOwn(object, function(value, key, object) {\n var mapped = iteratee(value, key, object);\n key = isMapKeys ? mapped : key;\n value = isMapKeys ? value : mapped;\n result[key] = value;\n });\n return result;\n };\n }\n\n /**\n * Creates a function for `_.padLeft` or `_.padRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify padding from the right.\n * @returns {Function} Returns the new pad function.\n */\n function createPadDir(fromRight) {\n return function(string, length, chars) {\n string = baseToString(string);\n return (fromRight ? string : '') + createPadding(string, length, chars) + (fromRight ? '' : string);\n };\n }\n\n /**\n * Creates a `_.partial` or `_.partialRight` function.\n *\n * @private\n * @param {boolean} flag The partial bit flag.\n * @returns {Function} Returns the new partial function.\n */\n function createPartial(flag) {\n var partialFunc = restParam(function(func, partials) {\n var holders = replaceHolders(partials, partialFunc.placeholder);\n return createWrapper(func, flag, undefined, partials, holders);\n });\n return partialFunc;\n }\n\n /**\n * Creates a function for `_.reduce` or `_.reduceRight`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over an array.\n * @param {Function} eachFunc The function to iterate over a collection.\n * @returns {Function} Returns the new each function.\n */\n function createReduce(arrayFunc, eachFunc) {\n return function(collection, iteratee, accumulator, thisArg) {\n var initFromArray = arguments.length < 3;\n return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))\n ? arrayFunc(collection, iteratee, accumulator, initFromArray)\n : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);\n };\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with optional `this`\n * binding of, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & ARY_FLAG,\n isBind = bitmask & BIND_FLAG,\n isBindKey = bitmask & BIND_KEY_FLAG,\n isCurry = bitmask & CURRY_FLAG,\n isCurryBound = bitmask & CURRY_BOUND_FLAG,\n isCurryRight = bitmask & CURRY_RIGHT_FLAG,\n Ctor = isBindKey ? undefined : createCtorWrapper(func);\n\n function wrapper() {\n // Avoid `arguments` object use disqualifying optimizations by\n // converting it to an array before providing it to other functions.\n var length = arguments.length,\n index = length,\n args = Array(length);\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (partials) {\n args = composeArgs(args, partials, holders);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight);\n }\n if (isCurry || isCurryRight) {\n var placeholder = wrapper.placeholder,\n argsHolders = replaceHolders(args, placeholder);\n\n length -= argsHolders.length;\n if (length < arity) {\n var newArgPos = argPos ? arrayCopy(argPos) : undefined,\n newArity = nativeMax(arity - length, 0),\n newsHolders = isCurry ? argsHolders : undefined,\n newHoldersRight = isCurry ? undefined : argsHolders,\n newPartials = isCurry ? args : undefined,\n newPartialsRight = isCurry ? undefined : args;\n\n bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);\n\n if (!isCurryBound) {\n bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);\n }\n var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity],\n result = createHybridWrapper.apply(undefined, newData);\n\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return result;\n }\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n if (argPos) {\n args = reorder(args, argPos);\n }\n if (isAry && ary < args.length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtorWrapper(func);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates the padding required for `string` based on the given `length`.\n * The `chars` string is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {string} string The string to create padding for.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the pad for `string`.\n */\n function createPadding(string, length, chars) {\n var strLength = string.length;\n length = +length;\n\n if (strLength >= length || !nativeIsFinite(length)) {\n return '';\n }\n var padLength = length - strLength;\n chars = chars == null ? ' ' : (chars + '');\n return repeat(chars, nativeCeil(padLength / chars.length)).slice(0, padLength);\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with the optional `this`\n * binding of `thisArg` and the `partials` prepended to those provided to\n * the wrapper.\n *\n * @private\n * @param {Function} func The function to partially apply arguments to.\n * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to the new function.\n * @returns {Function} Returns the new bound function.\n */\n function createPartialWrapper(func, bitmask, thisArg, partials) {\n var isBind = bitmask & BIND_FLAG,\n Ctor = createCtorWrapper(func);\n\n function wrapper() {\n // Avoid `arguments` object use disqualifying optimizations by\n // converting it to an array before providing it `func`.\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength);\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.ceil`, `_.floor`, or `_.round` function.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n precision = precision === undefined ? 0 : (+precision || 0);\n if (precision) {\n precision = pow(10, precision);\n return func(number * precision) / precision;\n }\n return func(number);\n };\n }\n\n /**\n * Creates a `_.sortedIndex` or `_.sortedLastIndex` function.\n *\n * @private\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {Function} Returns the new index function.\n */\n function createSortedIndex(retHighest) {\n return function(array, value, iteratee, thisArg) {\n var callback = getCallback(iteratee);\n return (iteratee == null && callback === baseCallback)\n ? binaryIndex(array, value, retHighest)\n : binaryIndexBy(array, value, callback(iteratee, thisArg, 1), retHighest);\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of flags.\n * The bitmask may be composed of the following flags:\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n length -= (holders ? holders.length : 0);\n if (bitmask & PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func),\n newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n\n if (data) {\n mergeData(newData, data);\n bitmask = newData[1];\n arity = newData[9];\n }\n newData[9] = arity == null\n ? (isBindKey ? 0 : func.length)\n : (nativeMax(arity - length, 0) || 0);\n\n if (bitmask == BIND_FLAG) {\n var result = createBindWrapper(newData[0], newData[2]);\n } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {\n result = createPartialWrapper.apply(undefined, newData);\n } else {\n result = createHybridWrapper.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setter(result, newData);\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing arrays.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var index = -1,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isLoose && othLength > arrLength)) {\n return false;\n }\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index],\n result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;\n\n if (result !== undefined) {\n if (result) {\n continue;\n }\n return false;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (isLoose) {\n if (!arraySome(other, function(othValue) {\n return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);\n })) {\n return false;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag) {\n switch (tag) {\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object)\n ? other != +other\n : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings primitives and string\n // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n return object == (other + '');\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing values.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isLoose) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n var skipCtor = isLoose;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key],\n result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;\n\n // Recursively compare objects (susceptible to call stack limits).\n if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {\n return false;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (!skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Gets the appropriate \"callback\" function. If the `_.callback` method is\n * customized this function returns the custom method, otherwise it returns\n * the `baseCallback` function. If arguments are provided the chosen function\n * is invoked with them and its result is returned.\n *\n * @private\n * @returns {Function} Returns the chosen function or its result.\n */\n function getCallback(func, thisArg, argCount) {\n var result = lodash.callback || callback;\n result = result === callback ? baseCallback : result;\n return argCount ? result(func, thisArg, argCount) : result;\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = func.name,\n array = realNames[result],\n length = array ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the appropriate \"indexOf\" function. If the `_.indexOf` method is\n * customized this function returns the custom method, otherwise it returns\n * the `baseIndexOf` function. If arguments are provided the chosen function\n * is invoked with them and its result is returned.\n *\n * @private\n * @returns {Function|number} Returns the chosen function or its result.\n */\n function getIndexOf(collection, target, fromIndex) {\n var result = lodash.indexOf || indexOf;\n result = result === indexOf ? baseIndexOf : result;\n return collection ? result(collection, target, fromIndex) : result;\n }\n\n /**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\n var getLength = baseProperty('length');\n\n /**\n * Gets the propery names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = pairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add array properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n var Ctor = object.constructor;\n if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {\n Ctor = Object;\n }\n return new Ctor;\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return bufferClone(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n var buffer = object.buffer;\n return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n var result = new Ctor(object.source, reFlags.exec(object));\n result.lastIndex = object.lastIndex;\n }\n return result;\n }\n\n /**\n * Invokes the method at `path` on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function invokePath(object, path, args) {\n if (object != null && !isKey(path, object)) {\n path = toPath(path);\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n path = last(path);\n }\n var func = object == null ? object : object[path];\n return func == null ? undefined : func.apply(object, args);\n }\n\n /**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\n function isArrayLike(value) {\n return value != null && isLength(getLength(value));\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n var type = typeof value;\n if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {\n return true;\n }\n if (isArray(value)) {\n return false;\n }\n var result = !reIsDeepProp.test(value);\n return result || (object != null && value in toObject(object));\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func);\n if (!(funcName in LazyWrapper.prototype)) {\n return false;\n }\n var other = lodash[funcName];\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers required to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`\n * augment function arguments, making the order in which they are executed important,\n * preventing the merging of metadata. However, we make an exception for a safe\n * common case where curried functions have `_.ary` and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < ARY_FLAG;\n\n var isCombo =\n (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) ||\n (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) ||\n (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG);\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = arrayCopy(value);\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use.\n *\n * @private\n * @param {*} objectValue The destination object property value.\n * @param {*} sourceValue The source object property value.\n * @returns {*} Returns the value to assign to the destination object.\n */\n function mergeDefaults(objectValue, sourceValue) {\n return objectValue === undefined ? sourceValue : merge(objectValue, sourceValue, mergeDefaults);\n }\n\n /**\n * A specialized version of `_.pick` which picks `object` properties specified\n * by `props`.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property names to pick.\n * @returns {Object} Returns the new object.\n */\n function pickByArray(object, props) {\n object = toObject(object);\n\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index];\n if (key in object) {\n result[key] = object[key];\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.pick` which picks `object` properties `predicate`\n * returns truthy for.\n *\n * @private\n * @param {Object} object The source object.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Object} Returns the new object.\n */\n function pickByCallback(object, predicate) {\n var result = {};\n baseForIn(object, function(value, key, object) {\n if (predicate(value, key, object)) {\n result[key] = value;\n }\n });\n return result;\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = arrayCopy(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity function\n * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = (function() {\n var count = 0,\n lastCalled = 0;\n\n return function(key, value) {\n var stamp = now(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return key;\n }\n } else {\n count = 0;\n }\n return baseSetData(key, value);\n };\n }());\n\n /**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to an array-like object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Array|Object} Returns the array-like object.\n */\n function toIterable(value) {\n if (value == null) {\n return [];\n }\n if (!isArrayLike(value)) {\n return values(value);\n }\n return isObject(value) ? value : Object(value);\n }\n\n /**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\n function toObject(value) {\n return isObject(value) ? value : Object(value);\n }\n\n /**\n * Converts `value` to property path array if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Array} Returns the property path array.\n */\n function toPath(value) {\n if (isArray(value)) {\n return value;\n }\n var result = [];\n baseToString(value).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n return wrapper instanceof LazyWrapper\n ? wrapper.clone()\n : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `collection` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the new array containing chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if (guard ? isIterateeCall(array, size, guard) : size == null) {\n size = 1;\n } else {\n size = nativeMax(nativeFloor(size) || 1, 1);\n }\n var index = 0,\n length = array ? array.length : 0,\n resIndex = -1,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[++resIndex] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array ? array.length : 0,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[++resIndex] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates an array of unique `array` values not included in the other\n * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The arrays of values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.difference([1, 2, 3], [4, 2]);\n * // => [1, 3]\n */\n var difference = restParam(function(array, values) {\n return (isObjectLike(array) && isArrayLike(array))\n ? baseDifference(array, baseFlatten(values, false, true))\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (guard ? isIterateeCall(array, n, guard) : n == null) {\n n = 1;\n }\n return baseSlice(array, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (guard ? isIterateeCall(array, n, guard) : n == null) {\n n = 1;\n }\n n = length - (+n || 0);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * bound to `thisArg` and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that match the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRightWhile([1, 2, 3], function(n) {\n * return n > 1;\n * });\n * // => [1]\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');\n * // => ['barney', 'fred']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.dropRightWhile(users, 'active', false), 'user');\n * // => ['barney']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.dropRightWhile(users, 'active'), 'user');\n * // => ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate, thisArg) {\n return (array && array.length)\n ? baseWhile(array, getCallback(predicate, thisArg, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * bound to `thisArg` and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropWhile([1, 2, 3], function(n) {\n * return n < 3;\n * });\n * // => [3]\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user');\n * // => ['fred', 'pebbles']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.dropWhile(users, 'active', false), 'user');\n * // => ['pebbles']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.dropWhile(users, 'active'), 'user');\n * // => ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate, thisArg) {\n return (array && array.length)\n ? baseWhile(array, getCallback(predicate, thisArg, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8], '*', 1, 2);\n * // => [4, '*', 8]\n */\n function fill(array, value, start, end) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(chr) {\n * return chr.user == 'barney';\n * });\n * // => 0\n *\n * // using the `_.matches` callback shorthand\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.findIndex(users, 'active', false);\n * // => 0\n *\n * // using the `_.property` callback shorthand\n * _.findIndex(users, 'active');\n * // => 2\n */\n var findIndex = createFindIndex();\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(chr) {\n * return chr.user == 'pebbles';\n * });\n * // => 2\n *\n * // using the `_.matches` callback shorthand\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.findLastIndex(users, 'active', false);\n * // => 2\n *\n * // using the `_.property` callback shorthand\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n var findLastIndex = createFindIndex(true);\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @alias head\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.first([1, 2, 3]);\n * // => 1\n *\n * _.first([]);\n * // => undefined\n */\n function first(array) {\n return array ? array[0] : undefined;\n }\n\n /**\n * Flattens a nested array. If `isDeep` is `true` the array is recursively\n * flattened, otherwise it is only flattened a single level.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {boolean} [isDeep] Specify a deep flatten.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, 3, [4]]]);\n * // => [1, 2, 3, [4]]\n *\n * // using `isDeep`\n * _.flatten([1, [2, 3, [4]]], true);\n * // => [1, 2, 3, 4]\n */\n function flatten(array, isDeep, guard) {\n var length = array ? array.length : 0;\n if (guard && isIterateeCall(array, isDeep, guard)) {\n isDeep = false;\n }\n return length ? baseFlatten(array, isDeep) : [];\n }\n\n /**\n * Recursively flattens a nested array.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to recursively flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, 3, [4]]]);\n * // => [1, 2, 3, 4]\n */\n function flattenDeep(array) {\n var length = array ? array.length : 0;\n return length ? baseFlatten(array, true) : [];\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it is used as the offset\n * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`\n * performs a faster binary search.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {boolean|number} [fromIndex=0] The index to search from or `true`\n * to perform a binary search on a sorted array.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // using `fromIndex`\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n *\n * // performing a binary search\n * _.indexOf([1, 1, 2, 2], 2, true);\n * // => 2\n */\n function indexOf(array, value, fromIndex) {\n var length = array ? array.length : 0;\n if (!length) {\n return -1;\n }\n if (typeof fromIndex == 'number') {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;\n } else if (fromIndex) {\n var index = binaryIndex(array, value);\n if (index < length &&\n (value === value ? (value === array[index]) : (array[index] !== array[index]))) {\n return index;\n }\n return -1;\n }\n return baseIndexOf(array, value, fromIndex || 0);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n return dropRight(array, 1);\n }\n\n /**\n * Creates an array of unique values that are included in all of the provided\n * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of shared values.\n * @example\n * _.intersection([1, 2], [4, 2], [2, 1]);\n * // => [2]\n */\n var intersection = restParam(function(arrays) {\n var othLength = arrays.length,\n othIndex = othLength,\n caches = Array(length),\n indexOf = getIndexOf(),\n isCommon = indexOf == baseIndexOf,\n result = [];\n\n while (othIndex--) {\n var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];\n caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;\n }\n var array = arrays[0],\n index = -1,\n length = array ? array.length : 0,\n seen = caches[0];\n\n outer:\n while (++index < length) {\n value = array[index];\n if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {\n var othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(value);\n }\n result.push(value);\n }\n }\n return result;\n });\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {boolean|number} [fromIndex=array.length-1] The index to search from\n * or `true` to perform a binary search on a sorted array.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // using `fromIndex`\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n *\n * // performing a binary search\n * _.lastIndexOf([1, 1, 2, 2], 2, true);\n * // => 3\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array ? array.length : 0;\n if (!length) {\n return -1;\n }\n var index = length;\n if (typeof fromIndex == 'number') {\n index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1;\n } else if (fromIndex) {\n index = binaryIndex(array, value, true) - 1;\n var other = array[index];\n if (value === value ? (value === other) : (other !== other)) {\n return index;\n }\n return -1;\n }\n if (value !== value) {\n return indexOfNaN(array, index, true);\n }\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Removes all provided values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3, 1, 2, 3];\n *\n * _.pull(array, 2, 3);\n * console.log(array);\n * // => [1, 1]\n */\n function pull() {\n var args = arguments,\n array = args[0];\n\n if (!(array && array.length)) {\n return array;\n }\n var index = 0,\n indexOf = getIndexOf(),\n length = args.length;\n\n while (++index < length) {\n var fromIndex = 0,\n value = args[index];\n\n while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * Removes elements from `array` corresponding to the given indexes and returns\n * an array of the removed elements. Indexes may be specified as an array of\n * indexes or as individual arguments.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove,\n * specified as individual indexes or arrays of indexes.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [5, 10, 15, 20];\n * var evens = _.pullAt(array, 1, 3);\n *\n * console.log(array);\n * // => [5, 15]\n *\n * console.log(evens);\n * // => [10, 20]\n */\n var pullAt = restParam(function(array, indexes) {\n indexes = baseFlatten(indexes);\n\n var result = baseAt(array, indexes);\n basePullAt(array, indexes.sort(baseCompareAscending));\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is bound to\n * `thisArg` and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate, thisArg) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getCallback(predicate, thisArg, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @alias tail\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.rest([1, 2, 3]);\n * // => [2, 3]\n */\n function rest(array) {\n return drop(array, 1);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of `Array#slice` to support node\n * lists in IE < 9 and to ensure dense arrays are returned.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value` should\n * be inserted into `array` in order to maintain its sort order. If an iteratee\n * function is provided it is invoked for `value` and each element of `array`\n * to compute their sort ranking. The iteratee is bound to `thisArg` and\n * invoked with one argument; (value).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n *\n * _.sortedIndex([4, 4, 5, 5], 5);\n * // => 2\n *\n * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };\n *\n * // using an iteratee function\n * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {\n * return this.data[word];\n * }, dict);\n * // => 1\n *\n * // using the `_.property` callback shorthand\n * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');\n * // => 1\n */\n var sortedIndex = createSortedIndex();\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 4, 5, 5], 5);\n * // => 4\n */\n var sortedLastIndex = createSortedIndex(true);\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (guard ? isIterateeCall(array, n, guard) : n == null) {\n n = 1;\n }\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (guard ? isIterateeCall(array, n, guard) : n == null) {\n n = 1;\n }\n n = length - (+n || 0);\n return baseSlice(array, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is bound to `thisArg`\n * and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRightWhile([1, 2, 3], function(n) {\n * return n > 1;\n * });\n * // => [2, 3]\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');\n * // => ['pebbles']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.takeRightWhile(users, 'active', false), 'user');\n * // => ['fred', 'pebbles']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.takeRightWhile(users, 'active'), 'user');\n * // => []\n */\n function takeRightWhile(array, predicate, thisArg) {\n return (array && array.length)\n ? baseWhile(array, getCallback(predicate, thisArg, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is bound to\n * `thisArg` and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeWhile([1, 2, 3], function(n) {\n * return n < 3;\n * });\n * // => [1, 2]\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false},\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user');\n * // => ['barney']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.takeWhile(users, 'active', false), 'user');\n * // => ['barney', 'fred']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.takeWhile(users, 'active'), 'user');\n * // => []\n */\n function takeWhile(array, predicate, thisArg) {\n return (array && array.length)\n ? baseWhile(array, getCallback(predicate, thisArg, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all of the provided arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([1, 2], [4, 2], [2, 1]);\n * // => [1, 2, 4]\n */\n var union = restParam(function(arrays) {\n return baseUniq(baseFlatten(arrays, false, true));\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurence of each element\n * is kept. Providing `true` for `isSorted` performs a faster search algorithm\n * for sorted arrays. If an iteratee function is provided it is invoked for\n * each element in the array to generate the criterion by which uniqueness\n * is computed. The `iteratee` is bound to `thisArg` and invoked with three\n * arguments: (value, index, array).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias unique\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {boolean} [isSorted] Specify the array is sorted.\n * @param {Function|Object|string} [iteratee] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new duplicate-value-free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n *\n * // using `isSorted`\n * _.uniq([1, 1, 2], true);\n * // => [1, 2]\n *\n * // using an iteratee function\n * _.uniq([1, 2.5, 1.5, 2], function(n) {\n * return this.floor(n);\n * }, Math);\n * // => [1, 2.5]\n *\n * // using the `_.property` callback shorthand\n * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniq(array, isSorted, iteratee, thisArg) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (isSorted != null && typeof isSorted != 'boolean') {\n thisArg = iteratee;\n iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;\n isSorted = false;\n }\n var callback = getCallback();\n if (!(iteratee == null && callback === baseCallback)) {\n iteratee = callback(iteratee, thisArg, 3);\n }\n return (isSorted && getIndexOf() == baseIndexOf)\n ? sortedUniq(array, iteratee)\n : baseUniq(array, iteratee);\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]);\n * // => [['fred', 30, true], ['barney', 40, false]]\n *\n * _.unzip(zipped);\n * // => [['fred', 'barney'], [30, 40], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var index = -1,\n length = 0;\n\n array = arrayFilter(array, function(group) {\n if (isArrayLike(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n var result = Array(length);\n while (++index < length) {\n result[index] = arrayMap(array, baseProperty(index));\n }\n return result;\n }\n\n /**\n * This method is like `_.unzip` except that it accepts an iteratee to specify\n * how regrouped values should be combined. The `iteratee` is bound to `thisArg`\n * and invoked with four arguments: (accumulator, value, index, group).\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee] The function to combine regrouped values.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee, thisArg) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n iteratee = bindCallback(iteratee, thisArg, 4);\n return arrayMap(result, function(group) {\n return arrayReduce(group, iteratee, undefined, true);\n });\n }\n\n /**\n * Creates an array excluding all provided values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to filter.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.without([1, 2, 1, 3], 1, 2);\n * // => [3]\n */\n var without = restParam(function(array, values) {\n return isArrayLike(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the provided arrays.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of values.\n * @example\n *\n * _.xor([1, 2], [4, 2]);\n * // => [1, 4]\n */\n function xor() {\n var index = -1,\n length = arguments.length;\n\n while (++index < length) {\n var array = arguments[index];\n if (isArrayLike(array)) {\n var result = result\n ? arrayPush(baseDifference(result, array), baseDifference(array, result))\n : array;\n }\n }\n return result ? baseUniq(result) : [];\n }\n\n /**\n * Creates an array of grouped elements, the first of which contains the first\n * elements of the given arrays, the second of which contains the second elements\n * of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['fred', 'barney'], [30, 40], [true, false]);\n * // => [['fred', 30, true], ['barney', 40, false]]\n */\n var zip = restParam(unzip);\n\n /**\n * The inverse of `_.pairs`; this method returns an object composed from arrays\n * of property names and values. Provide either a single two dimensional array,\n * e.g. `[[key1, value1], [key2, value2]]` or two arrays, one of property names\n * and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @alias object\n * @category Array\n * @param {Array} props The property names.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject([['fred', 30], ['barney', 40]]);\n * // => { 'fred': 30, 'barney': 40 }\n *\n * _.zipObject(['fred', 'barney'], [30, 40]);\n * // => { 'fred': 30, 'barney': 40 }\n */\n function zipObject(props, values) {\n var index = -1,\n length = props ? props.length : 0,\n result = {};\n\n if (length && !values && !isArray(props[0])) {\n values = [];\n }\n while (++index < length) {\n var key = props[index];\n if (values) {\n result[key] = values[index];\n } else if (key) {\n result[key[0]] = key[1];\n }\n }\n return result;\n }\n\n /**\n * This method is like `_.zip` except that it accepts an iteratee to specify\n * how grouped values should be combined. The `iteratee` is bound to `thisArg`\n * and invoked with four arguments: (accumulator, value, index, group).\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee] The function to combine grouped values.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], _.add);\n * // => [111, 222]\n */\n var zipWith = restParam(function(arrays) {\n var length = arrays.length,\n iteratee = length > 2 ? arrays[length - 2] : undefined,\n thisArg = length > 1 ? arrays[length - 1] : undefined;\n\n if (length > 2 && typeof iteratee == 'function') {\n length -= 2;\n } else {\n iteratee = (length > 1 && typeof thisArg == 'function') ? (--length, thisArg) : undefined;\n thisArg = undefined;\n }\n arrays.length = length;\n return unzipWith(arrays, iteratee, thisArg);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object that wraps `value` with explicit method\n * chaining enabled.\n *\n * @static\n * @memberOf _\n * @category Chain\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _.chain(users)\n * .sortBy('age')\n * .map(function(chr) {\n * return chr.user + ' is ' + chr.age;\n * })\n * .first()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor is\n * bound to `thisArg` and invoked with one argument; (value). The purpose of\n * this method is to \"tap into\" a method chain in order to perform operations\n * on intermediate results within the chain.\n *\n * @static\n * @memberOf _\n * @category Chain\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @param {*} [thisArg] The `this` binding of `interceptor`.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor, thisArg) {\n interceptor.call(thisArg, value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n *\n * @static\n * @memberOf _\n * @category Chain\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @param {*} [thisArg] The `this` binding of `interceptor`.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor, thisArg) {\n return interceptor.call(thisArg, value);\n }\n\n /**\n * Enables explicit method chaining on the wrapper object.\n *\n * @name chain\n * @memberOf _\n * @category Chain\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // without explicit chaining\n * _(users).first();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // with explicit chaining\n * _(users).chain()\n * .first()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chained sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @category Chain\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Creates a new array joining a wrapped array with any additional arrays\n * and/or values.\n *\n * @name concat\n * @memberOf _\n * @category Chain\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var wrapped = _(array).concat(2, [3], [[4]]);\n *\n * console.log(wrapped.value());\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n var wrapperConcat = restParam(function(values) {\n values = baseFlatten(values);\n return this.thru(function(array) {\n return arrayConcat(isArray(array) ? array : [toObject(array)], values);\n });\n });\n\n /**\n * Creates a clone of the chained sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @category Chain\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).map(function(value) {\n * return Math.pow(value, 2);\n * });\n *\n * var other = [3, 4];\n * var otherWrapped = wrapped.plant(other);\n *\n * otherWrapped.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * Reverses the wrapped array so the first element becomes the last, the\n * second element becomes the second to last, and so on.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @category Chain\n * @returns {Object} Returns the new reversed `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n\n var interceptor = function(value) {\n return (wrapped && wrapped.__dir__ < 0) ? value : value.reverse();\n };\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(interceptor);\n }\n\n /**\n * Produces the result of coercing the unwrapped value to a string.\n *\n * @name toString\n * @memberOf _\n * @category Chain\n * @returns {string} Returns the coerced string value.\n * @example\n *\n * _([1, 2, 3]).toString();\n * // => '1,2,3'\n */\n function wrapperToString() {\n return (this.value() + '');\n }\n\n /**\n * Executes the chained sequence to extract the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @alias run, toJSON, valueOf\n * @category Chain\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements corresponding to the given keys, or indexes,\n * of `collection`. Keys may be specified as individual arguments or as arrays\n * of keys.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {...(number|number[]|string|string[])} [props] The property names\n * or indexes of elements to pick, specified individually or in arrays.\n * @returns {Array} Returns the new array of picked elements.\n * @example\n *\n * _.at(['a', 'b', 'c'], [0, 2]);\n * // => ['a', 'c']\n *\n * _.at(['barney', 'fred', 'pebbles'], 0, 2);\n * // => ['barney', 'pebbles']\n */\n var at = restParam(function(collection, props) {\n return baseAt(collection, baseFlatten(props));\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` through `iteratee`. The corresponding value\n * of each key is the number of times the key was returned by `iteratee`.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([4.3, 6.1, 6.4], function(n) {\n * return Math.floor(n);\n * });\n * // => { '4': 1, '6': 2 }\n *\n * _.countBy([4.3, 6.1, 6.4], function(n) {\n * return this.floor(n);\n * }, Math);\n * // => { '4': 1, '6': 2 }\n *\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1);\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * The predicate is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias all\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.every(users, 'active', false);\n * // => true\n *\n * // using the `_.property` callback shorthand\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, thisArg) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (thisArg && isIterateeCall(collection, predicate, thisArg)) {\n predicate = undefined;\n }\n if (typeof predicate != 'function' || thisArg !== undefined) {\n predicate = getCallback(predicate, thisArg, 3);\n }\n return func(collection, predicate);\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n * invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias select\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the new filtered array.\n * @example\n *\n * _.filter([4, 5, 6], function(n) {\n * return n % 2 == 0;\n * });\n * // => [4, 6]\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');\n * // => ['barney']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.filter(users, 'active', false), 'user');\n * // => ['fred']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.filter(users, 'active'), 'user');\n * // => ['barney']\n */\n function filter(collection, predicate, thisArg) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n predicate = getCallback(predicate, thisArg, 3);\n return func(collection, predicate);\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n * invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias detect\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.result(_.find(users, function(chr) {\n * return chr.age < 40;\n * }), 'user');\n * // => 'barney'\n *\n * // using the `_.matches` callback shorthand\n * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');\n * // => 'pebbles'\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.result(_.find(users, 'active', false), 'user');\n * // => 'fred'\n *\n * // using the `_.property` callback shorthand\n * _.result(_.find(users, 'active'), 'user');\n * // => 'barney'\n */\n var find = createFind(baseEach);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(baseEachRight, true);\n\n /**\n * Performs a deep comparison between each element in `collection` and the\n * source object, returning the first element that has equivalent property\n * values.\n *\n * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n * numbers, `Object` objects, regexes, and strings. Objects are compared by\n * their own, not inherited, enumerable properties. For comparing a single\n * own or inherited property value see `_.matchesProperty`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Object} source The object of property values to match.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user');\n * // => 'barney'\n *\n * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user');\n * // => 'fred'\n */\n function findWhere(collection, source) {\n return find(collection, baseMatches(source));\n }\n\n /**\n * Iterates over elements of `collection` invoking `iteratee` for each element.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection). Iteratee functions may exit iteration early\n * by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\" property\n * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n * may be used for object iteration.\n *\n * @static\n * @memberOf _\n * @alias each\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array|Object|string} Returns `collection`.\n * @example\n *\n * _([1, 2]).forEach(function(n) {\n * console.log(n);\n * }).value();\n * // => logs each value from left to right and returns the array\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {\n * console.log(n, key);\n * });\n * // => logs each value-key pair and returns the object (iteration order is not guaranteed)\n */\n var forEach = createForEach(arrayEach, baseEach);\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @alias eachRight\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array|Object|string} Returns `collection`.\n * @example\n *\n * _([1, 2]).forEachRight(function(n) {\n * console.log(n);\n * }).value();\n * // => logs each value from right to left and returns the array\n */\n var forEachRight = createForEach(arrayEachRight, baseEachRight);\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` through `iteratee`. The corresponding value\n * of each key is an array of the elements responsible for generating the key.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([4.2, 6.1, 6.4], function(n) {\n * return Math.floor(n);\n * });\n * // => { '4': [4.2], '6': [6.1, 6.4] }\n *\n * _.groupBy([4.2, 6.1, 6.4], function(n) {\n * return this.floor(n);\n * }, Math);\n * // => { '4': [4.2], '6': [6.1, 6.4] }\n *\n * // using the `_.property` callback shorthand\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n result[key] = [value];\n }\n });\n\n /**\n * Checks if `value` is in `collection` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it is used as the offset\n * from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @alias contains, include\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {*} target The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.\n * @returns {boolean} Returns `true` if a matching element is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');\n * // => true\n *\n * _.includes('pebbles', 'eb');\n * // => true\n */\n function includes(collection, target, fromIndex, guard) {\n var length = collection ? getLength(collection) : 0;\n if (!isLength(length)) {\n collection = values(collection);\n length = collection.length;\n }\n if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {\n fromIndex = 0;\n } else {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);\n }\n return (typeof collection == 'string' || !isArray(collection) && isString(collection))\n ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1)\n : (!!length && getIndexOf(collection, target, fromIndex) > -1);\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` through `iteratee`. The corresponding value\n * of each key is the last element responsible for generating the key. The\n * iteratee function is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var keyData = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.indexBy(keyData, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n *\n * _.indexBy(keyData, function(object) {\n * return String.fromCharCode(object.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.indexBy(keyData, function(object) {\n * return this.fromCharCode(object.code);\n * }, String);\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n */\n var indexBy = createAggregator(function(result, value, key) {\n result[key] = value;\n });\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `methodName` is a function it is\n * invoked for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invoke([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invoke = restParam(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n isProp = isKey(path),\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined);\n result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an array of values by running each element in `collection` through\n * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three\n * arguments: (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,\n * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,\n * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,\n * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,\n * `sum`, `uniq`, and `words`\n *\n * @static\n * @memberOf _\n * @alias collect\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function timesThree(n) {\n * return n * 3;\n * }\n *\n * _.map([1, 2], timesThree);\n * // => [3, 6]\n *\n * _.map({ 'a': 1, 'b': 2 }, timesThree);\n * // => [3, 6] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // using the `_.property` callback shorthand\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee, thisArg) {\n var func = isArray(collection) ? arrayMap : baseMap;\n iteratee = getCallback(iteratee, thisArg, 3);\n return func(collection, iteratee);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, while the second of which\n * contains elements `predicate` returns falsey for. The predicate is bound\n * to `thisArg` and invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * _.partition([1, 2, 3], function(n) {\n * return n % 2;\n * });\n * // => [[1, 3], [2]]\n *\n * _.partition([1.2, 2.3, 3.4], function(n) {\n * return this.floor(n) % 2;\n * }, Math);\n * // => [[1.2, 3.4], [2.3]]\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * var mapper = function(array) {\n * return _.pluck(array, 'user');\n * };\n *\n * // using the `_.matches` callback shorthand\n * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper);\n * // => [['pebbles'], ['barney', 'fred']]\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.map(_.partition(users, 'active', false), mapper);\n * // => [['barney', 'pebbles'], ['fred']]\n *\n * // using the `_.property` callback shorthand\n * _.map(_.partition(users, 'active'), mapper);\n * // => [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Gets the property value of `path` from all elements in `collection`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Array|string} path The path of the property to pluck.\n * @returns {Array} Returns the property values.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * _.pluck(users, 'user');\n * // => ['barney', 'fred']\n *\n * var userIndex = _.indexBy(users, 'user');\n * _.pluck(userIndex, 'age');\n * // => [36, 40] (iteration order is not guaranteed)\n */\n function pluck(collection, path) {\n return map(collection, property(path));\n }\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` through `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not provided the first element of `collection` is used as the initial\n * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`,\n * and `sortByOrder`\n *\n * @static\n * @memberOf _\n * @alias foldl, inject\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.reduce([1, 2], function(total, n) {\n * return total + n;\n * });\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {\n * result[key] = n * 3;\n * return result;\n * }, {});\n * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)\n */\n var reduce = createReduce(arrayReduce, baseEach);\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @alias foldr\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n var reduceRight = createReduce(arrayReduceRight, baseEachRight);\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the new filtered array.\n * @example\n *\n * _.reject([1, 2, 3, 4], function(n) {\n * return n % 2 == 0;\n * });\n * // => [1, 3]\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');\n * // => ['barney']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.reject(users, 'active', false), 'user');\n * // => ['fred']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.reject(users, 'active'), 'user');\n * // => ['barney']\n */\n function reject(collection, predicate, thisArg) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n predicate = getCallback(predicate, thisArg, 3);\n return func(collection, function(value, index, collection) {\n return !predicate(value, index, collection);\n });\n }\n\n /**\n * Gets a random element or `n` random elements from a collection.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to sample.\n * @param {number} [n] The number of elements to sample.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {*} Returns the random sample(s).\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n *\n * _.sample([1, 2, 3, 4], 2);\n * // => [3, 1]\n */\n function sample(collection, n, guard) {\n if (guard ? isIterateeCall(collection, n, guard) : n == null) {\n collection = toIterable(collection);\n var length = collection.length;\n return length > 0 ? collection[baseRandom(0, length - 1)] : undefined;\n }\n var index = -1,\n result = toArray(collection),\n length = result.length,\n lastIndex = length - 1;\n\n n = nativeMin(n < 0 ? 0 : (+n || 0), length);\n while (++index < n) {\n var rand = baseRandom(index, lastIndex),\n value = result[rand];\n\n result[rand] = result[index];\n result[index] = value;\n }\n result.length = n;\n return result;\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n return sample(collection, POSITIVE_INFINITY);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable properties for objects.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the size of `collection`.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n var length = collection ? getLength(collection) : 0;\n return isLength(length) ? length : keys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * The function returns as soon as it finds a passing value and does not iterate\n * over the entire collection. The predicate is bound to `thisArg` and invoked\n * with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias any\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.some(users, 'active', false);\n * // => true\n *\n * // using the `_.property` callback shorthand\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, thisArg) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (thisArg && isIterateeCall(collection, predicate, thisArg)) {\n predicate = undefined;\n }\n if (typeof predicate != 'function' || thisArg !== undefined) {\n predicate = getCallback(predicate, thisArg, 3);\n }\n return func(collection, predicate);\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection through `iteratee`. This method performs\n * a stable sort, that is, it preserves the original sort order of equal elements.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * _.sortBy([1, 2, 3], function(n) {\n * return Math.sin(n);\n * });\n * // => [3, 1, 2]\n *\n * _.sortBy([1, 2, 3], function(n) {\n * return this.sin(n);\n * }, Math);\n * // => [3, 1, 2]\n *\n * var users = [\n * { 'user': 'fred' },\n * { 'user': 'pebbles' },\n * { 'user': 'barney' }\n * ];\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.sortBy(users, 'user'), 'user');\n * // => ['barney', 'fred', 'pebbles']\n */\n function sortBy(collection, iteratee, thisArg) {\n if (collection == null) {\n return [];\n }\n if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n iteratee = undefined;\n }\n var index = -1;\n iteratee = getCallback(iteratee, thisArg, 3);\n\n var result = baseMap(collection, function(value, key, collection) {\n return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value };\n });\n return baseSortBy(result, compareAscending);\n }\n\n /**\n * This method is like `_.sortBy` except that it can sort by multiple iteratees\n * or property names.\n *\n * If a property name is provided for an iteratee the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If an object is provided for an iteratee the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees\n * The iteratees to sort by, specified as individual values or arrays of values.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 42 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.map(_.sortByAll(users, ['user', 'age']), _.values);\n * // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]\n *\n * _.map(_.sortByAll(users, 'user', function(chr) {\n * return Math.floor(chr.age / 10);\n * }), _.values);\n * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]\n */\n var sortByAll = restParam(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var guard = iteratees[2];\n if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) {\n iteratees.length = 1;\n }\n return baseSortByOrder(collection, baseFlatten(iteratees), []);\n });\n\n /**\n * This method is like `_.sortByAll` except that it allows specifying the\n * sort orders of the iteratees to sort by. If `orders` is unspecified, all\n * values are sorted in ascending order. Otherwise, a value is sorted in\n * ascending order if its corresponding order is \"asc\", and descending if \"desc\".\n *\n * If a property name is provided for an iteratee the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If an object is provided for an iteratee the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {boolean[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 42 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // sort by `user` in ascending order and by `age` in descending order\n * _.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values);\n * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]\n */\n function sortByOrder(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (guard && isIterateeCall(iteratees, orders, guard)) {\n orders = undefined;\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseSortByOrder(collection, iteratees, orders);\n }\n\n /**\n * Performs a deep comparison between each element in `collection` and the\n * source object, returning an array of all elements that have equivalent\n * property values.\n *\n * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n * numbers, `Object` objects, regexes, and strings. Objects are compared by\n * their own, not inherited, enumerable properties. For comparing a single\n * own or inherited property value see `_.matchesProperty`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Object} source The object of property values to match.\n * @returns {Array} Returns the new filtered array.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] },\n * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] }\n * ];\n *\n * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user');\n * // => ['barney']\n *\n * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user');\n * // => ['fred']\n */\n function where(collection, source) {\n return filter(collection, baseMatches(source));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the number of milliseconds that have elapsed since the Unix epoch\n * (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @category Date\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => logs the number of milliseconds it took for the deferred function to be invoked\n */\n var now = nativeNow || function() {\n return new Date().getTime();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it is called `n` or more times.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => logs 'done saving!' after the two async saves have completed\n */\n function after(n, func) {\n if (typeof func != 'function') {\n if (typeof n == 'function') {\n var temp = n;\n n = func;\n func = temp;\n } else {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n }\n n = nativeIsFinite(n = +n) ? n : 0;\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that accepts up to `n` arguments ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Function} Returns the new function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n if (guard && isIterateeCall(func, n, guard)) {\n n = undefined;\n }\n n = (func && n == null) ? func.length : nativeMax(+n || 0, 0);\n return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it is called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery('#add').on('click', _.before(5, addContactToList));\n * // => allows adding up to 4 contacts to the list\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n if (typeof n == 'function') {\n var temp = n;\n n = func;\n func = temp;\n } else {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n }\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and prepends any additional `_.bind` arguments to those provided to the\n * bound function.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind` this method does not set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var greet = function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * };\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // using placeholders\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = restParam(function(func, thisArg, partials) {\n var bitmask = BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, bind.placeholder);\n bitmask |= PARTIAL_FLAG;\n }\n return createWrapper(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method. Method names may be specified as individual arguments or as arrays\n * of method names. If no method names are provided all enumerable function\n * properties, own and inherited, of `object` are bound.\n *\n * **Note:** This method does not set the \"length\" property of bound functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} [methodNames] The object method names to bind,\n * specified as individual method names or arrays of method names.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'onClick': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view);\n * jQuery('#docs').on('click', view.onClick);\n * // => logs 'clicked docs' when the element is clicked\n */\n var bindAll = restParam(function(object, methodNames) {\n methodNames = methodNames.length ? baseFlatten(methodNames) : functions(object);\n\n var index = -1,\n length = methodNames.length;\n\n while (++index < length) {\n var key = methodNames[index];\n object[key] = createWrapper(object[key], BIND_FLAG, object);\n }\n return object;\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` and prepends\n * any additional `_.bindKey` arguments to those provided to the bound function.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist.\n * See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Object} object The object the method belongs to.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // using placeholders\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = restParam(function(object, key, partials) {\n var bitmask = BIND_FLAG | BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, bindKey.placeholder);\n bitmask |= PARTIAL_FLAG;\n }\n return createWrapper(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts one or more arguments of `func` that when\n * called either invokes `func` returning its result, if all `func` arguments\n * have been provided, or returns a function that accepts one or more of the\n * remaining `func` arguments, and so on. The arity of `func` may be specified\n * if `func.length` is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method does not set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // using placeholders\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n var curry = createCurry(CURRY_FLAG);\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method does not set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // using placeholders\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n var curryRight = createCurry(CURRY_RIGHT_FLAG);\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it is invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\n function debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it is invoked.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke the function with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // logs 'deferred' after one or more milliseconds\n */\n var defer = restParam(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it is invoked.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke the function with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => logs 'later' after one second\n */\n var delay = restParam(function(func, wait, args) {\n return baseDelay(func, wait, args);\n });\n\n /**\n * Creates a function that returns the result of invoking the provided\n * functions with the `this` binding of the created function, where each\n * successive invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {...Function} [funcs] Functions to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow(_.add, square);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the provided functions from right to left.\n *\n * @static\n * @memberOf _\n * @alias backflow, compose\n * @category Function\n * @param {...Function} [funcs] Functions to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight(square, _.add);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is coerced to a string and used as the\n * cache key. The `func` is invoked with the `this` binding of the memoized\n * function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoizing function.\n * @example\n *\n * var upperCase = _.memoize(function(string) {\n * return string.toUpperCase();\n * });\n *\n * upperCase('fred');\n * // => 'FRED'\n *\n * // modifying the result cache\n * upperCase.cache.set('fred', 'BARNEY');\n * upperCase('fred');\n * // => 'BARNEY'\n *\n * // replacing `_.memoize.Cache`\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'barney' };\n * var identity = _.memoize(_.identity);\n *\n * identity(object);\n * // => { 'user': 'fred' }\n * identity(other);\n * // => { 'user': 'fred' }\n *\n * _.memoize.Cache = WeakMap;\n * var identity = _.memoize(_.identity);\n *\n * identity(object);\n * // => { 'user': 'fred' }\n * identity(other);\n * // => { 'user': 'barney' }\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new memoize.Cache;\n return memoized;\n }\n\n /**\n * Creates a function that runs each argument through a corresponding\n * transform function.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms] The functions to transform\n * arguments, specified as individual functions or arrays of functions.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var modded = _.modArgs(function(x, y) {\n * return [x, y];\n * }, square, doubled);\n *\n * modded(1, 2);\n * // => [1, 4]\n *\n * modded(5, 10);\n * // => [25, 20]\n */\n var modArgs = restParam(function(func, transforms) {\n transforms = baseFlatten(transforms);\n if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = transforms.length;\n return restParam(function(args) {\n var index = nativeMin(args.length, length);\n while (index--) {\n args[index] = transforms[index](args[index]);\n }\n return func.apply(this, args);\n });\n });\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n return !predicate.apply(this, arguments);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first call. The `func` is invoked\n * with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // `initialize` invokes `createApplication` once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with `partial` arguments prepended\n * to those provided to the new function. This method is like `_.bind` except\n * it does **not** alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method does not set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * var greet = function(greeting, name) {\n * return greeting + ' ' + name;\n * };\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // using placeholders\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = createPartial(PARTIAL_FLAG);\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to those provided to the new function.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method does not set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * var greet = function(greeting, name) {\n * return greeting + ' ' + name;\n * };\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // using placeholders\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = createPartial(PARTIAL_RIGHT_FLAG);\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified indexes where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes,\n * specified as individual indexes or arrays of indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, 2, 0, 1);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n *\n * var map = _.rearg(_.map, [1, 0]);\n * map(function(n) {\n * return n * 3;\n * }, [1, 2, 3]);\n * // => [3, 6, 9]\n */\n var rearg = restParam(function(func, indexes) {\n return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes));\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the created\n * function and an array of arguments much like [`Function#apply`](https://es5.github.io/#x15.3.4.3).\n *\n * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * // with a Promise\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function(array) {\n return func.apply(this, array);\n };\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n }\n\n /**\n * Creates a function that provides `value` to the wrapper function as its\n * first argument. Any additional arguments provided to the function are\n * appended to those provided to the wrapper function. The wrapper is invoked\n * with the `this` binding of the created function.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} wrapper The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n wrapper = wrapper == null ? identity : wrapper;\n return createWrapper(wrapper, PARTIAL_FLAG, undefined, [value], []);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,\n * otherwise they are assigned by reference. If `customizer` is provided it is\n * invoked to produce the cloned values. If `customizer` returns `undefined`\n * cloning is handled by the method instead. The `customizer` is bound to\n * `thisArg` and invoked with two argument; (value [, index|key, object]).\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).\n * The enumerable properties of `arguments` objects and objects created by\n * constructors other than `Object` are cloned to plain `Object` objects. An\n * empty object is returned for uncloneable values such as functions, DOM nodes,\n * Maps, Sets, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {Function} [customizer] The function to customize cloning values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {*} Returns the cloned value.\n * @example\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * var shallow = _.clone(users);\n * shallow[0] === users[0];\n * // => true\n *\n * var deep = _.clone(users, true);\n * deep[0] === users[0];\n * // => false\n *\n * // using a customizer callback\n * var el = _.clone(document.body, function(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * });\n *\n * el === document.body\n * // => false\n * el.nodeName\n * // => BODY\n * el.childNodes.length;\n * // => 0\n */\n function clone(value, isDeep, customizer, thisArg) {\n if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {\n isDeep = false;\n }\n else if (typeof isDeep == 'function') {\n thisArg = customizer;\n customizer = isDeep;\n isDeep = false;\n }\n return typeof customizer == 'function'\n ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1))\n : baseClone(value, isDeep);\n }\n\n /**\n * Creates a deep clone of `value`. If `customizer` is provided it is invoked\n * to produce the cloned values. If `customizer` returns `undefined` cloning\n * is handled by the method instead. The `customizer` is bound to `thisArg`\n * and invoked with two argument; (value [, index|key, object]).\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).\n * The enumerable properties of `arguments` objects and objects created by\n * constructors other than `Object` are cloned to plain `Object` objects. An\n * empty object is returned for uncloneable values such as functions, DOM nodes,\n * Maps, Sets, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to deep clone.\n * @param {Function} [customizer] The function to customize cloning values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {*} Returns the deep cloned value.\n * @example\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * var deep = _.cloneDeep(users);\n * deep[0] === users[0];\n * // => false\n *\n * // using a customizer callback\n * var el = _.cloneDeep(document.body, function(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * });\n *\n * el === document.body\n * // => false\n * el.nodeName\n * // => BODY\n * el.childNodes.length;\n * // => 20\n */\n function cloneDeep(value, customizer, thisArg) {\n return typeof customizer == 'function'\n ? baseClone(value, true, bindCallback(customizer, thisArg, 1))\n : baseClone(value, true);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`, else `false`.\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n function gt(value, other) {\n return value > other;\n }\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to `other`, else `false`.\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n function gte(value, other) {\n return value >= other;\n }\n\n /**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\n var isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n };\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false || (isObjectLike(value) && objToString.call(value) == boolTag);\n }\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n function isDate(value) {\n return isObjectLike(value) && objToString.call(value) == dateTag;\n }\n\n /**\n * Checks if `value` is a DOM element.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is empty. A value is considered empty unless it is an\n * `arguments` object, array, string, or jQuery-like collection with a length\n * greater than `0` or an object with own enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {Array|Object|string} value The value to inspect.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) ||\n (isObjectLike(value) && isFunction(value.splice)))) {\n return !value.length;\n }\n return !keys(value).length;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent. If `customizer` is provided it is invoked to compare values.\n * If `customizer` returns `undefined` comparisons are handled by the method\n * instead. The `customizer` is bound to `thisArg` and invoked with three\n * arguments: (value, other [, index|key]).\n *\n * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n * numbers, `Object` objects, regexes, and strings. Objects are compared by\n * their own, not inherited, enumerable properties. Functions and DOM nodes\n * are **not** supported. Provide a customizer function to extend support\n * for comparing other values.\n *\n * @static\n * @memberOf _\n * @alias eq\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize value comparisons.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * object == other;\n * // => false\n *\n * _.isEqual(object, other);\n * // => true\n *\n * // using a customizer callback\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqual(array, other, function(value, other) {\n * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {\n * return true;\n * }\n * });\n * // => true\n */\n function isEqual(value, other, customizer, thisArg) {\n customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n return isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag;\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on [`Number.isFinite`](http://ecma-international.org/ecma-262/6.0/#sec-number.isfinite).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(10);\n * // => true\n *\n * _.isFinite('10');\n * // => false\n *\n * _.isFinite(true);\n * // => false\n *\n * _.isFinite(Object(10));\n * // => false\n *\n * _.isFinite(Infinity);\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n }\n\n /**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\n function isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Performs a deep comparison between `object` and `source` to determine if\n * `object` contains equivalent property values. If `customizer` is provided\n * it is invoked to compare values. If `customizer` returns `undefined`\n * comparisons are handled by the method instead. The `customizer` is bound\n * to `thisArg` and invoked with three arguments: (value, other, index|key).\n *\n * **Note:** This method supports comparing properties of arrays, booleans,\n * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions\n * and DOM nodes are **not** supported. Provide a customizer function to extend\n * support for comparing other values.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize value comparisons.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'user': 'fred', 'age': 40 };\n *\n * _.isMatch(object, { 'age': 40 });\n * // => true\n *\n * _.isMatch(object, { 'age': 36 });\n * // => false\n *\n * // using a customizer callback\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatch(object, source, function(value, other) {\n * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;\n * });\n * // => true\n */\n function isMatch(object, source, customizer, thisArg) {\n customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;\n return baseIsMatch(object, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is not the same as [`isNaN`](https://es5.github.io/#x15.1.2.4)\n * which returns `true` for `undefined` and other non-numeric values.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some host objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(8.4);\n * // => true\n *\n * _.isNumber(NaN);\n * // => true\n *\n * _.isNumber('8.4');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n function isRegExp(value) {\n return isObject(value) && objToString.call(value) == regexpTag;\n }\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n function isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n }\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`, else `false`.\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n function lt(value, other) {\n return value < other;\n }\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to `other`, else `false`.\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n function lte(value, other) {\n return value <= other;\n }\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * (function() {\n * return _.toArray(arguments).slice(1);\n * }(1, 2, 3));\n * // => [2, 3]\n */\n function toArray(value) {\n var length = value ? getLength(value) : 0;\n if (!isLength(length)) {\n return values(value);\n }\n if (!length) {\n return [];\n }\n return arrayCopy(value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it is invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\n var merge = createAssigner(baseMerge);\n\n /**\n * Assigns own enumerable properties of source object(s) to the destination\n * object. Subsequent sources overwrite property assignments of previous sources.\n * If `customizer` is provided it is invoked to produce the assigned values.\n * The `customizer` is bound to `thisArg` and invoked with five arguments:\n * (objectValue, sourceValue, key, object, source).\n *\n * **Note:** This method mutates `object` and is based on\n * [`Object.assign`](http://ecma-international.org/ecma-262/6.0/#sec-object.assign).\n *\n * @static\n * @memberOf _\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });\n * // => { 'user': 'fred', 'age': 40 }\n *\n * // using a customizer callback\n * var defaults = _.partialRight(_.assign, function(value, other) {\n * return _.isUndefined(value) ? other : value;\n * });\n *\n * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\n var assign = createAssigner(function(object, source, customizer) {\n return customizer\n ? assignWith(object, source, customizer)\n : baseAssign(object, source);\n });\n\n /**\n * Creates an object that inherits from the given `prototype` object. If a\n * `properties` object is provided its own enumerable properties are assigned\n * to the created object.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties, guard) {\n var result = baseCreate(prototype);\n if (guard && isIterateeCall(prototype, properties, guard)) {\n properties = undefined;\n }\n return properties ? baseAssign(result, properties) : result;\n }\n\n /**\n * Assigns own enumerable properties of source object(s) to the destination\n * object for all destination properties that resolve to `undefined`. Once a\n * property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\n var defaults = createDefaults(assign, assignDefaults);\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } });\n * // => { 'user': { 'name': 'barney', 'age': 36 } }\n *\n */\n var defaultsDeep = createDefaults(merge, mergeDefaults);\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {string|undefined} Returns the key of the matched element, else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(chr) {\n * return chr.age < 40;\n * });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // using the `_.matches` callback shorthand\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.findKey(users, 'active', false);\n * // => 'fred'\n *\n * // using the `_.property` callback shorthand\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n var findKey = createFindKey(baseForOwn);\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {string|undefined} Returns the key of the matched element, else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(chr) {\n * return chr.age < 40;\n * });\n * // => returns `pebbles` assuming `_.findKey` returns `barney`\n *\n * // using the `_.matches` callback shorthand\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.findLastKey(users, 'active', false);\n * // => 'fred'\n *\n * // using the `_.property` callback shorthand\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n var findLastKey = createFindKey(baseForOwnRight);\n\n /**\n * Iterates over own and inherited enumerable properties of an object invoking\n * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed)\n */\n var forIn = createForIn(baseFor);\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c'\n */\n var forInRight = createForIn(baseForRight);\n\n /**\n * Iterates over own enumerable properties of an object invoking `iteratee`\n * for each property. The `iteratee` is bound to `thisArg` and invoked with\n * three arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'a' and 'b' (iteration order is not guaranteed)\n */\n var forOwn = createForOwn(baseForOwn);\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b'\n */\n var forOwnRight = createForOwn(baseForOwnRight);\n\n /**\n * Creates an array of function property names from all enumerable properties,\n * own and inherited, of `object`.\n *\n * @static\n * @memberOf _\n * @alias methods\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the new array of property names.\n * @example\n *\n * _.functions(_);\n * // => ['after', 'ary', 'assign', ...]\n */\n function functions(object) {\n return baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the property value at `path` of `object`. If the resolved value is\n * `undefined` the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, toPath(path), path + '');\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` is a direct property, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': { 'c': 3 } } };\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b.c');\n * // => true\n *\n * _.has(object, ['a', 'b', 'c']);\n * // => true\n */\n function has(object, path) {\n if (object == null) {\n return false;\n }\n var result = hasOwnProperty.call(object, path);\n if (!result && !isKey(path)) {\n path = toPath(path);\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n if (object == null) {\n return false;\n }\n path = last(path);\n result = hasOwnProperty.call(object, path);\n }\n return result || (isLength(object.length) && isIndex(path, object.length) &&\n (isArray(object) || isArguments(object)));\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite property\n * assignments of previous values unless `multiValue` is `true`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to invert.\n * @param {boolean} [multiValue] Allow multiple values per key.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n *\n * // with `multiValue`\n * _.invert(object, true);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function invert(object, multiValue, guard) {\n if (guard && isIterateeCall(object, multiValue, guard)) {\n multiValue = undefined;\n }\n var index = -1,\n props = keys(object),\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index],\n value = object[key];\n\n if (multiValue) {\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n else {\n result[value] = key;\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n var keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object != 'function' && isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n };\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n isProto = typeof Ctor == 'function' && Ctor.prototype === object,\n result = Array(length),\n skipIndexes = length > 0;\n\n while (++index < length) {\n result[index] = (index + '');\n }\n for (var key in object) {\n if (!(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * property of `object` through `iteratee`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the new mapped object.\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n var mapKeys = createObjectMapper(true);\n\n /**\n * Creates an object with the same keys as `object` and values generated by\n * running each own enumerable property of `object` through `iteratee`. The\n * iteratee function is bound to `thisArg` and invoked with three arguments:\n * (value, key, object).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the new mapped object.\n * @example\n *\n * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {\n * return n * 3;\n * });\n * // => { 'a': 3, 'b': 6 }\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * // using the `_.property` callback shorthand\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n var mapValues = createObjectMapper();\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable properties of `object` that are not omitted.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|...(string|string[])} [predicate] The function invoked per\n * iteration or property names to omit, specified as individual property\n * names or arrays of property names.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'user': 'fred', 'age': 40 };\n *\n * _.omit(object, 'age');\n * // => { 'user': 'fred' }\n *\n * _.omit(object, _.isNumber);\n * // => { 'user': 'fred' }\n */\n var omit = restParam(function(object, props) {\n if (object == null) {\n return {};\n }\n if (typeof props[0] != 'function') {\n var props = arrayMap(baseFlatten(props), String);\n return pickByArray(object, baseDifference(keysIn(object), props));\n }\n var predicate = bindCallback(props[0], props[1], 3);\n return pickByCallback(object, function(value, key, object) {\n return !predicate(value, key, object);\n });\n });\n\n /**\n * Creates a two dimensional array of the key-value pairs for `object`,\n * e.g. `[[key1, value1], [key2, value2]]`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the new array of key-value pairs.\n * @example\n *\n * _.pairs({ 'barney': 36, 'fred': 40 });\n * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)\n */\n function pairs(object) {\n object = toObject(object);\n\n var index = -1,\n props = keys(object),\n length = props.length,\n result = Array(length);\n\n while (++index < length) {\n var key = props[index];\n result[index] = [key, object[key]];\n }\n return result;\n }\n\n /**\n * Creates an object composed of the picked `object` properties. Property\n * names may be specified as individual arguments or as arrays of property\n * names. If `predicate` is provided it is invoked for each property of `object`\n * picking the properties `predicate` returns truthy for. The predicate is\n * bound to `thisArg` and invoked with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|...(string|string[])} [predicate] The function invoked per\n * iteration or property names to pick, specified as individual property\n * names or arrays of property names.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'user': 'fred', 'age': 40 };\n *\n * _.pick(object, 'user');\n * // => { 'user': 'fred' }\n *\n * _.pick(object, _.isString);\n * // => { 'user': 'fred' }\n */\n var pick = restParam(function(object, props) {\n if (object == null) {\n return {};\n }\n return typeof props[0] == 'function'\n ? pickByCallback(object, bindCallback(props[0], props[1], 3))\n : pickByArray(object, baseFlatten(props));\n });\n\n /**\n * This method is like `_.get` except that if the resolved value is a function\n * it is invoked with the `this` binding of its parent object and its result\n * is returned.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a.b.c', 'default');\n * // => 'default'\n *\n * _.result(object, 'a.b.c', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n var result = object == null ? undefined : object[path];\n if (result === undefined) {\n if (object != null && !isKey(path, object)) {\n path = toPath(path);\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n result = object == null ? undefined : object[last(path)];\n }\n result = result === undefined ? defaultValue : result;\n }\n return isFunction(result) ? result.call(object) : result;\n }\n\n /**\n * Sets the property value of `path` on `object`. If a portion of `path`\n * does not exist it is created.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to augment.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, 'x[0].y.z', 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n if (object == null) {\n return object;\n }\n var pathKey = (path + '');\n path = (object[pathKey] != null || isKey(path, object)) ? [pathKey] : toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = path[index];\n if (isObject(nested)) {\n if (index == lastIndex) {\n nested[key] = value;\n } else if (nested[key] == null) {\n nested[key] = isIndex(path[index + 1]) ? [] : {};\n }\n }\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own enumerable\n * properties through `iteratee`, with each invocation potentially mutating\n * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked\n * with four arguments: (accumulator, value, key, object). Iteratee functions\n * may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * });\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) {\n * result[key] = n * 3;\n * });\n * // => { 'a': 3, 'b': 6 }\n */\n function transform(object, iteratee, accumulator, thisArg) {\n var isArr = isArray(object) || isTypedArray(object);\n iteratee = getCallback(iteratee, thisArg, 4);\n\n if (accumulator == null) {\n if (isArr || isObject(object)) {\n var Ctor = object.constructor;\n if (isArr) {\n accumulator = isArray(object) ? new Ctor : [];\n } else {\n accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined);\n }\n } else {\n accumulator = {};\n }\n }\n (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Creates an array of the own enumerable property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable property values\n * of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Checks if `n` is between `start` and up to but not including, `end`. If\n * `end` is not specified it is set to `start` with `start` then set to `0`.\n *\n * @static\n * @memberOf _\n * @category Number\n * @param {number} n The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `n` is in the range, else `false`.\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n */\n function inRange(value, start, end) {\n start = +start || 0;\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = +end || 0;\n }\n return value >= nativeMin(start, end) && value < nativeMax(start, end);\n }\n\n /**\n * Produces a random number between `min` and `max` (inclusive). If only one\n * argument is provided a number between `0` and the given number is returned.\n * If `floating` is `true`, or either `min` or `max` are floats, a floating-point\n * number is returned instead of an integer.\n *\n * @static\n * @memberOf _\n * @category Number\n * @param {number} [min=0] The minimum possible value.\n * @param {number} [max=1] The maximum possible value.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(min, max, floating) {\n if (floating && isIterateeCall(min, max, floating)) {\n max = floating = undefined;\n }\n var noMin = min == null,\n noMax = max == null;\n\n if (floating == null) {\n if (noMax && typeof min == 'boolean') {\n floating = min;\n min = 1;\n }\n else if (typeof max == 'boolean') {\n floating = max;\n noMax = true;\n }\n }\n if (noMin && noMax) {\n max = 1;\n noMax = false;\n }\n min = +min || 0;\n if (noMax) {\n max = min;\n min = 0;\n } else {\n max = +max || 0;\n }\n if (floating || min % 1 || max % 1) {\n var rand = nativeRandom();\n return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max);\n }\n return baseRandom(min, max);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar');\n * // => 'fooBar'\n *\n * _.camelCase('__foo_bar__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word);\n });\n\n /**\n * Capitalizes the first character of `string`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('fred');\n * // => 'Fred'\n */\n function capitalize(string) {\n string = baseToString(string);\n return string && (string.charAt(0).toUpperCase() + string.slice(1));\n }\n\n /**\n * Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * to basic latin letters and removing [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = baseToString(string);\n return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to search.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search from.\n * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = baseToString(string);\n target = (target + '');\n\n var length = string.length;\n position = position === undefined\n ? length\n : nativeMin(position < 0 ? 0 : (+position || 0), length);\n\n position -= target.length;\n return position >= 0 && string.indexOf(target, position) == position;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', \"'\", and \"\\`\", in `string` to\n * their corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional characters\n * use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value.\n * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * Backticks are escaped because in Internet Explorer < 9, they can break out\n * of attribute values or HTML comments. See [#59](https://html5sec.org/#59),\n * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and\n * [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/)\n * for more details.\n *\n * When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping)\n * to reduce XSS vectors.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n // Reset `lastIndex` because in IE < 9 `String#replace` does not.\n string = baseToString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"\\\", \"/\", \"^\", \"$\", \".\", \"|\", \"?\",\n * \"*\", \"+\", \"(\", \")\", \"[\", \"]\", \"{\" and \"}\" in `string`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https:\\/\\/lodash\\.com\\/\\)'\n */\n function escapeRegExp(string) {\n string = baseToString(string);\n return (string && reHasRegExpChars.test(string))\n ? string.replace(reRegExpChars, escapeRegExpChar)\n : (string || '(?:)');\n }\n\n /**\n * Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__foo_bar__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = baseToString(string);\n length = +length;\n\n var strLength = string.length;\n if (strLength >= length || !nativeIsFinite(length)) {\n return string;\n }\n var mid = (length - strLength) / 2,\n leftLength = nativeFloor(mid),\n rightLength = nativeCeil(mid);\n\n chars = createPadding('', rightLength, chars);\n return chars.slice(0, leftLength) + string + chars;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padLeft('abc', 6);\n * // => ' abc'\n *\n * _.padLeft('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padLeft('abc', 3);\n * // => 'abc'\n */\n var padLeft = createPadDir();\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padRight('abc', 6);\n * // => 'abc '\n *\n * _.padRight('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padRight('abc', 3);\n * // => 'abc'\n */\n var padRight = createPadDir(true);\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal,\n * in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the [ES5 implementation](https://es5.github.io/#E)\n * of `parseInt`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`.\n // Chrome fails to trim leading whitespace characters.\n // See https://code.google.com/p/v8/issues/detail?id=3109 for more details.\n if (guard ? isIterateeCall(string, radix, guard) : radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n string = trim(string);\n return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10));\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=0] The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n) {\n var result = '';\n string = baseToString(string);\n n = +n;\n if (n < 1 || !string || !nativeIsFinite(n)) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n string += string;\n } while (n);\n\n return result;\n }\n\n /**\n * Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--foo-bar');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__foo_bar__');\n * // => 'Foo Bar'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1));\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to search.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = baseToString(string);\n position = position == null\n ? 0\n : nativeMin(position < 0 ? 0 : (+position || 0), string.length);\n\n return string.lastIndexOf(target, position) == position;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is provided it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options] The options object.\n * @param {RegExp} [options.escape] The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate] The \"evaluate\" delimiter.\n * @param {Object} [options.imports] An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate] The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL] The sourceURL of the template's compiled source.\n * @param {string} [options.variable] The data object variable name.\n * @param- {Object} [otherOptions] Enables the legacy `options` param signature.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // using the \"interpolate\" delimiter to create a compiled template\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // using the HTML \"escape\" delimiter to escape data property values\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '