UNPKG

vue-cesium-jyt

Version:
1 lines 35 kB
{"version":3,"file":"SuperMapImageryProvider.mjs","sources":["../../../../../../packages/components/providers/supermap/SuperMapImageryProvider.ts"],"sourcesContent":["import IndexedDBScheduler from './IndexedDBScheduler'\nclass SuperMapImageryProvider {\n tablename: string\n _indexedDBScheduler: any\n _indexedDBSetting: {\n isOpen: boolean\n clear: () => void\n }\n isSci: boolean\n isTileMap: boolean\n layersID: string\n _url: string\n _resource: any\n _transparent: boolean\n _name: string\n _urlTemplate: string\n _errorEvent: any\n _fileExtension: string\n _tileWidth: number\n _tileHeight: number\n _minimumLevel: number\n _maximumLevel: number\n _rectangle: any\n _tilingScheme: any\n _tileDiscardPolicy: any\n _fRatio: any\n _scales: any[]\n _coordUnit: string\n _credit: any\n _ready: boolean\n _readyPromise: any\n _options: any\n constructor(options) {\n const { appendForwardSlash, Credit, defaultValue, defined, DeveloperError, Event, Resource, when, Math } = Cesium\n options = defaultValue(options, {})\n const { url } = options\n if (!defined(url)) {\n throw new DeveloperError('options.url is required.')\n }\n const rootNodeUrlRealspace3D = url.substring(0, url.indexOf('datas'))\n this.tablename = url.substring(0, url.indexOf('datas/') + 6, url.length)\n const that = this\n const dbPromise = new IndexedDBScheduler({\n name: rootNodeUrlRealspace3D + this.tablename\n })\n ;(dbPromise as any).then(e => {\n that._indexedDBScheduler = e\n })\n this._indexedDBSetting = {\n isOpen: false,\n clear: () => {\n that._indexedDBScheduler.clear(that.tablename)\n }\n }\n this.isSci = false\n this.isTileMap = false\n const forwardSlashUrl = appendForwardSlash(url)\n if (forwardSlashUrl.indexOf('rest/maps') > -1) {\n this.isTileMap = true\n this.layersID = options.layersID\n } else {\n if (!(forwardSlashUrl.indexOf('rest/realspace') > -1)) {\n throw new DeveloperError('The url type is not supported!')\n }\n this.isSci = true\n this.layersID = undefined!\n }\n this._url = forwardSlashUrl\n this._resource = (Resource as any).createIfNeeded(forwardSlashUrl)\n this._transparent = defaultValue(options.transparent, true)\n this._name = options.name || ''\n this._urlTemplate = undefined!\n this._errorEvent = new Event()\n this._fileExtension = 'png'\n this._tileWidth = 256\n this._tileHeight = 256\n this._minimumLevel = defaultValue(options.minimumLevel, 0)\n this._maximumLevel = options.maximumLevel\n this._rectangle = undefined\n this._tilingScheme = undefined\n this._tileDiscardPolicy = options.tileDiscardPolicy\n this._fRatio = defaultValue(options.ratio, Math.DEGREES_PER_RADIAN / 6378137.0)\n this._scales = []\n this._coordUnit = 'DEGREE'\n let credit = defaultValue(options.credit, new Credit('MapQuest, SuperMap iServer Imagery'))\n if (typeof credit === 'string') {\n credit = new Credit(credit)\n }\n this._credit = credit\n this._ready = false\n this._readyPromise = when.defer()\n this._options = options\n init.call(this)\n }\n\n get url() {\n return this._url\n }\n\n get name() {\n return this._name\n }\n\n set name(val) {\n this._name = val\n }\n\n get tileWidth() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('tileWidth must not be called before the imagery provider is ready.')\n }\n return this._tileWidth\n }\n\n get tileHeight() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('tileHeight must not be called before the imagery provider is ready.')\n }\n return this._tileHeight\n }\n\n get maximumLevel() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('maximumLevel must not be called before the imagery provider is ready.')\n }\n return this._maximumLevel\n }\n\n get minimumLevel() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('minimumLevel must not be called before the imagery provider is ready.')\n }\n return this._minimumLevel\n }\n\n get tilingScheme() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('tilingScheme must not be called before the imagery provider is ready.')\n }\n return this._tilingScheme\n }\n\n get rectangle() {\n if (!this._ready) {\n throw new Cesium.DeveloperError('rectangle must not be called before the imagery provider is ready.')\n }\n return this._rectangle\n }\n\n get errorEvent() {\n return this._errorEvent\n }\n\n get ready() {\n return this._ready\n }\n\n get credit() {\n return this._credit\n }\n\n get hasAlphaChannel() {\n return true\n }\n\n get readyPromise() {\n return this._readyPromise\n }\n\n get ratio() {\n return this._fRatio\n }\n\n set ratio(val) {\n this._fRatio = val\n }\n\n get tileDiscardPolicy() {\n return this._tileDiscardPolicy\n }\n\n getTileCredits(x, y, level) {\n if (!this.ready) {\n throw new Cesium.DeveloperError('getTileCredits must not be called before the imagery provider is ready.')\n }\n return undefined\n }\n\n requestImage(x, y, level, request) {\n const { defined, DeveloperError, ImageryProvider, when } = Cesium\n if (!this.ready) {\n throw new DeveloperError('requestImage must not be called before the imagery provider is ready.')\n }\n\n const url = buildImageResource.call(this, x, y, level)\n const resource = this._resource.getDerivedResource({\n url: url,\n request: request\n })\n const that: any = this\n if (this._indexedDBSetting.isOpen) {\n if (defined(this._indexedDBScheduler)) {\n const promise = this._indexedDBScheduler.getElementFromDB(this.tablename, url)\n return defined(promise)\n ? when(\n promise,\n value => {\n if (defined(value)) {\n const image = new Image()\n image.src = value\n return image\n }\n return ImageryProvider.loadImage(that, resource)\n },\n e => {\n return ImageryProvider.loadImage(that, resource)\n }\n )\n : ImageryProvider.loadImage(that, resource)\n }\n }\n return ImageryProvider.loadImage(this as any, resource)\n }\n\n pickFeatures(x, y, level, longitude, latitude) {\n return undefined\n }\n}\n\nlet previousError: any = {}\nconst ScaleTexts = [\n '1.690163571602655E-9',\n '3.3803271432053056E-9',\n '6.760654286410611E-9',\n '1.3521308572821242E-8',\n '2.7042617145642484E-8',\n '5.408523429128511E-8',\n '1.0817046858256998E-7',\n '2.1634093716513974E-7',\n '4.3268187433028044E-7',\n '8.653637486605571E-7',\n '1.7307274973211203E-6',\n '3.4614549946422405E-6',\n '6.9229099892844565E-6',\n '1.3845819978568952E-5',\n '2.7691639957137904E-5',\n '5.53832799142758E-5',\n '1.107665598285516E-4',\n '2.215331196571032E-4',\n '4.430662393142064E-4',\n '8.861324786284128E-4',\n '1.772264957256826E-3',\n '3.544529914513652E-3'\n]\nconst Scales = [\n 1.690163571602655e-9, 3.3803271432053056e-9, 6.760654286410611e-9, 1.3521308572821242e-8, 2.7042617145642484e-8, 5.408523429128511e-8,\n 1.0817046858256998e-7, 2.1634093716513974e-7, 4.3268187433028044e-7, 8.653637486605571e-7, 0.0000017307274973211203, 0.0000034614549946422405,\n 0.0000069229099892844565, 0.000013845819978568952, 0.000027691639957137904, 0.0000553832799142758, 0.0001107665598285516, 0.0002215331196571032,\n 0.0004430662393142064, 0.0008861324786284128, 0.001772264957256826, 0.003544529914513652\n]\n\nfunction buildImageResource(this, x, y, level) {\n let url\n if (this.isTileMap) {\n if (this._coordUnit === 'DEGREE') {\n const scaleText = ScaleTexts[level + 1] || ScaleTexts[level]\n url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{scale}', scaleText)\n } else if (this._coordUnit === 'METER') {\n const scaleText = ScaleTexts[level]\n url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{scale}', scaleText)\n }\n } else {\n url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{level}', level).replace('{fileExtension}', this._fileExtension)\n }\n return url\n}\n\nfunction init(this) {\n const { Resource, when } = Cesium\n if (this.isTileMap) {\n const promise = Resource.fetchJsonp({\n url: this._options.url + '.jsonp',\n queryParameters: {\n f: 'json'\n }\n })\n when(promise, onFulfilledTileMap.bind(this), onRejected.bind(this))\n } else {\n // r(c.CREDENTIAL) && (o = c.addToken(o)),\n when(\n Resource.fetchText({\n url: this.url + 'config'\n }),\n onFulfilledRest3D.bind(this),\n onRejected.bind(this)\n )\n }\n}\nfunction getMaximumLevelbyScale(scale) {\n for (let t = Scales.length; t--; ) {\n if (scale[t] <= scale) {\n return t\n }\n }\n}\n\nfunction onFulfilledRest3D(this, xmlText) {\n const options = parseConfigFromXmlText.call(this, xmlText)\n const { defaultValue, defined, GeographicTilingScheme, Math, Rectangle } = Cesium\n this._fileExtension = defaultValue(options.fileExtentName, 'png')\n this._tileWidth = defaultValue(options.imageSizeWidth, 256)\n this._tileHeight = defaultValue(options.imageSizeHeight, 256)\n const levels = options.levels\n const length = levels.length\n this._minimumLevel = defaultValue(levels[0], 0)\n this._maximumLevel = defaultValue(levels[length - 1], length - 1)\n if (!defined(this._tilingScheme)) {\n this._tilingScheme = new GeographicTilingScheme({\n ellipsoid: this._options.ellipsoid\n })\n }\n if (!defined(this._rectangle)) {\n if (options.left && options.right && options.top && options.bottom) {\n const left = Math.toRadians(options.left)\n const right = Math.toRadians(options.right)\n const bottom = Math.toRadians(options.bottom)\n const top = Math.toRadians(options.top)\n this._rectangle = new Rectangle(left, bottom, right, top)\n }\n }\n const tilingScheme = this._tilingScheme\n this._rectangle.west < tilingScheme.rectangle.west && (this._rectangle.west = tilingScheme.rectangle.west)\n this._rectangle.east > tilingScheme.rectangle.east && (this._rectangle.east = tilingScheme.rectangle.east)\n this._rectangle.south < tilingScheme.rectangle.south && (this._rectangle.south = tilingScheme.rectangle.south)\n this._rectangle.north > tilingScheme.rectangle.north && (this._rectangle.north = tilingScheme.rectangle.north)\n\n const swTile = tilingScheme.positionToTileXY(Rectangle.southwest(this._rectangle), this._minimumLevel)\n const neTile = tilingScheme.positionToTileXY(Rectangle.northeast(this._rectangle), this._minimumLevel)\n const tileCount = (window.Math.abs(neTile.x - swTile.x) + 1) * (window.Math.abs(neTile.y - swTile.y) + 1)\n tileCount > 4 && (this._minimumLevel = 0)\n this._tilingScheme = tilingScheme\n this._urlTemplate = this._url + 'data/index/{y}/{x}.{fileExtension}?level={level}'\n this._ready = true\n this._readyPromise.resolve(true)\n}\n\nfunction parseConfigFromXmlText(this, xmlText) {\n const domParser = new DOMParser()\n xmlText = domParser.parseFromString(xmlText, 'application/xml')\n const namespaceURI = 'http://www.supermap.com/SuperMapCache/sci3d'\n const rootNode = xmlText.childNodes[0]\n // let version = queryNumericAttribute(rootNode, 'Version', namespaceURI)\n const levelsNode = queryFirstNode(rootNode, 'Levels', namespaceURI)\n const levelsNodes = queryNodes(levelsNode, 'Level', namespaceURI) || ([] as any)\n const levels: number[] = []\n for (let i = 0; i < levelsNodes.length; i++) {\n levels.push(parseInt(levelsNodes[i].textContent, 10))\n }\n const boundsNode = queryFirstNode(rootNode, 'Bounds', namespaceURI)\n const left = queryNumericAttribute(boundsNode, 'Left', namespaceURI)\n const right = queryNumericAttribute(boundsNode, 'Right', namespaceURI)\n const top = queryNumericAttribute(boundsNode, 'Top', namespaceURI)\n const bottom = queryNumericAttribute(boundsNode, 'Bottom', namespaceURI)\n const fileExtentName = queryStringValue(rootNode, 'FileExtentName', namespaceURI)\n const cellWidth = queryNumericAttribute(rootNode, 'CellWidth', namespaceURI)\n const cellHeight = queryNumericAttribute(rootNode, 'CellHeight', namespaceURI)\n const cacheName = queryStringValue(rootNode, 'CacheName', namespaceURI)\n this._name = cacheName || ''\n return {\n left: left,\n right: right,\n top: top,\n bottom: bottom,\n fileExtentName: fileExtentName,\n levels: levels,\n imageSizeWidth: cellWidth,\n imageSizeHeight: cellHeight\n }\n}\nfunction queryStringValue(xmlNode, attribute, namespaceURI) {\n const node = queryFirstNode(xmlNode, attribute, namespaceURI)\n return Cesium.defined(node) ? node.textContent.trim() : undefined\n}\n\nfunction queryNumericAttribute(xmlNode, attribute, namespaceURI) {\n const node = queryFirstNode(xmlNode, attribute, namespaceURI)\n if (Cesium.defined(node)) {\n const number = parseFloat(node.textContent)\n return isNaN(number) ? undefined : number\n }\n}\nfunction queryFirstNode(xmlNode, attribute, namespaceURI) {\n if (Cesium.defined(xmlNode)) {\n const nodes = xmlNode.childNodes\n const length = nodes.length\n for (let i = 0; i < length; i++) {\n const node = nodes[i]\n if (node.localName === attribute && namespaceURI.indexOf(node.namespaceURI) !== -1) {\n return node\n }\n }\n }\n}\n\nfunction queryNodes(xmlNode, attribute, namespaceURI) {\n if (Cesium.defined(xmlNode)) {\n const nodes: Array<any> = []\n const nodeList = xmlNode.getElementsByTagNameNS('*', attribute)\n const length = nodeList.length\n for (let i = 0; i < length; i++) {\n const node = nodeList[i]\n node.localName === attribute && namespaceURI.indexOf(node.namespaceURI) !== -1 && nodes.push(node)\n }\n return nodes\n }\n}\n\nfunction onFulfilledTileMap(this, response) {\n const { Cartesian3, defaultValue, defined, GeographicTilingScheme, Math: CesiumMath, Rectangle, WebMercatorTilingScheme } = Cesium\n const coordUnit = response.prjCoordSys.coordUnit\n this._coordUnit = coordUnit\n const bounds = response.bounds\n const visibleScales = response.visibleScales\n if (defined(visibleScales) && visibleScales.length > 1 && defined(this._maximumLevel)) {\n const lastVisibleScale = visibleScales[visibleScales.length - 1]\n this._maximumLevel = getMaximumLevelbyScale(lastVisibleScale)\n }\n if (coordUnit === 'DEGREE') {\n this._tilingScheme = new GeographicTilingScheme()\n bounds.left = CesiumMath.clamp(bounds.left, -180, 180)\n bounds.bottom = CesiumMath.clamp(bounds.bottom, -90, 90)\n bounds.right = CesiumMath.clamp(bounds.right, -180, 180)\n bounds.top = CesiumMath.clamp(bounds.top, -90, 90)\n this._rectangle = Rectangle.fromDegrees(bounds.left, bounds.bottom, bounds.right, bounds.top)\n this._urlTemplate =\n this._url +\n 'tileImage.png?transparent={transparent}&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&origin={\"x\":-180,\"y\":90}'\n } else {\n const pointLB = new Cartesian3(bounds.left, bounds.bottom, 0)\n pointLB.x = Math.max(-20037508.342789244, pointLB.x)\n pointLB.y = Math.max(-20037508.342789244, pointLB.y)\n const pointRT = new Cartesian3(bounds.right, bounds.top, 0)\n pointRT.x = Math.min(20037508.342789244, pointRT.x)\n pointRT.y = Math.min(20037508.342789244, pointRT.y)\n this._tilingScheme = new WebMercatorTilingScheme()\n const f = this._tilingScheme.projection.unproject(pointLB)\n const p = this._tilingScheme.projection.unproject(pointRT)\n this._rectangle = new Rectangle(f.longitude, f.latitude, p.longitude, p.latitude)\n this._urlTemplate =\n this._url +\n 'tileImage.png?transparent={transparent}&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&origin={\"x\":-20037508.342789248 ,\"y\":20037508.342789095}'\n }\n this._urlTemplate = this._urlTemplate.replace('{transparent}', this._transparent)\n this.layersID && (this._urlTemplate = this._urlTemplate + '&layersID=' + this.layersID)\n this._rectangle || (this._rectangle = defaultValue(this._options.rectangle, this._tilingScheme.rectangle))\n this._ready = true\n this._readyPromise.resolve(true)\n}\n\nfunction onRejected(this) {\n const { TileProviderError, RuntimeError } = Cesium\n const message = 'An error occurred while accessing ' + this._url + '.'\n previousError = TileProviderError.handleError(previousError, this, this._errorEvent, message, 0, 0, 0, init.bind(this))\n this._readyPromise.reject(new RuntimeError(message))\n}\n\nexport default SuperMapImageryProvider\n"],"names":[],"mappings":";;AACA,MAAM,uBAAuB,CAAC;AAC9B,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAC7H,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACxC,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACvB,MAAM,MAAM,IAAI,cAAc,CAAC,0BAA0B,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,MAAM,sBAAsB,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7E,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC;AAC7C,MAAM,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAAC,SAAS;AACnD,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AAC1B,MAAM,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,iBAAiB,GAAG;AAC7B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,KAAK,EAAE,MAAM;AACnB,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvD,OAAO;AACP,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACpD,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE;AACnD,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,MAAM,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACvC,KAAK,MAAM;AACX,MAAM,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC7D,QAAQ,MAAM,IAAI,cAAc,CAAC,gCAAgC,CAAC,CAAC;AACnE,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB,MAAM,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;AAChC,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAC9D,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;AACpC,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAChC,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AAC3B,IAAI,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;AAC9C,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACxD,IAAI,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC;AACnF,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC/B,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;AAChG,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,GAAG;AACH,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,GAAG;AACH,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACrB,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,oEAAoE,CAAC,CAAC;AAC5G,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,qEAAqE,CAAC,CAAC;AAC7G,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;AAC5B,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,uEAAuE,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,uEAAuE,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,uEAAuE,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,oEAAoE,CAAC,CAAC;AAC5G,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;AAC5B,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAG;AACH,EAAE,IAAI,eAAe,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE;AACjB,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,iBAAiB,GAAG;AAC1B,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACnC,GAAG;AACH,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACrB,MAAM,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,yEAAyE,CAAC,CAAC;AACjH,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;AACrC,IAAI,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;AACtE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACrB,MAAM,MAAM,IAAI,cAAc,CAAC,uEAAuE,CAAC,CAAC;AACxG,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3D,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;AACvD,MAAM,GAAG;AACT,MAAM,OAAO;AACb,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AACvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAC7C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACvF,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK;AAC3D,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,YAAY,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AACtC,YAAY,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;AAC9B,YAAY,OAAO,KAAK,CAAC;AACzB,WAAW;AACX,UAAU,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3D,SAAS,EAAE,CAAC,CAAC,KAAK;AAClB,UAAU,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3D,SAAS,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvD,OAAO;AACP,KAAK;AACL,IAAI,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,GAAG;AACH,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE;AACjD,IAAI,OAAO,KAAK,CAAC,CAAC;AAClB,GAAG;AACH,CAAC;AACD,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,MAAM,UAAU,GAAG;AACnB,EAAE,sBAAsB;AACxB,EAAE,uBAAuB;AACzB,EAAE,sBAAsB;AACxB,EAAE,uBAAuB;AACzB,EAAE,uBAAuB;AACzB,EAAE,sBAAsB;AACxB,EAAE,uBAAuB;AACzB,EAAE,uBAAuB;AACzB,EAAE,uBAAuB;AACzB,EAAE,sBAAsB;AACxB,EAAE,uBAAuB;AACzB,EAAE,uBAAuB;AACzB,EAAE,uBAAuB;AACzB,EAAE,uBAAuB;AACzB,EAAE,uBAAuB;AACzB,EAAE,qBAAqB;AACvB,EAAE,sBAAsB;AACxB,EAAE,sBAAsB;AACxB,EAAE,sBAAsB;AACxB,EAAE,sBAAsB;AACxB,EAAE,sBAAsB;AACxB,EAAE,sBAAsB;AACxB,CAAC,CAAC;AACF,MAAM,MAAM,GAAG;AACf,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,oBAAoB;AACtB,EAAE,oBAAoB;AACtB,EAAE,oBAAoB;AACtB,EAAE,oBAAoB;AACtB,EAAE,oBAAoB;AACtB,EAAE,oBAAoB;AACtB,CAAC,CAAC;AACF,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AACzC,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AACtC,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACnE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChG,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;AAC5C,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChG,KAAK;AACL,GAAG,MAAM;AACT,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1I,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD,SAAS,IAAI,GAAG;AAChB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;AACpC,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACtB,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ;AACvC,MAAM,eAAe,EAAE;AACvB,QAAQ,CAAC,EAAE,MAAM;AACjB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC5B,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,QAAQ;AAC9B,KAAK,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,GAAG;AACH,CAAC;AACD,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,EAAE,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI;AACrC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE;AAC3B,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH,CAAC;AACD,SAAS,iBAAiB,CAAC,OAAO,EAAE;AACpC,EAAE,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7D,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AAC3F,EAAE,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAChE,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAChC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B,EAAE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACpC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,CAAC;AACpD,MAAM,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;AACxC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACjC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE;AACxE,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjD,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnD,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrD,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChE,KAAK;AACL,GAAG;AACH,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;AAC1C,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7G,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7G,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjH,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjH,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACzG,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACzG,EAAE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5G,EAAE,SAAS,GAAG,CAAC,KAAK,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AACpC,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,GAAG,kDAAkD,CAAC;AACrF,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AACD,SAAS,sBAAsB,CAAC,OAAO,EAAE;AACzC,EAAE,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AACpC,EAAE,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAClE,EAAE,MAAM,YAAY,GAAG,6CAA6C,CAAC;AACrE,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,EAAE,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtE,EAAE,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1E,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,GAAG;AACH,EAAE,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtE,EAAE,MAAM,IAAI,GAAG,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AACvE,EAAE,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACzE,EAAE,MAAM,GAAG,GAAG,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACrE,EAAE,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC3E,EAAE,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACpF,EAAE,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC/E,EAAE,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AACjF,EAAE,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC1E,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,CAAC;AAC/B,EAAE,OAAO;AACT,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,GAAG;AACP,IAAI,MAAM;AACV,IAAI,cAAc;AAClB,IAAI,MAAM;AACV,IAAI,cAAc,EAAE,SAAS;AAC7B,IAAI,eAAe,EAAE,UAAU;AAC/B,GAAG,CAAC;AACJ,CAAC;AACD,SAAS,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE;AAC5D,EAAE,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAChE,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;AACjE,CAAC;AACD,SAAS,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE;AACjE,EAAE,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAChE,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;AAC3C,GAAG;AACH,CAAC;AACD,SAAS,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE;AAC1D,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;AACrC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1F,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;AACD,SAAS,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE;AACtD,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACpE,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzG,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC;AACD,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AACtC,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC;AACrI,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC;AACnD,EAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC9B,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACjC,EAAE,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC/C,EAAE,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACzF,IAAI,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrE,IAAI,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC9B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC;AACtD,IAAI,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3D,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7D,IAAI,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7D,IAAI,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAClG,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,GAAG,yKAAyK,CAAC;AAC9M,GAAG,MAAM;AACT,IAAI,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAClE,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChE,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,uBAAuB,EAAE,CAAC;AACvD,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/D,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACtF,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,GAAG,yMAAyM,CAAC;AAC9O,GAAG;AACH,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACpF,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1F,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7G,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AACD,SAAS,UAAU,GAAG;AACtB,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;AACrD,EAAE,MAAM,OAAO,GAAG,oCAAoC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACzE,EAAE,aAAa,GAAG,iBAAiB,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1H,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACvD;;;;"}