@itwin/map-layers-formats 4.0.0-dev.8 → 4.0.0-dev.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/operation/build/all.log +3 -0
- package/.rush/temp/operation/build/state.json +3 -0
- package/.rush/temp/operation/cover/all.log +98 -0
- package/.rush/temp/operation/cover/state.json +1 -1
- package/.rush/temp/operation/docs/all.log +30 -0
- package/.rush/temp/operation/docs/state.json +1 -1
- package/.rush/temp/{package-deps_build_ci.json → package-deps_build.json} +11 -11
- package/.rush/temp/package-deps_cover.json +10 -10
- package/.rush/temp/package-deps_docs.json +10 -10
- package/.rush/temp/shrinkwrap-deps.json +190 -44
- package/CHANGELOG.json +57 -0
- package/CHANGELOG.md +44 -1
- package/config/rush-project.json +1 -2
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.d.ts +8 -8
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js +14 -14
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.d.ts +14 -14
- package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.js +132 -134
- package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.d.ts +14 -14
- package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js +200 -202
- package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts +44 -44
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +421 -422
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts +92 -92
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js +82 -82
- package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts +17 -17
- package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js +33 -33
- package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.d.ts +32 -32
- package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js +142 -142
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.d.ts +16 -16
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js +42 -43
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +85 -85
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +189 -192
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.d.ts +1063 -1063
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js +2267 -2270
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/cjs/map-layers-formats.d.ts +8 -8
- package/lib/cjs/map-layers-formats.js +28 -24
- package/lib/cjs/map-layers-formats.js.map +1 -1
- package/lib/cjs/mapLayersFormats.d.ts +10 -10
- package/lib/cjs/mapLayersFormats.js +28 -28
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +34 -34
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js +161 -161
- package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js +167 -167
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js +679 -680
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js +103 -103
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +214 -214
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js +94 -94
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +59 -59
- package/lib/cjs/test/ArcGisFeature/Mocks.d.ts +6 -6
- package/lib/cjs/test/ArcGisFeature/Mocks.js +18 -18
- package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts +55 -55
- package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts.map +1 -1
- package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js +419 -419
- package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +1042 -1042
- package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +1 -1
- package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js +426 -426
- package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js.map +1 -1
- package/lib/cjs/test/coverage/.nyc_output/cd866071-e986-4027-89f6-9a70b6e25ed3.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/4c93adb3-7e95-4a63-9814-a25d79ab4680.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/cd866071-e986-4027-89f6-9a70b6e25ed3.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/index.json +1 -1
- package/lib/cjs/test/coverage/cobertura-coverage.xml +72 -72
- package/lib/cjs/test/coverage/lcov-report/index.html +5 -5
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureFormat.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureJSON.ts.html +10 -10
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeaturePBF.ts.html +7 -7
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureProvider.ts.html +10 -10
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureQuery.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureReader.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureRenderer.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureResponse.ts.html +4 -4
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisSymbologyRenderer.ts.html +8 -8
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/index.html +13 -13
- package/lib/cjs/test/coverage/lcov-report/src/index.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/map-layers-formats.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/mapLayersFormats.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov.info +355 -531
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.d.ts +8 -8
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js +11 -10
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.d.ts +14 -14
- package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js +128 -130
- package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.d.ts +14 -14
- package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js +196 -198
- package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts +44 -44
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +418 -418
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts +92 -92
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js +78 -78
- package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts +17 -17
- package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js +29 -29
- package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.d.ts +32 -32
- package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js +138 -138
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.d.ts +16 -16
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js +38 -39
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +85 -85
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +183 -185
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.d.ts +1063 -1063
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.js +2264 -2267
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/esm/map-layers-formats.d.ts +8 -8
- package/lib/esm/map-layers-formats.js +12 -12
- package/lib/esm/mapLayersFormats.d.ts +10 -10
- package/lib/esm/mapLayersFormats.js +24 -24
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +32 -32
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js +159 -159
- package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js +165 -165
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js +677 -678
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js +101 -101
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +212 -212
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js +92 -92
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +57 -57
- package/lib/esm/test/ArcGisFeature/Mocks.d.ts +6 -6
- package/lib/esm/test/ArcGisFeature/Mocks.js +15 -15
- package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts +55 -55
- package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts.map +1 -1
- package/lib/esm/test/ArcGisFeature/NewYorkDataset.js +416 -415
- package/lib/esm/test/ArcGisFeature/NewYorkDataset.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +1042 -1042
- package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +1 -1
- package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js +423 -422
- package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js.map +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/test/junit_results.xml +44 -44
- package/map-layers-formats.build.log +2 -2
- package/package.json +17 -17
- package/src/ArcGisFeature/esriPBuffer.gen.ts +1 -4
- package/src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts +21 -21
- package/src/test/ArcGisFeature/NewYorkDataset.ts +187 -187
- package/src/test/ArcGisFeature/PhillyLandmarksDataset.ts +4 -4
- package/tsconfig.json +1 -2
- package/.rush/temp/operation/build_ci/state.json +0 -3
- package/lib/cjs/test/coverage/.nyc_output/bb9e12be-ea3c-4cee-99d0-c7a34bd2c47a.json +0 -1
- package/lib/cjs/test/coverage/.nyc_output/processinfo/5901bdfe-760d-4ca3-9674-876be7ed11b1.json +0 -1
- package/lib/cjs/test/coverage/.nyc_output/processinfo/bb9e12be-ea3c-4cee-99d0-c7a34bd2c47a.json +0 -1
- /package/lib/cjs/test/coverage/.nyc_output/{5901bdfe-760d-4ca3-9674-876be7ed11b1.json → 4c93adb3-7e95-4a63-9814-a25d79ab4680.json} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisFeatureProvider.test.js","sourceRoot":"","sources":["../../../../src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Base64EncodedString, Cartographic, ImageMapLayerSettings, ImageSourceFormat, ServerError } from \"@itwin/core-common\";\r\nimport * as chai from \"chai\";\r\nimport * as chaiAsPromised from \"chai-as-promised\";\r\nimport { ArcGisFeatureMapLayerFormat } from \"../../ArcGisFeature/ArcGisFeatureFormat\";\r\nimport { ArcGisFeatureProvider } from \"../../map-layers-formats\";\r\nimport * as sinon from \"sinon\";\r\nimport { ArcGISImageryProvider, ArcGisUtilities, ImageryMapTileTree, MapLayerFeatureInfo, MapLayerImageryProviderStatus, QuadId } from \"@itwin/core-frontend\";\r\nimport { NewYorkDataset } from \"./NewYorkDataset\";\r\nimport { base64StringToUint8Array, ByteStream, Logger } from \"@itwin/core-bentley\";\r\nimport { ArcGisExtent, ArcGisFeatureFormat, ArcGisGeometry } from \"../../ArcGisFeature/ArcGisFeatureQuery\";\r\nimport { PhillyLandmarksDataset } from \"./PhillyLandmarksDataset\";\r\nimport { ArcGisFeatureResponse } from \"../../ArcGisFeature/ArcGisFeatureResponse\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { ArcGisFeaturePBF } from \"../../ArcGisFeature/ArcGisFeaturePBF\";\r\nimport { ArcGisFeatureJSON } from \"../../ArcGisFeature/ArcGisFeatureJSON\";\r\n\r\nconst expect = chai.expect;\r\nchai.use(chaiAsPromised);\r\n\r\nconst esriFeatureSampleSource = {name: \"dummyFeatureLayer\", url: \"https://dummy.com\", formatId: ArcGisFeatureMapLayerFormat.formatId};\r\nconst pngTransparent1x1 = \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==\";\r\n\r\ndescribe(\"ArcGisFeatureProvider\", () => {\r\n const sandbox = sinon.createSandbox();\r\n\r\n afterEach(async () => {\r\n sandbox.restore();\r\n });\r\n\r\n it(\"should initialize with valid data\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:NewYorkDataset.serviceCapabilities};\r\n });\r\n\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"getLayerMetadata\" as any).callsFake(async function _(_layerId: number) {\r\n return NewYorkDataset.streetsLayerCapabilities;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n expect((provider as any)._minDepthFromLod).to.equals(11);\r\n expect((provider as any)._maxDepthFromLod).to.equals(22);\r\n });\r\n\r\n it(\"should not initialize with no service metadata\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return undefined;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n\r\n });\r\n\r\n it(\"should update status when invalid token error from service\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{error: {code: 499}}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const raiseEventSpy = sandbox.spy(provider.onStatusChanged, \"raiseEvent\");\r\n await provider.initialize();\r\n\r\n expect(provider.status).to.equals(MapLayerImageryProviderStatus.RequireAuth);\r\n expect(raiseEventSpy.calledOnceWith(provider)).to.be.true;\r\n });\r\n\r\n it(\"should throw query capability not supported\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Test\"}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should pick the first visible sub-layer when multiple visible sub-layers\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\"}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n const provider = new ArcGisFeatureProvider(settings);\r\n (provider as any)._format = \"JSON\";\r\n await provider.initialize();\r\n expect((provider as any)._layerId ).to.equals(settings.subLayers[0].id);\r\n });\r\n\r\n it(\"should pick sub-layers from service metadata if none provided on layer settings\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\",\r\n layers: [\r\n {\r\n id : 0,\r\n\r\n },\r\n {\r\n id : 1,\r\n },\r\n ]},\r\n };\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (id: number) {\r\n if (id === 1 ) {\r\n return {defaultVisibility:true};\r\n }\r\n return undefined;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n (provider as any)._format = \"JSON\";\r\n await provider.initialize();\r\n expect((provider as any)._layerId ).to.equals(1);\r\n expect((provider as any)._layerMetadata ).to.eql({defaultVisibility:true});\r\n });\r\n\r\n it(\"should throw error if no layers in capabilities\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\", layers: []}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should throw if no layer metadata from service\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return undefined;\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should read supported supported format\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n let getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"PBF, JSON\"};\r\n });\r\n\r\n const getServiceJsonStub = sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\"}};\r\n });\r\n\r\n let provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n // PBF requires 'supportsCoordinatesQuantization'\r\n getServiceJsonStub.restore();\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: { currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {defaultVisibility:true, supportsCoordinatesQuantization:true, supportedQueryFormats:\"PBF, JSON\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"PBF\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"JSON\"};\r\n });\r\n\r\n getServiceJsonStub.restore();\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: { currentVersion: 10.91, capabilities: \"Query\", supportsCoordinatesQuantization:true}};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"JSON\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should compute minLod/maxLod\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n expect((provider as any)._minDepthFromLod ).to.equals(9);\r\n expect((provider as any)._maxDepthFromLod ).to.equals(15);\r\n });\r\n\r\n it(\"should construct empty url\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const url = await provider.constructUrl(0,0,0);\r\n expect(url).to.equals(\"\");\r\n\r\n });\r\n\r\n it(\"should construct feature query url\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n let getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility: true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n let url = provider.constructFeatureUrl(0,0,0, \"PBF\");\r\n const extent = {\r\n xmin: -20037508.34,\r\n ymin: -20037508.33,\r\n xmax: 20037508.34,\r\n ymax: 20037508.34,\r\n spatialReference: {\r\n wkid: 102100,\r\n latestWkid: 3857,\r\n },\r\n };\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100`);\r\n expect(url?.envelope?.xmin).to.be.closeTo(extent.xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo(extent.ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo(extent.xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo(extent.ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(102100);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(3857);\r\n\r\n // Now turn ON 'supportsCoordinatesQuantization' to ON\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility: true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n supportsCoordinatesQuantization: true,\r\n };\r\n });\r\n\r\n const provider2 = new ArcGisFeatureProvider(settings);\r\n await provider2.initialize();\r\n url = provider2.constructFeatureUrl(0,0,0, \"PBF\");\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);\r\n expect(url?.envelope?.xmin).to.be.closeTo(extent.xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo(extent.ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo(extent.xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo(extent.ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(extent.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(extent.spatialReference.latestWkid);\r\n\r\n // Test passing an override geometry\r\n const overrideGeom: ArcGisGeometry = {\r\n type: \"esriGeometryEnvelope\",\r\n geom: {\r\n xmin: -50,\r\n ymin: -50,\r\n xmax: 50,\r\n ymax: 50,\r\n spatialReference: {\r\n wkid: 102100,\r\n latestWkid: 3857,\r\n },\r\n },\r\n };\r\n const provider3 = new ArcGisFeatureProvider(settings);\r\n await provider3.initialize();\r\n url = provider3.constructFeatureUrl(0,0,0, \"PBF\", overrideGeom);\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);\r\n expect(url?.envelope?.xmin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(overrideGeom.geom.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);\r\n\r\n // Now test with a different tolerance value\r\n url = provider3.constructFeatureUrl(0,0,0, \"PBF\", overrideGeom, undefined, 10);\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D&distance=782715.16953125`);\r\n expect(url?.envelope?.xmin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(overrideGeom.geom.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);\r\n\r\n });\r\n\r\n it(\"should log error when getFeatureInfo cannot be performed\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"constructFeatureUrl\").callsFake(function _(_row: number, _column: number, _zoomLevel: number, _format: ArcGisFeatureFormat, _geomOverride?: ArcGisGeometry, _outFields?: string, _tolerance?: number, _returnGeometry?: boolean) {\r\n return undefined;\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.called).to.be.true;\r\n\r\n });\r\n\r\n it(\"should process data in getFeatureInfo\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n supportsCoordinatesQuantization:true,\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub((ArcGISImageryProvider.prototype as any), \"fetch\").callsFake(async function _(_url: URL, _options?: RequestInit) {\r\n const test = {\r\n headers: { \"content-type\" : \"pbf\"},\r\n arrayBuffer: async () => {\r\n const byteArray = Base64EncodedString.toUint8Array(PhillyLandmarksDataset.phillyTransportationGetFeatureInfoQueryEncodedPbf);\r\n return Promise.resolve(byteArray ? ByteStream.fromUint8Array(byteArray).arrayBuffer : undefined);\r\n },\r\n status: 200,\r\n } as unknown; // By using unknown type, I can define parts of Response I really need\r\n return (test as Response );\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(1);\r\n expect(logErrorSpy.calledOnce).to.be.false;\r\n\r\n });\r\n\r\n it(\"should log error when exceed transfert limit\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {exceedTransferLimit: true, data:undefined};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.calledOnce).to.be.true;\r\n\r\n });\r\n\r\n it(\"should log error when exceed exception thrown limit\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n throw new Error();\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.calledOnce).to.be.true;\r\n\r\n });\r\n\r\n it(\"should debug Feature Geom\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {data: {\r\n toObject: () => undefined,\r\n }};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n (provider as any)._debugFeatureGeom = true;\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logInfoSpy = sandbox.spy(Logger, \"logInfo\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logInfoSpy.callCount).to.equals(2);\r\n\r\n });\r\n\r\n it(\"should compute computeTileWorld2CanvasTransform\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n const worldSize = 100;\r\n const canvasSize = 10;\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const getEPSG3857ExtentStub = sandbox.stub(ArcGisFeatureProvider.prototype, \"getEPSG3857Extent\").callsFake(function (_row: number, _column: number, _zoomLevel: number) {\r\n return { left:0, right:worldSize, bottom:0, top:worldSize };\r\n });\r\n\r\n sandbox.stub(provider, \"tileSize\").get(function () {\r\n return canvasSize; // return a size of 10 to simplicity\r\n });\r\n let transform = ((provider as any).computeTileWorld2CanvasTransform(0,0,0) as Transform | undefined);\r\n let worldPoint = Point3d.createFrom({x: worldSize*0.5, y:worldSize*0.5, z:0});\r\n let transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n\r\n // Make sure center point remains in the center\r\n expect(transformedPoint).to.not.undefined;\r\n expect(transformedPoint!.x).to.equals(canvasSize*0.5);\r\n expect(transformedPoint!.y).to.equals(canvasSize*0.5);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n // Check that y-axis get flipped\r\n worldPoint = Point3d.createFrom({x: 0, y:10, z:0});\r\n transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n expect(transformedPoint!.x).to.equals(0);\r\n expect(transformedPoint!.y).to.equals(9);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n // Now check translation has been applied (origin shift)\r\n getEPSG3857ExtentStub.restore();\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"getEPSG3857Extent\").callsFake(function (_row: number, _column: number, _zoomLevel: number) {\r\n return { left:worldSize, right:worldSize*2, bottom:worldSize, top:worldSize*2 };\r\n });\r\n worldPoint = Point3d.createFrom({x: worldSize, y:worldSize, z:0});\r\n transform = ((provider as any).computeTileWorld2CanvasTransform(0,0,0) as Transform | undefined);\r\n transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n expect(transformedPoint).to.not.undefined;\r\n expect(transformedPoint!.x).to.equals(0);\r\n expect(transformedPoint!.y).to.equals(10);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n });\r\n\r\n it(\"should loadTile from PBF request\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF\",\r\n supportsCoordinatesQuantization:true,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const providerStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n return new ArcGisFeatureResponse(\"PBF\", Promise.resolve({} as Response));\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {\r\n exceedTransferLimit: false,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n // toDataURL string;\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeaturePBF.prototype, \"readAndRender\");\r\n const computeTransfoSpy = sandbox.spy(ArcGisFeatureProvider.prototype as any, \"computeTileWorld2CanvasTransform\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const tileData = await provider.loadTile(0,0,0);\r\n expect (tileData).to.not.undefined;\r\n expect (tileData?.data instanceof Uint8Array).to.be.true;\r\n expect(tileData?.data).to.eqls(base64StringToUint8Array(pngTransparent1x1));\r\n expect(tileData?.format).to.equals(ImageSourceFormat.Png);\r\n expect (providerStub.calledOnce).to.be.true;\r\n expect (readAndRenderSpy.calledOnce).to.be.true;\r\n expect (computeTransfoSpy.calledOnce).to.be.false; // Should not be called since we have supportsCoordinatesQuantization in layer metadata\r\n\r\n });\r\n\r\n it(\"should loadTile from JSON request\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const providerStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n return new ArcGisFeatureResponse(\"JSON\", Promise.resolve({} as Response));\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {\r\n exceedTransferLimit: false,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeatureJSON.prototype, \"readAndRender\");\r\n const computeTransfoSpy = sandbox.spy(ArcGisFeatureProvider.prototype as any, \"computeTileWorld2CanvasTransform\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const tileData = await provider.loadTile(0,0,0);\r\n expect (tileData).to.not.undefined;\r\n expect (tileData?.data instanceof Uint8Array).to.be.true;\r\n expect(tileData?.data).to.eqls(base64StringToUint8Array(pngTransparent1x1));\r\n expect(tileData?.format).to.equals(ImageSourceFormat.Png);\r\n expect (providerStub.calledOnce).to.be.true;\r\n expect (readAndRenderSpy.calledOnce).to.be.true;\r\n expect (computeTransfoSpy.calledOnce).to.be.true; // Should be called since we dont have _supportsCoordinatesQuantization in layer metadata\r\n });\r\n\r\n it(\"should make sub request if loadtile request return 'exceedTransferLimit'\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const extentSize = 100;\r\n const fetchTileStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n const envelope: ArcGisExtent = {\r\n xmin : 0,\r\n ymin : 0,\r\n xmax : extentSize,\r\n ymax : extentSize,\r\n spatialReference : {\r\n wkid : 102100,\r\n latestWkid : 3857,\r\n }};\r\n return new ArcGisFeatureResponse(\"JSON\", Promise.resolve({} as Response), envelope);\r\n });\r\n\r\n let firstCall = true;\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n\r\n const exceed = firstCall === true;\r\n firstCall = false;\r\n return {\r\n exceedTransferLimit: exceed,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeatureJSON.prototype, \"readAndRender\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n await provider.loadTile(0,0,0);\r\n\r\n // We should have 5 calls:\r\n // Call #1 : initial call for 0,0,0 and it returns 'exceedTransferLimit'\r\n // Calls #2-5: Four calls which represent a call for each sub-envelope (initial extent divided by 4)\r\n expect (fetchTileStub.getCalls().length).to.equals(5);\r\n expect (fetchTileStub.getCalls()[1].args[3]).to.eqls( {\r\n xmin : 0, ymin : 0, xmax : extentSize*0.5, ymax : extentSize*0.5,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[2].args[3]).to.eqls( {\r\n xmin : 0, ymin : extentSize*0.5, xmax : extentSize*0.5, ymax : extentSize,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[3].args[3]).to.eqls( {\r\n xmin : extentSize*0.5, ymin : 0, xmax : extentSize, ymax : extentSize*0.5,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[4].args[3]).to.eqls( {\r\n xmin : extentSize*0.5, ymin : extentSize*0.5, xmax : extentSize, ymax : extentSize,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (readAndRenderSpy.getCalls().length).to.equals(4);\r\n });\r\n\r\n it(\"fetchTile should return undefined when to format defined\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n // make a first request with init, should return undefined because of missing format\r\n const tileData = await (provider as any).fetchTile(0,0,0);\r\n expect(tileData).to.be.undefined;\r\n });\r\n\r\n it(\"fetchTile should call fetch with the proper URL\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: number) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n const fetchStub = sandbox.stub((ArcGISImageryProvider.prototype as any), \"fetch\");\r\n\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"constructFeatureUrl\").callsFake(function _(_row: number, _column: number, _zoomLevel: number, _format: ArcGisFeatureFormat, _geomOverride?: ArcGisGeometry, _outFields?: string, _tolerance?: number, _returnGeometry?: boolean) {\r\n return {url: settings.url};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const response = await (provider as any).fetchTile(0,0,0);\r\n expect(response).to.not.undefined;\r\n expect(fetchStub.calledOnce).to.be.true;\r\n const test1 = fetchStub.getCall(0).firstArg;\r\n expect(test1.toString()).to.equals(new URL(settings.url).toString());\r\n\r\n });\r\n\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"ArcGisFeatureProvider.test.js","sourceRoot":"","sources":["../../../../src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;AAE/F,oDAA8H;AAC9H,6BAA6B;AAC7B,mDAAmD;AACnD,iFAAsF;AACtF,iEAAiE;AACjE,+BAA+B;AAC/B,wDAA8J;AAC9J,qDAAkD;AAClD,sDAAmF;AAEnF,qEAAkE;AAClE,qFAAkF;AAClF,wDAA0D;AAC1D,2EAAwE;AACxE,6EAA0E;AAE1E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAEzB,MAAM,uBAAuB,GAAG,EAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,iDAA2B,CAAC,QAAQ,EAAC,CAAC;AACtI,MAAM,iBAAiB,GAAG,kGAAkG,CAAC;AAE7H,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAEtC,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QAEjD,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,+BAAc,CAAC,mBAAmB,EAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,kBAAyB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,QAAiB;YACnH,OAAO,+BAAc,CAAC,wBAAwB,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAE,QAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,CAAE,QAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAE9D,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAErD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IAEtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAE1E,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,EAAC,EAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAC1E,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,6CAA6B,CAAC,WAAW,CAAC,CAAC;QAC7E,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAE9D,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,MAAM,EAAC,EAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QAExF,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACpD,QAAgB,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAE,QAAgB,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAE/F,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,OAAO;oBACjE,MAAM,EAAE;wBACN;4BACE,EAAE,EAAG,CAAC;yBAEP;wBACD;4BACE,EAAE,EAAG,CAAC;yBACP;qBACF,EAAC;aACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,EAAW;YAC9G,IAAI,EAAE,KAAK,CAAC,EAAG;gBACb,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAC,CAAC;aACjC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACpD,QAAgB,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAE,QAAgB,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAE,QAAgB,CAAC,cAAc,CAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAC,iBAAiB,EAAC,IAAI,EAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAE/D,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAC,EAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAE9D,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QAEtD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,IAAI,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC1I,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,qBAAqB,EAAC,WAAW,EAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YAC5N,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1C,iDAAiD;QACjD,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QACH,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,+BAA+B,EAAC,IAAI,EAAE,qBAAqB,EAAC,WAAW,EAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;QAEH,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEzC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,qBAAqB,EAAC,MAAM,EAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,+BAA+B,EAAC,IAAI,EAAC,EAAC,CAAC;QACtI,CAAC,CAAC,CAAC;QAEH,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1C,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,qBAAqB,EAAC,MAAM,EAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1C,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,qBAAqB,EAAC,EAAE,EAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAE5C,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAE,QAAgB,CAAC,gBAAgB,CAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,CAAE,QAAgB,CAAC,gBAAgB,CAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAE1C,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,IAAI,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC1I,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,qBAAqB,EAAC,WAAW;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,IAAI,GAAG,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,CAAC,WAAW;YAClB,IAAI,EAAE,CAAC,WAAW;YAClB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW;YACjB,gBAAgB,EAAE;gBAChB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,IAAI;aACjB;SACF,CAAC;QACF,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,oZAAoZ,CAAC,CAAC;QACjb,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErE,sDAAsD;QACtD,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,qBAAqB,EAAC,WAAW;gBACjC,+BAA+B,EAAE,IAAI;aACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAC7B,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,svBAAsvB,CAAC,CAAC;QACnxB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvF,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEnG,oCAAoC;QACpC,MAAM,YAAY,GAAmB;YACnC,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE;gBACJ,IAAI,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,EAAE;gBACR,gBAAgB,EAAE;oBAChB,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,IAAI;iBACjB;aACF;SACF,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAC7B,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,osBAAosB,CAAC,CAAC;QACjuB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClG,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAE9G,4CAA4C;QAC5C,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,6tBAA6tB,CAAC,CAAC;QAC1vB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClG,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAEhH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAExE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAY,EAAE,OAAe,EAAE,UAAkB,EAAE,OAA4B,EAAE,aAA8B,EAAE,UAAmB,EAAE,UAAmB,EAAE,eAAyB;YAC5Q,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAExC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QAErD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,+BAA+B,EAAC,IAAI;gBACpC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAE,qCAAqB,CAAC,SAAiB,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC,CAAC,IAAa,EAAE,QAAkB;YAC3H,MAAM,IAAI,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAG,KAAK,EAAC;gBAClC,WAAW,EAAE,KAAK,IAAI,EAAE;oBACtB,MAAM,SAAS,GAAG,iCAAmB,CAAC,YAAY,CAAC,+CAAsB,CAAC,iDAAiD,CAAC,CAAC;oBAC7H,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACnG,CAAC;gBACD,MAAM,EAAE,GAAG;aACD,CAAC,CAAG,sEAAsE;YACtF,OAAQ,IAAkB,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAE7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAE5D,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,OAAO,EAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAC,SAAS,EAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAE5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QAEnE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAE5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAEzC,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,OAAO,EAAC,IAAI,EAAE;oBACZ,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;iBAC1B,EAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3B,QAAgB,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC3C,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,UAAU,IAAY,EAAE,OAAe,EAAE,UAAkB;YACpK,OAAO,EAAE,IAAI,EAAC,CAAC,EAAE,KAAK,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,EAAE,GAAG,EAAC,SAAS,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;YACrC,OAAO,UAAU,CAAC,CAAE,oCAAoC;QAC1D,CAAC,CAAC,CAAC;QACH,IAAI,SAAS,GAAK,QAAgB,CAAC,gCAAgC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAA2B,CAAC;QACrG,IAAI,UAAU,GAAG,uBAAO,CAAC,UAAU,CAAC,EAAC,CAAC,EAAE,SAAS,GAAC,GAAG,EAAE,CAAC,EAAC,SAAS,GAAC,GAAG,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;QAC9E,IAAI,gBAAgB,GAAG,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QAE9D,+CAA+C;QAC/C,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QAC1C,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,GAAC,GAAG,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,GAAC,GAAG,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzC,gCAAgC;QAChC,UAAU,GAAG,uBAAO,CAAC,UAAU,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;QACnD,gBAAgB,GAAG,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzC,wDAAwD;QACxD,qBAAqB,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,UAAU,IAAY,EAAE,OAAe,EAAE,UAAkB;YACtI,OAAO,EAAE,IAAI,EAAC,SAAS,EAAE,KAAK,EAAC,SAAS,GAAC,CAAC,EAAE,MAAM,EAAC,SAAS,EAAE,GAAG,EAAC,SAAS,GAAC,CAAC,EAAE,CAAC;QAClF,CAAC,CAAC,CAAC;QACH,UAAU,GAAG,uBAAO,CAAC,UAAU,CAAC,EAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;QAClE,SAAS,GAAK,QAAgB,CAAC,gCAAgC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAA2B,CAAC;QACjG,gBAAgB,GAAG,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QAC1C,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,KAAK;gBAC3B,+BAA+B,EAAC,IAAI;aACrC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,UAAe,EAAE,QAAc;YAC3G,OAAO,EAAsB,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,KAAc,EAAE,QAAc;YACzG,OAAO,yBAAyB,iBAAiB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YAClH,OAAO,IAAI,6CAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAc,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,OAAO;gBACL,mBAAmB,EAAE,KAAK;gBAC1B,IAAI,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAClF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,0CAAqB,CAAC,SAAgB,EAAE,kCAAkC,CAAC,CAAC;QAClH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QACnC,MAAM,CAAE,QAAQ,EAAE,IAAI,YAAY,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAA,uCAAwB,EAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,+BAAiB,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,CAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5C,MAAM,CAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChD,MAAM,CAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,uFAAuF;IAE5I,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,MAAM;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,UAAe,EAAE,QAAc;YAC3G,OAAO,EAAsB,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,KAAc,EAAE,QAAc;YACzG,OAAO,yBAAyB,iBAAiB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YAClH,OAAO,IAAI,6CAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAc,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,OAAO;gBACL,mBAAmB,EAAE,KAAK;gBAC1B,IAAI,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,0CAAqB,CAAC,SAAgB,EAAE,kCAAkC,CAAC,CAAC;QAClH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QACnC,MAAM,CAAE,QAAQ,EAAE,IAAI,YAAY,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAA,uCAAwB,EAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,+BAAiB,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,CAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5C,MAAM,CAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChD,MAAM,CAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,yFAAyF;IAC7I,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,MAAM;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,UAAe,EAAE,QAAc;YAC3G,OAAO,EAAsB,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,KAAc,EAAE,QAAc;YACzG,OAAO,yBAAyB,iBAAiB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnH,MAAM,QAAQ,GAAiB;gBAC7B,IAAI,EAAG,CAAC;gBACR,IAAI,EAAG,CAAC;gBACR,IAAI,EAAG,UAAU;gBACjB,IAAI,EAAG,UAAU;gBACjB,gBAAgB,EAAG;oBACjB,IAAI,EAAG,MAAM;oBACb,UAAU,EAAG,IAAI;iBAClB;aAAC,CAAC;YACL,OAAO,IAAI,6CAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YAEnG,MAAM,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;YAClC,SAAS,GAAG,KAAK,CAAC;YAClB,OAAO;gBACL,mBAAmB,EAAE,MAAM;gBAC3B,IAAI,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAE/B,0BAA0B;QAC1B,wEAAwE;QACxE,oGAAoG;QACpG,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAE;YACpD,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG;YAChE,gBAAgB,EAAG,EAAE,IAAI,EAAG,MAAM,EAAE,UAAU,EAAG,IAAI;aACpD;SAAC,CAAC,CAAC;QACN,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAE;YACpD,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU;YACzE,gBAAgB,EAAG,EAAE,IAAI,EAAG,MAAM,EAAE,UAAU,EAAG,IAAI;aACpD;SAAC,CAAC,CAAC;QACN,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAE;YACpD,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,UAAU,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG;YACzE,gBAAgB,EAAG,EAAE,IAAI,EAAG,MAAM,EAAE,UAAU,EAAG,IAAI;aACpD;SAAC,CAAC,CAAC;QACN,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAE;YACpD,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU,EAAE,IAAI,EAAG,UAAU;YAClF,gBAAgB,EAAG,EAAE,IAAI,EAAG,MAAM,EAAE,UAAU,EAAG,IAAI;aACpD;SAAC,CAAC,CAAC;QACN,MAAM,CAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAExE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,oFAAoF;QACpF,MAAM,QAAQ,GAAG,MAAO,QAAgB,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAE/D,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,MAAM;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAE,qCAAqB,CAAC,SAAiB,EAAE,OAAO,CAAC,CAAC;QAElF,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAY,EAAE,OAAe,EAAE,UAAkB,EAAE,OAA4B,EAAE,aAA8B,EAAE,UAAmB,EAAE,UAAmB,EAAE,eAAyB;YAC5Q,OAAO,EAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAO,QAAgB,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEvE,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Base64EncodedString, Cartographic, ImageMapLayerSettings, ImageSourceFormat, ServerError } from \"@itwin/core-common\";\r\nimport * as chai from \"chai\";\r\nimport * as chaiAsPromised from \"chai-as-promised\";\r\nimport { ArcGisFeatureMapLayerFormat } from \"../../ArcGisFeature/ArcGisFeatureFormat\";\r\nimport { ArcGisFeatureProvider } from \"../../map-layers-formats\";\r\nimport * as sinon from \"sinon\";\r\nimport { ArcGISImageryProvider, ArcGisUtilities, ImageryMapTileTree, MapLayerFeatureInfo, MapLayerImageryProviderStatus, QuadId } from \"@itwin/core-frontend\";\r\nimport { NewYorkDataset } from \"./NewYorkDataset\";\r\nimport { base64StringToUint8Array, ByteStream, Logger } from \"@itwin/core-bentley\";\r\nimport { ArcGisExtent, ArcGisFeatureFormat, ArcGisGeometry } from \"../../ArcGisFeature/ArcGisFeatureQuery\";\r\nimport { PhillyLandmarksDataset } from \"./PhillyLandmarksDataset\";\r\nimport { ArcGisFeatureResponse } from \"../../ArcGisFeature/ArcGisFeatureResponse\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { ArcGisFeaturePBF } from \"../../ArcGisFeature/ArcGisFeaturePBF\";\r\nimport { ArcGisFeatureJSON } from \"../../ArcGisFeature/ArcGisFeatureJSON\";\r\n\r\nconst expect = chai.expect;\r\nchai.use(chaiAsPromised);\r\n\r\nconst esriFeatureSampleSource = {name: \"dummyFeatureLayer\", url: \"https://dummy.com\", formatId: ArcGisFeatureMapLayerFormat.formatId};\r\nconst pngTransparent1x1 = \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==\";\r\n\r\ndescribe(\"ArcGisFeatureProvider\", () => {\r\n const sandbox = sinon.createSandbox();\r\n\r\n afterEach(async () => {\r\n sandbox.restore();\r\n });\r\n\r\n it(\"should initialize with valid data\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:NewYorkDataset.serviceCapabilities};\r\n });\r\n\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"getLayerMetadata\" as any).callsFake(async function _(_layerId: unknown) {\r\n return NewYorkDataset.streetsLayerCapabilities;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n expect((provider as any)._minDepthFromLod).to.equals(11);\r\n expect((provider as any)._maxDepthFromLod).to.equals(22);\r\n });\r\n\r\n it(\"should not initialize with no service metadata\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return undefined;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n\r\n });\r\n\r\n it(\"should update status when invalid token error from service\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{error: {code: 499}}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const raiseEventSpy = sandbox.spy(provider.onStatusChanged, \"raiseEvent\");\r\n await provider.initialize();\r\n\r\n expect(provider.status).to.equals(MapLayerImageryProviderStatus.RequireAuth);\r\n expect(raiseEventSpy.calledOnceWith(provider)).to.be.true;\r\n });\r\n\r\n it(\"should throw query capability not supported\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Test\"}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should pick the first visible sub-layer when multiple visible sub-layers\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\"}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n const provider = new ArcGisFeatureProvider(settings);\r\n (provider as any)._format = \"JSON\";\r\n await provider.initialize();\r\n expect((provider as any)._layerId ).to.equals(settings.subLayers[0].id);\r\n });\r\n\r\n it(\"should pick sub-layers from service metadata if none provided on layer settings\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\",\r\n layers: [\r\n {\r\n id : 0,\r\n\r\n },\r\n {\r\n id : 1,\r\n },\r\n ]},\r\n };\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (id: unknown) {\r\n if (id === 1 ) {\r\n return {defaultVisibility:true};\r\n }\r\n return undefined;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n (provider as any)._format = \"JSON\";\r\n await provider.initialize();\r\n expect((provider as any)._layerId ).to.equals(1);\r\n expect((provider as any)._layerMetadata ).to.eql({defaultVisibility:true});\r\n });\r\n\r\n it(\"should throw error if no layers in capabilities\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\", layers: []}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should throw if no layer metadata from service\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return undefined;\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should read supported supported format\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n let getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"PBF, JSON\"};\r\n });\r\n\r\n const getServiceJsonStub = sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\"}};\r\n });\r\n\r\n let provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n // PBF requires 'supportsCoordinatesQuantization'\r\n getServiceJsonStub.restore();\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: { currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportsCoordinatesQuantization:true, supportedQueryFormats:\"PBF, JSON\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"PBF\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"JSON\"};\r\n });\r\n\r\n getServiceJsonStub.restore();\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: { currentVersion: 10.91, capabilities: \"Query\", supportsCoordinatesQuantization:true}};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"JSON\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should compute minLod/maxLod\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n expect((provider as any)._minDepthFromLod ).to.equals(9);\r\n expect((provider as any)._maxDepthFromLod ).to.equals(15);\r\n });\r\n\r\n it(\"should construct empty url\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const url = await provider.constructUrl(0,0,0);\r\n expect(url).to.equals(\"\");\r\n\r\n });\r\n\r\n it(\"should construct feature query url\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n let getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility: true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n let url = provider.constructFeatureUrl(0,0,0, \"PBF\");\r\n const extent = {\r\n xmin: -20037508.34,\r\n ymin: -20037508.33,\r\n xmax: 20037508.34,\r\n ymax: 20037508.34,\r\n spatialReference: {\r\n wkid: 102100,\r\n latestWkid: 3857,\r\n },\r\n };\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100`);\r\n expect(url?.envelope?.xmin).to.be.closeTo(extent.xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo(extent.ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo(extent.xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo(extent.ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(102100);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(3857);\r\n\r\n // Now turn ON 'supportsCoordinatesQuantization' to ON\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility: true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n supportsCoordinatesQuantization: true,\r\n };\r\n });\r\n\r\n const provider2 = new ArcGisFeatureProvider(settings);\r\n await provider2.initialize();\r\n url = provider2.constructFeatureUrl(0,0,0, \"PBF\");\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);\r\n expect(url?.envelope?.xmin).to.be.closeTo(extent.xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo(extent.ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo(extent.xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo(extent.ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(extent.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(extent.spatialReference.latestWkid);\r\n\r\n // Test passing an override geometry\r\n const overrideGeom: ArcGisGeometry = {\r\n type: \"esriGeometryEnvelope\",\r\n geom: {\r\n xmin: -50,\r\n ymin: -50,\r\n xmax: 50,\r\n ymax: 50,\r\n spatialReference: {\r\n wkid: 102100,\r\n latestWkid: 3857,\r\n },\r\n },\r\n };\r\n const provider3 = new ArcGisFeatureProvider(settings);\r\n await provider3.initialize();\r\n url = provider3.constructFeatureUrl(0,0,0, \"PBF\", overrideGeom);\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);\r\n expect(url?.envelope?.xmin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(overrideGeom.geom.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);\r\n\r\n // Now test with a different tolerance value\r\n url = provider3.constructFeatureUrl(0,0,0, \"PBF\", overrideGeom, undefined, 10);\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D&distance=782715.16953125`);\r\n expect(url?.envelope?.xmin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(overrideGeom.geom.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);\r\n\r\n });\r\n\r\n it(\"should log error when getFeatureInfo cannot be performed\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"constructFeatureUrl\").callsFake(function _(_row: number, _column: number, _zoomLevel: number, _format: ArcGisFeatureFormat, _geomOverride?: ArcGisGeometry, _outFields?: string, _tolerance?: number, _returnGeometry?: boolean) {\r\n return undefined;\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.called).to.be.true;\r\n\r\n });\r\n\r\n it(\"should process data in getFeatureInfo\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n supportsCoordinatesQuantization:true,\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub((ArcGISImageryProvider.prototype as any), \"fetch\").callsFake(async function _(_url: unknown, _options?: unknown) {\r\n const test = {\r\n headers: { \"content-type\" : \"pbf\"},\r\n arrayBuffer: async () => {\r\n const byteArray = Base64EncodedString.toUint8Array(PhillyLandmarksDataset.phillyTransportationGetFeatureInfoQueryEncodedPbf);\r\n return Promise.resolve(byteArray ? ByteStream.fromUint8Array(byteArray).arrayBuffer : undefined);\r\n },\r\n status: 200,\r\n } as unknown; // By using unknown type, I can define parts of Response I really need\r\n return (test as Response );\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(1);\r\n expect(logErrorSpy.calledOnce).to.be.false;\r\n\r\n });\r\n\r\n it(\"should log error when exceed transfert limit\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {exceedTransferLimit: true, data:undefined};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.calledOnce).to.be.true;\r\n\r\n });\r\n\r\n it(\"should log error when exceed exception thrown limit\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n throw new Error();\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.calledOnce).to.be.true;\r\n\r\n });\r\n\r\n it(\"should debug Feature Geom\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {data: {\r\n toObject: () => undefined,\r\n }};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n (provider as any)._debugFeatureGeom = true;\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logInfoSpy = sandbox.spy(Logger, \"logInfo\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logInfoSpy.callCount).to.equals(2);\r\n\r\n });\r\n\r\n it(\"should compute computeTileWorld2CanvasTransform\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n const worldSize = 100;\r\n const canvasSize = 10;\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const getEPSG3857ExtentStub = sandbox.stub(ArcGisFeatureProvider.prototype, \"getEPSG3857Extent\").callsFake(function (_row: number, _column: number, _zoomLevel: number) {\r\n return { left:0, right:worldSize, bottom:0, top:worldSize };\r\n });\r\n\r\n sandbox.stub(provider, \"tileSize\").get(function () {\r\n return canvasSize; // return a size of 10 to simplicity\r\n });\r\n let transform = ((provider as any).computeTileWorld2CanvasTransform(0,0,0) as Transform | undefined);\r\n let worldPoint = Point3d.createFrom({x: worldSize*0.5, y:worldSize*0.5, z:0});\r\n let transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n\r\n // Make sure center point remains in the center\r\n expect(transformedPoint).to.not.undefined;\r\n expect(transformedPoint!.x).to.equals(canvasSize*0.5);\r\n expect(transformedPoint!.y).to.equals(canvasSize*0.5);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n // Check that y-axis get flipped\r\n worldPoint = Point3d.createFrom({x: 0, y:10, z:0});\r\n transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n expect(transformedPoint!.x).to.equals(0);\r\n expect(transformedPoint!.y).to.equals(9);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n // Now check translation has been applied (origin shift)\r\n getEPSG3857ExtentStub.restore();\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"getEPSG3857Extent\").callsFake(function (_row: number, _column: number, _zoomLevel: number) {\r\n return { left:worldSize, right:worldSize*2, bottom:worldSize, top:worldSize*2 };\r\n });\r\n worldPoint = Point3d.createFrom({x: worldSize, y:worldSize, z:0});\r\n transform = ((provider as any).computeTileWorld2CanvasTransform(0,0,0) as Transform | undefined);\r\n transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n expect(transformedPoint).to.not.undefined;\r\n expect(transformedPoint!.x).to.equals(0);\r\n expect(transformedPoint!.y).to.equals(10);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n });\r\n\r\n it(\"should loadTile from PBF request\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF\",\r\n supportsCoordinatesQuantization:true,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const providerStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n return new ArcGisFeatureResponse(\"PBF\", Promise.resolve({} as Response));\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {\r\n exceedTransferLimit: false,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n // toDataURL string;\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeaturePBF.prototype, \"readAndRender\");\r\n const computeTransfoSpy = sandbox.spy(ArcGisFeatureProvider.prototype as any, \"computeTileWorld2CanvasTransform\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const tileData = await provider.loadTile(0,0,0);\r\n expect (tileData).to.not.undefined;\r\n expect (tileData?.data instanceof Uint8Array).to.be.true;\r\n expect(tileData?.data).to.eqls(base64StringToUint8Array(pngTransparent1x1));\r\n expect(tileData?.format).to.equals(ImageSourceFormat.Png);\r\n expect (providerStub.calledOnce).to.be.true;\r\n expect (readAndRenderSpy.calledOnce).to.be.true;\r\n expect (computeTransfoSpy.calledOnce).to.be.false; // Should not be called since we have supportsCoordinatesQuantization in layer metadata\r\n\r\n });\r\n\r\n it(\"should loadTile from JSON request\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const providerStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n return new ArcGisFeatureResponse(\"JSON\", Promise.resolve({} as Response));\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {\r\n exceedTransferLimit: false,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeatureJSON.prototype, \"readAndRender\");\r\n const computeTransfoSpy = sandbox.spy(ArcGisFeatureProvider.prototype as any, \"computeTileWorld2CanvasTransform\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const tileData = await provider.loadTile(0,0,0);\r\n expect (tileData).to.not.undefined;\r\n expect (tileData?.data instanceof Uint8Array).to.be.true;\r\n expect(tileData?.data).to.eqls(base64StringToUint8Array(pngTransparent1x1));\r\n expect(tileData?.format).to.equals(ImageSourceFormat.Png);\r\n expect (providerStub.calledOnce).to.be.true;\r\n expect (readAndRenderSpy.calledOnce).to.be.true;\r\n expect (computeTransfoSpy.calledOnce).to.be.true; // Should be called since we dont have _supportsCoordinatesQuantization in layer metadata\r\n });\r\n\r\n it(\"should make sub request if loadtile request return 'exceedTransferLimit'\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const extentSize = 100;\r\n const fetchTileStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n const envelope: ArcGisExtent = {\r\n xmin : 0,\r\n ymin : 0,\r\n xmax : extentSize,\r\n ymax : extentSize,\r\n spatialReference : {\r\n wkid : 102100,\r\n latestWkid : 3857,\r\n }};\r\n return new ArcGisFeatureResponse(\"JSON\", Promise.resolve({} as Response), envelope);\r\n });\r\n\r\n let firstCall = true;\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n\r\n const exceed = firstCall === true;\r\n firstCall = false;\r\n return {\r\n exceedTransferLimit: exceed,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeatureJSON.prototype, \"readAndRender\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n await provider.loadTile(0,0,0);\r\n\r\n // We should have 5 calls:\r\n // Call #1 : initial call for 0,0,0 and it returns 'exceedTransferLimit'\r\n // Calls #2-5: Four calls which represent a call for each sub-envelope (initial extent divided by 4)\r\n expect (fetchTileStub.getCalls().length).to.equals(5);\r\n expect (fetchTileStub.getCalls()[1].args[3]).to.eqls( {\r\n xmin : 0, ymin : 0, xmax : extentSize*0.5, ymax : extentSize*0.5,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[2].args[3]).to.eqls( {\r\n xmin : 0, ymin : extentSize*0.5, xmax : extentSize*0.5, ymax : extentSize,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[3].args[3]).to.eqls( {\r\n xmin : extentSize*0.5, ymin : 0, xmax : extentSize, ymax : extentSize*0.5,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[4].args[3]).to.eqls( {\r\n xmin : extentSize*0.5, ymin : extentSize*0.5, xmax : extentSize, ymax : extentSize,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (readAndRenderSpy.getCalls().length).to.equals(4);\r\n });\r\n\r\n it(\"fetchTile should return undefined when to format defined\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n // make a first request with init, should return undefined because of missing format\r\n const tileData = await (provider as any).fetchTile(0,0,0);\r\n expect(tileData).to.be.undefined;\r\n });\r\n\r\n it(\"fetchTile should call fetch with the proper URL\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n const fetchStub = sandbox.stub((ArcGISImageryProvider.prototype as any), \"fetch\");\r\n\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"constructFeatureUrl\").callsFake(function _(_row: number, _column: number, _zoomLevel: number, _format: ArcGisFeatureFormat, _geomOverride?: ArcGisGeometry, _outFields?: string, _tolerance?: number, _returnGeometry?: boolean) {\r\n return {url: settings.url};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const response = await (provider as any).fetchTile(0,0,0);\r\n expect(response).to.not.undefined;\r\n expect(fetchStub.calledOnce).to.be.true;\r\n const test1 = fetchStub.getCall(0).firstArg;\r\n expect(test1.toString()).to.equals(new URL(settings.url).toString());\r\n\r\n });\r\n\r\n});\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=ArcGisFeatureQuery.test.d.ts.map
|
|
@@ -1,104 +1,104 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const chai_1 = require("chai");
|
|
8
|
-
const sinon = require("sinon");
|
|
9
|
-
const ArcGisFeatureQuery_1 = require("../../ArcGisFeature/ArcGisFeatureQuery");
|
|
10
|
-
describe("ArcGisFeatureQuery", () => {
|
|
11
|
-
const sandbox = sinon.createSandbox();
|
|
12
|
-
beforeEach(async () => {
|
|
13
|
-
});
|
|
14
|
-
afterEach(async () => {
|
|
15
|
-
sandbox.restore();
|
|
16
|
-
});
|
|
17
|
-
it("should not apply different switches if not needed", async () => {
|
|
18
|
-
const query = new ArcGisFeatureQuery_1.ArcGisFeatureQuery("https://test.com/rest/", 0, "JSON", 3857);
|
|
19
|
-
const queryUrl = query.toString();
|
|
20
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("resultRecordCount");
|
|
21
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("resultOffset");
|
|
22
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("returnGeometry");
|
|
23
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("resultType");
|
|
24
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("maxRecordCountFactor");
|
|
25
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("returnExceededLimitFeatures");
|
|
26
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("geometryType");
|
|
27
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("geometry");
|
|
28
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("inSR");
|
|
29
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("inSR");
|
|
30
|
-
(0, chai_1.expect)(queryUrl).to.contains("where=1%3D1");
|
|
31
|
-
});
|
|
32
|
-
it("should not apply different switches if not needed", async () => {
|
|
33
|
-
const extentSize = 100;
|
|
34
|
-
const fakeEnvelope = {
|
|
35
|
-
xmin: 0,
|
|
36
|
-
ymin: 0,
|
|
37
|
-
xmax: extentSize,
|
|
38
|
-
ymax: extentSize,
|
|
39
|
-
spatialReference: {
|
|
40
|
-
wkid: 102100,
|
|
41
|
-
latestWkid: 3857,
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
const query = new ArcGisFeatureQuery_1.ArcGisFeatureQuery("https://test.com/rest/", 0, "JSON", 3857, {
|
|
45
|
-
resultRecordCount: 10,
|
|
46
|
-
resultOffset: 11,
|
|
47
|
-
returnGeometry: true,
|
|
48
|
-
geometry: { type: "esriGeometryEnvelope", geom: fakeEnvelope },
|
|
49
|
-
geometryType: "esriGeometryEnvelope",
|
|
50
|
-
spatialRel: "esriSpatialRelIntersects",
|
|
51
|
-
resultType: "tile",
|
|
52
|
-
maxRecordCountFactor: 1000,
|
|
53
|
-
returnExceededLimitFeatures: false,
|
|
54
|
-
quantizationParameters: {
|
|
55
|
-
mode: "view",
|
|
56
|
-
originPosition: "upperLeft",
|
|
57
|
-
tolerance: 10,
|
|
58
|
-
extent: fakeEnvelope,
|
|
59
|
-
},
|
|
60
|
-
outFields: "test",
|
|
61
|
-
distance: 100,
|
|
62
|
-
});
|
|
63
|
-
const queryUrl = query.toString();
|
|
64
|
-
(0, chai_1.expect)(queryUrl).to.contains("resultRecordCount=10");
|
|
65
|
-
(0, chai_1.expect)(queryUrl).to.contains("resultOffset=11");
|
|
66
|
-
(0, chai_1.expect)(queryUrl).to.contains("returnGeometry=true");
|
|
67
|
-
(0, chai_1.expect)(queryUrl).to.contains(`resultType=tile`);
|
|
68
|
-
(0, chai_1.expect)(queryUrl).to.contains("maxRecordCountFactor=1000");
|
|
69
|
-
(0, chai_1.expect)(queryUrl).to.contains("returnExceededLimitFeatures=false");
|
|
70
|
-
(0, chai_1.expect)(queryUrl).to.contains("geometryType=esriGeometryEnvelope");
|
|
71
|
-
(0, chai_1.expect)(queryUrl).to.contains(`geometry=%7B%22xmin%22%3A0%2C%22ymin%22%3A0%2C%22xmax%22%3A100%2C%22ymax%22%3A100%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D`);
|
|
72
|
-
(0, chai_1.expect)(queryUrl).to.contains("inSR=102100");
|
|
73
|
-
(0, chai_1.expect)(queryUrl).to.contains("outFields=test");
|
|
74
|
-
(0, chai_1.expect)(queryUrl).to.contains("distance=100");
|
|
75
|
-
(0, chai_1.expect)(queryUrl).to.contains("units=esriSRUnit_Meter");
|
|
76
|
-
});
|
|
77
|
-
it("should not include geometry only when applicable", async () => {
|
|
78
|
-
const extentSize = 100;
|
|
79
|
-
const fakeEnvelope = {
|
|
80
|
-
xmin: 0,
|
|
81
|
-
ymin: 0,
|
|
82
|
-
xmax: extentSize,
|
|
83
|
-
ymax: extentSize,
|
|
84
|
-
spatialReference: {
|
|
85
|
-
wkid: 102100,
|
|
86
|
-
latestWkid: 3857,
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
const query = new ArcGisFeatureQuery_1.ArcGisFeatureQuery("https://test.com/rest/", 0, "JSON", 3857, {
|
|
90
|
-
spatialRel: "esriSpatialRelIntersects",
|
|
91
|
-
});
|
|
92
|
-
let queryUrl = query.toString();
|
|
93
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("geometryType=");
|
|
94
|
-
(0, chai_1.expect)(queryUrl).to.not.contains(`geometry=`);
|
|
95
|
-
(0, chai_1.expect)(queryUrl).to.not.contains("inSR=");
|
|
96
|
-
query.spatialRel = undefined;
|
|
97
|
-
query.geometry = { type: "esriGeometryEnvelope", geom: fakeEnvelope };
|
|
98
|
-
queryUrl = query.toString();
|
|
99
|
-
(0, chai_1.expect)(queryUrl).to.contains("geometryType=esriGeometryEnvelope");
|
|
100
|
-
(0, chai_1.expect)(queryUrl).to.contains(`geometry=%7B%22xmin%22%3A0%2C%22ymin%22%3A0%2C%22xmax%22%3A100%2C%22ymax%22%3A100%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D`);
|
|
101
|
-
(0, chai_1.expect)(queryUrl).to.contains("inSR=102100");
|
|
102
|
-
});
|
|
103
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const chai_1 = require("chai");
|
|
8
|
+
const sinon = require("sinon");
|
|
9
|
+
const ArcGisFeatureQuery_1 = require("../../ArcGisFeature/ArcGisFeatureQuery");
|
|
10
|
+
describe("ArcGisFeatureQuery", () => {
|
|
11
|
+
const sandbox = sinon.createSandbox();
|
|
12
|
+
beforeEach(async () => {
|
|
13
|
+
});
|
|
14
|
+
afterEach(async () => {
|
|
15
|
+
sandbox.restore();
|
|
16
|
+
});
|
|
17
|
+
it("should not apply different switches if not needed", async () => {
|
|
18
|
+
const query = new ArcGisFeatureQuery_1.ArcGisFeatureQuery("https://test.com/rest/", 0, "JSON", 3857);
|
|
19
|
+
const queryUrl = query.toString();
|
|
20
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("resultRecordCount");
|
|
21
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("resultOffset");
|
|
22
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("returnGeometry");
|
|
23
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("resultType");
|
|
24
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("maxRecordCountFactor");
|
|
25
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("returnExceededLimitFeatures");
|
|
26
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("geometryType");
|
|
27
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("geometry");
|
|
28
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("inSR");
|
|
29
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("inSR");
|
|
30
|
+
(0, chai_1.expect)(queryUrl).to.contains("where=1%3D1");
|
|
31
|
+
});
|
|
32
|
+
it("should not apply different switches if not needed", async () => {
|
|
33
|
+
const extentSize = 100;
|
|
34
|
+
const fakeEnvelope = {
|
|
35
|
+
xmin: 0,
|
|
36
|
+
ymin: 0,
|
|
37
|
+
xmax: extentSize,
|
|
38
|
+
ymax: extentSize,
|
|
39
|
+
spatialReference: {
|
|
40
|
+
wkid: 102100,
|
|
41
|
+
latestWkid: 3857,
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const query = new ArcGisFeatureQuery_1.ArcGisFeatureQuery("https://test.com/rest/", 0, "JSON", 3857, {
|
|
45
|
+
resultRecordCount: 10,
|
|
46
|
+
resultOffset: 11,
|
|
47
|
+
returnGeometry: true,
|
|
48
|
+
geometry: { type: "esriGeometryEnvelope", geom: fakeEnvelope },
|
|
49
|
+
geometryType: "esriGeometryEnvelope",
|
|
50
|
+
spatialRel: "esriSpatialRelIntersects",
|
|
51
|
+
resultType: "tile",
|
|
52
|
+
maxRecordCountFactor: 1000,
|
|
53
|
+
returnExceededLimitFeatures: false,
|
|
54
|
+
quantizationParameters: {
|
|
55
|
+
mode: "view",
|
|
56
|
+
originPosition: "upperLeft",
|
|
57
|
+
tolerance: 10,
|
|
58
|
+
extent: fakeEnvelope,
|
|
59
|
+
},
|
|
60
|
+
outFields: "test",
|
|
61
|
+
distance: 100,
|
|
62
|
+
});
|
|
63
|
+
const queryUrl = query.toString();
|
|
64
|
+
(0, chai_1.expect)(queryUrl).to.contains("resultRecordCount=10");
|
|
65
|
+
(0, chai_1.expect)(queryUrl).to.contains("resultOffset=11");
|
|
66
|
+
(0, chai_1.expect)(queryUrl).to.contains("returnGeometry=true");
|
|
67
|
+
(0, chai_1.expect)(queryUrl).to.contains(`resultType=tile`);
|
|
68
|
+
(0, chai_1.expect)(queryUrl).to.contains("maxRecordCountFactor=1000");
|
|
69
|
+
(0, chai_1.expect)(queryUrl).to.contains("returnExceededLimitFeatures=false");
|
|
70
|
+
(0, chai_1.expect)(queryUrl).to.contains("geometryType=esriGeometryEnvelope");
|
|
71
|
+
(0, chai_1.expect)(queryUrl).to.contains(`geometry=%7B%22xmin%22%3A0%2C%22ymin%22%3A0%2C%22xmax%22%3A100%2C%22ymax%22%3A100%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D`);
|
|
72
|
+
(0, chai_1.expect)(queryUrl).to.contains("inSR=102100");
|
|
73
|
+
(0, chai_1.expect)(queryUrl).to.contains("outFields=test");
|
|
74
|
+
(0, chai_1.expect)(queryUrl).to.contains("distance=100");
|
|
75
|
+
(0, chai_1.expect)(queryUrl).to.contains("units=esriSRUnit_Meter");
|
|
76
|
+
});
|
|
77
|
+
it("should not include geometry only when applicable", async () => {
|
|
78
|
+
const extentSize = 100;
|
|
79
|
+
const fakeEnvelope = {
|
|
80
|
+
xmin: 0,
|
|
81
|
+
ymin: 0,
|
|
82
|
+
xmax: extentSize,
|
|
83
|
+
ymax: extentSize,
|
|
84
|
+
spatialReference: {
|
|
85
|
+
wkid: 102100,
|
|
86
|
+
latestWkid: 3857,
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const query = new ArcGisFeatureQuery_1.ArcGisFeatureQuery("https://test.com/rest/", 0, "JSON", 3857, {
|
|
90
|
+
spatialRel: "esriSpatialRelIntersects",
|
|
91
|
+
});
|
|
92
|
+
let queryUrl = query.toString();
|
|
93
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("geometryType=");
|
|
94
|
+
(0, chai_1.expect)(queryUrl).to.not.contains(`geometry=`);
|
|
95
|
+
(0, chai_1.expect)(queryUrl).to.not.contains("inSR=");
|
|
96
|
+
query.spatialRel = undefined;
|
|
97
|
+
query.geometry = { type: "esriGeometryEnvelope", geom: fakeEnvelope };
|
|
98
|
+
queryUrl = query.toString();
|
|
99
|
+
(0, chai_1.expect)(queryUrl).to.contains("geometryType=esriGeometryEnvelope");
|
|
100
|
+
(0, chai_1.expect)(queryUrl).to.contains(`geometry=%7B%22xmin%22%3A0%2C%22ymin%22%3A0%2C%22xmax%22%3A100%2C%22ymax%22%3A100%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D`);
|
|
101
|
+
(0, chai_1.expect)(queryUrl).to.contains("inSR=102100");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
104
|
//# sourceMappingURL=ArcGisFeatureQuery.test.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=ArcGisFeatureRenderer.test.d.ts.map
|