From 4a1d6ad72bec202b66bc4ad720934fb51d45bfdd Mon Sep 17 00:00:00 2001 From: markilue <745518019@qq.com> Date: Wed, 20 Mar 2024 21:17:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E4=B8=AD=E6=9B=B4=E6=96=B0=E4=B8=80?= =?UTF-8?q?=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phm_rotate/backend/phm_backend/.gitignore | 33 + .../mqtt-collect-flume/logs/strutslog1.log | 0 .../collecting/mqtt-collect-flume/pom.xml | 126 + .../com/cqu/mqtt/conf/kafka-flume-hdfs.conf | 69 + .../com/cqu/mqtt/conf/mqtt-flume-kafka.conf | 22 + .../main/java/com/cqu/mqtt/conf/template.conf | 22 + .../java/com/cqu/mqtt/entity/MQTTClient.java | 24 + .../cqu/mqtt/entity/MQTTConnectOptions.java | 21 + .../main/java/com/cqu/mqtt/entity/SFTP.java | 22 + .../interceptor/ETLNotJsonInterceptor.java | 76 + .../interceptor/TimeStampInterceptor.java | 88 + .../java/com/cqu/mqtt/service/MQTTSource.java | 247 + .../java/com/cqu/mqtt/utils/ConfUtils.java | 79 + .../java/com/cqu/mqtt/utils/HDFSUtils.java | 57 + .../java/com/cqu/mqtt/utils/JSONUtils.java | 17 + .../java/com/cqu/mqtt/utils/LinuxUtils.java | 162 + .../java/com/cqu/mqtt/utils/SFTPUtils.java | 276 + .../src/main/resources/hdfs-site.xml | 16 + .../src/main/resources/log4j2.xml | 26 + .../phm_backend/common/common-linux/pom.xml | 115 + .../linux/Exception/LoginErrorException.java | 16 + .../com/cqu/linux/entity/LinuxConnection.java | 32 + .../main/java/com/cqu/linux/entity/SFTP.java | 22 + .../com/cqu/linux/utils/CopyFileUtils.java | 159 + .../java/com/cqu/linux/utils/FlumeUtils.java | 134 + .../java/com/cqu/linux/utils/HDFSUtils.java | 134 + .../java/com/cqu/linux/utils/HTTPUtils.java | 77 + .../java/com/cqu/linux/utils/LinuxUtils.java | 487 + .../src/main/resources/kafka-flume-hdfs.conf | 69 + .../src/main/resources/mqtt-flume-kafka.conf | 22 + .../phm_backend/common/common-utils/pom.xml | 28 + .../src/main/java/com/cqu/utils/Result.java | 70 + .../main/java/com/cqu/utils/ResultCode.java | 12 + .../utils/utils/ReadResourcesFileUtil.java | 109 + phm_rotate/backend/phm_backend/common/pom.xml | 75 + .../phm_backend/common/service_base/pom.xml | 28 + .../com/cqu/base/config/SwaggerConfig.java | 40 + .../exception/GlobalExceptionHandler.java | 35 + .../com/cqu/base/exception/PhmException.java | 21 + .../cqu/base/handler/MyMetaObjectHandler.java | 28 + .../backend/phm_backend/gateway/pom.xml | 32 + .../com/cqu/gateway/GatewayApplication.java | 23 + .../com/cqu/gateway/config/CorsConfig.java | 31 + phm_rotate/backend/phm_backend/pom.xml | 239 + .../backend/phm_backend/service/pom.xml | 150 + .../phm_backend/service/service_data/pom.xml | 53 + .../java/com/cqu/data/DataApplication.java | 19 + .../com/cqu/data/clients/DeviceClient.java | 33 + .../java/com/cqu/data/config/DataConfig.java | 53 + .../controller/AccessServiceController.java | 54 + .../data/controller/AccessTaskController.java | 23 + .../data/controller/DatasetController.java | 117 + .../controller/DatasetItemController.java | 95 + .../controller/SourceTypeKafkaController.java | 23 + .../controller/SourceTypeLigaController.java | 23 + .../controller/SourceTypeMqttController.java | 23 + .../controller/SourceTypeOpcUaController.java | 23 + .../com/cqu/data/entity/AccessService.java | 127 + .../java/com/cqu/data/entity/AccessTask.java | 74 + .../java/com/cqu/data/entity/Dataset.java | 86 + .../java/com/cqu/data/entity/DatasetItem.java | 118 + .../com/cqu/data/entity/SourceTypeKafka.java | 62 + .../com/cqu/data/entity/SourceTypeLiga.java | 54 + .../com/cqu/data/entity/SourceTypeMqtt.java | 102 + .../com/cqu/data/entity/SourceTypeOpcUa.java | 71 + .../cqu/data/entity/enumClass/DataType.java | 14 + .../entity/enumClass/DatasetItemType.java | 21 + .../data/entity/enumClass/DatasetType.java | 12 + .../cqu/data/entity/enumClass/SourceType.java | 18 + .../com/cqu/data/entity/enumClass/Status.java | 20 + .../java/com/cqu/data/entity/vo/Device.java | 84 + .../cqu/data/entity/vo/DeviceTypeDetail.java | 70 + .../java/com/cqu/data/entity/vo/GraphVo.java | 18 + .../java/com/cqu/data/entity/vo/LinksVo.java | 15 + .../java/com/cqu/data/entity/vo/NodesVo.java | 20 + .../com/cqu/data/entity/vo/ServiceFormVo.java | 28 + .../cqu/data/mapper/AccessServiceMapper.java | 16 + .../com/cqu/data/mapper/AccessTaskMapper.java | 16 + .../cqu/data/mapper/DatasetItemMapper.java | 22 + .../com/cqu/data/mapper/DatasetMapper.java | 26 + .../data/mapper/SourceTypeKafkaMapper.java | 16 + .../cqu/data/mapper/SourceTypeLigaMapper.java | 16 + .../cqu/data/mapper/SourceTypeMqttMapper.java | 16 + .../data/mapper/SourceTypeOpcUaMapper.java | 16 + .../data/mapper/xml/AccessServiceMapper.xml | 5 + .../cqu/data/mapper/xml/AccessTaskMapper.xml | 5 + .../cqu/data/mapper/xml/DatasetItemMapper.xml | 10 + .../com/cqu/data/mapper/xml/DatasetMapper.xml | 10 + .../data/mapper/xml/SourceTypeKafkaMapper.xml | 5 + .../data/mapper/xml/SourceTypeLigaMapper.xml | 5 + .../data/mapper/xml/SourceTypeMqttMapper.xml | 5 + .../data/mapper/xml/SourceTypeOpcUaMapper.xml | 5 + .../data/service/AccessServiceService.java | 22 + .../cqu/data/service/AccessTaskService.java | 16 + .../cqu/data/service/DatasetItemService.java | 49 + .../com/cqu/data/service/DatasetService.java | 63 + .../data/service/SourceTypeKafkaService.java | 16 + .../data/service/SourceTypeLigaService.java | 16 + .../data/service/SourceTypeMqttService.java | 16 + .../data/service/SourceTypeOpcUaService.java | 16 + .../impl/AccessServiceServiceImpl.java | 138 + .../service/impl/AccessTaskServiceImpl.java | 20 + .../service/impl/DatasetItemServiceImpl.java | 106 + .../data/service/impl/DatasetServiceImpl.java | 249 + .../impl/SourceTypeKafkaServiceImpl.java | 20 + .../impl/SourceTypeLigaServiceImpl.java | 20 + .../impl/SourceTypeMqttServiceImpl.java | 20 + .../impl/SourceTypeOpcUaServiceImpl.java | 20 + .../test/java/com/cqu/test/CodeGenerator.java | 77 + .../service/service_device/pom.xml | 52 + .../com/cqu/device/DeviceApplication.java | 24 + .../com/cqu/device/config/DeviceConfig.java | 36 + .../controller/DataModelController.java | 81 + .../controller/DeviceAreaController.java | 77 + .../device/controller/DeviceController.java | 121 + .../controller/DeviceGroupController.java | 107 + .../controller/DeviceTypeController.java | 69 + .../DeviceTypeDetailController.java | 119 + .../controller/DeviceTypeGroupController.java | 65 + .../device/controller/LoginController.java | 27 + .../cqu/device/controller/PartController.java | 84 + .../device/controller/PartTypeController.java | 72 + .../controller/PartTypeDetailController.java | 110 + .../controller/PartTypeGroupController.java | 75 + .../controller/SubSystemController.java | 62 + .../java/com/cqu/device/entity/DataModel.java | 56 + .../java/com/cqu/device/entity/Device.java | 85 + .../com/cqu/device/entity/DeviceArea.java | 56 + .../com/cqu/device/entity/DeviceGroup.java | 74 + .../com/cqu/device/entity/DeviceType.java | 59 + .../cqu/device/entity/DeviceTypeDetail.java | 71 + .../cqu/device/entity/DeviceTypeGroup.java | 62 + .../main/java/com/cqu/device/entity/Part.java | 60 + .../java/com/cqu/device/entity/PartType.java | 60 + .../com/cqu/device/entity/PartTypeDetail.java | 72 + .../com/cqu/device/entity/PartTypeGroup.java | 62 + .../java/com/cqu/device/entity/SubSystem.java | 62 + .../java/com/cqu/device/entity/vo/AreaVo.java | 20 + .../cqu/device/entity/vo/DeviceGroupVo.java | 17 + .../cqu/device/entity/vo/DeviceListVo.java | 19 + .../com/cqu/device/entity/vo/GraphVo.java | 19 + .../com/cqu/device/entity/vo/GroupNodeVo.java | 31 + .../com/cqu/device/entity/vo/LinksVo.java | 15 + .../java/com/cqu/device/entity/vo/NodeVo.java | 18 + .../com/cqu/device/entity/vo/NodesVo.java | 20 + .../java/com/cqu/device/entity/vo/PartVo.java | 17 + .../com/cqu/device/entity/vo/SubSystemVo.java | 22 + .../com/cqu/device/entity/vo/TypeNodeVo.java | 20 + .../cqu/device/entity/vo/commonGroupVo.java | 18 + .../cqu/device/mapper/DataModelMapper.java | 16 + .../cqu/device/mapper/DeviceAreaMapper.java | 16 + .../cqu/device/mapper/DeviceGroupMapper.java | 36 + .../com/cqu/device/mapper/DeviceMapper.java | 16 + .../device/mapper/DeviceTypeDetailMapper.java | 35 + .../device/mapper/DeviceTypeGroupMapper.java | 16 + .../cqu/device/mapper/DeviceTypeMapper.java | 20 + .../com/cqu/device/mapper/PartMapper.java | 29 + .../device/mapper/PartTypeDetailMapper.java | 46 + .../device/mapper/PartTypeGroupMapper.java | 18 + .../com/cqu/device/mapper/PartTypeMapper.java | 29 + .../cqu/device/mapper/SubSystemMapper.java | 27 + .../cqu/device/mapper/xml/DataModelMapper.xml | 5 + .../device/mapper/xml/DeviceAreaMapper.xml | 5 + .../device/mapper/xml/DeviceGroupMapper.xml | 25 + .../cqu/device/mapper/xml/DeviceMapper.xml | 5 + .../mapper/xml/DeviceTypeDetailMapper.xml | 54 + .../mapper/xml/DeviceTypeGroupMapper.xml | 5 + .../device/mapper/xml/DeviceTypeMapper.xml | 13 + .../com/cqu/device/mapper/xml/PartMapper.xml | 20 + .../mapper/xml/PartTypeDetailMapper.xml | 35 + .../device/mapper/xml/PartTypeGroupMapper.xml | 5 + .../cqu/device/mapper/xml/PartTypeMapper.xml | 18 + .../cqu/device/mapper/xml/SubSystemMapper.xml | 16 + .../cqu/device/service/DataModelService.java | 24 + .../cqu/device/service/DeviceAreaService.java | 41 + .../device/service/DeviceGroupService.java | 56 + .../com/cqu/device/service/DeviceService.java | 57 + .../service/DeviceTypeDetailService.java | 52 + .../service/DeviceTypeGroupService.java | 28 + .../cqu/device/service/DeviceTypeService.java | 28 + .../com/cqu/device/service/PartService.java | 46 + .../device/service/PartTypeDetailService.java | 54 + .../device/service/PartTypeGroupService.java | 38 + .../cqu/device/service/PartTypeService.java | 39 + .../cqu/device/service/SubSystemService.java | 28 + .../service/impl/DataModelServiceImpl.java | 121 + .../service/impl/DeviceAreaServiceImpl.java | 118 + .../service/impl/DeviceGroupServiceImpl.java | 224 + .../service/impl/DeviceServiceImpl.java | 292 + .../impl/DeviceTypeDetailServiceImpl.java | 395 + .../impl/DeviceTypeGroupServiceImpl.java | 93 + .../service/impl/DeviceTypeServiceImpl.java | 111 + .../device/service/impl/PartServiceImpl.java | 220 + .../impl/PartTypeDetailServiceImpl.java | 207 + .../impl/PartTypeGroupServiceImpl.java | 97 + .../service/impl/PartTypeServiceImpl.java | 115 + .../service/impl/SubSystemServiceImpl.java | 83 + .../service/impl/commonDetailServiceImpl.java | 91 + .../cqu/device/service/impl/recurDevice.java | 48 + .../test/java/com/cqu/test/CodeGenerator.java | 77 + .../app/func/DataSamplingFunction.java | 29 + .../realtime/app/func/DimAsyncFunction.java | 74 + .../realtime/app/func/DimFunction.java | 95 + .../realtime/app/func/DimJoinFunction.java | 21 + .../warehouse/realtime/app/func/DimSink.java | 83 + .../realtime/app/func/DownSampleFunction.java | 22 + .../app/func/FFTSamplingAsyncFunction.java | 68 + .../app/func/FFTSamplingFunction.java | 79 + .../app/func/GasWideProcessFunction.java | 46 + .../func/MyDeserializerSchemaFunction.java | 57 + .../app/func/TableProcessFunction.java | 90 + .../warehouse/realtime/app/func/format.json | 26528 ++++++++++++++++ .../cqu/warehouse/realtime/app/func/table.sql | 46 + .../cqu/warehouse/realtime/app/func/test.java | 21 + phm_rotate/datasource/error.log | 44 + phm_rotate/datasource/phm_device.sql | 300 + phm_rotate/datasource/phm_gateway.sql | 140 + phm_rotate/frontend/phm_frontend | 1 + 218 files changed, 39435 insertions(+) create mode 100644 phm_rotate/backend/phm_backend/.gitignore create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/logs/strutslog1.log create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/pom.xml create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/kafka-flume-hdfs.conf create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/mqtt-flume-kafka.conf create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/template.conf create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/MQTTClient.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/MQTTConnectOptions.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/SFTP.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/interceptor/ETLNotJsonInterceptor.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/interceptor/TimeStampInterceptor.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/service/MQTTSource.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/ConfUtils.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/HDFSUtils.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/JSONUtils.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/LinuxUtils.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/SFTPUtils.java create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/resources/hdfs-site.xml create mode 100644 phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/resources/log4j2.xml create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/pom.xml create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/Exception/LoginErrorException.java create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/entity/LinuxConnection.java create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/entity/SFTP.java create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/CopyFileUtils.java create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/FlumeUtils.java create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/HDFSUtils.java create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/HTTPUtils.java create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/LinuxUtils.java create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/resources/kafka-flume-hdfs.conf create mode 100644 phm_rotate/backend/phm_backend/common/common-linux/src/main/resources/mqtt-flume-kafka.conf create mode 100644 phm_rotate/backend/phm_backend/common/common-utils/pom.xml create mode 100644 phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/Result.java create mode 100644 phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/ResultCode.java create mode 100644 phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/utils/ReadResourcesFileUtil.java create mode 100644 phm_rotate/backend/phm_backend/common/pom.xml create mode 100644 phm_rotate/backend/phm_backend/common/service_base/pom.xml create mode 100644 phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/config/SwaggerConfig.java create mode 100644 phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/exception/GlobalExceptionHandler.java create mode 100644 phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/exception/PhmException.java create mode 100644 phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/handler/MyMetaObjectHandler.java create mode 100644 phm_rotate/backend/phm_backend/gateway/pom.xml create mode 100644 phm_rotate/backend/phm_backend/gateway/src/main/java/com/cqu/gateway/GatewayApplication.java create mode 100644 phm_rotate/backend/phm_backend/gateway/src/main/java/com/cqu/gateway/config/CorsConfig.java create mode 100644 phm_rotate/backend/phm_backend/pom.xml create mode 100644 phm_rotate/backend/phm_backend/service/pom.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/pom.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/DataApplication.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/clients/DeviceClient.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/config/DataConfig.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/AccessServiceController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/AccessTaskController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/DatasetController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/DatasetItemController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeKafkaController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeLigaController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeMqttController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeOpcUaController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/AccessService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/AccessTask.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/Dataset.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/DatasetItem.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeKafka.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeLiga.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeMqtt.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeOpcUa.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DataType.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DatasetItemType.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DatasetType.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/SourceType.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/Status.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/Device.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/DeviceTypeDetail.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/GraphVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/LinksVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/NodesVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/ServiceFormVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/AccessServiceMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/AccessTaskMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/DatasetItemMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/DatasetMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeKafkaMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeLigaMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeMqttMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeOpcUaMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/AccessServiceMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/AccessTaskMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/DatasetItemMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/DatasetMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeKafkaMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeLigaMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeMqttMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeOpcUaMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/AccessServiceService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/AccessTaskService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/DatasetItemService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/DatasetService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeKafkaService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeLigaService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeMqttService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeOpcUaService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/AccessServiceServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/AccessTaskServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/DatasetItemServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/DatasetServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeKafkaServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeLigaServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeMqttServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeOpcUaServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_data/src/test/java/com/cqu/test/CodeGenerator.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/pom.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/DeviceApplication.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/config/DeviceConfig.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DataModelController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceAreaController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceGroupController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeDetailController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeGroupController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/LoginController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeDetailController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeGroupController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/SubSystemController.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DataModel.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/Device.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceArea.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceGroup.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceType.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceTypeDetail.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceTypeGroup.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/Part.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartType.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartTypeDetail.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartTypeGroup.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/SubSystem.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/AreaVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/DeviceGroupVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/DeviceListVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/GraphVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/GroupNodeVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/LinksVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/NodeVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/NodesVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/PartVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/SubSystemVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/TypeNodeVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/commonGroupVo.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DataModelMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceAreaMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceGroupMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeDetailMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeGroupMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeDetailMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeGroupMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/SubSystemMapper.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DataModelMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceAreaMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceGroupMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeDetailMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeGroupMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeDetailMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeGroupMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/SubSystemMapper.xml create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DataModelService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceAreaService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceGroupService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeDetailService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeGroupService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeDetailService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeGroupService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/SubSystemService.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DataModelServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceAreaServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceGroupServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeDetailServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeGroupServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeDetailServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeGroupServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/SubSystemServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/commonDetailServiceImpl.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/recurDevice.java create mode 100644 phm_rotate/backend/phm_backend/service/service_device/src/test/java/com/cqu/test/CodeGenerator.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DataSamplingFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimAsyncFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimJoinFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimSink.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DownSampleFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/FFTSamplingAsyncFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/FFTSamplingFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/GasWideProcessFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/MyDeserializerSchemaFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/TableProcessFunction.java create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/format.json create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/table.sql create mode 100644 phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/test.java create mode 100644 phm_rotate/datasource/error.log create mode 100644 phm_rotate/datasource/phm_device.sql create mode 100644 phm_rotate/datasource/phm_gateway.sql create mode 160000 phm_rotate/frontend/phm_frontend diff --git a/phm_rotate/backend/phm_backend/.gitignore b/phm_rotate/backend/phm_backend/.gitignore new file mode 100644 index 0000000..5eac309 --- /dev/null +++ b/phm_rotate/backend/phm_backend/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/logs/strutslog1.log b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/logs/strutslog1.log new file mode 100644 index 0000000..e69de29 diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/pom.xml b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/pom.xml new file mode 100644 index 0000000..98e3af7 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/pom.xml @@ -0,0 +1,126 @@ + + + + collecting + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + mqtt-collect-flume + + + 8 + 8 + + + + + + org.apache.flume + flume-ng-core + 1.9.0 + provided + + + + + + org.eclipse.paho + org.eclipse.paho.client.mqttv3 + 1.2.2 + + + + com.alibaba + fastjson + 1.2.62 + + + + org.projectlombok + lombok + + + org.springframework + spring-beans + + + junit + junit + provided + + + + + + + + + + + org.apache.hadoop + hadoop-client + 3.1.3 + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.12.0 + + + + com.google.guava + guava + 27.0-jre + + + + ch.ethz.ganymed + ganymed-ssh2 + build210 + + + org.apache.directory.studio + org.apache.commons.lang + 2.6 + + + + com.jcraft + jsch + 0.1.55 + compile + + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.0.0 + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + + + + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/kafka-flume-hdfs.conf b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/kafka-flume-hdfs.conf new file mode 100644 index 0000000..edd933f --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/kafka-flume-hdfs.conf @@ -0,0 +1,69 @@ +#kafka-hdfs +#Name +a1.sources = r1 +a1.channels = c1 +a1.sinks = k1 + +#source +#本次使用kafka source +a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource +a1.sources.r1.kafka.bootstrap.servers = phm102:9092,phm103:9092,phm104:9092 +a1.sources.r1.kafka.topics = phm_data +a1.sources.r1.kafka.consumer.group.id = phm +#将批次写入通道之前的最长时间 +a1.sources.r1.batchDurationMillis = 2000 + +a1.sources.r1.interceptors = i1 +a1.sources.r1.interceptors.i1.type = com.cqu.mqtt.interceptor.TimeStampInterceptor$MyBuilder + +#file channel +a1.channels.c1.type = file +a1.channels.c1.dataDirs = /opt/module/flume-1.9.0/jobs/phm_data/filechannel +#写到file channel中时里面有已经去sink的和没去sink的,没去sink的会在内存中记录可以维护多少event的指针,以下配置就是配置这个容量 +a1.channels.c1.capacity = 1000000 +#事务容量,一定要大于kafka source 的batchsize +a1.channels.c1.transactionCapacity = 10000 +#内存中的指针为了防止flume故障而丢失,会指定内存中的指针落盘会落到哪里 +a1.channels.c1.checkpointDir = /opt/module/flume-1.9.0/jobs/phm_data/checkpoint +#落盘的备份 +#a1.channels.c1.useDualCheckpoints = true +#a1.channels.c1.backupCheckpointDir = /opt/module/flume-1.9.0/jobs/checkpoint-bk +#最大的文件大小,当写在file中的文件达到一定程度,会换一个文件继续写,默认2146435071 +a1.channels.c1.maxFileSize = 2146435071 +#source 放进channel中时可能会放不进去,以下设置放不下去时等多久,超过之后仍然不等 +a1.channels.c1.keep-alive = 5 + +a1.sinks.k1.type = hdfs +# TODO mqtt_service待改 +a1.sinks.k1.hdfs.path = hdfs://phm102:8020/origin_data/phm/log/phm_data/%Y-%m-%d +a1.sinks.k1.hdfs.filePrefix = log- +#a1.sinks.k1.hdfs.fileType = CompressedStream +#a1.sinks.k1.hdfs.codeC = gzip + +#是否按照时间滚动文件夹 +a1.sinks.k1.hdfs.round = true +#多少时间单位创建一个新的文件夹 +a1.sinks.k1.hdfs.roundValue = 1 +#重新定义时间单位 +a1.sinks.k1.hdfs.roundUnit = hour +#是否使用本地时间戳 +a1.sinks.k1.hdfs.useLocalTimeStamp = false +#积攒多少个Event才flush到HDFS一次 +a1.sinks.k1.hdfs.batchSize = 10 +#设置文件类型,可支持压缩 +a1.sinks.k1.hdfs.fileType = DataStream +# +a1.sinks.k1.hdfs.rollInterval = 0 +#设置每个文件的滚动大小 +a1.sinks.k1.hdfs.rollSize = 134217700 +#文件的滚动与Event数量无关 +a1.sinks.k1.hdfs.rollCount = 100 +#最小冗余数 +a1.sinks.k1.hdfs.minBlockReplicas = 1 +# 延长失联断开时间 5min +a1.sinks.k1.hdfs.callTimeout = 300000 + + +#bind +a1.sources.r1.channels = c1 +a1.sinks.k1.channel = c1 \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/mqtt-flume-kafka.conf b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/mqtt-flume-kafka.conf new file mode 100644 index 0000000..3bf36a7 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/mqtt-flume-kafka.conf @@ -0,0 +1,22 @@ +a1.sources = r1 +a1.channels = c1 +# a1.sinks = k1 + + +a1.sources.r1.type = com.cqu.mqtt.service.MQTTSource +a1.sources.r1.host = phm102 +a1.sources.r1.port = 1883 +a1.sources.r1.topic = phm_data +a1.sources.r1.keepAliveInterval = 10000 +a1.sources.r1.username = mqtt +a1.sources.r1.password = mqtt + +a1.sources.r1.interceptors = i1 +a1.sources.r1.interceptors.i1.type = com.cqu.mqtt.interceptor.ETLNotJsonInterceptor$MyBuilder + +a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel +a1.channels.c1.kafka.bootstrap.servers = phm102:9092,phm103:9092,phm104:9092 +a1.channels.c1.kafka.topic = phm_data +a1.channels.c1.parseAsFlumeEvent = false + +a1.sources.r1.channels = c1 \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/template.conf b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/template.conf new file mode 100644 index 0000000..755a422 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/conf/template.conf @@ -0,0 +1,22 @@ +a1.sources = r1 +a1.channels = c1 +# a1.sinks = k1 + + +a1.sources.r1.type = com.cqu.mqtt.service.MQTTSource +a1.sources.r1.host = 43.138.191.64 +a1.sources.r1.port = 1883 +a1.sources.r1.topic = phm_data +a1.sources.r1.keepAliveInterval = 10000 +a1.sources.r1.username = mqtt +a1.sources.r1.password = mqtt + +a1.sources.r1.interceptors = i1 +a1.sources.r1.interceptors.i1.type = com.cqu.mqtt.interceptor.ETLNotJsonInterceptor$MyBuilder + +a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel +a1.channels.c1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092,hadoop104:9092 +a1.channels.c1.kafka.topic = phm_data +a1.channels.c1.parseAsFlumeEvent = false + +a1.sources.r1.channels = c1 \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/MQTTClient.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/MQTTClient.java new file mode 100644 index 0000000..115ee44 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/MQTTClient.java @@ -0,0 +1,24 @@ +package com.cqu.mqtt.entity; + +import lombok.Data; + +import java.util.UUID; + +@Data +public class MQTTClient { + + //mqtt_host:需要指定有mqtt服务器的主机 + private String host = "119.91.214.52"; + //mqtt端口:默认1883(mqtt默认端口) + private Integer port=1883; + //client的id,需要与发送的client_id不一致 + private String client_id = UUID.randomUUID().toString(); + //topic ->需要指定对应的topic,不需要主动创建 + private String topic; + //mqtt是发布者还是订阅者 + private String status ="subscriber"; + + + + +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/MQTTConnectOptions.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/MQTTConnectOptions.java new file mode 100644 index 0000000..898afac --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/MQTTConnectOptions.java @@ -0,0 +1,21 @@ +package com.cqu.mqtt.entity; + +import lombok.Data; + +@Data +public class MQTTConnectOptions { + + //是否清除session + private boolean cleanSession =true; + //存活时长 + private Integer keepAliveInterval = 3000; + //mqtt的username + private String userName; + //mqtt的password + private char[] password; + + + + + +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/SFTP.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/SFTP.java new file mode 100644 index 0000000..7a6e837 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/entity/SFTP.java @@ -0,0 +1,22 @@ +package com.cqu.mqtt.entity; + +import com.jcraft.jsch.Channel; +import com.jcraft.jsch.ChannelSftp; +import com.jcraft.jsch.Session; +import lombok.Data; + +/** + * @author xiaolong + * @Description + * @create 2022-05-28-16:29 + */ +@Data +public class SFTP { + + private Session session;//会话 + private Channel channel;//连接通道 + private ChannelSftp sftp;// sftp操作类 + + + +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/interceptor/ETLNotJsonInterceptor.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/interceptor/ETLNotJsonInterceptor.java new file mode 100644 index 0000000..1bb026f --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/interceptor/ETLNotJsonInterceptor.java @@ -0,0 +1,76 @@ +package com.cqu.mqtt.interceptor; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONException; +import org.apache.flume.Context; +import org.apache.flume.Event; +import org.apache.flume.interceptor.Interceptor; + +import java.nio.charset.StandardCharsets; +import java.util.Iterator; +import java.util.List; + +/** + * 过滤掉不是json的event + */ +public class ETLNotJsonInterceptor implements Interceptor { + @Override + public void initialize() { + + } + + @Override + public Event intercept(Event event) { + //1.取出body + String body = new String(event.getBody(), StandardCharsets.UTF_8); + //2.通过阿里的fastJson判断数据是否完整 + try{ + //将数据进行解析,如果解析没有问题,则传回,如果catch到异常了则不完整return null + JSON.parseObject(body); + }catch (JSONException e){ + return null; + } + return event; + } + + @Override + public List intercept(List events) { + //通过获取迭代器,判断回来的迭代器是否为null,如果是就移除 + //这么写逻辑没有问题,但是不能通过集合的形式去移除一个 +// for (Event event : events) { +// Event intercept = intercept(event); +// if(intercept==null){ +// events.remove(event); +// } +// } +// return events; + + //先获取迭代器对象,用迭代器的方式去写,用迭代器的方式去移除一个 + Iterator iterator = events.iterator(); + while(iterator.hasNext()){ + Event event = iterator.next(); + Event result = intercept(event); + if(result==null){ + iterator.remove(); + } + } + return events; + } + + @Override + public void close() { + + } + public static class MyBuilder implements Builder{ + + @Override + public Interceptor build() { + return new ETLNotJsonInterceptor(); + } + + @Override + public void configure(Context context) { + + } + } +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/interceptor/TimeStampInterceptor.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/interceptor/TimeStampInterceptor.java new file mode 100644 index 0000000..0b9087f --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/interceptor/TimeStampInterceptor.java @@ -0,0 +1,88 @@ +package com.cqu.mqtt.interceptor; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.apache.flume.Context; +import org.apache.flume.Event; +import org.apache.flume.interceptor.Interceptor; + +import java.nio.charset.StandardCharsets; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * 给每个event加上header + * 每个header存放改数据的在采集时的时间戳 + * 这个事件中在采集时已有,存放于json格式中 + */ +public class TimeStampInterceptor implements Interceptor { + @Override + public void initialize() { + + } + + @Override + public Event intercept(Event event) { + //1.取出body,json格式的普通字符串 + String body = new String(event.getBody(), StandardCharsets.UTF_8); + //2.将json字符串解析成对象 + JSONObject jsonObject = JSON.parseObject(body); + //3.从对象中获取时间戳ts + System.out.println("timeStamp连接器收到数据:" + jsonObject); + System.out.println("获取到的对应的时间戳为:" + jsonObject.getString("timestamp")); + String ts = jsonObject.getString("timestamp"); + + +// String formated_data = ts.substring(0, 4) + "-" + ts.substring(4, 6) + "-" + ts.substring(6, 8); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMddHHmmss"); + + + try { + Date parse = simpleDateFormat1.parse(ts); + long time = parse.getTime(); + String formated_data = String.valueOf(time); + // String formated_data = simpleDateFormat1.format(new Date(Long.parseLong(ts))); + System.out.println("修改日期后的时间戳为:" + formated_data); + //4.将ts的值设置到event的header中 + event.getHeaders().put("timestamp", formated_data); + + return event; + } catch (ParseException e) { + e.printStackTrace(); + } + + return event; + + + + + } + + @Override + public List intercept(List events) { + //迭代调用event + for (Event event : events) { + intercept(event); + } + return events; + } + + @Override + public void close() { + + } + + public static class MyBuilder implements Builder { + public TimeStampInterceptor build() { + + return new TimeStampInterceptor(); + } + + @Override + public void configure(Context context) { + + } + } +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/service/MQTTSource.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/service/MQTTSource.java new file mode 100644 index 0000000..d90b6fe --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/service/MQTTSource.java @@ -0,0 +1,247 @@ +package com.cqu.mqtt.service; + +import com.cqu.mqtt.entity.MQTTClient; +import com.cqu.mqtt.entity.MQTTConnectOptions; + +import org.apache.flume.Context; +import org.apache.flume.Event; +import org.apache.flume.EventDrivenSource; +import org.apache.flume.conf.Configurable; +import org.apache.flume.event.EventBuilder; +import org.apache.flume.source.AbstractSource; +import org.eclipse.paho.client.mqttv3.*; +import org.springframework.beans.BeanUtils; + + +import java.nio.charset.StandardCharsets; +import java.util.concurrent.TimeUnit; + +/** + * 自定义MQTTSource将MQTT消息传入flume + */ +public class MQTTSource extends AbstractSource implements EventDrivenSource,Configurable { + + private SimpleMqttClient client = null; + //存放用户输进来的MQTT相关信息 + public MQTTClient MQTTObject=new MQTTClient(); + public MQTTConnectOptions connectOptionsObject =new MQTTConnectOptions(); + + + /** + * 源代码的初始化方法。上下文(context)包含了所有的内容. + * Flume配置信息,可用于检索任何配置. + * 可以获取flume中设置的配置信息 + * @param context + */ + @Override + public void configure(Context context) { + MQTTObject.setHost(context.getString("host","43.138.191.64")); + MQTTObject.setPort(Integer.parseInt(context.getString("port","1883"))); + MQTTObject.setTopic(context.getString("topic","default")); + connectOptionsObject.setCleanSession(Boolean.parseBoolean(context.getString("cleanSession","true"))); + connectOptionsObject.setKeepAliveInterval(Integer.parseInt(context.getString("keepAliveInterval","3000"))); + connectOptionsObject.setUserName(context.getString("username","mqtt")); + connectOptionsObject.setPassword(context.getString("password","mqtt").toCharArray()); + + } + + /** + * AbstractSource中的方法,当flume启动的时候执行 + */ + @Override + public void start() { + client = new SimpleMqttClient(); + client.runClient(); + } + + /** + * AbstractSource中的方法,当flume关闭之后执行 + * 用于关闭mqtt连接 + */ + @Override + public void stop() { + if (client != null) { + System.out.println("生命周期结束,关闭mqtt"); + client.closeConn(); + } + + + } + + public class SimpleMqttClient implements MqttCallback { + + MqttClient myClient; + MqttConnectOptions connOpt; + + /** + * 获取MQTT连接的相关配置 + * @return + */ + public MqttTopic getConfiguration(){ + connOpt=new MqttConnectOptions(); + + BeanUtils.copyProperties(connectOptionsObject,connOpt); + + + // Connect to Broker + try { + myClient = new MqttClient("tcp://"+MQTTObject.getHost()+":"+MQTTObject.getPort(), MQTTObject.getClient_id()); + myClient.setCallback(this); + myClient.connect(connOpt); + System.out.println("MQTT连接成功"); + } catch (MqttException e) { + e.printStackTrace(); + System.exit(-1); + } + System.out.println("Connected to " + MQTTObject.getHost()+":"+MQTTObject.getPort()); + MqttTopic topic =myClient.getTopic(MQTTObject.getTopic()); + return topic; + + + } + + /** + * MQTTClient初始化运行方法,连接broker + */ + public void runClient() { + + MqttTopic topic = getConfiguration(); + if ("subscriber".equals(MQTTObject.getStatus())) { + try { + System.out.println("开始订阅信息"); + int subQoS = 2; + // myClient.subscribe(myTopic, subQoS); + myClient.subscribe(MQTTObject.getTopic(), subQoS); + + } catch (Exception e) { + e.printStackTrace(); + } + }else if("publisher".equals(MQTTObject.getStatus())){ + //TODO 待完善;发布者 + System.out.println("开始发布消息"); + for (int i = 1; i <= 10; i++) { + String pubMsg = "{\"pubmsg\":" + i + "}"; + int pubQoS = 2; + MqttMessage message = new MqttMessage(pubMsg.getBytes()); + message.setQos(pubQoS); + message.setRetained(false); + + // Publish the message + System.out.println("Publishing to topic \"" + MQTTObject + + "\" qos " + pubQoS); + MqttDeliveryToken token = null; + try { + // publish message to broker + token = topic.publish(message); + // Wait until the message has been delivered to the + // broker + token.waitForCompletion(); + Thread.sleep(2000); + } catch (Exception e) { + e.printStackTrace(); + } + } + }else { + System.out.println("wrong status!"); + } + + // TODO disconnect待完善 + try { + // wait to ensure subscribed messages are delivered + if ("subscriber".equals(MQTTObject.getStatus())) { + while (true) { + Thread.sleep(5000); + } + } + // myClient.disconnect(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + } + + + } + + + + /** + * 在接收到消息时调用messageArrived这个回调. + * 可以订阅这个主题 + * @param s + * @param mqttMessage + * @throws Exception + */ + @Override + public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { + System.out.println("接收消息成功"); +// Map header=new HashMap<>(); + //header中存放topic供后续kafka使用,这里为了他只能是json,为了后续可能还会接机器学习等功能,不能加header +// header.put("topic",MQTTObject.getTopic()); + Event flumeEvent = EventBuilder.withBody(mqttMessage.getPayload()); + System.out.println("接收到的数据为:"+new String(mqttMessage.getPayload(), StandardCharsets.UTF_8)); + try { + getChannelProcessor().processEvent(flumeEvent); + System.out.println("消息到达到拦截器-------->"); + } catch (Exception e) { + // TODO: handle exception + System.out.println("消息发送失败"); + e.printStackTrace(); + } + + } + + + /** + * 分发结束后执行 + * @param iMqttDeliveryToken + */ + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + System.out.println("收到了一条数据"); + try { + System.out.println(iMqttDeliveryToken.getMessage().getPayload()); + } catch (MqttException e) { + e.printStackTrace(); + } + + } + + + /** + * 手动关闭mqtt连接 + */ + public void closeConn() { + if (myClient != null) { + if (myClient.isConnected()) { + try { + System.out.println("关闭mqtt"); + myClient.disconnect(); + } catch (MqttException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + /** + * 当mqtt断开连接之后回调执行 + * 如果发送和接受的client_id相同,会立马执行这个函数 + * @param throwable + */ + @Override + public void connectionLost(Throwable throwable) { + System.out.println("Connection lost!,please try start the client again!"); + System.out.println("五秒后尝试重启..."); + try { + TimeUnit.SECONDS.sleep(5); + runClient(); + } catch (InterruptedException e) { + System.out.println("重启client失败"); + e.printStackTrace(); + + } + } + + } +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/ConfUtils.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/ConfUtils.java new file mode 100644 index 0000000..d770063 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/ConfUtils.java @@ -0,0 +1,79 @@ +package com.cqu.mqtt.utils; + +//import org.junit.Test; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Arrays; + + +/** + * @author xiaolong + * @Description + * @create 2022-05-27-12:25 + */ +public class ConfUtils { + + + //指定路径下文件的复制方法 + public static void copyFile(String srcPath,String destPath, String topic){ + FileInputStream fis = null; + FileOutputStream fos = null; + try { + File srcFile = new File(srcPath); + File destFile = new File(destPath); + + fis = new FileInputStream(srcFile); + fos = new FileOutputStream(destFile); + + byte[] buffer = new byte[1024]; + int len; + while((len = fis.read(buffer)) != -1){ + System.out.println(buffer.getClass().getName()); + + String str = new String(buffer,0,len); + System.out.println(str); + String newStr = str.replace("phm_data", topic); + fos.write(newStr.getBytes(),0,newStr.getBytes().length); + + } + System.out.println("复制成功"); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if(fos != null){ + fos.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + try { + if(fis != null){ + fis.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + + + + public static void genConf(String topic){ + // TODO 后续换成hdfs的路径 + String srcPath = "src/main/java/com/cqu/mqtt/conf/mqtt-flume-kafka.conf"; + String srcPath2 = "src/main/java/com/cqu/mqtt/conf/kafka-flume-hdfs.conf"; + String destPath = "src/main/java/com/cqu/mqtt/conf/" + topic + "/"+"mqtt-flume-kafka-"+topic+".conf"; + String destPath2 = "src/main/java/com/cqu/mqtt/conf/" + topic + "-kafka-flume-hdfs.conf"; + copyFile(srcPath,destPath, topic); + copyFile(srcPath2,destPath2, topic); + + } +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/HDFSUtils.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/HDFSUtils.java new file mode 100644 index 0000000..56d7ef2 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/HDFSUtils.java @@ -0,0 +1,57 @@ +package com.cqu.mqtt.utils; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; +import java.net.URI; + +/** + * @author xiaolong + * @Description + * @create 2022-05-28-11:16 + */ +public class HDFSUtils { + private static FileSystem fs; + + /** + * *@param uri HDFS的访问路径 hdfs://hadoop102:9820 + * *@param conf 配置对象 + * *@param user 操作的用户 + */ + @Before + public void init() throws IOException, InterruptedException { + //1、和HDFS建立连接 + URI uri = URI.create("hdfs://phm102:8020"); + Configuration conf = new Configuration(); + conf.set("dfs.replication","3"); + String user = "root"; + fs = FileSystem.get(uri, conf, user); + } + + @After + public void close() throws IOException { + //3、关闭资源 + fs.close(); + } + + + public static void upload(String topic){ + + try { + fs.copyFromLocalFile(false,true, + new Path("src/main/java/com/cqu/mqtt/conf/" + topic + "-mqtt-flume-kafka.conf"), + new Path("/origin_data/phm/conf/" + topic + "-mqtt-flume-kafka.conf")); + + fs.copyFromLocalFile(false,true, + new Path("src/main/java/com/cqu/mqtt/conf/" + topic + "-kafka-flume-hdfs.conf"), + new Path("/origin_data/phm/conf/" + topic + "-kafka-flume-hdfs.conf")); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/JSONUtils.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/JSONUtils.java new file mode 100644 index 0000000..1aebf40 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/JSONUtils.java @@ -0,0 +1,17 @@ +package com.cqu.mqtt.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONException; + +public class JSONUtils { + + public static boolean isJSONValidate(String log){ + try { + JSON.parse(log); + return true; + }catch (JSONException e){ + return false; + } + } + +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/LinuxUtils.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/LinuxUtils.java new file mode 100644 index 0000000..88bc5b8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/LinuxUtils.java @@ -0,0 +1,162 @@ +package com.cqu.mqtt.utils; + + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import org.apache.commons.lang.StringUtils; +import ch.ethz.ssh2.Connection; +import ch.ethz.ssh2.Session; +import ch.ethz.ssh2.StreamGobbler; + + + + +/** + * @author xiaolong + * @Description + * @create 2022-05-28-12:13 + */ +public class LinuxUtils { + //字符编码默认是utf-8 + private static String DEFAULTCHART="UTF-8"; + private Connection conn; + private String ip; + private String userName; + private String userPwd; + + public LinuxUtils(String ip, String userName, String userPwd) { + this.ip = ip; + this.userName = userName; + this.userPwd = userPwd; + } + + + public LinuxUtils() { + + } + + /** + * 远程登录linux的主机 + * @author Ickes + * @since V0.1 + * @return + * 登录成功返回true,否则返回false + */ + public Boolean login(){ + boolean flg=false; + try { + this.conn = new Connection(this.ip); + this.conn.connect();//连接 + flg=this.conn.authenticateWithPassword(this.userName, this.userPwd);//认证 + } catch (IOException e) { + e.printStackTrace(); + } + return flg; + } + /** + * @author Ickes + * 远程执行shll脚本或者命令 + * @param cmd + * 即将执行的命令 + * @return + * 命令执行完后返回的结果值 + * @since V0.1 + */ + public String execute(String cmd){ + String result=""; + try { + if(login()){ + Session session= conn.openSession();//打开一个会话 + session.execCommand(cmd);//执行命令 + result=processStdout(session.getStdout(),DEFAULTCHART); + //如果为得到标准输出为空,说明脚本执行出错了 + if(StringUtils.isBlank(result)){ + result=processStdout(session.getStderr(),DEFAULTCHART); + } + conn.close(); + session.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + return result; + } + + + /** + * 解析脚本执行返回的结果集 + * @author Ickes + * @param in 输入流对象 + * @param charset 编码 + * @since V0.1 + * @return + * 以纯文本的格式返回 + */ + private String processStdout(InputStream in, String charset){ + InputStream stdout = new StreamGobbler(in); + StringBuffer buffer = new StringBuffer();; + try { + BufferedReader br = new BufferedReader(new InputStreamReader(stdout,charset)); + String line=null; + while((line=br.readLine()) != null){ + buffer.append(line+"\n"); + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return buffer.toString(); + } + + public static void setCharset(String charset) { + DEFAULTCHART = charset; + } + public Connection getConn() { + return conn; + } + public void setConn(Connection conn) { + this.conn = conn; + } + public String getIp() { + return ip; + } + public void setIp(String ip) { + this.ip = ip; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public String getUserPwd() { + return userPwd; + } + public void setUserPwd(String userPwd) { + this.userPwd = userPwd; + } + + public static void main(String[] args) { + LinuxUtils hadoop102=new LinuxUtils("192.168.58.102", "atguigu","ysl18398857235"); + LinuxUtils hadoop103=new LinuxUtils("192.168.58.103", "atguigu","ysl18398857235"); + //执行命令 + String result = hadoop102.execute("nohup flume-ng agent -c " + + "$FLUMW_HOME/conf -f $FLUME_HOME/jobs/mqttservice/mqtt-flume-kafka.conf -n a1 -Dflume.root.logger=INFO,console " + + "1>$FLUME_HOME/logs/flume.log 2>&1 &"); + + String result2 = hadoop103.execute("nohup flume-ng agent -c " + + "$FLUME_HOME/conf -f $FLUME_HOME/jobs/mqttservice/kafka-flume-hdfs.conf -n a1 -Dflume.root.logger=INFO,console" + + "1>$FLUME_HOME/logs/flume.log 2>&1 &"); + + String kill1 = hadoop102.execute("ps -ef | grep mqtt-flume-kafka.conf | grep -v grep | awk '{print $2}' | xargs -n1 kill -9"); + + String kill2 = hadoop103.execute("ps -ef | grep kafka-flume-hdfs.conf | grep -v grep | awk '{print $2}' | xargs -n1 kill -9"); + + + } + +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/SFTPUtils.java b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/SFTPUtils.java new file mode 100644 index 0000000..01aab58 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/java/com/cqu/mqtt/utils/SFTPUtils.java @@ -0,0 +1,276 @@ +package com.cqu.mqtt.utils; + + +import com.cqu.mqtt.entity.SFTP; +import com.jcraft.jsch.*; +import lombok.extern.slf4j.Slf4j; +import org.apache.log4j.LogManager; + +import java.io.*; +import java.util.*; +/** + * @author xiaolong + * @Description + * @create 2022-05-30-12:18 + */ +@Slf4j // 这个·注解后可以使用log.error() +public class SFTPUtils { + /** + * 连接ftp/sftp服务器 + */ + public static void getConnect(SFTP s) throws Exception { + + // 密钥的密码 + // String privateKey ="key"; + // /** 密钥文件路径 */ + // String passphrase ="path"; + // 主机 +// String host ="hadoop102"; + String host ="phm103"; + // 端口 + int port =22; + // 用户名 +// String username ="atguigu"; + String username ="root"; + //密码 +// String password ="ysl18398857235"; + String password ="YSLysl325@@@"; + + Session session = null; + Channel channel = null; + ChannelSftp sftp = null;// sftp操作类 + + JSch jsch = new JSch(); + + + //设置密钥和密码 + //支持密钥的方式登陆,只需在jsch.getSession之前设置一下密钥的相关信息就可以了 + // if (privateKey != null && !"".equals(privateKey)) { + // if (passphrase != null && "".equals(passphrase)) { + // //设置带口令的密钥 + // jsch.addIdentity(privateKey, passphrase); + // } else { + // //设置不带口令的密钥 + // jsch.addIdentity(privateKey); + // } + // } + session = jsch.getSession(username, host, port); + session.setPassword(password); + Properties config = new Properties(); + config.put("StrictHostKeyChecking", "no"); // 不验证 HostKey 严格主机密钥检查 + session.setConfig(config); + try { + session.connect(); + } catch (Exception e) { + if (session.isConnected()) + session.disconnect(); + log.error("连接服务器失败,请检查主机[" + host + "],端口[" + port + + "],用户名[" + username + "],端口[" + port + + "]是否正确,以上信息正确的情况下请检查网络连接是否正常或者请求被防火墙拒绝."); + } + channel = session.openChannel("sftp"); + try { + // 获取sftp通道 + channel.connect(); + } catch (Exception e) { + if (channel.isConnected()) + channel.disconnect(); + log.error("连接服务器失败,请检查主机[" + host + "],端口[" + port + + "],用户名[" + username + "],密码是否正确,以上信息正确的情况下请检查网络连接是否正常或者请求被防火墙拒绝."); + } + sftp = (ChannelSftp) channel; + + s.setChannel(channel); + s.setSession(session); + s.setSftp(sftp); + + } + + + /** + * 断开连接 + * + */ + public static void disConn(Session session,Channel channel,ChannelSftp sftp)throws Exception{ + if(null != sftp){ + sftp.disconnect(); + sftp.exit(); + sftp = null; + } + if(null != channel){ + channel.disconnect(); + channel = null; + } + if(null != session){ + session.disconnect(); + session = null; + } + } + + /** + * 上传文件 + * + * @param directory 上传的目录-相对于SFPT设置的用户访问目录, + * 为空则在SFTP设置的根目录进行创建文件(除设置了服务器全磁盘访问) + * @param uploadFile 要上传的文件全路径 + */ + public static void upload(String directory, String uploadFile) throws Exception { + + SFTP s = new SFTP(); + getConnect(s);//建立连接 + Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + try { + try { + sftp.cd(directory); //进入目录 + } catch (SftpException sException) { + if (sftp.SSH_FX_NO_SUCH_FILE == sException.id) { //指定上传路径不存在 + sftp.mkdir(directory);//创建目录 + sftp.cd(directory); //进入目录 + } + } + File file = new File(uploadFile); + InputStream in = new FileInputStream(file); + sftp.put(in, file.getName()); + in.close(); + + } catch(Exception e){ + throw new Exception(e.getMessage(), e); + } finally{ + disConn(session, channel, sftp); + } + } + /** + * 下载文件 + * + * @param directory 下载目录 根据SFTP设置的根目录来进行传入 + * @param downloadFile 下载的文件 + * @param saveFile 存在本地的路径 + */ + public static void download(String directory, String downloadFile, String saveFile) throws Exception { + SFTP s = new SFTP(); + getConnect(s);//建立连接 + Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + try { + + sftp.cd(directory); //进入目录 + File file = new File(saveFile); + boolean bFile; + bFile = false; + bFile = file.exists(); + if (!bFile) { + bFile = file.mkdirs();//创建目录 + } + OutputStream out = new FileOutputStream(new File(saveFile, downloadFile)); + + sftp.get(downloadFile, out); + + out.flush(); + out.close(); + + } catch (Exception e) { + throw new Exception(e.getMessage(), e); + } finally { + disConn(session, channel, sftp); + } + } + + /** + * 删除文件 + * @param directory 要删除文件所在目录 + * @param deleteFile 要删除的文件 + */ + public static void delete(String directory, String deleteFile) throws Exception { + SFTP s=new SFTP(); + getConnect(s);//建立连接 + Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + try { + sftp.cd(directory); //进入的目录应该是要删除的目录的上一级 + sftp.rm(deleteFile);//删除目录 + } catch (Exception e) { + throw new Exception(e.getMessage(),e); + } finally { + disConn(session,channel,sftp); + } + } + + /** + * 列出目录下的文件 + * @param directory 要列出的目录 + * @return list 文件名列表 + * @throws Exception + */ + public static List listFiles(String directory) throws Exception { + SFTP s=new SFTP(); + getConnect(s);//建立连接 + Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + Vector fileList=null; + List fileNameList = new ArrayList(); + fileList = sftp.ls(directory); //返回目录下所有文件名称 + disConn(session,channel,sftp); + + for (Object o : fileList) { + + String fileName = ((ChannelSftp.LsEntry) o).getFilename(); + if (".".equals(fileName) || "..".equals(fileName)) { + continue; + } + fileNameList.add(fileName); + } + + return fileNameList; + } + + + + + /** + * 创建目录 + * @param directory 要创建的目录 位置 + * @param dir 要创建的目录 + */ + public static void creatDir(String directory,String dir) throws Exception { + SFTP s=new SFTP(); + getConnect(s);//建立连接 + Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + try { + sftp.cd(directory); + sftp.mkdir(dir); + } catch (Exception e) { + throw new Exception(e.getMessage(),e); + } finally { + disConn(session,channel,sftp); + } + } + + + /** + * 进入目录 + * @param directory + * @throws Exception + */ + public static void cd(String directory)throws Exception { + + SFTP s=new SFTP(); + getConnect(s);//建立连接 + Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + try { + sftp.cd(directory); //目录要一级一级进 + } catch (Exception e) { + throw new Exception(e.getMessage(),e); + } finally { + disConn(session,channel,sftp); + } + } +} diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/resources/hdfs-site.xml b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/resources/hdfs-site.xml new file mode 100644 index 0000000..b73c022 --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/resources/hdfs-site.xml @@ -0,0 +1,16 @@ + + + + + + dfs.replication + 2 + + + + dfs.client.use.datanode.hostname + true + only cofig in clients + + + diff --git a/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/resources/log4j2.xml b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/resources/log4j2.xml new file mode 100644 index 0000000..6094d0b --- /dev/null +++ b/phm_rotate/backend/phm_backend/collecting/mqtt-collect-flume/src/main/resources/log4j2.xml @@ -0,0 +1,26 @@ + + + + + + + + + %d{MM-dd-yyyy} %p %c{1.} [%t] -%M-%L- %m%n + + + + + + + + + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/common/common-linux/pom.xml b/phm_rotate/backend/phm_backend/common/common-linux/pom.xml new file mode 100644 index 0000000..3b71226 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/pom.xml @@ -0,0 +1,115 @@ + + + + common + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + common-linux + + + + org.apache.hadoop + hadoop-client + 3.1.3 + + + + + + + + + + com.google.guava + guava + 27.0-jre + + + + ch.ethz.ganymed + ganymed-ssh2 + build210 + + + org.apache.directory.studio + org.apache.commons.lang + 2.6 + + + + + com.squareup.okhttp3 + okhttp + 3.3.0 + + + org.slf4j + slf4j-log4j12 + + + + + + + commons-net + commons-net + 3.8.0 + + + + + + com.jcraft + jsch + 0.1.55 + + + + com.cqu + common-utils + 0.0.1-SNAPSHOT + + + + junit + junit + 4.13.2 + + + + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.0.0 + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + + + + + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/Exception/LoginErrorException.java b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/Exception/LoginErrorException.java new file mode 100644 index 0000000..6881b6f --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/Exception/LoginErrorException.java @@ -0,0 +1,16 @@ +package com.cqu.linux.Exception; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class LoginErrorException extends Exception { + + private Integer code; //状态码 + + private String message; //异常信息 +} diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/entity/LinuxConnection.java b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/entity/LinuxConnection.java new file mode 100644 index 0000000..efc9518 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/entity/LinuxConnection.java @@ -0,0 +1,32 @@ +package com.cqu.linux.entity; + +import ch.ethz.ssh2.Connection; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +//@NoArgsConstructor +//@AllArgsConstructor +public class LinuxConnection { + + //字符编码默认是utf-8 + public static final String DEFAULTCHART = "UTF-8"; + public static final String GBKCHART = "GBK"; + + private Connection conn; + private String ip = "hdfs://phm102:8020"; + private String userName = "root"; + private String password = "dingjiawen.123"; + + public LinuxConnection() { + } + + public LinuxConnection(String ip, String userName, String password) { + this.ip = ip; + this.userName = userName; + this.password = password; + + } + +} diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/entity/SFTP.java b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/entity/SFTP.java new file mode 100644 index 0000000..a920b82 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/entity/SFTP.java @@ -0,0 +1,22 @@ +package com.cqu.linux.entity; + +import com.jcraft.jsch.Channel; +import com.jcraft.jsch.ChannelSftp; +import com.jcraft.jsch.Session; +import lombok.Data; + +/** + * @author xiaolong + * @Description + * @create 2022-05-28-16:29 + */ +@Data +public class SFTP { + + private Session session;//会话 + private Channel channel;//连接通道 + private ChannelSftp sftp;// sftp操作类 + + + +} diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/CopyFileUtils.java b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/CopyFileUtils.java new file mode 100644 index 0000000..71aee99 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/CopyFileUtils.java @@ -0,0 +1,159 @@ +package com.cqu.linux.utils; + +import com.cqu.utils.utils.ReadResourcesFileUtil; +import org.apache.commons.io.FileUtils; + +import java.io.*; + +public class CopyFileUtils { + + //指定路径下文件的复制方法 + public static void copyFile(String srcPath, String destPath, String topic) { + FileInputStream fis = null; + FileOutputStream fos = null; + try { + File srcFile = new File(srcPath); + File destFile = new File(destPath); + String destAbsolutePath = destFile.getAbsolutePath().substring(0, destFile.getAbsolutePath().lastIndexOf("\\")); + System.out.println(destAbsolutePath); + + File file = new File(destAbsolutePath); + + if (!file.exists()) { + file.mkdirs(); + } +// destFile.deleteOnExit(); +// destFile.mkdir() + + fis = new FileInputStream(srcFile); + fos = new FileOutputStream(destFile); +// new InputStream() + + byte[] buffer = new byte[1024]; + int len; + while ((len = fis.read(buffer)) != -1) { +// System.out.println(buffer.getClass().getName()); + + String str = new String(buffer, 0, len); + System.out.println(str); + String newStr = str.replace("phm_data", topic); + fos.write(newStr.getBytes(), 0, newStr.getBytes().length); + + } + System.out.println("复制成功"); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (fos != null) { + fos.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + try { + if (fis != null) { + fis.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + + /** + * 指定resource路径下文件的复制方法 + * @param srcPath + * @param destPath + * @param topic + */ + public static void copyFileByResource(String srcPath, String destPath, String topic) { + + try(FileOutputStream fos =new FileOutputStream(destPath); + InputStream fis = ReadResourcesFileUtil.readBatchBackToInputSteam(srcPath)) { + + File destFile = new File(destPath); + String destAbsolutePath = destFile.getAbsolutePath().substring(0, destFile.getAbsolutePath().lastIndexOf("\\")); + System.out.println(destAbsolutePath); + + File file = new File(destAbsolutePath); + + if (!file.exists()) { + file.mkdirs(); + } + + byte[] buffer = new byte[1024]; + int len; + while ((len = fis.read(buffer)) != -1) { + String str = new String(buffer, 0, len); + System.out.println(str); + String newStr = str.replace("phm_data", topic); + fos.write(newStr.getBytes(), 0, newStr.getBytes().length); + + } + System.out.println("复制成功"); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + //指定路径下文件的复制方法 + public static void copyDFSFile(InputStream fis, OutputStream fos, String topic) { + + + try { + byte[] buffer = new byte[1024]; + int len; + while ((len = fis.read(buffer)) != -1) { + System.out.println(buffer.getClass().getName()); + + String str = new String(buffer, 0, len); + System.out.println(str); + String newStr = str.replace("phm_data", topic); + fos.write(newStr.getBytes(), 0, newStr.getBytes().length); + } + System.out.println("复制成功"); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (fos != null) { + fos.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + try { + if (fis != null) { + fis.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public static void deleteFile(String srcFileName) { + + File file = new File(srcFileName); + boolean flag = false; + if (file.exists()) { + try { + FileUtils.deleteDirectory(file); + System.out.println("删除文件:"+srcFileName); + } catch (IOException e) { + System.out.println("删除文件失败,尝试重新删除"); + e.printStackTrace(); + } + + } + + } + + +} diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/FlumeUtils.java b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/FlumeUtils.java new file mode 100644 index 0000000..f2d344c --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/FlumeUtils.java @@ -0,0 +1,134 @@ +package com.cqu.linux.utils; + + +import com.cqu.utils.utils.MyPropertiesUtil; +import com.cqu.utils.utils.ReadResourcesFileUtil; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; + +import java.io.InputStream; +import java.util.Properties; + +@Slf4j +public class FlumeUtils { + + private static Properties properties; + private static String host1; + private static String username1; + private static String password1; + private static String host2; + private static String username2; + private static String password2; + private static String localPath; + + + + + /** + * 将模板代码复制一份 + * + * @param topic + */ + private static void copy(String topic) { + + // TODO 后续换成hdfs的路径 + String srcPath = "mqtt-flume-kafka.conf"; + String srcPath2 = "kafka-flume-hdfs.conf"; + String destPath = localPath + topic + "/mqtt-flume-kafka-" + topic + ".conf"; + String destPath2 = localPath + topic + "/kafka-flume-hdfs-" + topic + ".conf"; + +// System.out.println(srcPath); +// System.out.println(srcPath2); + CopyFileUtils.copyFileByResource(srcPath, destPath, topic); + CopyFileUtils.copyFileByResource(srcPath2, destPath2, topic); + } + + /** + * 由于上传文件使用的put里面传的参数是InputStream,暂时无法将替换后的数据放入一个InputStream里面 + * TODO 暂时的解决办法是:上传之后删除本地文件 + * + * @param topic + */ + private static void delete(String topic) { + String destPath = localPath + topic; + String destPath2 = localPath + topic; + + CopyFileUtils.deleteFile(destPath); + CopyFileUtils.deleteFile(destPath2); + + } + + + /** + * 将替换后的代码复制到Linux + * + * @param topic + */ + private static void uploadToLinux(String topic) { + localPath = properties.getProperty("template.base.localPath"); + String linuxPath = properties.getProperty("template.base.linuxPath"); + copy(topic); + boolean b = new LinuxUtils().InitLinuxConnection(host1, username1, password1).uploadFileBySFTP(localPath + topic, linuxPath, "mqtt-flume-kafka-" + topic + ".conf"); + boolean c = new LinuxUtils().InitLinuxConnection(host2, username2, password2).uploadFileBySFTP(localPath + topic, linuxPath, "kafka-flume-hdfs-" + topic + ".conf"); + if (b && c) { + System.out.println("上传成功"); + delete(topic); + } else { + System.out.println("上传失败,请尝试重新上传"); + } + + } + + + public static void execute(String topic) { + + //导入配置文件 + properties = MyPropertiesUtil.load("flumeConfig.properties"); + + host1 = properties.getProperty("phm102.host"); + username1 = properties.getProperty("phm102.username"); + password1 = properties.getProperty("phm102.password"); + host2 = properties.getProperty("phm103.host"); + username2 = properties.getProperty("phm103.username"); + password2 = properties.getProperty("phm103.password"); + + + uploadToLinux(topic); + System.out.println("开启flume第一阶段"); + String execute1 = new LinuxUtils().InitLinuxConnection(host1, username1, password1).execute("nohup flume-ng agent -c $FLUME_HOME/conf -f /opt/module/flume-1.9.0/jobs/phm/mqtt-flume-kafka-" + topic + ".conf -n a1 -Dflume.root.logger=INFO,console 1>$FLUME_HOME/logs/flume.log 2>&1 &"); + System.out.println(execute1); +// log.debug(execute1); + + System.out.println("开启flume第二阶段"); + String execute2 = new LinuxUtils().InitLinuxConnection(host2, username2, password2).execute("nohup flume-ng agent -c $FLUME_HOME/conf -f /opt/module/flume-1.9.0/jobs/phm/kafka-flume-hdfs-" + topic + ".conf -n a1 -Dflume.root.logger=INFO,console 1>$FLUME_HOME/logs/flume.log 2>&1 &"); + System.out.println(execute2); +// log.debug(execute2); + + } + + public static void main(String[] args) { + + execute("ysl"); + } + + @Test + public void test(){ + //导入配置文件 + properties = MyPropertiesUtil.load("flumeConfig.properties"); + host1 = properties.getProperty("phm102.host"); + username1 = properties.getProperty("phm102.username"); + System.out.println(username1); + } + + @Test + public void test1(){ + //导入配置文件 +// File read = ReadResourcesFileUtil.read("flumeConfig.properties"); +// InputStream read = ReadResourcesFileUtil.readBackToInputSteam("mqtt-flume-kafka.conf"); + InputStream read = ReadResourcesFileUtil.readBatchBackToInputSteam("kafka-flume-hdfs.conf"); +// InputStream read = ReadResourcesFileUtil.readBackToInputSteam("flumeConfig.properties"); + + } + + +} diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/HDFSUtils.java b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/HDFSUtils.java new file mode 100644 index 0000000..0dcee56 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/HDFSUtils.java @@ -0,0 +1,134 @@ +package com.cqu.linux.utils; + +import com.cqu.linux.entity.LinuxConnection; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.*; + + +import java.io.*; +import java.net.URI; + +public class HDFSUtils { + + private static FileSystem fs; + private LinuxConnection linuxConnection = new LinuxConnection(); + + /** + * *@param uri HDFS的访问路径 hdfs://hadoop102:9820 + * *@param conf 配置对象 + * *@param user 操作的用户 + */ + public static void init() throws IOException, InterruptedException { + //1、和HDFS建立连接 + URI uri = URI.create("hdfs://Ding202:8020"); + Configuration conf = new Configuration(); + conf.set("dfs.replication", "3"); + String user = "dingjiawen"; + fs = FileSystem.get(uri, conf, user); + } + + public static void init(String ip, String username) throws IOException, InterruptedException { + //1、和HDFS建立连接 + URI uri = URI.create(ip); + Configuration conf = new Configuration(); + conf.set("dfs.replication", "3"); + String user = username; + fs = FileSystem.get(uri, conf, user); + } + + + public static void close() throws IOException { + //3、关闭资源 + fs.close(); + } + + + public static void uploadFromLocal(String topic) { + + try { + fs.copyFromLocalFile(false, true, + new Path("src/main/java/com/cqu/mqtt/conf/" + topic + "-mqtt-flume-kafka.conf"), + new Path("/origin_data/phm/conf/" + topic + "-mqtt-flume-kafka.conf")); + + fs.copyFromLocalFile(false, true, + new Path("src/main/java/com/cqu/mqtt/conf/" + topic + "-kafka-flume-hdfs.conf"), + new Path("/origin_data/phm/conf/" + topic + "-kafka-flume-hdfs.conf")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void uploadFromHDFS(String sourcePath, String targetPath) { + +// DFSInputStream inputStream=new DFSInputStream(); + + //如果路径存在就删除,如果不存在就上传 + Path dfsPath = new Path(targetPath); + Path findPath = new Path(sourcePath); + + try { + if (fs.exists(dfsPath)) { + System.out.println("删除文件:" + fs.delete(dfsPath, true)); + } + RemoteIterator sourceFiles = fs.listFiles(findPath, true); + + while (sourceFiles.hasNext()) { + Configuration conf = new Configuration(); + conf.set("dfs.replication", "3"); + FileUtil.copy(fs, sourceFiles.next().getPath(), fs, dfsPath, true, conf); + } + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + public static void delete(String path) { + +// DFSInputStream inputStream=new DFSInputStream(); + //如果路径存在就删除,如果不存在就上传 + Path dfsPath = new Path(path); + + try { + if (fs.exists(dfsPath)) { + System.out.println("删除文件:" + fs.delete(dfsPath, true)); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void copyFlumeFile(String sourcePath, String targetPath, String fileName, String topic) { + + String exName= fileName.substring(fileName.lastIndexOf(".")); + String targetName = fileName.substring(0,fileName.lastIndexOf(".")); + + Path realTargetPath = new Path(targetPath+"/"+targetName+"-"+topic+exName); + Path realSourcePath = new Path(sourcePath +"/"+fileName); + + try { + + if (!fs.exists(realSourcePath)) { + System.out.println("需要拷贝的文件不存在"); + return; + } + + + if (fs.exists(realTargetPath)) { + System.out.println("删除文件:" + fs.delete(realTargetPath, true)); + System.out.println("开始重新生成"); + } + FSDataInputStream inputStream = fs.open(realSourcePath); + FSDataOutputStream outputStream = fs.create(realTargetPath); + CopyFileUtils.copyDFSFile(inputStream,outputStream,topic); + } catch (IOException e) { + e.printStackTrace(); + } + + + } + + +} diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/HTTPUtils.java b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/HTTPUtils.java new file mode 100644 index 0000000..85aeb2a --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/HTTPUtils.java @@ -0,0 +1,77 @@ +package com.cqu.linux.utils; + + +import okhttp3.*; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +public class HTTPUtils { + + private static OkHttpClient client; + + private HTTPUtils() { + + } + + public static OkHttpClient getInstance() { + if (client == null) { + synchronized (HTTPUtils.class) { + if (client == null) { + client = new OkHttpClient(); + } + } + } + return client; + } + + public static void get(String url, String json) { + String encodeJson = ""; + try { + encodeJson = URLEncoder.encode(json, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + url = url + "?param=" + encodeJson; + Request request = new Request.Builder() + .url(url).get().build(); + Call call = HTTPUtils.getInstance().newCall(request); + Response response = null; + long start = System.currentTimeMillis(); + try { + response = call.execute(); + long end = System.currentTimeMillis(); + System.out.println(response.body().string() + " used:" + (end - start) + " ms"); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException("发送失败...检查网络地址..."); + + } + + + } + + + public static void post(String url, String json) { + System.out.println(json); + RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json); + Request request = new Request.Builder() + .url(url) + .post(requestBody) //post请求 + .build(); + Call call = HTTPUtils.getInstance().newCall(request); + Response response = null; + long start = System.currentTimeMillis(); + try { + response = call.execute(); + long end = System.currentTimeMillis(); + System.out.println(response.body().string() + " used:" + (end - start) + " ms"); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException("发送失败...检查网络地址..."); + + } + + } +} diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/LinuxUtils.java b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/LinuxUtils.java new file mode 100644 index 0000000..c242dbb --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/java/com/cqu/linux/utils/LinuxUtils.java @@ -0,0 +1,487 @@ +package com.cqu.linux.utils; + +import ch.ethz.ssh2.Connection; +import ch.ethz.ssh2.Session; +import ch.ethz.ssh2.StreamGobbler; +import com.cqu.linux.Exception.LoginErrorException; +import com.cqu.linux.entity.LinuxConnection; + +import com.cqu.linux.entity.SFTP; +import com.jcraft.jsch.Channel; +import com.jcraft.jsch.ChannelSftp; +import com.jcraft.jsch.JSch; +import com.jcraft.jsch.SftpException; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.net.ftp.FTPClient; +import org.apache.commons.net.ftp.FTPClientConfig; +import org.apache.commons.net.ftp.FTPReply; +import org.springframework.data.convert.Jsr310Converters; + +import java.io.*; +import java.net.SocketException; +import java.nio.file.Path; +import java.util.Properties; + +@Slf4j +public class LinuxUtils { + + static LinuxConnection linuxConnection = new LinuxConnection(); + +// public LinuxUtils() { +// } + + public LinuxUtils InitLinuxConnection(String ip, String username, String password) { + linuxConnection.setIp(ip); + linuxConnection.setUserName(username); + linuxConnection.setPassword(password); + return this; + } + + /** + * 连接ftp/sftp服务器 + */ + private void getConnect(SFTP s) throws Exception { + + // 密钥的密码 + // String privateKey ="key"; + // /** 密钥文件路径 */ + // String passphrase ="path"; + // 主机 + String host =linuxConnection.getIp(); + // 端口 + int port =22; + // 用户名 + String username =linuxConnection.getUserName(); + //密码 + String password =linuxConnection.getPassword(); + + com.jcraft.jsch.Session session = null; + Channel channel = null; + ChannelSftp sftp = null;// sftp操作类 + + JSch jsch = new JSch(); + + + //设置密钥和密码 + //支持密钥的方式登陆,只需在jsch.getSession之前设置一下密钥的相关信息就可以了 + // if (privateKey != null && !"".equals(privateKey)) { + // if (passphrase != null && "".equals(passphrase)) { + // //设置带口令的密钥 + // jsch.addIdentity(privateKey, passphrase); + // } else { + // //设置不带口令的密钥 + // jsch.addIdentity(privateKey); + // } + // } + session = jsch.getSession(username, host, port); + session.setPassword(password); + Properties config = new Properties(); + config.put("StrictHostKeyChecking", "no"); // 不验证 HostKey + session.setConfig(config); + + // 设置为被动模式 ->已弃用,设置以后要么连接不上,要么无法发送文件 + //ftp.enterLocalPassiveMode(); + // 设置上传文件的类型为二进制类型 ->已弃用,设置以后要么连接不上,要么无法发送文件 + //ftp.setFileType(FTPClient.BINARY_FILE_TYPE); + try { + session.connect(); + } catch (Exception e) { + if (session.isConnected()) + session.disconnect(); + log.error("连接服务器失败,请检查主机[" + host + "],端口[" + port + + "],用户名[" + username + "],端口[" + port + + "]是否正确,以上信息正确的情况下请检查网络连接是否正常或者请求被防火墙拒绝."); + } + channel = session.openChannel("sftp"); + try { + channel.connect(); + } catch (Exception e) { + if (channel.isConnected()) + channel.disconnect(); + log.error("连接服务器失败,请检查主机[" + host + "],端口[" + port + + "],用户名[" + username + "],密码是否正确,以上信息正确的情况下请检查网络连接是否正常或者请求被防火墙拒绝."); + } + sftp = (ChannelSftp) channel; + + s.setChannel(channel); + s.setSession(session); + s.setSftp(sftp); + + } + /** + * 断开连接 + * + */ + public static void disConn(com.jcraft.jsch.Session session, Channel channel, ChannelSftp sftp)throws Exception{ + if(null != sftp){ + sftp.disconnect(); + sftp.exit(); + sftp = null; + } + if(null != channel){ + channel.disconnect(); + channel = null; + } + if(null != session){ + session.disconnect(); + session = null; + } + } + + + /** + * 远程登录linux的主机 + * + * @return 登录成功返回true,否则返回false + * @author Ickes + * @since V0.1 + */ + private LinuxUtils login() { + String ip = linuxConnection.getIp(); + Connection conn = linuxConnection.getConn(); + String userName = linuxConnection.getUserName(); + String password = linuxConnection.getPassword(); + boolean flg = false; + try { + conn = new Connection(ip); + conn.connect();//连接 + flg = conn.authenticateWithPassword(userName, password);//认证 + if (!flg) { + System.err.println("认证失败,用户名或密码错误"); + throw new LoginErrorException(404, "连接失败,用户名或密码错误"); + } + linuxConnection.setConn(conn); + } catch (IOException | LoginErrorException e) { + e.printStackTrace(); + } + return this; + } + + /** + * @param cmd 即将执行的命令 + * @return 命令执行完后返回的结果值 + * @author Ickes + * 远程执行shll脚本或者命令 + * @since V0.1 + */ + public String execute(String cmd) { + login(); + String result = ""; + + try { + + Connection conn = linuxConnection.getConn(); + System.out.println("连接成功"); + Session session = conn.openSession();//打开一个会话 + System.out.println("开始执行指定命令"); + session.execCommand(cmd);//执行命令 + System.out.println("返回命令结果"); + result = processStdout(session.getStdout(), linuxConnection.DEFAULTCHART); + //如果为得到标准输出为空,说明脚本执行出错了 + if (StringUtils.isBlank(result)) { + result = processStdout(session.getStderr(), linuxConnection.DEFAULTCHART); + } + conn.close(); + session.close(); + + } catch (IOException e) { + e.printStackTrace(); + } + return result; + } + + + /** + * 解析脚本执行返回的结果集 + * + * @param in 输入流对象 + * @param charset 编码 + * @return 以纯文本的格式返回 + * @author Ickes + * @since V0.1 + */ + private String processStdout(InputStream in, String charset) { + InputStream stdout = new StreamGobbler(in); + StringBuffer buffer = new StringBuffer(); + ; + try { + BufferedReader br = new BufferedReader(new InputStreamReader(stdout, charset)); + String line = null; + while ((line = br.readLine()) != null) { + buffer.append(line + "\n"); + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return buffer.toString(); + } + + /** + * 向FTP服务器上传文件 + * + * @param sourcePath 本地文件的地址 + * @param targetPath FTP服务器文件存放路径 + * @param filename 上传到FTP服务器上的文件名 + * @return 成功返回true,否则返回false + */ + public boolean uploadFileBySFTP(String sourcePath,String targetPath, String filename) { + boolean result; + //FTPClient ftp = new FTPClient(); + SFTP s = new SFTP(); + try { + getConnect(s);//建立连接 + } catch (Exception e) { + e.printStackTrace(); + } + com.jcraft.jsch.Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + try { + + // 进入到要上传的目录 然后上传文件 + try { + sftp.cd(targetPath); //进入目录 + } catch (SftpException sException) { + if (sftp.SSH_FX_NO_SUCH_FILE == sException.id) { //指定上传路径不存在 + sftp.mkdir(targetPath);//创建目录 + sftp.cd(targetPath); //进入目录 + } + } + File file = new File(sourcePath+"/"+filename); + FileInputStream fileInputStream = new FileInputStream(file); +// sftp.cd(basePath + filePath); + // sftp put为上传,get为下载 + sftp.put(fileInputStream, filename); + fileInputStream.close(); + result = true; + } catch (Exception e) { +// log.error("FTP服务器 文件上传失败 失败原因:{}", e.getMessage(), e); + System.err.println("FTP服务器 文件上传失败 失败原因:"+e.getMessage()); + e.printStackTrace(); + result = false; + } finally { + try { + disConn(session,channel,sftp); + } catch (Exception e) { + System.err.println("FTP服务器 关闭失败 失败原因:"+e.getMessage()); +//// log.error("FTP服务器 关闭失败 失败原因:{}", e.getMessage(), e); + } +// if (ftp.isConnected()) { +// try { +// ftp.disconnect(); +// } catch (IOException e) { +// System.err.println("FTP服务器 关闭失败 失败原因:"+e.getMessage()); +//// log.error("FTP服务器 关闭失败 失败原因:{}", e.getMessage(), e); +// } +// } + } + return result; + } + + /** + * TODO 暂时不能使用 + * @param url FTP服务器hostname + * @param port FTP服务器端口 + * @param username FTP登录账号 + * @param password FTP登录密码 + * @param path FTP服务器保存目录 + * @param filename 文件名 6403_APP_YYYYMMDD_渠道标志_批次号.txt + * @param inputStream 输入流 + * @return + */ + private boolean uploadFileFTP(String url, int port, String username, String password, + String path, String filename, InputStream inputStream) { + boolean success; + FTPClient ftp = new FTPClient(); + try { + int reply; + // 链接 FTP 服务器 + // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 + ftp.connect(url, port); + ftp.setControlEncoding("UTF-8"); + // 设置文件格式为二进制类型 + ftp.setFileType(FTPClient.BINARY_FILE_TYPE); + new FTPClientConfig(FTPClientConfig.SYST_NT); + // 登录 + ftp.login(username, password); + // 返回链接码 + reply = ftp.getReplyCode(); + + if (!FTPReply.isPositiveCompletion(reply)) { + ftp.disconnect(); + System.err.println("FTP服务器 拒绝连接"); +// log.info("FTP服务器 拒绝连接"); + return false; + } + // 跳转到指定的目录路径 + ftp.changeWorkingDirectory(path); + // 存储文件 + ftp.storeFile(filename, inputStream); + inputStream.close(); + ftp.logout(); + success = true; + } catch (IOException e) { + e.printStackTrace(); + System.out.println("FTP服务器 文件上传失败 失败原因"+e.getMessage()); +// log.error("FTP服务器 文件上传失败 失败原因:{}", e.getMessage(), e); + return false; + } finally { + +// if (ftp.isConnected()) { +// try { +// ftp.disconnect(); +// } catch (IOException e) { +// e.printStackTrace(); +// System.out.println("FTP服务器 关闭失败 失败原因"+e.getMessage()); +//// log.error("FTP服务器 关闭失败 失败原因:{}", e.getMessage(), e); +// } +// } + } + return success; + } + + + /** + * 另一种上传方式,需要服务器上安装vsftpd服务器,并启用 + * @param hostname + * @param port + * @param username + * @param password + * @param sourcePath + * @param linuxPath + * @param fileName + * @return + */ + public Integer uploadFileToLinux(String hostname,int port,String username,String password,String sourcePath,String linuxPath,String fileName){ + System.out.println(sourcePath+"\\"+fileName); + + File imagefile = new File(sourcePath+"/"+fileName); +// String imagefileFileName = "gear_box_ysl.conf"; + //创建ftp客户端 + FTPClient ftpClient = new FTPClient(); + ftpClient.setControlEncoding("UTF-8"); + //String hostname = "192.168.118.202"; + //int port = 21; + //String username = "root"; + //String password = "dingjiawen.123"; + try { + //链接ftp服务器 + ftpClient.connect(hostname, port); + //登录ftp + ftpClient.login(username, password); + int reply = ftpClient.getReplyCode(); + System.out.println(reply); + //如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限下面有详细的解释。 + if (!FTPReply.isPositiveCompletion(reply)) { + ftpClient.disconnect(); + throw new LoginErrorException(reply,"连接失败,检查用户名,密码,端口,服务器是否开启"); + } + ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); + + //ftpClient.makeDirectory(linuxPath);//在root目录下创建文件夹 + String remoteFileName = linuxPath+"/"+fileName; + InputStream input = new FileInputStream(imagefile); + ftpClient.storeFile(remoteFileName, input);//文件你若是不指定就会上传到root目录下 + input.close(); + ftpClient.logout(); + + return reply; + + } catch (SocketException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (LoginErrorException e) { + e.printStackTrace(); + } finally { + if (ftpClient.isConnected()) { + try { + ftpClient.disconnect(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + } + + + return 530; + + + + } + + + /** + * 下载文件 + * + * @param directory 下载目录 根据SFTP设置的根目录来进行传入 + * @param downloadFile 下载的文件 + * @param saveFile 存在本地的路径 + */ + public Boolean download(String directory, String downloadFile, String saveFile) throws Exception { + boolean result = false; + SFTP s = new SFTP(); + getConnect(s);//建立连接 + com.jcraft.jsch.Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + try { + + sftp.cd(directory); //进入目录 + File file = new File(saveFile); + boolean bFile; + bFile = false; + bFile = file.exists(); + if (!bFile) { + bFile = file.mkdirs();//创建目录 + } + OutputStream out = new FileOutputStream(new File(saveFile, downloadFile)); + + sftp.get(downloadFile, out); + result=true; + + out.flush(); + out.close(); + + } catch (Exception e) { + + throw new Exception(e.getMessage(), e); + } finally { + disConn(session, channel, sftp); + } + + return result; + } + + + /** + * 删除文件 + * @param directory 要删除文件所在目录 + * @param deleteFile 要删除的文件 + */ + public Boolean delete(String directory, String deleteFile) throws Exception { + boolean result = false; + SFTP s=new SFTP(); + getConnect(s);//建立连接 + com.jcraft.jsch.Session session = s.getSession(); + Channel channel = s.getChannel(); + ChannelSftp sftp = s.getSftp();// sftp操作类 + try { + sftp.cd(directory); //进入的目录应该是要删除的目录的上一级 + sftp.rm(deleteFile);//删除目录 + result = true; + } catch (Exception e) { + throw new Exception(e.getMessage(),e); + } finally { + disConn(session,channel,sftp); + } + + return result; + } + + +} diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/resources/kafka-flume-hdfs.conf b/phm_rotate/backend/phm_backend/common/common-linux/src/main/resources/kafka-flume-hdfs.conf new file mode 100644 index 0000000..edd933f --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/resources/kafka-flume-hdfs.conf @@ -0,0 +1,69 @@ +#kafka-hdfs +#Name +a1.sources = r1 +a1.channels = c1 +a1.sinks = k1 + +#source +#本次使用kafka source +a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource +a1.sources.r1.kafka.bootstrap.servers = phm102:9092,phm103:9092,phm104:9092 +a1.sources.r1.kafka.topics = phm_data +a1.sources.r1.kafka.consumer.group.id = phm +#将批次写入通道之前的最长时间 +a1.sources.r1.batchDurationMillis = 2000 + +a1.sources.r1.interceptors = i1 +a1.sources.r1.interceptors.i1.type = com.cqu.mqtt.interceptor.TimeStampInterceptor$MyBuilder + +#file channel +a1.channels.c1.type = file +a1.channels.c1.dataDirs = /opt/module/flume-1.9.0/jobs/phm_data/filechannel +#写到file channel中时里面有已经去sink的和没去sink的,没去sink的会在内存中记录可以维护多少event的指针,以下配置就是配置这个容量 +a1.channels.c1.capacity = 1000000 +#事务容量,一定要大于kafka source 的batchsize +a1.channels.c1.transactionCapacity = 10000 +#内存中的指针为了防止flume故障而丢失,会指定内存中的指针落盘会落到哪里 +a1.channels.c1.checkpointDir = /opt/module/flume-1.9.0/jobs/phm_data/checkpoint +#落盘的备份 +#a1.channels.c1.useDualCheckpoints = true +#a1.channels.c1.backupCheckpointDir = /opt/module/flume-1.9.0/jobs/checkpoint-bk +#最大的文件大小,当写在file中的文件达到一定程度,会换一个文件继续写,默认2146435071 +a1.channels.c1.maxFileSize = 2146435071 +#source 放进channel中时可能会放不进去,以下设置放不下去时等多久,超过之后仍然不等 +a1.channels.c1.keep-alive = 5 + +a1.sinks.k1.type = hdfs +# TODO mqtt_service待改 +a1.sinks.k1.hdfs.path = hdfs://phm102:8020/origin_data/phm/log/phm_data/%Y-%m-%d +a1.sinks.k1.hdfs.filePrefix = log- +#a1.sinks.k1.hdfs.fileType = CompressedStream +#a1.sinks.k1.hdfs.codeC = gzip + +#是否按照时间滚动文件夹 +a1.sinks.k1.hdfs.round = true +#多少时间单位创建一个新的文件夹 +a1.sinks.k1.hdfs.roundValue = 1 +#重新定义时间单位 +a1.sinks.k1.hdfs.roundUnit = hour +#是否使用本地时间戳 +a1.sinks.k1.hdfs.useLocalTimeStamp = false +#积攒多少个Event才flush到HDFS一次 +a1.sinks.k1.hdfs.batchSize = 10 +#设置文件类型,可支持压缩 +a1.sinks.k1.hdfs.fileType = DataStream +# +a1.sinks.k1.hdfs.rollInterval = 0 +#设置每个文件的滚动大小 +a1.sinks.k1.hdfs.rollSize = 134217700 +#文件的滚动与Event数量无关 +a1.sinks.k1.hdfs.rollCount = 100 +#最小冗余数 +a1.sinks.k1.hdfs.minBlockReplicas = 1 +# 延长失联断开时间 5min +a1.sinks.k1.hdfs.callTimeout = 300000 + + +#bind +a1.sources.r1.channels = c1 +a1.sinks.k1.channel = c1 \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/common/common-linux/src/main/resources/mqtt-flume-kafka.conf b/phm_rotate/backend/phm_backend/common/common-linux/src/main/resources/mqtt-flume-kafka.conf new file mode 100644 index 0000000..3bf36a7 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-linux/src/main/resources/mqtt-flume-kafka.conf @@ -0,0 +1,22 @@ +a1.sources = r1 +a1.channels = c1 +# a1.sinks = k1 + + +a1.sources.r1.type = com.cqu.mqtt.service.MQTTSource +a1.sources.r1.host = phm102 +a1.sources.r1.port = 1883 +a1.sources.r1.topic = phm_data +a1.sources.r1.keepAliveInterval = 10000 +a1.sources.r1.username = mqtt +a1.sources.r1.password = mqtt + +a1.sources.r1.interceptors = i1 +a1.sources.r1.interceptors.i1.type = com.cqu.mqtt.interceptor.ETLNotJsonInterceptor$MyBuilder + +a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel +a1.channels.c1.kafka.bootstrap.servers = phm102:9092,phm103:9092,phm104:9092 +a1.channels.c1.kafka.topic = phm_data +a1.channels.c1.parseAsFlumeEvent = false + +a1.sources.r1.channels = c1 \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/common/common-utils/pom.xml b/phm_rotate/backend/phm_backend/common/common-utils/pom.xml new file mode 100644 index 0000000..134cfc5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-utils/pom.xml @@ -0,0 +1,28 @@ + + + + common + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + common-utils + + + + junit + junit + 4.13.2 + compile + + + + + 8 + 8 + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/Result.java b/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/Result.java new file mode 100644 index 0000000..aa2c91c --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/Result.java @@ -0,0 +1,70 @@ +package com.cqu.utils; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ranmaoqi + * @time 2022-04-09 16:22 + */ +@Data +public class Result { + + private Boolean success; + + private Integer code; + + private String message; + + private Map data = new HashMap(); + + //将构造器私有化,别人就不能new + private Result() {} + + //要用这个类只能用下面的静态方法 + //成功 + public static Result ok() { + Result result = new Result(); + result.setSuccess(true); + result.setCode(ResultCode.SUCCESS); + result.setMessage("成功"); + return result; + } + + //失败 + public static Result error() { + Result result = new Result(); + result.setSuccess(false); + result.setCode(ResultCode.ERROR); + result.setMessage("失败"); + return result; + } + + public Result success(Boolean success){ + this.setSuccess(success); + return this; + } + + public Result message(String message){ + this.setMessage(message); + return this; + } + + public Result code(Integer code){ + this.setCode(code); + return this; + } + + public Result data(String key, Object value){ + this.data.put(key, value); + return this; + } + + public Result data(Map map){ + this.setData(map); + return this; + } + +} diff --git a/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/ResultCode.java b/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/ResultCode.java new file mode 100644 index 0000000..d665ecf --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/ResultCode.java @@ -0,0 +1,12 @@ +package com.cqu.utils; + +/** + * @author ranmaoqi + * @time 2022-04-09 16:19 + */ +public class ResultCode { + + public static final Integer SUCCESS = 20000; + public static final Integer ERROR = 20001; + +} diff --git a/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/utils/ReadResourcesFileUtil.java b/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/utils/ReadResourcesFileUtil.java new file mode 100644 index 0000000..5af13d3 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/common-utils/src/main/java/com/cqu/utils/utils/ReadResourcesFileUtil.java @@ -0,0 +1,109 @@ +package com.cqu.utils.utils; + +import org.junit.Test; + +import java.io.*; +import java.net.URL; +import java.net.URLConnection; +import java.util.Enumeration; + +/** + *@BelongsProject: phm_backend + *@BelongsPackage: com.cqu.utils.utils + *@Author: dingjiawen + *@CreateTime: 2023-01-08 19:02 + *@Description: TODO 读取当前项目下resource下的文件 + *@Version: 1.0 + */ +public class ReadResourcesFileUtil { + + @Test + public void test(){ + + } + + + /** + * 读取本地resource目录下的文件,暂时直接返回一个inputStream + * TODO 不建议使用暂时能读取properties,text等文件,如果是conf文件会返回空指针 + * @param fileName 想读取的resource下的文件名 + * @return + */ + public static InputStream readBackToInputSteam(String fileName){ + InputStream inputStream=null; + try { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + URL urls = classLoader.getResource(fileName); + URLConnection urlConnection = urls.openConnection(); + urlConnection.setUseCaches(false); + inputStream = urlConnection.getInputStream(); + // 从文件输入流获取缓存 该方法的后续用法 + // 1.一行一行读 +// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + // 2.按buffer大小读 +// byte[] buffer = new byte[1024]; +// int len; +// while ((len = inputStream.read(buffer)) != -1){ +// String str = new String(buffer, 0, len); +// System.out.println(str); +// } + } catch (IOException e) { + e.printStackTrace(); + } + return inputStream; + } + + /** + * 读取本地resource目录下的批量同名文件文件,暂时直接返回一个inputStream + * TODO 推荐使用,不会报错并且可能读取conf文件 + * @param fileName 想读取的resource下的文件名 + * @return + */ + public static InputStream readBatchBackToInputSteam(String fileName){ + InputStream inputStream=null; + try { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + Enumeration urls = classLoader.getResources(fileName); + System.out.println(urls.hasMoreElements()); + while (urls.hasMoreElements()){ + URL url = urls.nextElement(); + URLConnection urlConnection = url.openConnection(); + urlConnection.setUseCaches(false); + inputStream = urlConnection.getInputStream(); +// byte[] buffer = new byte[1024]; +// int len; +// while ((len = inputStream.read(buffer)) != -1){ +// String str = new String(buffer, 0, len); +// System.out.println(str); +// } + } + } catch (IOException e) { + e.printStackTrace(); + } + return inputStream; + } + + /** + * 读取resource下的文件返回File类型,暂时无法使用 + * @param fileName + * @return + */ + private static File read(String fileName){ + InputStream inputStream=null; + try { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + URL urls = classLoader.getResource(fileName); + URLConnection urlConnection = urls.openConnection(); + urlConnection.setUseCaches(false); + inputStream = urlConnection.getInputStream(); + // 从文件输入流获取缓存 + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + // 从文件内容里面得到实现类的全类名 + String className = bufferedReader.readLine(); + System.out.println(className); + }catch (Exception e){ + e.printStackTrace(); + } + return new File(fileName); + } +} diff --git a/phm_rotate/backend/phm_backend/common/pom.xml b/phm_rotate/backend/phm_backend/common/pom.xml new file mode 100644 index 0000000..8be87f8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/pom.xml @@ -0,0 +1,75 @@ + + + + phm_parent + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + common + + pom + + common-utils + service_base + common-linux + + + + 8 + 8 + + + + + org.springframework.boot + spring-boot-starter-web + provided + + + + + + com.baomidou + mybatis-plus-boot-starter + provided + + + + + org.projectlombok + lombok + provided + + + + + io.springfox + springfox-swagger2 + provided + + + io.springfox + springfox-swagger-ui + provided + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + org.apache.commons + commons-pool2 + 2.6.0 + + + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/common/service_base/pom.xml b/phm_rotate/backend/phm_backend/common/service_base/pom.xml new file mode 100644 index 0000000..21bb23d --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/service_base/pom.xml @@ -0,0 +1,28 @@ + + + + common + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + service_base + + + 8 + 8 + + + + + + com.cqu + common-utils + 0.0.1-SNAPSHOT + + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/config/SwaggerConfig.java b/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/config/SwaggerConfig.java new file mode 100644 index 0000000..39f2997 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.cqu.base.config; + +import com.google.common.base.Predicates; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * @author ranmaoqi + * @time 2022-04-09 17:32 + */ +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + + @Bean + public Docket webApiConfig(){ + return new Docket(DocumentationType.SWAGGER_2) + .groupName("webApi") + .apiInfo(webApiInfo()) + .select() + .paths(Predicates.not(PathSelectors.regex("/admin/.*"))) + .paths(Predicates.not(PathSelectors.regex("/error.*"))) + .build(); + } + + private ApiInfo webApiInfo(){ + return new ApiInfoBuilder() + .title("大型旋转机组健康管理软件API文档") + .version("1.0") + .build(); + } + +} diff --git a/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/exception/GlobalExceptionHandler.java b/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..e294b39 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/exception/GlobalExceptionHandler.java @@ -0,0 +1,35 @@ +package com.cqu.base.exception; + +import com.cqu.utils.Result; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 统一异常处理类 + * @author ranmaoqi + * @time 2022-04-09 16:49 + */ + +@ControllerAdvice +@Slf4j +public class GlobalExceptionHandler { + + //处理全部异常 + @ExceptionHandler(Exception.class) //指定出现什么异常时执行 + @ResponseBody //返回json格式数据 + public Result error(Exception e) { + e.printStackTrace(); + return Result.error().message("发生异常"); + } + + //处理自定义异常 + @ExceptionHandler(PhmException.class) + @ResponseBody + public Result error(PhmException e) { + e.printStackTrace(); + return Result.error().code(e.getCode()).message(e.getMsg()); + } + +} diff --git a/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/exception/PhmException.java b/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/exception/PhmException.java new file mode 100644 index 0000000..c5991b5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/exception/PhmException.java @@ -0,0 +1,21 @@ +package com.cqu.base.exception; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 自定义异常处理类PhmException + * @author ranmaoqi + * @time 2022-04-09 16:54 + */ + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PhmException extends RuntimeException { + + private Integer code; //状态码 + private String msg; //错误信息 + +} diff --git a/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/handler/MyMetaObjectHandler.java b/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/handler/MyMetaObjectHandler.java new file mode 100644 index 0000000..2db1841 --- /dev/null +++ b/phm_rotate/backend/phm_backend/common/service_base/src/main/java/com/cqu/base/handler/MyMetaObjectHandler.java @@ -0,0 +1,28 @@ +package com.cqu.base.handler; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 用来处理自动填充(gmtCreate、gmtModified) + * @author ranmaoqi + * @time 2022-04-11 11:33 + */ +@Component +public class MyMetaObjectHandler implements MetaObjectHandler { + + + @Override + public void insertFill(MetaObject metaObject) { + this.setFieldValByName("gmtCreate", new Date(), metaObject); + this.setFieldValByName("gmtModified", new Date(), metaObject); + } + + @Override + public void updateFill(MetaObject metaObject) { + this.setFieldValByName("gmtModified", new Date(), metaObject); + } +} diff --git a/phm_rotate/backend/phm_backend/gateway/pom.xml b/phm_rotate/backend/phm_backend/gateway/pom.xml new file mode 100644 index 0000000..cd7daad --- /dev/null +++ b/phm_rotate/backend/phm_backend/gateway/pom.xml @@ -0,0 +1,32 @@ + + + + phm_parent + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + gateway + + + 8 + 8 + + + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/gateway/src/main/java/com/cqu/gateway/GatewayApplication.java b/phm_rotate/backend/phm_backend/gateway/src/main/java/com/cqu/gateway/GatewayApplication.java new file mode 100644 index 0000000..a78ecdf --- /dev/null +++ b/phm_rotate/backend/phm_backend/gateway/src/main/java/com/cqu/gateway/GatewayApplication.java @@ -0,0 +1,23 @@ +package com.cqu.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * @Author: ranmaoqi + * @Date: 2023/01/10 19:05 + */ +@SpringBootApplication +/* + 如果不加这个注解,就扫描不到common包里的东西 + 因为默认只会扫描启动类所在的包及其子包 + */ +@ComponentScan(basePackages = {"com.cqu"}) +public class GatewayApplication { + + public static void main(String[] args) { + SpringApplication.run(GatewayApplication.class, args); + } + +} diff --git a/phm_rotate/backend/phm_backend/gateway/src/main/java/com/cqu/gateway/config/CorsConfig.java b/phm_rotate/backend/phm_backend/gateway/src/main/java/com/cqu/gateway/config/CorsConfig.java new file mode 100644 index 0000000..8edba36 --- /dev/null +++ b/phm_rotate/backend/phm_backend/gateway/src/main/java/com/cqu/gateway/config/CorsConfig.java @@ -0,0 +1,31 @@ +package com.cqu.gateway.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.reactive.CorsWebFilter; +import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; +import org.springframework.web.util.pattern.PathPatternParser; + +/** + * 网关配置解决跨域问题 + * @Author: ranmaoqi + * @Date: 2023/3/22 14:42 + */ +@Configuration +public class CorsConfig { + + @Bean + public CorsWebFilter corsFilter() { + CorsConfiguration config = new CorsConfiguration(); + config.addAllowedMethod("*"); + config.addAllowedOrigin("*"); + config.addAllowedHeader("*"); + + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser()); + source.registerCorsConfiguration("/**", config); + + return new CorsWebFilter(source); + } + +} diff --git a/phm_rotate/backend/phm_backend/pom.xml b/phm_rotate/backend/phm_backend/pom.xml new file mode 100644 index 0000000..92a6087 --- /dev/null +++ b/phm_rotate/backend/phm_backend/pom.xml @@ -0,0 +1,239 @@ + + + 4.0.0 + + service + common + collecting + gateway + warehouse + + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + + com.cqu + phm_parent + 0.0.1-SNAPSHOT + phm_parent + phm_parent + + + pom + + + + + + + + + + + + + + + + + + 1.8 + 0.0.1-SNAPSHOT + 3.0.5 + 2.0 + 2.7.0 + 2.8.3 + 2.10.1 + 3.17 + 1.3.1 + 2.6 + 4.5.1 + 0.7.0 + 4.3.3 + 3.1.0 + 2.15.2 + 1.4.11 + 1.4.11 + 1.2.28 + 2.8.2 + 20170516 + 1.7 + 1.1.0 + zx + 0.2.2.RELEASE + + + + + + + + org.springframework.cloud + spring-cloud-dependencies + Hoxton.RELEASE + pom + import + + + + org.springframework.cloud + spring-cloud-alibaba-dependencies + ${cloud-alibaba.version} + pom + import + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.version} + + + + + org.apache.velocity + velocity-engine-core + ${velocity.version} + + + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + + + com.aliyun.oss + aliyun-sdk-oss + ${aliyun.oss.version} + + + + + joda-time + joda-time + ${jodatime.version} + + + + + org.apache.poi + poi + ${poi.version} + + + + org.apache.poi + poi-ooxml + ${poi.version} + + + + + commons-fileupload + commons-fileupload + ${commons-fileupload.version} + + + + + commons-io + commons-io + ${commons-io.version} + + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + + com.google.code.gson + gson + ${gson.version} + + + + + io.jsonwebtoken + jjwt + ${jwt.version} + + + + + com.aliyun + aliyun-java-sdk-core + ${aliyun-java-sdk-core.version} + + + com.aliyun.oss + aliyun-sdk-oss + ${aliyun-sdk-oss.version} + + + com.aliyun + aliyun-java-sdk-vod + ${aliyun-java-sdk-vod.version} + + + com.aliyun + aliyun-java-vod-upload + ${aliyun-java-vod-upload.version} + + + com.aliyun + aliyun-sdk-vod-upload + ${aliyun-sdk-vod-upload.version} + + + com.alibaba + fastjson + ${fastjson.version} + + + org.json + json + ${json.version} + + + + commons-dbutils + commons-dbutils + ${commons-dbutils.version} + + + + com.alibaba.otter + canal.client + ${canal.client.version} + + + + + + + + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/pom.xml b/phm_rotate/backend/phm_backend/service/pom.xml new file mode 100644 index 0000000..bbe1f98 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/pom.xml @@ -0,0 +1,150 @@ + + + + phm_parent + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + service + + + pom + + service_device + service_data + service_data_interface + + + + 8 + 8 + + + + + + + com.cqu + service_base + 0.0.1-SNAPSHOT + + + + + + + + + + + + + + + + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.baomidou + mybatis-plus-boot-starter + + + + + mysql + mysql-connector-java + + + + + + org.apache.velocity + velocity-engine-core + + + + + io.springfox + springfox-swagger2 + + + io.springfox + springfox-swagger-ui + + + + + org.projectlombok + lombok + + + + + org.apache.poi + poi + + + + org.apache.poi + poi-ooxml + + + + commons-fileupload + commons-fileupload + + + + + org.apache.httpcomponents + httpclient + + + + commons-io + commons-io + + + + com.google.code.gson + gson + + + + junit + junit + 4.12 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/service/service_data/pom.xml b/phm_rotate/backend/phm_backend/service/service_data/pom.xml new file mode 100644 index 0000000..de60bce --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/pom.xml @@ -0,0 +1,53 @@ + + + + service + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + service_data + + + 8 + 8 + + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.alibaba + fastjson + + + + + + + + src/main/java + + **/*.xml + + false + + + src/main/resources + + **/*.yml + **/*.properties + + false + + + + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/DataApplication.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/DataApplication.java new file mode 100644 index 0000000..094959c --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/DataApplication.java @@ -0,0 +1,19 @@ +package com.cqu.data; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; + +@SpringBootApplication +@ComponentScan(basePackages = {"com.cqu"}) +@EnableFeignClients +// 不加好像扫描不到mapper +//@MapperScan({"com.cqu"}) +public class DataApplication { + + public static void main(String[] args) { + SpringApplication.run(DataApplication.class,args); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/clients/DeviceClient.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/clients/DeviceClient.java new file mode 100644 index 0000000..fe98459 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/clients/DeviceClient.java @@ -0,0 +1,33 @@ +package com.cqu.data.clients; + +import com.cqu.data.entity.vo.Device; +import com.cqu.data.entity.vo.DeviceTypeDetail; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +/** + * @Author: ranmaoqi + * @Date: 2023/01/12 11:31 + */ + +@FeignClient("service-device") +public interface DeviceClient { + + /** + * 获得设备型号实体 + * @param id + * @return + */ + @GetMapping("/device/device-type-detail/getDetailById/{id}") + DeviceTypeDetail getDetailById(@PathVariable String id); + + /** + * 获得设备(设备对象)实体 + * @param deviceId + * @return + */ + @GetMapping("/device/device/getDeviceByDeviceId/{deviceId}") + Device getDeviceByDeviceId(@PathVariable String deviceId); + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/config/DataConfig.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/config/DataConfig.java new file mode 100644 index 0000000..63989cc --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/config/DataConfig.java @@ -0,0 +1,53 @@ +package com.cqu.data.config; + + +import com.baomidou.mybatisplus.core.injector.ISqlInjector; +import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector; +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@MapperScan("com.cqu.data.mapper") +public class DataConfig { + + /** + * 逻辑删除插件 + * @return + */ + @Bean + public ISqlInjector sqlInjector() { + return new LogicSqlInjector(); + } + + /** + * 分页插件 + * @return + */ + @Bean + public PaginationInterceptor paginationInterceptor() { + return new PaginationInterceptor(); + } + +// +// /** +// * 配置全局跨域 +// * 所有请求都允许跨域 +// * @param registry +// */ +// @Override +// public void addCorsMappings(CorsRegistry registry) { +// +// registry.addMapping("/**") +// .allowCredentials(true) +// .allowedOrigins("http://localhost:9528") //换成前端中的地址 +// .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") +// .allowedHeaders("*") +// .maxAge(3600); +// +// } +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/AccessServiceController.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/AccessServiceController.java new file mode 100644 index 0000000..2c17b0d --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/AccessServiceController.java @@ -0,0 +1,54 @@ +package com.cqu.data.controller; + + +import com.cqu.data.entity.AccessService; +import com.cqu.data.entity.vo.ServiceFormVo; +import com.cqu.data.service.AccessServiceService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 接入服务表 接入服务表 前端控制器 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@RestController +@RequestMapping("/data/access-service") +//@CrossOrigin +public class AccessServiceController { + + @Autowired + private AccessServiceService accessServiceService; + + + //根据设备组id查询服务 + @GetMapping("/listServiceByGroupId/{groupId}/{current}/{size}") + public Result listServiceByGroupId(@PathVariable String groupId,@PathVariable Integer current,@PathVariable Integer size){ + return accessServiceService.listServiceByGroupId(groupId,current,size); + } + + //保存接入服务 + @PostMapping("/addService/{deviceGroupId}") + public Result addService(@PathVariable String deviceGroupId, @RequestBody ServiceFormVo serviceForm){ + + System.err.println("serviceForm:"+serviceForm); + + boolean flag = accessServiceService.saveService(deviceGroupId,serviceForm); + return flag ? Result.ok():Result.error(); + + } + + + //根据服务id查询服务信息 + @GetMapping("/getServiceById/{serviceId}") + public Result getServiceById(@PathVariable String serviceId){ + AccessService service = accessServiceService.getById(serviceId); + return Result.ok().data("service",service); + } + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/AccessTaskController.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/AccessTaskController.java new file mode 100644 index 0000000..62bb721 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/AccessTaskController.java @@ -0,0 +1,23 @@ +package com.cqu.data.controller; + + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 接入任务表 接入任务表 前端控制器 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@RestController +@RequestMapping("/data/access-task") +//@CrossOrigin +public class AccessTaskController { + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/DatasetController.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/DatasetController.java new file mode 100644 index 0000000..bae3dec --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/DatasetController.java @@ -0,0 +1,117 @@ +package com.cqu.data.controller; + + +import com.cqu.data.entity.Dataset; +import com.cqu.data.service.DatasetService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 数据集表 前端控制器 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@RestController +@RequestMapping("/data/dataset") +//@CrossOrigin +public class DatasetController { + + @Autowired + private DatasetService datasetService; + + /** + * 根据设备型号id查询设备型号下的数据集 + * @param detailId 设备型号id + * @param current 当前页 + * @param size 每页大小 + * @return + */ + @GetMapping("/listDatasetByDetailId/{detailId}/{current}/{size}") + public Result listDatasetByDetailId(@PathVariable String detailId, @PathVariable Integer current, @PathVariable Integer size) { + return datasetService.listDatasetByDetailId(detailId, current, size); + } + + /** + * 在设备型号下新建数据集 + * @param detailId 设备型号id + * @param dataset 数据集实体 + * @return + */ + @PostMapping("/addDatasetByDetailId/{detailId}") + public Result addDatasetByDetailId(@PathVariable String detailId, @RequestBody Dataset dataset) { + return datasetService.addDatasetByDetailId(detailId, dataset); +// boolean flag = datasetService.save(dataset.setDetailId(detailId)); +// return flag ? Result.ok() : Result.error(); + } + + /** + * 根据数据集id查询数据集,用于回显 + * @param id 数据集id + * @return + */ + @GetMapping("/getDatasetById/{id}") + public Result getDatasetById(@PathVariable String id) { + Dataset dataset = datasetService.getById(id); + return Result.ok().data("dataset", dataset); + } + + /** + * 编辑数据集信息 + * @param dataset 数据集实体 + * @return + */ + @PutMapping("/updateDataset") + public Result updateDataset(@RequestBody Dataset dataset) { + return datasetService.updateDataset(dataset); +// boolean flag = datasetService.updateById(dataset); +// return flag ? Result.ok() : Result.error(); + } + + /** + * 根据数据集id删除数据集 + * @param id 数据集id + * @return + */ + @DeleteMapping("/deleteDatasetById/{id}") + public Result deleteDatasetById(@PathVariable String id) { + boolean flag = datasetService.removeById(id); + return flag ? Result.ok() : Result.error(); + } + + /** + * 多选批量删除数据集 + * @param datasetList 数据集实体列表 + * @return + */ + @DeleteMapping("/deleteDatasetBatch") + public Result deleteDatasetBatch(@RequestBody List datasetList) { + return datasetService.deleteDatasetBatch(datasetList); + } + + /** + * 根据detailId查询数据图谱 + * @param detailId + * @return + */ + @GetMapping("/getDataGraphByDetailId/{detailId}") + public Result getDataGraphByDetailId(@PathVariable String detailId) { + return datasetService.getDataGraphByDetailId(detailId); + } + + /** + * 根据deviceId查询数据图谱 + * @param deviceId + * @return + */ + @GetMapping("/getDataGraphByDeviceId/{deviceId}") + public Result getDataGraphByDeviceId(@PathVariable String deviceId) { + return datasetService.getDataGraphByDeviceId(deviceId); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/DatasetItemController.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/DatasetItemController.java new file mode 100644 index 0000000..d66457d --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/DatasetItemController.java @@ -0,0 +1,95 @@ +package com.cqu.data.controller; + + +import com.cqu.data.entity.Dataset; +import com.cqu.data.entity.DatasetItem; +import com.cqu.data.service.DatasetItemService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 数据集详情表 前端控制器 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@RestController +@RequestMapping("/data/dataset-item") +//@CrossOrigin +public class DatasetItemController { + + @Autowired + private DatasetItemService datasetItemService; + + /** + * 根据数据集id分页查询数据集项列表 + * @param datasetId 数据集id + * @param current 当前页 + * @param size 每页显示条数 + * @return + */ + @GetMapping("/listDatasetItemByDatasetId/{datasetId}/{current}/{size}") + public Result listDatasetItemByDatasetId(@PathVariable String datasetId, @PathVariable Integer current, @PathVariable Integer size) { + return datasetItemService.listDatasetItemByDatasetId(datasetId, current, size); + } + + /** + * 在id为datasetId的数据集下,新建数据项 + * @param datasetId 数据集Id + * @param datasetItem 数据项实体 + * @return + */ + @PostMapping("/addDatasetItemByDatasetId/{datasetId}") + public Result addDatasetItemByDatasetId(@PathVariable String datasetId, @RequestBody DatasetItem datasetItem) { + System.err.println(":"+datasetItem); + return datasetItemService.addDatasetItemByDatasetId(datasetId, datasetItem); + } + + /** + * 根据数据项Id查询数据项,用于回显 + * @param id 数据项id + * @return + */ + @GetMapping("/getDatasetItemById/{id}") + public Result getDatasetById(@PathVariable String id) { + DatasetItem datasetItem = datasetItemService.getById(id); + return Result.ok().data("datasetItem", datasetItem); + } + + /** + * 编辑数据项 + * @param datasetItem 数据项实体 + * @return + */ + @PutMapping("/updateDatasetItem") + public Result updateDatasetItem(@RequestBody DatasetItem datasetItem) { + return datasetItemService.updateDatasetItem(datasetItem); + } + + /** + * 根据数据项id删除数据项 + * @param id 数据项id + * @return + */ + @DeleteMapping("/deleteDatasetItemById/{id}") + public Result deleteDatasetItemById(@PathVariable String id) { + boolean flag = datasetItemService.removeById(id); + return flag ? Result.ok() : Result.error(); + } + + /** + * 多选批量删除数据项 + * @param datasetItemList 数据项实体列表 + * @return + */ + @DeleteMapping("/deleteDatasetItemBatch") + public Result deleteDatasetItemBatch(@RequestBody List datasetItemList) { + return datasetItemService.deleteDatasetItemBatch(datasetItemList); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeKafkaController.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeKafkaController.java new file mode 100644 index 0000000..9053077 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeKafkaController.java @@ -0,0 +1,23 @@ +package com.cqu.data.controller; + + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 数据源kafka表 数据源kafka表 前端控制器 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@RestController +@RequestMapping("/data/source-type-kafka") +//@CrossOrigin +public class SourceTypeKafkaController { + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeLigaController.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeLigaController.java new file mode 100644 index 0000000..7088be1 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeLigaController.java @@ -0,0 +1,23 @@ +package com.cqu.data.controller; + + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 数据源liga表 数据源liga表 前端控制器 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@RestController +@RequestMapping("/data/source-type-liga") +//@CrossOrigin +public class SourceTypeLigaController { + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeMqttController.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeMqttController.java new file mode 100644 index 0000000..3f4e001 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeMqttController.java @@ -0,0 +1,23 @@ +package com.cqu.data.controller; + + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 数据源MQTT表 数据源MQTT表 前端控制器 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@RestController +@RequestMapping("/data/source-type-mqtt") +//@CrossOrigin +public class SourceTypeMqttController { + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeOpcUaController.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeOpcUaController.java new file mode 100644 index 0000000..a04828a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/controller/SourceTypeOpcUaController.java @@ -0,0 +1,23 @@ +package com.cqu.data.controller; + + +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 数据源OPC_UA表 数据源OPC_UA表 前端控制器 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@RestController +@RequestMapping("/data/source-type-opc-ua") +//@CrossOrigin +public class SourceTypeOpcUaController { + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/AccessService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/AccessService.java new file mode 100644 index 0000000..8642f18 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/AccessService.java @@ -0,0 +1,127 @@ +package com.cqu.data.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import com.cqu.base.exception.PhmException; +import com.cqu.data.entity.enumClass.SourceType; +import com.cqu.data.entity.enumClass.Status; +import com.cqu.utils.ResultCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 接入服务表 接入服务表 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="AccessService对象", description="接入服务表 接入服务表") +public class AccessService implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号 主键编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备组id 设备组id") + private String groupId; + + @ApiModelProperty(value = "接入服务名称 接入服务名称") + private String name; + + @ApiModelProperty(value = "数据源类型 数据源类型") + private Integer sourceType; + + @ApiModelProperty(value = "数据源类型id 关联数据源类型表的id") + private String sourceTypeId; + + @ApiModelProperty(value = "接入服务描述 接入服务描述") + private String description; + + @ApiModelProperty(value = "数据包格式 数据包格式,0标准,1轻量,默认0") + private Integer packetFormat; + + @ApiModelProperty(value = "时间戳编码 时间戳编码,默认为time") + private String timestampCode; + + @ApiModelProperty(value = "时间戳精度 时间戳精度,1秒,0毫秒,默认1") + private Integer timestampAccurate; + + @ApiModelProperty(value = "时间戳格式 时间戳格式枚举类,0yyyyMMddHHmmss,默认为0") + private Integer timestampFormat; + + @ApiModelProperty(value = "接入任务数量 接入任务数量") + private Integer taskNum; + + @ApiModelProperty(value = "状态 状态枚举类,0运行中等等") + @TableField("STATUS") + private Integer status; + + @ApiModelProperty(value = "是否已被删除 是否已被删除") + @TableLogic + private Integer isDeleted; + + + @ApiModelProperty(value = "创建日期 创建时间") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间 修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + @TableField(exist = false) + private String sourceTypeName; + + @TableField(exist = false) + private String statusName; + + public void setSourceTypeName(){ + if(this.getSourceType()==SourceType.内置MQTT){ + this.sourceTypeName = "内置MQTT"; + }else if(this.getSourceType()==SourceType.第三方MQTT){ + this.sourceTypeName = "第三方MQTT"; + }else if(this.getSourceType()==SourceType.Kafka){ + this.sourceTypeName = "Kafka"; + }else if(this.getSourceType()==SourceType.OPC_UA){ + this.sourceTypeName = "OPC_UA"; + }else if(this.getSourceType()==SourceType.Liga实时数据){ + this.sourceTypeName = "Liga实时数据"; + }else if(this.getSourceType()==SourceType.Liga历史数据){ + this.sourceTypeName = "Liga历史数据"; + }else if(this.getSourceType()==SourceType.Liga振动数据){ + this.sourceTypeName = "Liga振动数据"; + }else { + throw new PhmException(ResultCode.ERROR,"数据源未定义"); + } + } + + public void setStatusName(){ + + if(this.getStatus()==Status.运行中){ + this.statusName = "运行中"; + }else if(this.getSourceType()==Status.已停止){ + this.statusName = "已停止"; + }else if(this.getSourceType()==Status.等待中){ + this.statusName = "等待中"; + }else { + throw new PhmException(ResultCode.ERROR,"服务运行状态状态异常"); + } + + + } + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/AccessTask.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/AccessTask.java new file mode 100644 index 0000000..ed32591 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/AccessTask.java @@ -0,0 +1,74 @@ +package com.cqu.data.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 接入任务表 接入任务表 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="AccessTask对象", description="接入任务表 接入任务表") +public class AccessTask implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号 主键编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "接入服务id 设备组id") + private String serviceId; + + @ApiModelProperty(value = "接入任务名称 接入任务名称") + private String name; + + @ApiModelProperty(value = "设备对象id 设备对象id") + private String deivceObjectId; + + @ApiModelProperty(value = "部件id 部件id") + private String partId; + + @ApiModelProperty(value = "数据集id 数据集id") + private Integer datasetId; + + @ApiModelProperty(value = "描述 描述") + private String description; + + @ApiModelProperty(value = "状态 状态,0运行1停止等") + @TableField("STATUS") + private Integer status; + + @ApiModelProperty(value = "接受数据条数 接受数据条数") + private Integer dataNum; + + @ApiModelProperty(value = "是否已被删除 是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人 创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期 创建时间") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间 修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/Dataset.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/Dataset.java new file mode 100644 index 0000000..a0875e2 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/Dataset.java @@ -0,0 +1,86 @@ +package com.cqu.data.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; + +import com.cqu.data.entity.enumClass.DataType; +import com.cqu.data.entity.enumClass.DatasetType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 数据集表 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="DataSets对象", description="数据集表") +public class Dataset implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备型号id 设备型号id") + private String detailId; + + @ApiModelProperty(value = "名称 名称") + private String name; + + @ApiModelProperty(value = "描述 描述") + private String description; + + @ApiModelProperty(value = "数据集类型") + private Integer datasetType; + + @ApiModelProperty(value = "数据类型") + private Integer dataType; + + @ApiModelProperty(value = "是否已被删除 是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人 创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期 创建时间") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间 修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + @TableField(exist = false) + private String datasetTypeName; //数据集类型的名字 + + @TableField(exist = false) + private String dataTypeName; //数据类型的名字 + + public void setDatasetTypeName() { + if (this.datasetType == DatasetType.iot数据) { + this.datasetTypeName = "iot数据"; + } + } + + public void setDataTypeName() { + if (this.dataType == DataType.指标数据) { + this.dataTypeName = "指标数据"; + } else if (this.dataType == DataType.振动数据) { + this.dataTypeName = "振动数据"; + } + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/DatasetItem.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/DatasetItem.java new file mode 100644 index 0000000..346b9d8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/DatasetItem.java @@ -0,0 +1,118 @@ +package com.cqu.data.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; + +import com.cqu.data.entity.enumClass.DataType; +import com.cqu.data.entity.enumClass.DatasetItemType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 数据集详情表 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="DataSetDetail对象", description="数据集详情表") +public class DatasetItem implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "数据集id") + private String datasetId; + + @ApiModelProperty(value = "名称 名称") + private String name; + + @ApiModelProperty(value = "显示名称") + private String showName; + + @ApiModelProperty(value = "编码") + private String code; + + @ApiModelProperty(value = "数据类型, 枚举类") + private Integer type; + + @ApiModelProperty(value = "是否一级预警") + private Boolean isFirstWarning; + + @ApiModelProperty(value = "一级预警值上限") + private Double firstCeiling; + + @ApiModelProperty(value = "一级预警值下限") + private Double firstFloor; + + @ApiModelProperty(value = "是否二级预警") + private Boolean isSecondWarning; + + @ApiModelProperty(value = "二级预警值上限") + private Double secondCeiling; + + @ApiModelProperty(value = "二级预警值下限") + private Double secondFloor; + + @ApiModelProperty(value = "数据单位") + private String unit; + + @ApiModelProperty(value = "描述 描述") + private String description; + + @ApiModelProperty(value = "是否已被删除 是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人 创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期 创建时间") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间 修改时间") + @TableField(fill=FieldFill.INSERT_UPDATE) + private Date gmtModified; + + @TableField(exist = false) + private String datasetItemTypeName; //数据项的参数类型 + + public void setDatasetItemTypeName() { + if (this.type == DatasetItemType.实数) { + this.datasetItemTypeName = "实数(double)"; + } else if (this.type == DatasetItemType.整数) { + this.datasetItemTypeName = "整数(int)"; + } else if (this.type == DatasetItemType.字符串) { + this.datasetItemTypeName = "字符串(string)"; + } else if (this.type == DatasetItemType.布尔) { + this.datasetItemTypeName = "布尔(bool)"; + } else if (this.type == DatasetItemType.实数数组) { + this.datasetItemTypeName = "实数数组(double_array)"; + } else if (this.type == DatasetItemType.整数数组) { + this.datasetItemTypeName = "整数数组(int_array)"; + } else if (this.type == DatasetItemType.字符串数组) { + this.datasetItemTypeName = "字符串数组(string_array)"; + } else if (this.type == DatasetItemType.布尔数组) { + this.datasetItemTypeName = "布尔数组(bool_array)"; + } else if (this.type == DatasetItemType.振动) { + this.datasetItemTypeName = "振动(vibration)"; + } else if (this.type == DatasetItemType.时间) { + this.datasetItemTypeName = "时间(time)"; + } + + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeKafka.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeKafka.java new file mode 100644 index 0000000..e25d7cb --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeKafka.java @@ -0,0 +1,62 @@ +package com.cqu.data.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 数据源kafka表 数据源kafka表 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SourceTypeKafka对象", description="数据源kafka表 数据源kafka表") +public class SourceTypeKafka implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号 编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + + @ApiModelProperty(value = "数据源类型名称 数据源类型名称") + @TableField(exist = false) + private String typeName = "Kafka"; + + @ApiModelProperty(value = "服务器地址 服务器地址host,如192.168.118.1") + @TableField("HOST") + private String host; + + @ApiModelProperty(value = "服务器端口 服务器端口port,1-65535") + @TableField("PORT") + private String port; + + @ApiModelProperty(value = "是否已被删除 是否已被删除") + @TableLogic + private Integer isDeleted; + + + + @ApiModelProperty(value = "创建日期 创建时间") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间 修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeLiga.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeLiga.java new file mode 100644 index 0000000..0822124 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeLiga.java @@ -0,0 +1,54 @@ +package com.cqu.data.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 数据源liga表 数据源liga表 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SourceTypeLiga对象", description="数据源liga表 数据源liga表") +public class SourceTypeLiga implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号 编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + + @ApiModelProperty(value = "数据源类型名称 数据源类型名称") + @TableField(exist = false) + private String typeName = "Liga"; + + @ApiModelProperty(value = "是否已被删除 是否已被删除") + @TableLogic + private Integer isDeleted; + + + + @ApiModelProperty(value = "创建日期 创建时间") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间 修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeMqtt.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeMqtt.java new file mode 100644 index 0000000..435bdf7 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeMqtt.java @@ -0,0 +1,102 @@ +package com.cqu.data.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 数据源MQTT表 数据源MQTT表 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SourceTypeMqtt对象", description="数据源MQTT表 数据源MQTT表") +public class SourceTypeMqtt implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号 编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + + @ApiModelProperty(value = "数据源类型名称 数据源类型名称,什么表就是什么名称") + @TableField(exist = false) + private String typeName = "Mqtt"; + + @ApiModelProperty(value = "是否是内置MQTT 是否是内置数据源,0内置,1第三方,默认0") + private Integer isInner; + + @ApiModelProperty(value = "是否加密 是否加密,0不加密,1加密,默认为0") + private Boolean isEncryption; + + @ApiModelProperty(value = "是否TSL通信 是否开启TSL通信,0不开启1开启,默认为0") + @TableField("is_TSL_connect") + private Boolean isTslConnect; + + @ApiModelProperty(value = "加密类型 加密类型,DES,AES,默认DES") + private String encryptionType; + + @ApiModelProperty(value = "加密秘钥 加密秘钥") + private String encryptionPassword; + + @ApiModelProperty(value = "服务器地址 服务器地址host,如192.168.118.1") + @TableField("HOST") + private String host; + + @ApiModelProperty(value = "服务器端口 服务器端口port,1-65535") + @TableField("PORT") + private String port; + + @ApiModelProperty(value = "开启单一连接 是否开启单一连接,0不开启1开启,默认为0") + private Boolean isSingleConnect; + + @ApiModelProperty(value = "mqtt的client_id mqtt的client_id") + private String clientId; + + @ApiModelProperty(value = "是否匿名连接 是否开启匿名连接,0不开启1开启,默认为1") + private Boolean isAnonymousConnect; + + @ApiModelProperty(value = "mqtt的用户名 mqtt的用户名") + private String username; + + @ApiModelProperty(value = "mqtt的密码 mqtt的密码") + @TableField("PASSWORD") + private String password; + + @ApiModelProperty(value = "连接串 连接串") + @TableField("CONNECT") + private String connect; + + @ApiModelProperty(value = "证书 证书") + @TableField("certificate") + private String certificate; + + @ApiModelProperty(value = "是否已被删除 是否已被删除") + @TableLogic + private Integer isDeleted; + + + + @ApiModelProperty(value = "创建日期 创建时间") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间 修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeOpcUa.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeOpcUa.java new file mode 100644 index 0000000..0d15b77 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/SourceTypeOpcUa.java @@ -0,0 +1,71 @@ +package com.cqu.data.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 数据源OPC_UA表 数据源OPC_UA表 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SourceTypeOpcUa对象", description="数据源OPC_UA表 数据源OPC_UA表") +public class SourceTypeOpcUa implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号 编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + +// @ApiModelProperty(value = "接入服务id 接入服务id") +// private String serviceId; + + @ApiModelProperty(value = "数据源类型名称 数据源类型名称") + @TableField(exist = false) + private String typeName = "OPC-UA"; + + @ApiModelProperty(value = "服务器地址 服务器地址host,如192.168.118.1") + @TableField("HOST") + private String host; + + @ApiModelProperty(value = "服务器端口 服务器端口port,1-65535") + @TableField("PORT") + private String port; + + @ApiModelProperty(value = "是否匿名连接 是否开启匿名连接,0不开启1开启,默认为1") + private Boolean isAnonymousConnect; + + @ApiModelProperty(value = "用户名") + private String username; + + @ApiModelProperty(value = "密码 密码") + @TableField("PASSWORD") + private String password; + + @ApiModelProperty(value = "是否已被删除 是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建日期 创建时间") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间 修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DataType.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DataType.java new file mode 100644 index 0000000..c955bb4 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DataType.java @@ -0,0 +1,14 @@ +package com.cqu.data.entity.enumClass; + +/** + * 新建数据集时,选择的数据类型:如振动数据、指标数据 + * @Author: ranmaoqi + * @Date: 2022/11/8 15:24 + */ +public class DataType { + + public static final Integer 指标数据 = 0; //指标数据 + + public static final Integer 振动数据 = 1; //振动数据 + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DatasetItemType.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DatasetItemType.java new file mode 100644 index 0000000..5fcfb37 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DatasetItemType.java @@ -0,0 +1,21 @@ +package com.cqu.data.entity.enumClass; + +/** + * 数据集中新建数据项(参数)的数据类型 + * @Author: ranmaoqi + * @Date: 2022/11/8 16:46 + */ +public class DatasetItemType { + + public static final Integer 实数 = 0; + public static final Integer 整数 = 1; + public static final Integer 字符串 = 2; + public static final Integer 布尔 = 3; + public static final Integer 实数数组 = 4; + public static final Integer 整数数组 = 5; + public static final Integer 字符串数组 = 6; + public static final Integer 布尔数组 = 7; + public static final Integer 振动 = 8; + public static final Integer 时间 = 9; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DatasetType.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DatasetType.java new file mode 100644 index 0000000..b43a714 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/DatasetType.java @@ -0,0 +1,12 @@ +package com.cqu.data.entity.enumClass; + +/** + * 新建数据集时,选择数据集类型 + * @Author: ranmaoqi + * @Date: 2022/11/8 15:21 + */ +public class DatasetType { + + public static final Integer iot数据 = 0; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/SourceType.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/SourceType.java new file mode 100644 index 0000000..ba1c7e0 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/SourceType.java @@ -0,0 +1,18 @@ +package com.cqu.data.entity.enumClass; + + +/** + * 后续可能扩展新的数据源类型 + */ +public class SourceType { + + public static final Integer 内置MQTT= 0; + public static final Integer 第三方MQTT = 1; + public static final Integer Kafka = 2; + public static final Integer OPC_UA = 3; + public static final Integer Liga实时数据 = 4; + public static final Integer Liga历史数据 = 5; + public static final Integer Liga振动数据 = 6; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/Status.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/Status.java new file mode 100644 index 0000000..3963d38 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/enumClass/Status.java @@ -0,0 +1,20 @@ +package com.cqu.data.entity.enumClass; + + + +/** + * 后续可能扩展新的状态 + */ +public class Status { + + + public static final Integer 运行中=0; + + public static final Integer 已停止=1; + + public static final Integer 等待中 =2; + + + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/Device.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/Device.java new file mode 100644 index 0000000..af78470 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/Device.java @@ -0,0 +1,84 @@ +package com.cqu.data.entity.vo; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 设备 设备 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Device对象", description="设备 设备") +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备组id") + private String groupId; + + @ApiModelProperty(value = "设备标识") + private String name; + + @ApiModelProperty(value = "设备类型") + private String typeId; + + @ApiModelProperty(value = "设备型号") + private String detailId; + + @ApiModelProperty(value = "设备编码") + private String deviceCode; + + @ApiModelProperty(value = "出厂日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date produceTime; + + @ApiModelProperty(value = "东经") + private String eastLongitude; + + @ApiModelProperty(value = "北纬") + private String northLatitude; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + @TableField(exist = false) + private String typeName; + + @TableField(exist = false) + private String detailName; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/DeviceTypeDetail.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/DeviceTypeDetail.java new file mode 100644 index 0000000..7cba54d --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/DeviceTypeDetail.java @@ -0,0 +1,70 @@ +package com.cqu.data.entity.vo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 设备型号 设备型号表 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="DeviceTypeDetail对象", description="设备型号 设备型号表") +public class DeviceTypeDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备类型id") + private String typeId; + + @ApiModelProperty(value = "设备分组id") + private String typeGroupId; + + @ApiModelProperty(value = "设备标识") + private String name; + + @ApiModelProperty(value = "型号名称") + private String showName; + + @ApiModelProperty(value = "规格类型") + private String specificationType; + + @ApiModelProperty(value = "生产厂商") + private String manufacturer; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/GraphVo.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/GraphVo.java new file mode 100644 index 0000000..aa9486f --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/GraphVo.java @@ -0,0 +1,18 @@ +package com.cqu.data.entity.vo; + +import lombok.Data; + +import java.util.List; + +/** + * 结构图谱数据图谱的graph + * @Author: ranmaoqi + * @Date: 2023/01/11 16:51 + */ +@Data +public class GraphVo { + + List nodes; + List links; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/LinksVo.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/LinksVo.java new file mode 100644 index 0000000..cdc2b7c --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/LinksVo.java @@ -0,0 +1,15 @@ +package com.cqu.data.entity.vo; + +import lombok.Data; + +/** + * @Author: ranmaoqi + * @Date: 2023/01/11 16:52 + */ +@Data +public class LinksVo { + + String source; + String target; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/NodesVo.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/NodesVo.java new file mode 100644 index 0000000..df15e1c --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/NodesVo.java @@ -0,0 +1,20 @@ +package com.cqu.data.entity.vo; + +import lombok.Data; + +/** + * 结构图普中的node + * @Author: ranmaoqi + * @Date: 2023/01/11 16:52 + */ +@Data +public class NodesVo { + + String id; + String name; + int symbolSize; + double x; + double y; + int category; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/ServiceFormVo.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/ServiceFormVo.java new file mode 100644 index 0000000..84efdf6 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/entity/vo/ServiceFormVo.java @@ -0,0 +1,28 @@ +package com.cqu.data.entity.vo; + + +import io.swagger.models.auth.In; +import lombok.Data; + +@Data +public class ServiceFormVo { + + private String name; + private Integer sourceType; + private Boolean isEncryption; + private String encryptionType; + private String encryptionPassword; + private String host; + private String port; + private Boolean isSingleConnect; + private String clientId; + private Boolean isAnonymousConnect; + private String username; + private String password; + private Boolean isTslConnect; + private String description; + private Integer packetFormat; + private String timestampCode; + private Integer timestampAccurate; + private Integer timestampFormat; +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/AccessServiceMapper.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/AccessServiceMapper.java new file mode 100644 index 0000000..c730baf --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/AccessServiceMapper.java @@ -0,0 +1,16 @@ +package com.cqu.data.mapper; + +import com.cqu.data.entity.AccessService; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 接入服务表 接入服务表 Mapper 接口 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface AccessServiceMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/AccessTaskMapper.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/AccessTaskMapper.java new file mode 100644 index 0000000..540fc30 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/AccessTaskMapper.java @@ -0,0 +1,16 @@ +package com.cqu.data.mapper; + +import com.cqu.data.entity.AccessTask; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 接入任务表 接入任务表 Mapper 接口 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface AccessTaskMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/DatasetItemMapper.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/DatasetItemMapper.java new file mode 100644 index 0000000..f11f5b0 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/DatasetItemMapper.java @@ -0,0 +1,22 @@ +package com.cqu.data.mapper; + +import com.cqu.data.entity.DatasetItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + *

+ * 数据集详情表 Mapper 接口 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Mapper +public interface DatasetItemMapper extends BaseMapper { + + //通过数据集Id得到每一个数据项的名字 + List getItemNameByDatasetId(String datasetId); +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/DatasetMapper.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/DatasetMapper.java new file mode 100644 index 0000000..59aa6fa --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/DatasetMapper.java @@ -0,0 +1,26 @@ +package com.cqu.data.mapper; + +import com.cqu.data.entity.Dataset; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + *

+ * 数据集表 Mapper 接口 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Mapper +public interface DatasetMapper extends BaseMapper { + + /** + * 根据detailId查询数据集IDs + * @param detailId + * @return + */ + List getDatasetIdsByDetailId(String detailId); +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeKafkaMapper.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeKafkaMapper.java new file mode 100644 index 0000000..26a3fb0 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeKafkaMapper.java @@ -0,0 +1,16 @@ +package com.cqu.data.mapper; + +import com.cqu.data.entity.SourceTypeKafka; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 数据源kafka表 数据源kafka表 Mapper 接口 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface SourceTypeKafkaMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeLigaMapper.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeLigaMapper.java new file mode 100644 index 0000000..81914cb --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeLigaMapper.java @@ -0,0 +1,16 @@ +package com.cqu.data.mapper; + +import com.cqu.data.entity.SourceTypeLiga; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 数据源liga表 数据源liga表 Mapper 接口 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface SourceTypeLigaMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeMqttMapper.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeMqttMapper.java new file mode 100644 index 0000000..d784ec4 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeMqttMapper.java @@ -0,0 +1,16 @@ +package com.cqu.data.mapper; + +import com.cqu.data.entity.SourceTypeMqtt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 数据源MQTT表 数据源MQTT表 Mapper 接口 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface SourceTypeMqttMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeOpcUaMapper.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeOpcUaMapper.java new file mode 100644 index 0000000..19f58b5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/SourceTypeOpcUaMapper.java @@ -0,0 +1,16 @@ +package com.cqu.data.mapper; + +import com.cqu.data.entity.SourceTypeOpcUa; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 数据源OPC_UA表 数据源OPC_UA表 Mapper 接口 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface SourceTypeOpcUaMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/AccessServiceMapper.xml b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/AccessServiceMapper.xml new file mode 100644 index 0000000..1134c9a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/AccessServiceMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/AccessTaskMapper.xml b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/AccessTaskMapper.xml new file mode 100644 index 0000000..527a80e --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/AccessTaskMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/DatasetItemMapper.xml b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/DatasetItemMapper.xml new file mode 100644 index 0000000..c3ce40b --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/DatasetItemMapper.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/DatasetMapper.xml b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/DatasetMapper.xml new file mode 100644 index 0000000..10c3d58 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/DatasetMapper.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeKafkaMapper.xml b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeKafkaMapper.xml new file mode 100644 index 0000000..9cda1cc --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeKafkaMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeLigaMapper.xml b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeLigaMapper.xml new file mode 100644 index 0000000..07e5eb3 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeLigaMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeMqttMapper.xml b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeMqttMapper.xml new file mode 100644 index 0000000..ad17fec --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeMqttMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeOpcUaMapper.xml b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeOpcUaMapper.xml new file mode 100644 index 0000000..e336440 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/mapper/xml/SourceTypeOpcUaMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/AccessServiceService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/AccessServiceService.java new file mode 100644 index 0000000..ad6ea20 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/AccessServiceService.java @@ -0,0 +1,22 @@ +package com.cqu.data.service; + +import com.cqu.data.entity.AccessService; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.data.entity.vo.ServiceFormVo; +import com.cqu.utils.Result; + +/** + *

+ * 接入服务表 接入服务表 服务类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface AccessServiceService extends IService { + + Result listServiceByGroupId(String groupId, Integer current, Integer size); + + boolean saveService(String deviceGroupId, ServiceFormVo serviceForm); + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/AccessTaskService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/AccessTaskService.java new file mode 100644 index 0000000..175ce85 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/AccessTaskService.java @@ -0,0 +1,16 @@ +package com.cqu.data.service; + +import com.cqu.data.entity.AccessTask; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 接入任务表 接入任务表 服务类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface AccessTaskService extends IService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/DatasetItemService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/DatasetItemService.java new file mode 100644 index 0000000..7b60ad8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/DatasetItemService.java @@ -0,0 +1,49 @@ +package com.cqu.data.service; + +import com.cqu.data.entity.DatasetItem; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.utils.Result; + +import java.util.List; + +/** + *

+ * 数据集详情表 服务类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface DatasetItemService extends IService { + + /** + * 根据数据集id分页查询数据集项列表 + * @param datasetId 数据集id + * @param current 当前页 + * @param size 每页显示条数 + * @return + */ + Result listDatasetItemByDatasetId(String datasetId, Integer current, Integer size); + + /** + * 在id为datasetId的数据集下,新建数据项 + * @param datasetId 数据集Id + * @param datasetItem 数据项实体 + * @return + */ + Result addDatasetItemByDatasetId(String datasetId, DatasetItem datasetItem); + + /** + * 编辑数据项 + * @param datasetItem 数据项实体 + * @return + */ + Result updateDatasetItem(DatasetItem datasetItem); + + /** + * 多选批量删除数据项 + * @param datasetItemList 数据项实体列表 + * @return + */ + Result deleteDatasetItemBatch(List datasetItemList); +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/DatasetService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/DatasetService.java new file mode 100644 index 0000000..44dae85 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/DatasetService.java @@ -0,0 +1,63 @@ +package com.cqu.data.service; + +import com.cqu.data.entity.Dataset; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.utils.Result; + +import java.util.List; + +/** + *

+ * 数据集表 服务类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface DatasetService extends IService { + + /** + * 根据设备型号id查询设备型号下的数据集 + * @param detailId 设备型号id + * @param current 当前页 + * @param size 每页大小 + * @return + */ + Result listDatasetByDetailId(String detailId, Integer current, Integer size); + + /** + * 在设备型号下新建数据集 + * @param detailId 设备型号id + * @param dataset 数据集实体 + * @return + */ + Result addDatasetByDetailId(String detailId, Dataset dataset); + + /** + * 编辑数据集信息 + * @param dataset 数据集实体 + * @return + */ + Result updateDataset(Dataset dataset); + + /** + * 多选批量删除数据集 + * @param datasetList 数据集实体列表 + * @return + */ + Result deleteDatasetBatch(List datasetList); + + /** + * 根据detailId查询数据图谱 + * @param detailId + * @return + */ + Result getDataGraphByDetailId(String detailId); + + /** + * 根据deviceId查询数据图谱 + * @param deviceId + * @return + */ + Result getDataGraphByDeviceId(String deviceId); +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeKafkaService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeKafkaService.java new file mode 100644 index 0000000..785b11d --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeKafkaService.java @@ -0,0 +1,16 @@ +package com.cqu.data.service; + +import com.cqu.data.entity.SourceTypeKafka; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 数据源kafka表 数据源kafka表 服务类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface SourceTypeKafkaService extends IService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeLigaService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeLigaService.java new file mode 100644 index 0000000..634ed8a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeLigaService.java @@ -0,0 +1,16 @@ +package com.cqu.data.service; + +import com.cqu.data.entity.SourceTypeLiga; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 数据源liga表 数据源liga表 服务类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface SourceTypeLigaService extends IService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeMqttService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeMqttService.java new file mode 100644 index 0000000..b0f5591 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeMqttService.java @@ -0,0 +1,16 @@ +package com.cqu.data.service; + +import com.cqu.data.entity.SourceTypeMqtt; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 数据源MQTT表 数据源MQTT表 服务类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface SourceTypeMqttService extends IService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeOpcUaService.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeOpcUaService.java new file mode 100644 index 0000000..0747d7a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/SourceTypeOpcUaService.java @@ -0,0 +1,16 @@ +package com.cqu.data.service; + +import com.cqu.data.entity.SourceTypeOpcUa; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 数据源OPC_UA表 数据源OPC_UA表 服务类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +public interface SourceTypeOpcUaService extends IService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/AccessServiceServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/AccessServiceServiceImpl.java new file mode 100644 index 0000000..565b948 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/AccessServiceServiceImpl.java @@ -0,0 +1,138 @@ +package com.cqu.data.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.data.entity.*; +import com.cqu.data.entity.enumClass.SourceType; +import com.cqu.data.entity.vo.ServiceFormVo; +import com.cqu.data.mapper.*; +import com.cqu.data.service.AccessServiceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.apache.commons.lang3.StringUtils; +import org.junit.rules.TestRule; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 接入服务表 接入服务表 服务实现类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Service +public class AccessServiceServiceImpl extends ServiceImpl implements AccessServiceService { + + @Autowired + private SourceTypeKafkaMapper sourceTypeKafkaMapper; + + @Autowired + private SourceTypeLigaMapper sourceTypeLigaMapper; + + @Autowired + private SourceTypeMqttMapper sourceTypeMqttMapper; + + @Autowired + private SourceTypeOpcUaMapper sourceTypeOpcUaMapper; + + + @Override + public Result listServiceByGroupId(String groupId, Integer current, Integer size) { + + Page page = new Page<>(current,size); + QueryWrapper query = new QueryWrapper<>(); + query.eq("group_id",groupId); + query.orderByAsc("gmt_create"); + baseMapper.selectPage(page,query); + List records = page.getRecords(); + for (AccessService accessService : records) { + accessService.setSourceTypeName(); + accessService.setStatusName(); + } + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + + } + + @Override + public boolean saveService(String deviceGroupId, ServiceFormVo serviceForm) { + + Integer sourceType = serviceForm.getSourceType(); + + AccessService accessService = new AccessService(); + BeanUtils.copyProperties(serviceForm,accessService); + accessService.setGroupId(deviceGroupId); + + //插入条数 + int insertNum =0; + //插入之后对应sourceType表的id + String id = ""; + //MQTT表 + if(sourceType == SourceType.内置MQTT ||sourceType == SourceType.第三方MQTT){ + SourceTypeMqtt sourceTypeMqtt = new SourceTypeMqtt(); + + BeanUtils.copyProperties(serviceForm,sourceTypeMqtt); + if(sourceType ==1){ + sourceTypeMqtt.setIsInner(1); + } + + //TODO 连接串暂时还未设置 +// if (!sourceTypeMqtt.getIsTslConnect()){ +// String connect = "mqtt://0d85b80a3ae14c799f1a0ed76cbf3d99:02602511d28645e9b934ff280918bb6b@192.168.122.205:31419;tls=false;client_id=df0a3af17cd04a2fad99e99672b43457;" +// } + System.err.println("sourceTypeMqtt:"+sourceTypeMqtt); + insertNum = sourceTypeMqttMapper.insert(sourceTypeMqtt); + id = sourceTypeMqtt.getId(); + + } else if(sourceType == SourceType.Kafka){ + //Kafka表 + SourceTypeKafka sourceTypeKafka = new SourceTypeKafka(); + + BeanUtils.copyProperties(serviceForm,sourceTypeKafka); + System.err.println("sourceTypeKafka:"+sourceTypeKafka); + insertNum = sourceTypeKafkaMapper.insert(sourceTypeKafka); + id = sourceTypeKafka.getId(); + + }else if(sourceType == SourceType.OPC_UA){ + //OPC-UA表 + SourceTypeOpcUa sourceTypeOpcUa = new SourceTypeOpcUa(); + BeanUtils.copyProperties(serviceForm,sourceTypeOpcUa); + System.err.println("sourceTypeOpcUa:"+sourceTypeOpcUa); + insertNum = sourceTypeOpcUaMapper.insert(sourceTypeOpcUa); + id = sourceTypeOpcUa.getId(); + + }else if(sourceType == SourceType.Liga实时数据||sourceType == SourceType.Liga历史数据||sourceType == SourceType.Liga振动数据){ + //Liga表 + SourceTypeLiga sourceTypeLiga = new SourceTypeLiga(); + BeanUtils.copyProperties(serviceForm,sourceTypeLiga); + System.err.println("sourceTypeLiga:"+sourceTypeLiga); + insertNum = sourceTypeLigaMapper.insert(sourceTypeLiga); + id=sourceTypeLiga.getId(); + }else { + return false; + } + + + if (insertNum == 0 || StringUtils.isEmpty(id)){ + return false; + } + + accessService.setSourceTypeId(id); + System.out.println("accessService:"+accessService); + int insertServiceNum= baseMapper.insert(accessService); + + if(insertServiceNum ==0){ + return false; + } + + return true; + } + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/AccessTaskServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/AccessTaskServiceImpl.java new file mode 100644 index 0000000..bc6bbe0 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/AccessTaskServiceImpl.java @@ -0,0 +1,20 @@ +package com.cqu.data.service.impl; + +import com.cqu.data.entity.AccessTask; +import com.cqu.data.mapper.AccessTaskMapper; +import com.cqu.data.service.AccessTaskService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 接入任务表 接入任务表 服务实现类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Service +public class AccessTaskServiceImpl extends ServiceImpl implements AccessTaskService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/DatasetItemServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/DatasetItemServiceImpl.java new file mode 100644 index 0000000..f23e07f --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/DatasetItemServiceImpl.java @@ -0,0 +1,106 @@ +package com.cqu.data.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.data.entity.DatasetItem; +import com.cqu.data.mapper.DatasetItemMapper; +import com.cqu.data.service.DatasetItemService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 数据集详情表 服务实现类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Service +public class DatasetItemServiceImpl extends ServiceImpl implements DatasetItemService { + + /** + * 根据数据集id分页查询数据集项列表 + * @param datasetId 数据集id + * @param current 当前页 + * @param size 每页显示条数 + * @return + */ + @Override + public Result listDatasetItemByDatasetId(String datasetId, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("dataset_id", datasetId); + baseMapper.selectPage(page, wrapper); + List records = page.getRecords(); + long total = page.getTotal(); + + for (DatasetItem datasetItem : records) { + datasetItem.setDatasetItemTypeName(); + } + return Result.ok().data("records", records).data("total", total); + } + + /** + * 在id为datasetId的数据集下,新建数据项 + * @param datasetId 数据集Id + * @param datasetItem 数据项实体 + * @return + */ + @Override + public Result addDatasetItemByDatasetId(String datasetId, DatasetItem datasetItem) { + //根据Name字段判断该数据项是否已存在 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("dataset_id", datasetId); + wrapper.eq("name", datasetItem.getName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int insert = baseMapper.insert(datasetItem.setDatasetId(datasetId)); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建数据项失败,标识重复!"); + } + } + + /** + * 编辑数据项 + * @param datasetItem 数据项实体 + * @return + */ + @Override + public Result updateDatasetItem(DatasetItem datasetItem) { + /* + * 修改时,要检查修改的数据项标识是否和已存在的相同 + */ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne("id", datasetItem.getId()); + wrapper.eq("dataset_id", datasetItem.getDatasetId()); + wrapper.eq("name", datasetItem.getName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int update = baseMapper.updateById(datasetItem); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改数据项失败,标识重复!"); + } + } + + /** + * 多选批量删除数据项 + * @param datasetItemList 数据项实体列表 + * @return + */ + @Override + public Result deleteDatasetItemBatch(List datasetItemList) { + List ids = new ArrayList<>(); + for (DatasetItem datasetItem : datasetItemList) { + ids.add(datasetItem.getId()); + } + int count = baseMapper.deleteBatchIds(ids); + return count > 0 ? Result.ok() : Result.error(); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/DatasetServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/DatasetServiceImpl.java new file mode 100644 index 0000000..b9572f1 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/DatasetServiceImpl.java @@ -0,0 +1,249 @@ +package com.cqu.data.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.data.clients.DeviceClient; +import com.cqu.data.entity.Dataset; +import com.cqu.data.entity.vo.*; +import com.cqu.data.mapper.DatasetItemMapper; +import com.cqu.data.mapper.DatasetMapper; +import com.cqu.data.service.DatasetService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.xml.crypto.Data; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +/** + *

+ * 数据集表 服务实现类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Service +public class DatasetServiceImpl extends ServiceImpl implements DatasetService { + + @Autowired + private DeviceClient deviceClient; + + @Autowired + private DatasetMapper datasetMapper; + + @Autowired + private DatasetItemMapper datasetItemMapper; + + /** + * 根据设备型号id查询设备型号下的数据集 + * @param detailId 设备型号id + * @param current 当前页 + * @param size 每页大小 + * @return + */ + @Override + public Result listDatasetByDetailId(String detailId, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("detail_id", detailId); + baseMapper.selectPage(page, wrapper); + List records = page.getRecords(); + long total = page.getTotal(); + + for (Dataset dataset : records) { + dataset.setDatasetTypeName(); + dataset.setDataTypeName(); + } + return Result.ok().data("records", records).data("total", total); + } + + /** + * 在设备型号下新建数据集 + * @param detailId 设备型号id + * @param dataset 数据集实体 + * @return + */ + @Override + public Result addDatasetByDetailId(String detailId, Dataset dataset) { + //根据name字段判断该数据集是否已存在 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("detail_id", detailId); + wrapper.eq("name", dataset.getName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int change = baseMapper.insert(dataset.setDetailId(detailId)); + return change == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建数据集失败,名称重复!"); + } + } + + /** + * 编辑数据集信息 + * @param dataset 数据集实体 + * @return + */ + @Override + public Result updateDataset(Dataset dataset) { + /* + * 修改数据集时,要检查修改的数据集名字是否和已存在的数据集名字相同 + * 先查出目前该数据集原本的名字,如果新名字和原本名字一样,可以修改。 + * 如果不一样,则检查新名字和其他数据集名字是否相同,如果有相同的则不能修改 + */ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne("id", dataset.getId()); + wrapper.eq("detail_id", dataset.getDetailId()); + wrapper.eq("name", dataset.getName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int update = baseMapper.updateById(dataset); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改数据集失败,名称重复!"); + } + + } + + /** + * 多选批量删除数据集 + * @param datasetList 数据集实体列表 + * @return + */ + @Override + public Result deleteDatasetBatch(List datasetList) { + List ids = new ArrayList<>(); + for (Dataset dataset : datasetList) { + ids.add(dataset.getId()); + } + int count = baseMapper.deleteBatchIds(ids); + return count > 0 ? Result.ok() : Result.error(); + } + + /** + * 根据detailId查询数据图谱 + * @param detailId + * @return + */ + @Override + public Result getDataGraphByDetailId(String detailId) { + //远程调用设备服务,通过detailId查询到detail + DeviceTypeDetail detail = deviceClient.getDetailById(detailId); + + GraphVo graph = new GraphVo(); //图谱 + List nodes = new LinkedList<>(); //图谱的节点 + List links = new LinkedList<>(); //图谱的连线关系 + + //根节点就是当前deviceDetail + int i = 0; + String index = String.valueOf(i); + NodesVo root = new NodesVo(); + root.setId(index); + root.setCategory(0); + root.setName(detail.getShowName()); + + nodes.add(root); + + graph.setNodes(nodes); + graph.setLinks(links); + + List datasetIds = datasetMapper.getDatasetIdsByDetailId(detailId); + for (String datasetId : datasetIds) { + //数据集节点 + Dataset dataset = baseMapper.selectById(datasetId); + NodesVo datasetNode = new NodesVo(); + datasetNode.setId(String.valueOf(++i)); + datasetNode.setCategory(1); + datasetNode.setName(dataset.getName()); + nodes.add(datasetNode); + //设备型号与数据集相连 + LinksVo link = new LinksVo(); + link.setSource(root.getId()); + link.setTarget(datasetNode.getId()); + links.add(link); + + List itemNames = datasetItemMapper.getItemNameByDatasetId(datasetId); + for (String itemName : itemNames) { + //数据集下的数据项 + NodesVo datasetItemNode = new NodesVo(); + datasetItemNode.setId(String.valueOf(++i)); + datasetItemNode.setCategory(2); + datasetItemNode.setName(itemName); + nodes.add(datasetItemNode); + //数据集与数据项相连 + link = new LinksVo(); + link.setSource(datasetNode.getId()); + link.setTarget(datasetItemNode.getId()); + links.add(link); + } + } + + return Result.ok().data("graph", graph); + } + + /** + * 根据deviceId查询数据图谱 + * @param deviceId + * @return + */ + @Override + public Result getDataGraphByDeviceId(String deviceId) { + //远程调用设备服务,通过deviceId查询到device + Device device = deviceClient.getDeviceByDeviceId(deviceId); + + GraphVo graph = new GraphVo(); //图谱 + List nodes = new LinkedList<>(); //图谱的节点 + List links = new LinkedList<>(); //图谱的连线关系 + + //根节点就是当前device + int i = 0; + String index = String.valueOf(i); + NodesVo root = new NodesVo(); + root.setId(index); + root.setCategory(0); + root.setName(device.getName()); + + nodes.add(root); + + graph.setNodes(nodes); + graph.setLinks(links); + + String detailId = device.getDetailId(); + + List datasetIds = datasetMapper.getDatasetIdsByDetailId(detailId); + for (String datasetId : datasetIds) { + //数据集节点 + Dataset dataset = baseMapper.selectById(datasetId); + NodesVo datasetNode = new NodesVo(); + datasetNode.setId(String.valueOf(++i)); + datasetNode.setCategory(1); + datasetNode.setName(dataset.getName()); + nodes.add(datasetNode); + //设备型号与数据集相连 + LinksVo link = new LinksVo(); + link.setSource(root.getId()); + link.setTarget(datasetNode.getId()); + links.add(link); + + List itemNames = datasetItemMapper.getItemNameByDatasetId(datasetId); + for (String itemName : itemNames) { + //数据集下的数据项 + NodesVo datasetItemNode = new NodesVo(); + datasetItemNode.setId(String.valueOf(++i)); + datasetItemNode.setCategory(2); + datasetItemNode.setName(itemName); + nodes.add(datasetItemNode); + //数据集与数据项相连 + link = new LinksVo(); + link.setSource(datasetNode.getId()); + link.setTarget(datasetItemNode.getId()); + links.add(link); + } + } + + return Result.ok().data("graph", graph); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeKafkaServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeKafkaServiceImpl.java new file mode 100644 index 0000000..c5489e8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeKafkaServiceImpl.java @@ -0,0 +1,20 @@ +package com.cqu.data.service.impl; + +import com.cqu.data.entity.SourceTypeKafka; +import com.cqu.data.mapper.SourceTypeKafkaMapper; +import com.cqu.data.service.SourceTypeKafkaService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 数据源kafka表 数据源kafka表 服务实现类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Service +public class SourceTypeKafkaServiceImpl extends ServiceImpl implements SourceTypeKafkaService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeLigaServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeLigaServiceImpl.java new file mode 100644 index 0000000..190618b --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeLigaServiceImpl.java @@ -0,0 +1,20 @@ +package com.cqu.data.service.impl; + +import com.cqu.data.entity.SourceTypeLiga; +import com.cqu.data.mapper.SourceTypeLigaMapper; +import com.cqu.data.service.SourceTypeLigaService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 数据源liga表 数据源liga表 服务实现类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Service +public class SourceTypeLigaServiceImpl extends ServiceImpl implements SourceTypeLigaService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeMqttServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeMqttServiceImpl.java new file mode 100644 index 0000000..02dae0d --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeMqttServiceImpl.java @@ -0,0 +1,20 @@ +package com.cqu.data.service.impl; + +import com.cqu.data.entity.SourceTypeMqtt; +import com.cqu.data.mapper.SourceTypeMqttMapper; +import com.cqu.data.service.SourceTypeMqttService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 数据源MQTT表 数据源MQTT表 服务实现类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Service +public class SourceTypeMqttServiceImpl extends ServiceImpl implements SourceTypeMqttService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeOpcUaServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeOpcUaServiceImpl.java new file mode 100644 index 0000000..c7f2aef --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/main/java/com/cqu/data/service/impl/SourceTypeOpcUaServiceImpl.java @@ -0,0 +1,20 @@ +package com.cqu.data.service.impl; + +import com.cqu.data.entity.SourceTypeOpcUa; +import com.cqu.data.mapper.SourceTypeOpcUaMapper; +import com.cqu.data.service.SourceTypeOpcUaService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 数据源OPC_UA表 数据源OPC_UA表 服务实现类 + *

+ * + * @author ding + * @since 2022-06-27 + */ +@Service +public class SourceTypeOpcUaServiceImpl extends ServiceImpl implements SourceTypeOpcUaService { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_data/src/test/java/com/cqu/test/CodeGenerator.java b/phm_rotate/backend/phm_backend/service/service_data/src/test/java/com/cqu/test/CodeGenerator.java new file mode 100644 index 0000000..968da7b --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_data/src/test/java/com/cqu/test/CodeGenerator.java @@ -0,0 +1,77 @@ +package com.cqu.test; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.rules.DateType; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import org.junit.Test; + +/** + * @author + * @since 2018/12/13 + */ +public class CodeGenerator { + + @Test + public void run() { + + // 1、创建代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 2、全局配置 + GlobalConfig gc = new GlobalConfig(); + String projectPath = System.getProperty("user.dir"); + gc.setOutputDir("E:\\self_example\\phm_rotate\\backend\\phm_backend\\service\\service_data" + "/src/main/java"); + gc.setAuthor("ding"); + gc.setOpen(false); //生成后是否打开资源管理器 + gc.setFileOverride(false); //重新生成时文件是否覆盖 + gc.setServiceName("%sService"); //去掉Service接口的首字母I + gc.setIdType(IdType.ID_WORKER_STR); //主键策略 + gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型 + gc.setSwagger2(true);//开启Swagger2模式 + + mpg.setGlobalConfig(gc); + + // 3、数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl("jdbc:mysql://localhost:3306/phm_device?serverTimezone=GMT%2B8"); + dsc.setDriverName("com.mysql.cj.jdbc.Driver"); + dsc.setUsername("root2"); + dsc.setPassword("root2"); + dsc.setDbType(DbType.MYSQL); + mpg.setDataSource(dsc); + + // 4、包配置 + PackageConfig pc = new PackageConfig(); + pc.setParent("com.cqu"); + pc.setModuleName("data"); //模块名 + pc.setController("controller"); + pc.setEntity("entity"); + pc.setService("service"); + pc.setMapper("mapper"); + mpg.setPackageInfo(pc); + + // 5、策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setInclude("access_service", "access_task", "data_set_detail","data_sets","source_type_kafka","source_type_liga","source_type_mqtt","source_type_opc_ua"); //表名 + strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略 +// strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀 + + strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略 + strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 + + strategy.setRestControllerStyle(true); //restful api风格控制器 + strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符 + + mpg.setStrategy(strategy); + + + // 6、执行 + mpg.execute(); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/pom.xml b/phm_rotate/backend/phm_backend/service/service_device/pom.xml new file mode 100644 index 0000000..1d1250b --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/pom.xml @@ -0,0 +1,52 @@ + + + + service + com.cqu + 0.0.1-SNAPSHOT + + 4.0.0 + + service_device + + + 8 + 8 + + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.alibaba + fastjson + + + + + + + + src/main/java + + **/*.xml + + false + + + src/main/resources + + **/*.yml + **/*.properties + + false + + + + + \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/DeviceApplication.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/DeviceApplication.java new file mode 100644 index 0000000..253d33d --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/DeviceApplication.java @@ -0,0 +1,24 @@ +package com.cqu.device; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * @author ranmaoqi + * @time 2022-04-11 11:54 + */ +@SpringBootApplication +/* + 如果不加这个注解,就扫描不到common包里的东西 + 因为默认只会扫描启动类所在的包及其子包 + */ +@ComponentScan(basePackages = {"com.cqu"}) +public class DeviceApplication { + + public static void main(String[] args) { + SpringApplication.run(DeviceApplication.class, args); + } + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/config/DeviceConfig.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/config/DeviceConfig.java new file mode 100644 index 0000000..0fc4892 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/config/DeviceConfig.java @@ -0,0 +1,36 @@ +package com.cqu.device.config; + +import com.baomidou.mybatisplus.core.injector.ISqlInjector; +import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector; +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author ranmaoqi + * @time 2022-04-11 13:25 + */ +@Configuration +@MapperScan("com.cqu.device.mapper") +public class DeviceConfig { + + /** + * 逻辑删除插件 + * @return + */ + @Bean + public ISqlInjector sqlInjector() { + return new LogicSqlInjector(); + } + + /** + * 分页插件 + * @return + */ + @Bean + public PaginationInterceptor paginationInterceptor() { + return new PaginationInterceptor(); + } + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DataModelController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DataModelController.java new file mode 100644 index 0000000..8d3fbf3 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DataModelController.java @@ -0,0 +1,81 @@ +package com.cqu.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.api.R; +import com.cqu.device.entity.DataModel; +import com.cqu.device.entity.DeviceTypeDetail; +import com.cqu.device.service.DataModelService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author xiaolong + * @Description + * @create 2022-04-24-14:48 + */ +@RestController +//@CrossOrigin +@RequestMapping("/device/data-model") +public class DataModelController { + @Autowired + private DataModelService dataModelService; + + // 数据模型板块查询树形结构 + @GetMapping("selectTreeAll") + public Result selectTreeAll(){ + return dataModelService.selectTreeAll(); + } + + + // 根据设备详情id查询所属数据模型 + @GetMapping("/listDataModelById/{id}/{current}/{size}") + public Result listDataModelById(@PathVariable String id, @PathVariable Integer current, @PathVariable Integer size){ + // 这里id为设备详情id +// QueryWrapper wrapper = new QueryWrapper<>(); +// wrapper.eq("detail_id",id); + return dataModelService.listDataModelById(id, current, size); + } + + // 根据设备类型id和设备详情id新增数据模型 + @PostMapping("/saveDataModel/{typeId}/{detailId}") + public Result saveDataModel(@PathVariable String typeId, @PathVariable String detailId, @RequestBody DataModel dataModel){ + dataModel.setTypeId(typeId); + dataModel.setDetailId(detailId); + boolean flag = dataModelService.save(dataModel); + return flag ? Result.ok() : Result.error(); + } + + // 删除数据模型 + @DeleteMapping("{id}") + public Result deleteDataModelById(@PathVariable String id){ + boolean flag = dataModelService.removeById(id); + if(flag){ + return Result.ok(); + }else{ + return Result.error(); + } + } + + //根据数据模型id查询数据模型(用于回显数据) + @GetMapping("/{id}") + public Result getDataModelById(@PathVariable String id) { + DataModel dataModel = dataModelService.getById(id); + return Result.ok().data("dataModel", dataModel); + } + //修改数据模型 + @PutMapping() + public Result updateDeviceDetail(@RequestBody DataModel dataModel) { + boolean flag = dataModelService.updateById(dataModel); + return flag ? Result.ok() : Result.error(); + } + // 批量删除数据模型 + @DeleteMapping("deleteDataModelBatch") + public Result deleteDataModelBatch(@RequestBody List dataModelList){ + return dataModelService.deleteDataModelBatch(dataModelList); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceAreaController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceAreaController.java new file mode 100644 index 0000000..8a22423 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceAreaController.java @@ -0,0 +1,77 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.DeviceArea; +import com.cqu.device.service.DeviceAreaService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 设备区域 设备区域 前端控制器 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@RestController +@RequestMapping("/device/device-area") +//@CrossOrigin +public class DeviceAreaController { + + @Autowired + private DeviceAreaService deviceAreaService; + + //分页查询所有区域列表 + @GetMapping("/listAreaAll/{current}/{size}") + public Result listAreaAll(@PathVariable Integer current, @PathVariable Integer size) { + return deviceAreaService.listAreaAll(current, size); + } + + /** + * 新建区域 + * @param deviceArea 区域实体 + * @return + */ + @PostMapping("/addArea") + public Result addArea(@RequestBody DeviceArea deviceArea) { + return deviceAreaService.addArea(deviceArea); +// boolean flag = deviceAreaService.save(deviceArea); +// return flag ? Result.ok() : Result.error(); + } + + //根据区域Id查询区域(用于数据回显) + @GetMapping("/getAreaById/{areaId}") + public Result getAreaById(@PathVariable String areaId) { + DeviceArea deviceArea = deviceAreaService.getById(areaId); + return Result.ok().data("area", deviceArea); + } + + /** + * 修改区域 + * @param deviceArea 区域实体 + * @return + */ + @PutMapping("/updateArea") + public Result updateArea(@RequestBody DeviceArea deviceArea) { + return deviceAreaService.updateArea(deviceArea); +// boolean flag = deviceAreaService.updateById(deviceArea); +// return flag ? Result.ok() : Result.error(); + } + + //根据id删除区域 + @DeleteMapping("/deleteAreaById/{areaId}") + public Result deleteAreaById(@PathVariable String areaId) { + return deviceAreaService.deleteAreaById(areaId); + } + + //根据多选框批量删除区域 + @DeleteMapping("/deleteAreaBatch") + public Result deleteAreaBatch(@RequestBody List areaList) { + return deviceAreaService.deleteAreaBatch(areaList); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceController.java new file mode 100644 index 0000000..60ee5b8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.Device; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.device.service.DeviceService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 设备 设备 前端控制器 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@RestController +@RequestMapping("/device/device") +//@CrossOrigin +public class DeviceController { + + @Autowired + private DeviceService deviceService; + + //根据设备组id查询设备列表 + @GetMapping("/listDeviceByGroupId/{groupId}/{current}/{size}") + public Result listDeviceByGroupId(@PathVariable String groupId, @PathVariable Integer current, @PathVariable Integer size) { + return deviceService.listDeviceByGroupId(groupId, current, size); + } + + /** + * 新建设备 + * @param groupId 设备组id + * @param device 设备实体 + * @return + */ + @PostMapping("/addDeviceByGroupId/{groupId}") + public Result addDeviceByGroupId(@PathVariable String groupId ,@RequestBody Device device) { + device.setGroupId(groupId); + return deviceService.addDeviceByGroupId(groupId, device); +// boolean flag = deviceService.save(device.setGroupId(groupId)); +// return flag ? Result.ok() : Result.error(); + } + + //根据id删除设备 + @DeleteMapping("/deleteDeviceById/{id}") + public Result deleteDeviceById(@PathVariable String id) { + boolean flag = deviceService.removeById(id); + return flag ? Result.ok() : Result.error(); + } + + //多选删除设备 + @DeleteMapping("/deleteDeviceBatch") + public Result deleteDeviceBatch(@RequestBody List deviceList) { + return deviceService.deleteDeviceBatch(deviceList); + } + + //根据设备id查询设备(用于数据回显) + @GetMapping("/getDeviceById/{id}") + public Result getDeviceById(@PathVariable String id) { + Device device = deviceService.getById(id); + return Result.ok().data("device", device); + } + + /** + * 修改设备 + * @param device 设备实体 + * @return + */ + @PutMapping("/updateDevice") + public Result updateDevice(@RequestBody Device device) { + return deviceService.updateDevice(device); +// boolean flag = deviceService.updateById(device); +// return flag ? Result.ok() : Result.error(); + } + + //查询设备对象结构树,根据设备对象id + @GetMapping("/getDeviceObjTreeById/{deviceId}") + public Result getDeviceObjTreeById(@PathVariable String deviceId) { + List list = deviceService.getDeviceObjTreeById(deviceId); + return Result.ok().data("list", list); + } + + /** + * 根据设备对象id查询对应设备型号id,因为设备对象的数据集与其对应的设备型号的数据集一样 + * @param deviceId + * @return + */ + @GetMapping("/getDeviceDetailIdByDeviceId/{deviceId}") + public Result getDeviceDetailIdByDeviceId(@PathVariable String deviceId) { + String detailId = deviceService.getDeviceDetailIdByDeviceId(deviceId); + return Result.ok().data("detailId", detailId); + } + + /** + * 根据设备Id查询结构图谱 + * @param deviceId + * @return + */ + @GetMapping("/getStructureGraphById/{deviceId}") + public Result getStructureGraphById(@PathVariable String deviceId) { + return deviceService.getStructureGraphById(deviceId); + } + + /** + * 获得设备对象实体,供远程调用使用 + * @param deviceId + * @return + */ + @GetMapping("/getDeviceByDeviceId/{deviceId}") + public Device getDeviceByDeviceId(@PathVariable String deviceId) { + Device device = deviceService.getById(deviceId); + return device; + } + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceGroupController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceGroupController.java new file mode 100644 index 0000000..0f4b50e --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceGroupController.java @@ -0,0 +1,107 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.DeviceGroup; +import com.cqu.device.entity.vo.DeviceListVo; +import com.cqu.device.service.DeviceGroupService; +import com.cqu.utils.Result; +import io.swagger.models.auth.In; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 设备组 设备组 前端控制器 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@RestController +@RequestMapping("/device/device-group") +//@CrossOrigin +public class DeviceGroupController { + + @Autowired + private DeviceGroupService deviceGroupService; + + //查询区域、设备组的树形结构 + @GetMapping("/listTree") + public Result listTree() { + List list = deviceGroupService.listTree(); + return Result.ok().data("list", list); + } + + //分页查询所有设备组列表 + @GetMapping("/listDeviceGroupAll/{current}/{size}") + public Result listDeviceGroupAll(@PathVariable Integer current, @PathVariable Integer size) { + return deviceGroupService.listDeviceGroupAll(current, size); + } + + //根据区域id分组查询设备组列表 + @GetMapping("/listDeviceGroupByAreaId/{areaId}/{current}/{size}") + public Result listDeviceGroupByAreaId(@PathVariable String areaId, @PathVariable Integer current, @PathVariable Integer size) { + return deviceGroupService.listDeviceGroupByAreaId(areaId, current, size); + } + + /** + * 新建设备组(直接新建) + * @param deviceGroup 设备组实体 + * @return + */ + @PostMapping("/addDeviceGroup") + public Result addDeviceGroup(@RequestBody DeviceGroup deviceGroup) { + return deviceGroupService.addDeviceGroup(deviceGroup); +// boolean flag = deviceGroupService.save(deviceGroup); +// return flag ? Result.ok() : Result.error(); + } + + /** + * 新建设备组(在区域下) + * @param areaId 区域ID + * @param deviceGroup 设备组实体 + * @return + */ + @PostMapping("/addDeviceGroupByAreaId/{areaId}") + public Result addDeviceGroupByAreaId(@PathVariable String areaId, @RequestBody DeviceGroup deviceGroup) { + deviceGroup.setAreaId(areaId); + return deviceGroupService.addDeviceGroupByAreaId(areaId, deviceGroup); +// boolean flag = deviceGroupService.save(deviceGroup); +// return flag ? Result.ok() : Result.error(); + } + + //根据设备组id查询设备组(用于数据回显) + @GetMapping("/getDeviceGroupById/{id}") + public Result getDeviceGroupById(@PathVariable String id) { + DeviceGroup deviceGroup = deviceGroupService.getById(id); + return Result.ok().data("deviceGroup", deviceGroup); + } + + /** + * 编辑设备组 + * @param deviceGroup 设备组实体 + * @return + */ + @PutMapping("/updateDeviceGroup") + public Result updateDeviceGroup(@RequestBody DeviceGroup deviceGroup) { + return deviceGroupService.updateDeviceGroup(deviceGroup); +// boolean flag = deviceGroupService.updateById(deviceGroup); +// return flag ? Result.ok() : Result.error(); + } + + //根据id删除设备组 + @DeleteMapping("/deleteDeviceGroupById/{groupId}") + public Result deleteDeviceGroupById(@PathVariable String groupId) { + return deviceGroupService.deleteDeviceGroupById(groupId); + } + + //批量删除设备组 + @DeleteMapping("/deleteDeviceGroupBatch") + public Result deleteDeviceGroupBatch(@RequestBody List deviceGroupList) { + return deviceGroupService.deleteDeviceGroupBatch(deviceGroupList); + } + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeController.java new file mode 100644 index 0000000..96b0945 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeController.java @@ -0,0 +1,69 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.DeviceType; +import com.cqu.device.service.DeviceTypeService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 设备类型 设备类型 前端控制器 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@RestController +@RequestMapping("/device/device-type") +//@CrossOrigin +public class DeviceTypeController { + + @Autowired + private DeviceTypeService deviceTypeService; + + @GetMapping("/listDeviceType") + public Result listDeviceType() { + List deviceTypeList = deviceTypeService.list(null); + return Result.ok().data("deviceTypeList", deviceTypeList); + } + + //新建设备类型 + @PostMapping("/addDeviceType") + public Result addDeviceType(@RequestBody DeviceType deviceType) { + return deviceTypeService.addDeviceType(deviceType); +// boolean flag = deviceTypeService.save(deviceType); +// return flag ? Result.ok() : Result.error(); + } + + //根据设备类型id查询设备类型信息(用于数据回显) + @GetMapping("/getDeviceTypeById/{id}") + public Result getDeviceTypeById(@PathVariable String id) { + DeviceType deviceType = deviceTypeService.getById(id); + return Result.ok().data("deviceType", deviceType); + } + + //修改设备类型 + @PutMapping("/updateDeviceType") + public Result updateDeviceType(@RequestBody DeviceType deviceType) { + return deviceTypeService.updateDeviceType(deviceType); +// boolean flag = deviceTypeService.updateById(deviceType); +// return flag ? Result.ok() : Result.error(); + } + + //删除设备类型(需要判断设备类型下是否还有设备分组、设备型号) + @DeleteMapping("/deleteDeviceTypeById/{id}") + public Result deleteDeviceTypeById(@PathVariable String id) { + return deviceTypeService.deleteDeviceTypeById(id); + } + + //查询所有设备类型(用于设备对象管理模块) + @GetMapping("/listDeviceTypeAll") + public Result listDeviceTypeAll() { + return deviceTypeService.listDeviceTypeAll(); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeDetailController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeDetailController.java new file mode 100644 index 0000000..5efc7f5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeDetailController.java @@ -0,0 +1,119 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.DeviceTypeDetail; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.device.service.DeviceTypeDetailService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 设备型号 设备型号表 前端控制器 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@RestController +@RequestMapping("/device/device-type-detail") +//@CrossOrigin +public class DeviceTypeDetailController { + + @Autowired + private DeviceTypeDetailService deviceTypeDetailService; + + //查询设备类型列表、设备类型分组、设备型号列表的树形列表 + @GetMapping("/listDeviceDetail") + public Result listDeviceDetail() { + List list = deviceTypeDetailService.listDeviceDetail(); + return Result.ok().data("list", list); + } + + //根据设备类型id查询所有的设备型号(分页) + @GetMapping("/listDeviceDetailByTypeId/{typeId}/{current}/{size}") + public Result listDeviceDetailByTypeId(@PathVariable String typeId, @PathVariable Integer current, @PathVariable Integer size) { + return deviceTypeDetailService.listDeviceDetailByTypeId(typeId, current, size); + } + + //根据设备分组id查询所有设备型号(分页) + @GetMapping("/listDeviceDetailByGroupId/{groupId}/{current}/{size}") + public Result listDeviceDetailByGroupId(@PathVariable String groupId, @PathVariable Integer current, @PathVariable Integer size) { + return deviceTypeDetailService.listDeviceDetailByGroupId(groupId, current, size); + } + + //新建设备型号(基于设备类型id) + @PostMapping("/addDeviceDetailByTypeId/{typeId}") + public Result addDeviceDetail(@PathVariable String typeId, @RequestBody DeviceTypeDetail deviceTypeDetail){ + deviceTypeDetail.setTypeId(typeId); + return deviceTypeDetailService.addDeviceDetail(typeId, deviceTypeDetail); +// boolean flag = deviceTypeDetailService.save(deviceTypeDetail); +// return flag ? Result.ok() : Result.error(); + } + + //根据设备型号id删除设备型号 + @DeleteMapping("/deleteDeviceDetailById/{id}") + public Result deleteDeviceDetailById(@PathVariable String id) { + boolean flag = deviceTypeDetailService.removeById(id); + return flag ? Result.ok() : Result.error(); + } + + //根据设备型号id查询设备型号(用于回显数据) + @GetMapping("/getDeviceDetailById/{id}") + public Result getDeviceDetailById(@PathVariable String id) { + DeviceTypeDetail deviceTypeDetail = deviceTypeDetailService.getById(id); + return Result.ok().data("deviceTypeDetail", deviceTypeDetail); + } + + //修改设备型号 + @PutMapping("/updateDeviceDetail") + public Result updateDeviceDetail(@RequestBody DeviceTypeDetail deviceTypeDetail) { + return deviceTypeDetailService.updateDeviceDetail(deviceTypeDetail); +// boolean flag = deviceTypeDetailService.updateById(deviceTypeDetail); +// return flag ? Result.ok() : Result.error(); + } + + //根据checkbox多选框批量删除设备型号 + @DeleteMapping("/deleteDeviceDetailBatch") + public Result deleteDeviceDetailBatch(@RequestBody List detailList) { + return deviceTypeDetailService.deleteDeviceDetailBatch(detailList); + } + + //新建设备型号(基于设备类型id和设备分组id) + @PostMapping("/addDeviceDetailByTypeIdAndGroupId/{typeId}/{groupId}") + public Result addDeviceDetailByTypeIdAndGroupId(@PathVariable String typeId, @PathVariable String groupId, @RequestBody DeviceTypeDetail deviceTypeDetail) { + deviceTypeDetail.setTypeId(typeId); + deviceTypeDetail.setTypeGroupId(groupId); + return deviceTypeDetailService.addDeviceDetailByTypeIdAndGroupId(groupId, deviceTypeDetail); +// boolean flag = deviceTypeDetailService.save(deviceTypeDetail); +// return flag ? Result.ok() : Result.error(); + } + + //根据设备类型id查询该类型所有设备型号(用于设备对象管理模块) + @GetMapping("/listDeviceDetailAllByTypeId/{typeId}") + public Result listDeviceDetailAllByTypeId(@PathVariable String typeId) { + return deviceTypeDetailService.listDeviceDetailAllByTypeId(typeId); + } + + /** + * 根据设备型号id查询结构图谱 + * @param detailId + * @return + */ + @GetMapping("/getStructureGraphById/{detailId}") + public Result getStructureGraphById(@PathVariable String detailId) { + return deviceTypeDetailService.getStructureGraphById(detailId); + } + + //根据设备型号id查询设备型号,用于供数据服务远程调用 + @GetMapping("/getDetailById/{id}") + public DeviceTypeDetail getDetailById(@PathVariable String id) { + DeviceTypeDetail deviceTypeDetail = deviceTypeDetailService.getById(id); + return deviceTypeDetail; + } + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeGroupController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeGroupController.java new file mode 100644 index 0000000..79486d6 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/DeviceTypeGroupController.java @@ -0,0 +1,65 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.DeviceTypeGroup; +import com.cqu.device.service.DeviceTypeGroupService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 设备分组 设备分组 前端控制器 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@RestController +@RequestMapping("/device/device-type-group") +//@CrossOrigin +public class DeviceTypeGroupController { + + @Autowired + private DeviceTypeGroupService deviceTypeGroupService; + + //新建设备分组 + @PostMapping("/addDeviceGroupByTypeId/{typeId}/{typeGroupId}") + public Result addDeviceGroup(@PathVariable String typeId, @PathVariable String typeGroupId,@RequestBody DeviceTypeGroup deviceTypeGroup) { + deviceTypeGroup.setTypeId(typeId); + deviceTypeGroup.setParentGroupId(typeGroupId); + return deviceTypeGroupService.addDeviceGroup(typeId, typeGroupId, deviceTypeGroup); + // boolean flag = deviceTypeGroupService.save(deviceTypeGroup); +// return flag ? Result.ok().data("id",deviceTypeGroup.getId()) : Result.error(); + } + + //根据设备分组id查询设备分组 用于数据回显 + @GetMapping("/getDeviceGroupById/{id}") + public Result getDeviceGroupById(@PathVariable String id) { + DeviceTypeGroup deviceTypeGroup = deviceTypeGroupService.getById(id); + return Result.ok().data("deviceTypeGroup", deviceTypeGroup); + } + + //修改设备分组 + @PutMapping("/updateDeviceGroup") + public Result updateDeviceGroup(@RequestBody DeviceTypeGroup deviceTypeGroup) { + return deviceTypeGroupService.updateDeviceGroup(deviceTypeGroup); +// boolean flag = deviceTypeGroupService.updateById(deviceTypeGroup); +// return flag ? Result.ok() : Result.error(); + } + + //删除设备分组(需要判断下面是否还有设备型号) + @DeleteMapping("/deleteDeviceGroupById/{id}") + public Result deleteDeviceGroupById(@PathVariable String id) { + return deviceTypeGroupService.deleteDeviceGroupById(id); + } + + //根据设备分组id查询设备类型id,解决小BUG + @GetMapping("/getTypeIdByGroupId/{groupId}") + public Result getTypeIdByGroupId(@PathVariable String groupId) { + String typeId = deviceTypeGroupService.getTypeIdByGroupId(groupId); + return Result.ok().data("typeId", typeId); + } + +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/LoginController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/LoginController.java new file mode 100644 index 0000000..45a1f98 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/LoginController.java @@ -0,0 +1,27 @@ +package com.cqu.device.controller; + +import com.cqu.utils.Result; +import org.springframework.web.bind.annotation.*; + +/** + * @author ranmaoqi + * @time 2022-03-07 18:38 + */ +@RestController +@RequestMapping("/device/user") +//@CrossOrigin //解决跨域问题 +public class LoginController { + + //login + @PostMapping("/login") + public Result login() { + return Result.ok().data("token", "admin"); + } + + //info + @GetMapping("/info") + public Result info() { + return Result.ok().data("roles", "[admin]").data("name", "admin").data("avatar", "https://edu-miykah.oss-cn-beijing.aliyuncs.com/2022/03/10/e0083d0c-ab87-4c34-9a1c-e20b8c06a6b7file.png"); + } + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartController.java new file mode 100644 index 0000000..2b74b0a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartController.java @@ -0,0 +1,84 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.PartType; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.device.service.PartService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 部件 部件 前端控制器 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +@RestController +@RequestMapping("/device/part") +//@CrossOrigin +public class PartController { + + @Autowired + private PartService partService; + + //根据设备型号id,查询子系统、部件的树形列表 + @GetMapping("/listPartTreeByDeviceDetailId/{id}") + public Result listPartTreeByDeviceDetailId(@PathVariable String id) { + List list = partService.listPartTreeByDeviceDetailId(id); + return Result.ok().data("list", list); + } + + //根据部件id获得子系统id、设备型号id + @GetMapping("/getSubSystemIdAndDetailIdByPartId/{id}") + public Result getSubSystemIdAndDetailIdByPartId(@PathVariable String id) { + return partService.getSubSystemIdAndDetailIdByPartId(id); + } + + //在设备型号结构树中新增部件(在设备型号下) + @PostMapping("/addPartByDetailId/{detailId}") + public Result addPartByDetailId(@PathVariable String detailId, @RequestBody(required = false) List partTypeIds) { + return partService.addPartByDetailId(detailId, partTypeIds); + } + + //在设备型号结构树中新增部件(在设备型号下的子系统下) + @PostMapping("/addPartBySubSystemId/{detailId}/{subSystemId}") + public Result addPartBySubSystemId(@PathVariable String detailId, @PathVariable String subSystemId, @RequestBody(required = false) List partTypeIds) { + return partService.addPartBySubSystemId(detailId, subSystemId, partTypeIds); + } + + //根据设备型号id查询出下面关联的部件类型(回显) + @GetMapping("/listPartTypeByDetailId/{detailId}") + public Result listPartTypeByDetailId(@PathVariable String detailId) { + return partService.listPartTypeByDetailId(detailId); + } + + //根据子系统id查询出下面关联的部件类型(回显) + @GetMapping("/listPartTypeBySubSystemId/{subSystemId}") + public Result listPartTypeBySubSystemId(@PathVariable String subSystemId) { + return partService.listPartTypeBySubSystemId(subSystemId); + } + + //根据设备型号id + 部件id删除部件 + @DeleteMapping("/deleteByDetailIdAndPartId/{detailId}/{partId}") + public Result deleteByDetailIdAndPartTypeId(@PathVariable String detailId, @PathVariable String partId) { + return partService.deleteByDetailIdAndPartId(detailId, partId); + } + + //根据设备型号id + 子系统id + 部件id删除部件 + @DeleteMapping("/deleteBySubSystemIdAndPartId/{detailId}/{subSystemId}/{partId}") + public Result deleteBySubSystemIdAndPartTypeId(@PathVariable String detailId, @PathVariable String subSystemId, @PathVariable String partId) { + return partService.deleteBySubSystemIdAndPartId(detailId, subSystemId, partId); + } + + //根据partId查询PartType用于回显 + @GetMapping("/getPartTypeByPartId/{partId}") + public Result getPartTypeByPartId(@PathVariable String partId) { + return partService.getPartTypeByPartId(partId); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeController.java new file mode 100644 index 0000000..cbe2213 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeController.java @@ -0,0 +1,72 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.DeviceType; +import com.cqu.device.entity.PartType; +import com.cqu.device.service.PartTypeService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 部件类型表 部件类型表 前端控制器 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@RestController +@RequestMapping("/device/part-type") +//@CrossOrigin +public class PartTypeController { + + @Autowired + private PartTypeService partTypeService; + + /** + * 新建部件类型 + * @param partType 部件类型实体 + * @return + */ + @PostMapping("/addPartType") + public Result addPartType(@RequestBody PartType partType) { +// boolean flag = partTypeService.save(partType); +// return flag ? Result.ok() : Result.error(); + return partTypeService.addPartType(partType); + } + + //根据部件类型id查询部件类型信息(用于数据回显) + @GetMapping("/getPartTypeById/{id}") + public Result getPartTypeById(@PathVariable String id) { + PartType partType = partTypeService.getById(id); + return Result.ok().data("partType", partType); + } + + /** + * 修改部件类型 + * @param partType 部件类型实体 + * @return + */ + @PutMapping("/updatePartType") + public Result updatePartType(@RequestBody PartType partType) { +// boolean flag = partTypeService.updateById(partType); +// return flag ? Result.ok() : Result.error(); + return partTypeService.updatePartType(partType); + } + + //删除部件类型(需要判断部件类型下是否还有部件分组、部件型号) + @DeleteMapping("/deletePartTypeById/{id}") + public Result deletePartTypeById(@PathVariable String id) { + return partTypeService.deletePartTypeById(id); + } + + //查询所有部件类型(用于设备型号结构树中关联部件)(分页) + @GetMapping("/listAllParts/{current}/{size}") + public Result listAllParts(@PathVariable Integer current, @PathVariable Integer size) { + return partTypeService.listAllParts(current, size); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeDetailController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeDetailController.java new file mode 100644 index 0000000..47ede12 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeDetailController.java @@ -0,0 +1,110 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.PartTypeDetail; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.device.service.PartTypeDetailService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 部件型号 部件型号表 前端控制器 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@RestController +@RequestMapping("/device/part-type-detail") +//@CrossOrigin +public class PartTypeDetailController { + + @Autowired + private PartTypeDetailService partTypeDetailService; + + //查询部件类型、部件分组、部件型号的树形列表 + @GetMapping("/listPartDetail") + public Result listPartDetail() { + List list = partTypeDetailService.listPartDetail(); + return Result.ok().data("list", list); + } + + //根据部件类型id查询所有部件型号(分页) + @GetMapping("/listPartDetailByTypeId/{typeId}/{current}/{size}") + public Result listPartDetailByTypeId(@PathVariable String typeId, @PathVariable Integer current, @PathVariable Integer size) { + return partTypeDetailService.listPartDetailByTypeId(typeId, current, size); + } + + //根据部件分组id查询所有部件型号(分页) + @GetMapping("/listPartDetailByGroupId/{groupId}/{current}/{size}") + public Result listPartDetailByGroupId(@PathVariable String groupId, @PathVariable Integer current, @PathVariable Integer size) { + return partTypeDetailService.listPartDetailByGroupId(groupId, current, size); + } + + /** + * 新建部件型号(基于部件类型id) + * @param typeId + * @param partTypeDetail + * @return + */ + @PostMapping("/addPartDetailByTypeId/{typeId}") + public Result addPartDetailByTypeId(@PathVariable String typeId, @RequestBody PartTypeDetail partTypeDetail){ +// partTypeDetail.setTypeId(typeId); +// boolean flag = partTypeDetailService.save(partTypeDetail); +// return flag ? Result.ok() : Result.error(); + return partTypeDetailService.addPartDetailByTypeId(typeId, partTypeDetail); + } + + + /** + * 新建部件型号(基于部件类型id和部件分组id) + * @param typeId + * @param partTypeDetail + * @return + */ + @PostMapping("/addPartDetailByTypeIdAndGroupId/{typeId}/{groupId}") + public Result addPartDetailByTypeIdAndGroupId(@PathVariable String typeId, @PathVariable String groupId, @RequestBody PartTypeDetail partTypeDetail) { +// partTypeDetail.setTypeId(typeId); +// partTypeDetail.setTypeGroupId(groupId); +// boolean flag = partTypeDetailService.save(partTypeDetail); +// return flag ? Result.ok() : Result.error(); + return partTypeDetailService.addPartDetailByTypeIdAndGroupId(typeId, groupId, partTypeDetail); + } + + //根据部件型号id删除部件型号 + @DeleteMapping("/deletePartDetailById/{id}") + public Result deletePartDetailById(@PathVariable String id) { + boolean flag = partTypeDetailService.removeById(id); + return flag ? Result.ok() : Result.error(); + } + + //根据部件型号id查询部件型号(用于回显数据) + @GetMapping("/getPartDetailById/{id}") + public Result getPartDetailById(@PathVariable String id) { + PartTypeDetail partTypeDetail = partTypeDetailService.getById(id); + return Result.ok().data("partTypeDetail", partTypeDetail); + } + + /** + * 修改部件型号 + * @param partTypeDetail + * @return + */ + @PutMapping("/updatePartDetail") + public Result updatePartDetail(@RequestBody PartTypeDetail partTypeDetail) { +// boolean flag = partTypeDetailService.updateById(partTypeDetail); +// return flag ? Result.ok() : Result.error(); + return partTypeDetailService.updatePartDetail(partTypeDetail); + } + + //根据checkbox多选框批量删除部件型号 + @DeleteMapping("/deletePartDetailBatch") + public Result deletePartDetailBatch(@RequestBody List detailList) { + return partTypeDetailService.deleteDeviceDetailBatch(detailList); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeGroupController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeGroupController.java new file mode 100644 index 0000000..9dfd200 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/PartTypeGroupController.java @@ -0,0 +1,75 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.DeviceTypeGroup; +import com.cqu.device.entity.PartTypeGroup; +import com.cqu.device.service.PartTypeGroupService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 部件分组 部件分组 前端控制器 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@RestController +@RequestMapping("/device/part-type-group") +//@CrossOrigin +public class PartTypeGroupController { + + @Autowired + private PartTypeGroupService partTypeGroupService; + + /** + * 新建部件分组 + * @param typeId + * @param typeGroupId + * @param partTypeGroup + * @return + */ + @PostMapping("/addPartGroupByTypeId/{typeId}/{typeGroupId}") + public Result addPartGroupByTypeId(@PathVariable String typeId, @PathVariable String typeGroupId,@RequestBody PartTypeGroup partTypeGroup) { +// partTypeGroup.setTypeId(typeId); +// partTypeGroup.setParentGroupId(typeGroupId); +// boolean flag = partTypeGroupService.save(partTypeGroup); +// return flag ? Result.ok() : Result.error(); + return partTypeGroupService.addPartGroupByTypeId(typeId, typeGroupId, partTypeGroup); + } + + //根据部件分组id查询部件分组 用于数据回显 + @GetMapping("/getPartGroupById/{id}") + public Result getPartGroupById(@PathVariable String id) { + PartTypeGroup partTypeGroup = partTypeGroupService.getById(id); + return Result.ok().data("partTypeGroup", partTypeGroup); + } + + /** + * 修改部件分组 + * @param partTypeGroup 部件分组实体 + * @return + */ + @PutMapping("/updatePartGroup") + public Result updatePartGroup(@RequestBody PartTypeGroup partTypeGroup) { +// boolean flag = partTypeGroupService.updateById(partTypeGroup); +// return flag ? Result.ok() : Result.error(); + return partTypeGroupService.updatePartGroup(partTypeGroup); + } + + //删除部件分组(需要判断下面是否还有部件型号) + @DeleteMapping("/deletePartGroupById/{id}") + public Result deletePartGroupById(@PathVariable String id) { + return partTypeGroupService.deletePartGroupById(id); + } + + //根据部件分组id查询部件类型id,解决小BUG + @GetMapping("/getTypeIdByGroupId/{groupId}") + public Result getTypeIdByGroupId(@PathVariable String groupId) { + String typeId = partTypeGroupService.getTypeIdByGroupId(groupId); + return Result.ok().data("typeId", typeId); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/SubSystemController.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/SubSystemController.java new file mode 100644 index 0000000..7e3d5c8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/controller/SubSystemController.java @@ -0,0 +1,62 @@ +package com.cqu.device.controller; + + +import com.cqu.device.entity.SubSystem; +import com.cqu.device.service.SubSystemService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 子系统 子系统 前端控制器 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +@RestController +@RequestMapping("/device/sub-system") +//@CrossOrigin +public class SubSystemController { + + @Autowired + private SubSystemService subSystemService; + + //根据子系统id获得设备型号id + @GetMapping("/getDetailIdBySubSystemId/{id}") + public Result getDetailIdBySubSystemId(@PathVariable String id) { + return subSystemService.getDetailIdBySubSystemId(id); + } + + //新建子系统(根据设备型号id) + @PostMapping("/addSubSystem/{detailId}") + public Result addSubSystem(@PathVariable String detailId, @RequestBody SubSystem subSystem) { + subSystem.setDeviceDetailId(detailId); + return subSystemService.addSubSystem(detailId, subSystem); +// boolean flag = subSystemService.save(subSystem); +// return flag ? Result.ok() : Result.error(); + } + + //根据子系统Id查询子系统(回显) + @GetMapping("/getSubSystemById/{id}") + public Result getSubSystemById(@PathVariable String id) { + SubSystem subSystem = subSystemService.getById(id); + return Result.ok().data("subSystem", subSystem); + } + + //修改子系统 + @PutMapping("/updateSubSystem") + public Result updateSubSystem(@RequestBody SubSystem subSystem) { + return subSystemService.updateSubSystem(subSystem); +// boolean flag = subSystemService.updateById(subSystem); +// return flag ? Result.ok() : Result.error(); + } + + //删除子系统 + @DeleteMapping("/deleteSubSystemById/{id}") + public Result deleteSubSystemById(@PathVariable String id) { + return subSystemService.deleteSubSystemById(id); + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DataModel.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DataModel.java new file mode 100644 index 0000000..83b6faa --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DataModel.java @@ -0,0 +1,56 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author xiaolong + * @Description + * @create 2022-04-24-14:51 + */ +@Data +public class DataModel { + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备类型id") + private String typeId; + + @ApiModelProperty(value = "设备详细id") + private String detailId; + + @ApiModelProperty(value = "数据模型名称") + private String name; + + @ApiModelProperty(value = "数据模型显示名称") + private String showName; + + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + @TableField(exist = false) + private String deviceTypeName; + + @TableField(exist = false) + private String deviceTypeDetailName; +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/Device.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/Device.java new file mode 100644 index 0000000..912009b --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/Device.java @@ -0,0 +1,85 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 设备 设备 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Device对象", description="设备 设备") +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备组id") + private String groupId; + + @ApiModelProperty(value = "设备标识") + private String name; + + @ApiModelProperty(value = "设备类型") + private String typeId; + + @ApiModelProperty(value = "设备型号") + private String detailId; + + @ApiModelProperty(value = "设备编码") + private String deviceCode; + + @ApiModelProperty(value = "出厂日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date produceTime; + + @ApiModelProperty(value = "东经") + private String eastLongitude; + + @ApiModelProperty(value = "北纬") + private String northLatitude; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + @TableField(exist = false) + private String typeName; + + @TableField(exist = false) + private String detailName; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceArea.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceArea.java new file mode 100644 index 0000000..727dd34 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceArea.java @@ -0,0 +1,56 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 设备区域 设备区域 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="DeviceArea对象", description="设备区域 设备区域") +public class DeviceArea implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "区域名称") + private String showName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceGroup.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceGroup.java new file mode 100644 index 0000000..2cfc7ba --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceGroup.java @@ -0,0 +1,74 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 设备组 设备组 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="DeviceGroup对象", description="设备组 设备组") +public class DeviceGroup implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备组标识") + private String name; + + @ApiModelProperty(value = "设备组名称 ") + private String showName; + + @ApiModelProperty(value = "设备区域id") + private String areaId; + + @ApiModelProperty(value = "设备组编码") + private String groupCode; + + @ApiModelProperty(value = "所在地") + private String location; + + @ApiModelProperty(value = "东经") + private String eastLongitude; + + @ApiModelProperty(value = "北纬") + private String northLatitude; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceType.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceType.java new file mode 100644 index 0000000..b2ffb66 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceType.java @@ -0,0 +1,59 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 设备类型 设备类型 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="DeviceType对象", description="设备类型 设备类型") +public class DeviceType implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备类型名称") + private String name; + + @ApiModelProperty(value = "显示名称") + private String showName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceTypeDetail.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceTypeDetail.java new file mode 100644 index 0000000..4060a15 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceTypeDetail.java @@ -0,0 +1,71 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 设备型号 设备型号表 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="DeviceTypeDetail对象", description="设备型号 设备型号表") +public class DeviceTypeDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备类型id") + private String typeId; + + @ApiModelProperty(value = "设备分组id") + private String typeGroupId; + + @ApiModelProperty(value = "设备标识") + private String name; + + @ApiModelProperty(value = "型号名称") + private String showName; + + @ApiModelProperty(value = "规格类型") + private String specificationType; + + @ApiModelProperty(value = "生产厂商") + private String manufacturer; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceTypeGroup.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceTypeGroup.java new file mode 100644 index 0000000..1ce8f62 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/DeviceTypeGroup.java @@ -0,0 +1,62 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 设备分组 设备分组 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="DeviceTypeGroup对象", description="设备分组 设备分组") +public class DeviceTypeGroup implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备类型id") + private String typeId; + + @ApiModelProperty(value = "父组id") + private String parentGroupId; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "部件分组名称") + private String showName; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/Part.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/Part.java new file mode 100644 index 0000000..23712a8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/Part.java @@ -0,0 +1,60 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 部件 部件 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Part对象", description="部件 部件") +public class Part implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "设备类型id") + private String deviceDetailId; + + @ApiModelProperty(value = "子系统id") + private String subSystemId; + + @ApiModelProperty(value = "部件类型id") + private String partTypeId; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartType.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartType.java new file mode 100644 index 0000000..f33172a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartType.java @@ -0,0 +1,60 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 部件类型表 部件类型表 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PartType对象", description="部件类型表") +public class PartType extends DeviceType implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "类型名称") + private String name; + + @ApiModelProperty(value = "显示名称") + private String showName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartTypeDetail.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartTypeDetail.java new file mode 100644 index 0000000..1a12187 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartTypeDetail.java @@ -0,0 +1,72 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; + +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 部件型号 部件型号表 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PartTypeDetail对象", description="部件型号 部件型号表") +public class PartTypeDetail extends DeviceTypeDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "部件类型id") + private String typeId; + + @ApiModelProperty(value = "部件分组id") + private String typeGroupId; + + @ApiModelProperty(value = "设备标识") + private String name; + + @ApiModelProperty(value = "型号名称") + private String showName; + + @ApiModelProperty(value = "规格类型") + private String specificationType; + + @ApiModelProperty(value = "生产厂商") + private String manufacturer; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartTypeGroup.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartTypeGroup.java new file mode 100644 index 0000000..6eb55ce --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/PartTypeGroup.java @@ -0,0 +1,62 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 部件分组 部件分组 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PartTypeGroup对象", description="部件分组 部件分组") +public class PartTypeGroup implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "父组id") + private String parentGroupId; + + @ApiModelProperty(value = "部件类型id") + private String typeId; + + @ApiModelProperty(value = "部件分组名称") + private String showName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/SubSystem.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/SubSystem.java new file mode 100644 index 0000000..e1d2f7b --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/SubSystem.java @@ -0,0 +1,62 @@ +package com.cqu.device.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 子系统 子系统 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SubSystem对象", description="子系统 子系统") +public class SubSystem implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.ID_WORKER_STR) + private String id; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "显示名称") + private String showName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "设备型号id") + private String deviceDetailId; + + @ApiModelProperty(value = "是否已被删除") + @TableLogic + private Integer isDeleted; + + @ApiModelProperty(value = "创建人") + private String createPerson; + + @ApiModelProperty(value = "创建日期") + @TableField(fill = FieldFill.INSERT) + private Date gmtCreate; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date gmtModified; + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/AreaVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/AreaVo.java new file mode 100644 index 0000000..e2c5e32 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/AreaVo.java @@ -0,0 +1,20 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ranmaoqi + * @time 2022-05-18 11:25 + */ +@Data +public class AreaVo { + + private String areaId; + private String showName; + private List children = new ArrayList<>(); + private String icon = "el-icon-map-location"; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/DeviceGroupVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/DeviceGroupVo.java new file mode 100644 index 0000000..1e7f4c2 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/DeviceGroupVo.java @@ -0,0 +1,17 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +/** + * @author ranmaoqi + * @time 2022-05-18 11:35 + */ +@Data +public class DeviceGroupVo { + + private String deviceGroupId; + private String showName; + + private String icon = "el-icon-folder-opened"; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/DeviceListVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/DeviceListVo.java new file mode 100644 index 0000000..8d0c8ec --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/DeviceListVo.java @@ -0,0 +1,19 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @author ranmaoqi + * @time 2022-05-18 11:23 + */ +@Data +public class DeviceListVo { + + private String showName = "设备列表"; + private List children; + + private String icon = "el-icon-s-unfold"; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/GraphVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/GraphVo.java new file mode 100644 index 0000000..401abfb --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/GraphVo.java @@ -0,0 +1,19 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; +import springfox.documentation.spring.web.json.Json; + +import java.util.List; + +/** + * 结构图谱数据图谱的graph + * @Author: ranmaoqi + * @Date: 2023/01/11 16:51 + */ +@Data +public class GraphVo { + + List nodes; + List links; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/GroupNodeVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/GroupNodeVo.java new file mode 100644 index 0000000..add5c69 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/GroupNodeVo.java @@ -0,0 +1,31 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @author xiaolong + * @Description + * @create 2022-04-22-11:22 + */ +@Data +public class GroupNodeVo extends commonGroupVo{ + private String id; + private String parentGroupId; + private String showName; + private String typeId; + private List children; + + private String icon = "el-icon-folder-opened"; + + + public String getId() { + return id; + } + + public String getParentGroupId() { + return parentGroupId; + } + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/LinksVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/LinksVo.java new file mode 100644 index 0000000..220d32f --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/LinksVo.java @@ -0,0 +1,15 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +/** + * @Author: ranmaoqi + * @Date: 2023/01/11 16:52 + */ +@Data +public class LinksVo { + + String source; + String target; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/NodeVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/NodeVo.java new file mode 100644 index 0000000..99508ae --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/NodeVo.java @@ -0,0 +1,18 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +/** + * @author xiaolong + * @Description + * @create 2022-04-22-12:22 + */ +@Data +public class NodeVo { + private String id; + private String typeId; + private String typeGroupId; + private String showName; + + private String icon = "el-icon-s-tools"; +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/NodesVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/NodesVo.java new file mode 100644 index 0000000..f374f3c --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/NodesVo.java @@ -0,0 +1,20 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +/** + * 结构图普中的node + * @Author: ranmaoqi + * @Date: 2023/01/11 16:52 + */ +@Data +public class NodesVo { + + String id; + String name; + int symbolSize; + double x; + double y; + int category; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/PartVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/PartVo.java new file mode 100644 index 0000000..47f360f --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/PartVo.java @@ -0,0 +1,17 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +/** + * @author ranmaoqi + * @time 2022-04-21 15:16 + */ +@Data +public class PartVo { + + private String partId; + private String showName; + + private String icon = "el-icon-s-tools"; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/SubSystemVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/SubSystemVo.java new file mode 100644 index 0000000..1c9494e --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/SubSystemVo.java @@ -0,0 +1,22 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ranmaoqi + * @time 2022-04-21 15:14 + */ +@Data +public class SubSystemVo { + + private String subSystemId; + private String showName; + + private List children = new ArrayList<>(); + + private String icon = "el-icon-folder-opened"; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/TypeNodeVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/TypeNodeVo.java new file mode 100644 index 0000000..f28bca4 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/TypeNodeVo.java @@ -0,0 +1,20 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @author xiaolong + * @Description + * @create 2022-04-22-11:47 + */ +@Data +public class TypeNodeVo extends commonGroupVo { + private String id; + private String showName; + private List children; + + private String icon = "el-icon-share"; + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/commonGroupVo.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/commonGroupVo.java new file mode 100644 index 0000000..adcee2a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/entity/vo/commonGroupVo.java @@ -0,0 +1,18 @@ +package com.cqu.device.entity.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @author xiaolong + * @Description + * @create 2022-04-25-13:58 + */ +@Data +public class commonGroupVo { + private String parentGroupId; + private String Id; + private List children; + private String typeId; +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DataModelMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DataModelMapper.java new file mode 100644 index 0000000..e3f8f93 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DataModelMapper.java @@ -0,0 +1,16 @@ +package com.cqu.device.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cqu.device.entity.DataModel; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * @author xiaolong + * @Description + * @create 2022-04-24-15:06 + */ +@Mapper +public interface DataModelMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceAreaMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceAreaMapper.java new file mode 100644 index 0000000..1caac35 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceAreaMapper.java @@ -0,0 +1,16 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.DeviceArea; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备区域 设备区域 Mapper 接口 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +public interface DeviceAreaMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceGroupMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceGroupMapper.java new file mode 100644 index 0000000..1657dcf --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceGroupMapper.java @@ -0,0 +1,36 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.DeviceGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 设备组 设备组 Mapper 接口 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@Mapper +public interface DeviceGroupMapper extends BaseMapper { + + /** + * 查找当前区域下,name或showName重复的设备组个数 + * @param areaId 区域Id + * @param name 设备组标识 + * @param showName 设备组名称 + * @return + */ + Integer getCountByAreaId(String areaId, String name, String showName); + + /** + * 查找当前区域下,除了当前设备组,name或showName重复的设备组个数 + * @param areaId 区域Id + * @param id 当前设备组Id + * @param name 设备组标识 + * @param showName 设备组名称 + * @return + */ + Integer getCountByAreaIdAndId(String areaId, String id, String name, String showName); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceMapper.java new file mode 100644 index 0000000..ade3473 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceMapper.java @@ -0,0 +1,16 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备 设备 Mapper 接口 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +public interface DeviceMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeDetailMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeDetailMapper.java new file mode 100644 index 0000000..5ed6787 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeDetailMapper.java @@ -0,0 +1,35 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.DeviceTypeDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * 设备型号 设备型号表 Mapper 接口 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Mapper +public interface DeviceTypeDetailMapper extends BaseMapper { + + + + //根据id获得设备型号名称 + String getDetailNameById(String id); + + //查找设备类型下name或showName重复的个数 + Integer getCountByTypeId(String typeId, String name, String showName); + + //查找设备分组下name或showName重复的个数 + Integer getCountByGroupId(String groupId, String name, String showName); + + //查找设备类型下name或showName重复的个数 + Integer getCountByIdAndTypeId(String id, String typeId, String name, String showName); + + //查找设备分组下name或showName重复的个数 + Integer getCountByIdAndGroupId(String id, String typeGroupId, String name, String showName); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeGroupMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeGroupMapper.java new file mode 100644 index 0000000..e74b2e6 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeGroupMapper.java @@ -0,0 +1,16 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.DeviceTypeGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备分组 设备分组 Mapper 接口 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +public interface DeviceTypeGroupMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeMapper.java new file mode 100644 index 0000000..9932bac --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/DeviceTypeMapper.java @@ -0,0 +1,20 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.DeviceType; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * 设备类型 设备类型 Mapper 接口 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Mapper +public interface DeviceTypeMapper extends BaseMapper { + + int getCount(String id, String name, String showName); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartMapper.java new file mode 100644 index 0000000..41f45d7 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartMapper.java @@ -0,0 +1,29 @@ +package com.cqu.device.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cqu.device.entity.Part; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + *

+ * 部件 部件 Mapper 接口 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +@Mapper +public interface PartMapper extends BaseMapper { + + //根据detailId得到partTypeIds + List listPartTypeIdByDetailId(String detailId); + + //根据subSystemId得到partTypeIds + List listPartTypeBySubSystemId(String subSystemId); + + //根据detailId得到SubsystemIds + List getSubSystemIdsByDetailId(String detailId); + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeDetailMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeDetailMapper.java new file mode 100644 index 0000000..a6b0fb4 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeDetailMapper.java @@ -0,0 +1,46 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.PartTypeDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 部件型号 部件型号表 Mapper 接口 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Mapper +public interface PartTypeDetailMapper extends BaseMapper { + + /** + * 查找name或showName重复的个数(typeId下) + * @param typeId + * @param name + * @param showName + */ + Integer getCountByTypeId(String typeId, String name, String showName); + + /** + * 查找name或showName重复的个数(typeId和groupId) + * @param typeId + * @param groupId + * @param name + * @param showName + * @return + */ + Integer getCountByTypeIdAndGroupId(String typeId, String groupId, String name, String showName); + + /** + * 查找name或showName重复的个数(typeId和groupId),除了当前型号 + * @param id + * @param typeId + * @param groupId + * @param name + * @param showName + * @return + */ + Integer getCountByTypeIdAndGroupIdExceptId(String id, String typeId, String groupId, String name, String showName); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeGroupMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeGroupMapper.java new file mode 100644 index 0000000..c901a5a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeGroupMapper.java @@ -0,0 +1,18 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.PartTypeGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 部件分组 部件分组 Mapper 接口 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Mapper +public interface PartTypeGroupMapper extends BaseMapper { + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeMapper.java new file mode 100644 index 0000000..e1a0342 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/PartTypeMapper.java @@ -0,0 +1,29 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.PartType; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 部件类型表 部件类型表 Mapper 接口 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Mapper +public interface PartTypeMapper extends BaseMapper { + + //根据部件类型id获得部件类型名称 + String getPartTypeShowNameById(String id); + + /** + * 得到name或showName重复的数量(除了当前id的类型之外) + * @param id + * @param name + * @param showName + * @return + */ + Integer getCountById(String id, String name, String showName); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/SubSystemMapper.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/SubSystemMapper.java new file mode 100644 index 0000000..098514a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/SubSystemMapper.java @@ -0,0 +1,27 @@ +package com.cqu.device.mapper; + +import com.cqu.device.entity.SubSystem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 子系统 子系统 Mapper 接口 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +@Mapper +public interface SubSystemMapper extends BaseMapper { + + /** + * 查询detailId下,除当前子系统外,name或showName重复的个数 + * @param id 子系统id + * @param detailId 设备型号id + * @param name 子系统标识 + * @param showName 子系统名称 + * @return + */ + Integer getCount(String id, String detailId, String name, String showName); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DataModelMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DataModelMapper.xml new file mode 100644 index 0000000..dc838a4 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DataModelMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceAreaMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceAreaMapper.xml new file mode 100644 index 0000000..0256613 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceAreaMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceGroupMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceGroupMapper.xml new file mode 100644 index 0000000..dc30e76 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceGroupMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceMapper.xml new file mode 100644 index 0000000..36d6ae4 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeDetailMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeDetailMapper.xml new file mode 100644 index 0000000..392cda4 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeDetailMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeGroupMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeGroupMapper.xml new file mode 100644 index 0000000..db331e5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeGroupMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeMapper.xml new file mode 100644 index 0000000..a485523 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/DeviceTypeMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartMapper.xml new file mode 100644 index 0000000..e81990f --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeDetailMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeDetailMapper.xml new file mode 100644 index 0000000..af7fda2 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeDetailMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeGroupMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeGroupMapper.xml new file mode 100644 index 0000000..6c6ff34 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeGroupMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeMapper.xml new file mode 100644 index 0000000..8d14415 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/PartTypeMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/SubSystemMapper.xml b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/SubSystemMapper.xml new file mode 100644 index 0000000..4e0e5da --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/mapper/xml/SubSystemMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DataModelService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DataModelService.java new file mode 100644 index 0000000..6adf9a3 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DataModelService.java @@ -0,0 +1,24 @@ +package com.cqu.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.device.entity.DataModel; +import com.cqu.utils.Result; + +import java.util.List; + +/** + * @author xiaolong + * @Description + * @create 2022-04-24-14:50 + */ +public interface DataModelService extends IService { + + // 根据设备详情id查询所属数据模型 + Result listDataModelById(String id, Integer current, Integer size); + + // 批量删除数据模型 + Result deleteDataModelBatch(List dataModelList); + + Result selectTreeAll(); + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceAreaService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceAreaService.java new file mode 100644 index 0000000..67fb55b --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceAreaService.java @@ -0,0 +1,41 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.DeviceArea; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.utils.Result; + +import java.util.List; + +/** + *

+ * 设备区域 设备区域 服务类 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +public interface DeviceAreaService extends IService { + + //分页查询所有区域列表 + Result listAreaAll(Integer current, Integer size); + + //根据id删除区域 + Result deleteAreaById(String areaId); + + //根据多选框批量删除区域 + Result deleteAreaBatch(List areaList); + + /** + * 新建区域 + * @param deviceArea 区域实体 + * @return + */ + Result addArea(DeviceArea deviceArea); + + /** + * 修改区域 + * @param deviceArea 区域实体 + * @return + */ + Result updateArea(DeviceArea deviceArea); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceGroupService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceGroupService.java new file mode 100644 index 0000000..2753fcd --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceGroupService.java @@ -0,0 +1,56 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.DeviceGroup; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.device.entity.vo.DeviceListVo; +import com.cqu.utils.Result; + +import java.util.List; + +/** + *

+ * 设备组 设备组 服务类 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +public interface DeviceGroupService extends IService { + + //查询区域、设备组的树形结构 + List listTree(); + + //分页查询所有设备组列表 + Result listDeviceGroupAll(Integer current, Integer size); + + //根据区域id分组查询设备组列表 + Result listDeviceGroupByAreaId(String areaId, Integer current, Integer size); + + //根据id删除设备组 + Result deleteDeviceGroupById(String groupId); + + //批量删除设备组 + Result deleteDeviceGroupBatch(List deviceGroupList); + + /** + * 新建设备组(直接新建) + * @param deviceGroup 设备组实体 + * @return + */ + Result addDeviceGroup(DeviceGroup deviceGroup); + + /** + * 新建设备组(在区域下) + * @param areaId 区域ID + * @param deviceGroup 设备组实体 + * @return + */ + Result addDeviceGroupByAreaId(String areaId, DeviceGroup deviceGroup); + + /** + * 编辑设备组 + * @param deviceGroup 设备组实体 + * @return + */ + Result updateDeviceGroup(DeviceGroup deviceGroup); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceService.java new file mode 100644 index 0000000..4783a84 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceService.java @@ -0,0 +1,57 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.utils.Result; + +import java.util.List; + +/** + *

+ * 设备 设备 服务类 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +public interface DeviceService extends IService { + + //根据设备组id查询设备 + Result listDeviceByGroupId(String groupId, Integer current, Integer size); + + //多选删除设备 + Result deleteDeviceBatch(List deviceList); + + //查询设备对象结构树,根据设备对象id + List getDeviceObjTreeById(String deviceId); + + /** + * 新建设备 + * @param groupId 设备组id + * @param device 设备实体 + * @return + */ + Result addDeviceByGroupId(String groupId, Device device); + + /** + * 修改设备 + * @param device 设备实体 + * @return + */ + Result updateDevice(Device device); + + /** + * 根据设备对象id查询对应设备型号id,因为设备对象的数据集与其对应的设备型号的数据集一样 + * @param deviceId + * @return + */ + String getDeviceDetailIdByDeviceId(String deviceId); + + /** + * 根据设备Id查询结构图谱 + * @param deviceId + * @return + */ + Result getStructureGraphById(String deviceId); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeDetailService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeDetailService.java new file mode 100644 index 0000000..99aa1fc --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeDetailService.java @@ -0,0 +1,52 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.DeviceTypeDetail; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.utils.Result; + +import java.util.List; + +/** + *

+ * 设备型号 设备型号表 服务类 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +public interface DeviceTypeDetailService extends IService { + + //查询设备类型列表、设备类型分组、设备型号列表的树形列表 + List listDeviceDetail(); + + //根据设备类型id查询所有的设备型号(分页) + Result listDeviceDetailByTypeId(String typeId, Integer current, Integer size); + + //根据checkbox多选框批量删除设备型号 + Result deleteDeviceDetailBatch(List detailList); + + //根据设备分组id查询所有设备型号(分页) + Result listDeviceDetailByGroupId(String groupId, Integer current, Integer size); + + String getDetailNameById(String id); + + //根据设备类型id查询该类型所有设备型号(用于设备对象管理模块) + Result listDeviceDetailAllByTypeId(String typeId); + + //新建设备型号(基于设备类型id) + Result addDeviceDetail(String typeId, DeviceTypeDetail deviceTypeDetail); + + //新建设备型号(基于设备类型id和设备分组id) + Result addDeviceDetailByTypeIdAndGroupId(String groupId, DeviceTypeDetail deviceTypeDetail); + + //修改设备型号 + Result updateDeviceDetail(DeviceTypeDetail deviceTypeDetail); + + /** + * 根据设备型号id查询结构图谱 + * @param detailId + * @return + */ + Result getStructureGraphById(String detailId); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeGroupService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeGroupService.java new file mode 100644 index 0000000..8096db5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeGroupService.java @@ -0,0 +1,28 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.DeviceTypeGroup; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.utils.Result; + +/** + *

+ * 设备分组 设备分组 服务类 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +public interface DeviceTypeGroupService extends IService { + + //删除设备分组(需要判断下面是否还有设备型号) + Result deleteDeviceGroupById(String id); + + //根据设备分组id查询设备类型id,解决小BUG + String getTypeIdByGroupId(String groupId); + + //新建设备分组 + Result addDeviceGroup(String typeId, String typeGroupId, DeviceTypeGroup deviceTypeGroup); + + //修改设备分组 + Result updateDeviceGroup(DeviceTypeGroup deviceTypeGroup); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeService.java new file mode 100644 index 0000000..c7915fe --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/DeviceTypeService.java @@ -0,0 +1,28 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.DeviceType; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.utils.Result; + +/** + *

+ * 设备类型 设备类型 服务类 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +public interface DeviceTypeService extends IService { + + //删除设备类型(需要判断设备类型下是否还有设备分组、设备型号) + Result deleteDeviceTypeById(String id); + + //查询所有设备类型(用于设备对象管理模块) + Result listDeviceTypeAll(); + + //新建设备类型 + Result addDeviceType(DeviceType deviceType); + + //修改设备类型 + Result updateDeviceType(DeviceType deviceType); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartService.java new file mode 100644 index 0000000..16a991a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartService.java @@ -0,0 +1,46 @@ +package com.cqu.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.device.entity.Part; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.utils.Result; + +import java.util.List; + +/** + *

+ * 部件 部件 服务类 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +public interface PartService extends IService { + + //根据设备型号id,查询子系统、部件的树形列表 + List listPartTreeByDeviceDetailId(String id); + + //根据部件id获得子系统id、设备型号id + Result getSubSystemIdAndDetailIdByPartId(String id); + + //在设备型号结构树中新增部件(在设备型号下) + Result addPartByDetailId(String detailId, List partTypeIds); + + //在设备型号结构树中新增部件(在设备型号下的子系统下) + Result addPartBySubSystemId(String detailId, String subSystemId, List partTypeIds); + + //根据设备型号id查询出下面关联的部件类型(回显) + Result listPartTypeByDetailId(String detailId); + + //根据子系统id查询出下面关联的部件类型(回显) + Result listPartTypeBySubSystemId(String subSystemId); + + //根据设备型号id + 部件id删除部件 + Result deleteByDetailIdAndPartId(String detailId, String partId); + + //根据设备型号id + 子系统id + 部件id删除部件 + Result deleteBySubSystemIdAndPartId(String detailId, String subSystemId, String partId); + + //根据partId查询PartType用于回显 + Result getPartTypeByPartId(String partId); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeDetailService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeDetailService.java new file mode 100644 index 0000000..ebba0c5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeDetailService.java @@ -0,0 +1,54 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.PartTypeDetail; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.utils.Result; + +import java.util.List; + +/** + *

+ * 部件型号 部件型号表 服务类 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +public interface PartTypeDetailService extends IService { + + //查询部件类型、部件分组、部件型号的树形列表 + List listPartDetail(); + + //根据部件类型id查询所有部件型号(分页) + Result listPartDetailByTypeId(String typeId, Integer current, Integer size); + + //根据部件分组id查询所有部件型号(分页) + Result listPartDetailByGroupId(String groupId, Integer current, Integer size); + + //根据checkbox多选框批量删除部件型号 + Result deleteDeviceDetailBatch(List detailList); + + /** + * 新建部件型号(基于部件类型id) + * @param typeId + * @param partTypeDetail + * @return + */ + Result addPartDetailByTypeId(String typeId, PartTypeDetail partTypeDetail); + + /** + * 新建部件型号(基于部件类型id和部件分组id) + * @param typeId + * @param partTypeDetail + * @return + */ + Result addPartDetailByTypeIdAndGroupId(String typeId, String groupId, PartTypeDetail partTypeDetail); + + /** + * 修改部件型号 + * @param partTypeDetail + * @return + */ + Result updatePartDetail(PartTypeDetail partTypeDetail); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeGroupService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeGroupService.java new file mode 100644 index 0000000..68c6351 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeGroupService.java @@ -0,0 +1,38 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.PartTypeGroup; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.utils.Result; + +/** + *

+ * 部件分组 部件分组 服务类 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +public interface PartTypeGroupService extends IService { + + //删除部件分组(需要判断下面是否还有部件型号) + Result deletePartGroupById(String id); + + //根据部件分组id查询部件类型id,解决小BUG + String getTypeIdByGroupId(String groupId); + + /** + * 新建部件分组 + * @param typeId + * @param typeGroupId + * @param partTypeGroup + * @return + */ + Result addPartGroupByTypeId(String typeId, String typeGroupId, PartTypeGroup partTypeGroup); + + /** + * 修改部件分组 + * @param partTypeGroup 部件分组实体 + * @return + */ + Result updatePartGroup(PartTypeGroup partTypeGroup); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeService.java new file mode 100644 index 0000000..3a9a39c --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/PartTypeService.java @@ -0,0 +1,39 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.PartType; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.utils.Result; + +/** + *

+ * 部件类型表 部件类型表 服务类 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +public interface PartTypeService extends IService { + + //删除部件类型(需要判断部件类型下是否还有部件分组、部件型号) + Result deletePartTypeById(String id); + + //根据部件类型id获得部件类型名称 + String getPartTypeShowNameById(String id); + + //查询所有部件类型(用于设备型号结构树中关联部件)(分页) + Result listAllParts(Integer current, Integer size); + + /** + * 新建部件类型 + * @param partType 部件类型实体 + * @return + */ + Result addPartType(PartType partType); + + /** + * 修改部件类型 + * @param partType 部件类型实体 + * @return + */ + Result updatePartType(PartType partType); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/SubSystemService.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/SubSystemService.java new file mode 100644 index 0000000..f3ed712 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/SubSystemService.java @@ -0,0 +1,28 @@ +package com.cqu.device.service; + +import com.cqu.device.entity.SubSystem; +import com.baomidou.mybatisplus.extension.service.IService; +import com.cqu.utils.Result; + +/** + *

+ * 子系统 子系统 服务类 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +public interface SubSystemService extends IService { + + //根据子系统id获得设备型号id + Result getDetailIdBySubSystemId(String id); + + //删除子系统 + Result deleteSubSystemById(String id); + + //新建子系统(根据设备型号id) + Result addSubSystem(String detailId, SubSystem subSystem); + + //修改子系统 + Result updateSubSystem(SubSystem subSystem); +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DataModelServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DataModelServiceImpl.java new file mode 100644 index 0000000..df988d5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DataModelServiceImpl.java @@ -0,0 +1,121 @@ +package com.cqu.device.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.device.entity.DataModel; +import com.cqu.device.entity.DeviceType; +import com.cqu.device.entity.DeviceTypeDetail; +import com.cqu.device.entity.vo.NodeVo; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.device.entity.vo.commonGroupVo; +import com.cqu.device.mapper.DataModelMapper; +import com.cqu.device.service.DataModelService; +import com.cqu.device.service.DeviceTypeDetailService; +import com.cqu.device.service.DeviceTypeService; +import com.cqu.utils.Result; +import com.google.common.collect.Lists; +import io.lettuce.core.ScriptOutputType; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import springfox.documentation.spring.web.json.Json; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author xiaolong + * @Description + * @create 2022-04-24-15:04 + */ +@Service +public class DataModelServiceImpl extends ServiceImpl implements DataModelService { + + @Autowired + private DeviceTypeService deviceTypeService; + @Autowired + private DeviceTypeDetailService deviceTypeDetailService; + + // 根据设备id查询数据模型列表 + @Override + public Result listDataModelById(String id, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("detail_id",id); + wrapper.orderByAsc("gmt_create"); + baseMapper.selectPage(page, wrapper); + List records = page.getRecords(); + + DeviceTypeDetail deviceTypeDetail = deviceTypeDetailService.getById(id); + DeviceType deviceType = deviceTypeService.getById(deviceTypeDetail.getTypeId()); + for (DataModel record : records) { +// record.setDeviceTypeName(deviceType.getName()); +// record.setDeviceTypeDetailName(deviceTypeDetail.getName()); + record.setDeviceTypeName(deviceType.getShowName()); + record.setDeviceTypeDetailName(deviceTypeDetail.getShowName()); + } + + + long total = page.getTotal(); + return Result.ok().data("dataModelList", records).data("total", total); + } + + // 批量删除数据模型 + @Override + public Result deleteDataModelBatch(List dataModelList) { + List ids = new ArrayList<>(); + for (DataModel dataModel : dataModelList) { + ids.add(dataModel.getId()); + } + int count = baseMapper.deleteBatchIds(ids); + return count > 0 ? Result.ok() : Result.error(); + } + + // 查询树形结构 + @Override + public Result selectTreeAll() { + //1.查询所有的设备类型 + List deviceTypes = deviceTypeService.list(null); + //2.查询所有的设备型号 + List deviceTypeDetails = deviceTypeDetailService.list(null); + String jsonOutput = JSONArray.toJSONString(deviceTypeDetails); +// System.out.println(jsonOutput); + + + // 设备类型 + ArrayList typeNodeVos = new ArrayList(); + HashMap typeHashMap = new HashMap(); + for (DeviceType deviceType : deviceTypes) { + TypeNodeVo typeNodeVo = new TypeNodeVo(); + BeanUtils.copyProperties(deviceType, typeNodeVo); + typeNodeVos.add(typeNodeVo); + typeHashMap.put(typeNodeVo.getId(), typeNodeVo); + } + // 设备 + ArrayList nodeVos = new ArrayList<>(); + for (DeviceTypeDetail deviceTypeDetail : deviceTypeDetails) { + NodeVo nodeVo = new NodeVo(); + BeanUtils.copyProperties(deviceTypeDetail, nodeVo); + nodeVos.add(nodeVo); + } + + // 挂载 + // 将设备挂在类型或者组上 + for (NodeVo nodeVo : nodeVos) { + if(typeHashMap.get(nodeVo.getTypeId()).getChildren() == null){ + typeHashMap.get(nodeVo.getTypeId()).setChildren(new ArrayList<>()); + } + typeHashMap.get(nodeVo.getTypeId()).getChildren().add(nodeVo); + } + +// String typeJsonOutput = JSONArray.toJSONString(typeNodeVos); +// System.out.println(typeJsonOutput); + return Result.ok().data("treeData",typeNodeVos); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceAreaServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceAreaServiceImpl.java new file mode 100644 index 0000000..6d33a9a --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceAreaServiceImpl.java @@ -0,0 +1,118 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.base.exception.PhmException; +import com.cqu.device.entity.DeviceArea; +import com.cqu.device.entity.DeviceGroup; +import com.cqu.device.mapper.DeviceAreaMapper; +import com.cqu.device.mapper.DeviceGroupMapper; +import com.cqu.device.service.DeviceAreaService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 设备区域 设备区域 服务实现类 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@Service +public class DeviceAreaServiceImpl extends ServiceImpl implements DeviceAreaService { + + @Autowired + private DeviceGroupMapper deviceGroupMapper; + + //分页查询所有区域列表 + @Override + public Result listAreaAll(Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.orderByAsc("gmt_create"); + baseMapper.selectPage(page, wrapper); + + List records = page.getRecords(); + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + } + + //根据id删除区域, 先查找该区域下还有没有设备组,如果有,则删除失败 + @Override + public Result deleteAreaById(String areaId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("area_id", areaId); + Integer count = deviceGroupMapper.selectCount(wrapper); + if (count == 0) { + return baseMapper.deleteById(areaId) > 0 ? Result.ok() : Result.error(); + } else { + throw new PhmException(20001, "此区域下还有内容,删除失败!"); + } + } + + //根据多选框批量删除区域 + @Override + public Result deleteAreaBatch(List areaList) { + //检测是否有的区域下还有设备组 + for (DeviceArea area : areaList) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("area_id", area.getId()); + Integer count = deviceGroupMapper.selectCount(wrapper); + if (count != 0) { + throw new PhmException(20001, "此区域下还有内容,删除失败!"); + } + } + //删除 + List ids = new ArrayList<>(); + for (DeviceArea area : areaList) { + ids.add(area.getId()); + } + int i = baseMapper.deleteBatchIds(ids); + return i > 0 ? Result.ok() : Result.error(); + } + + /** + * 新建区域 + * @param deviceArea 区域实体 + * @return + */ + @Override + public Result addArea(DeviceArea deviceArea) { + //判断Area名称是否重复 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("show_name", deviceArea.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int insert = baseMapper.insert(deviceArea); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建区域失败,名称重复!"); + } + } + + /** + * 修改区域 + * @param deviceArea 区域实体 + * @return + */ + @Override + public Result updateArea(DeviceArea deviceArea) { + //判断Area名称是否重复 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne("id", deviceArea.getId()); + wrapper.eq("show_name", deviceArea.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int update = baseMapper.updateById(deviceArea); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改区域失败,名称重复!"); + } + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceGroupServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceGroupServiceImpl.java new file mode 100644 index 0000000..79abfd8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceGroupServiceImpl.java @@ -0,0 +1,224 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.base.exception.PhmException; +import com.cqu.device.entity.Device; +import com.cqu.device.entity.DeviceArea; +import com.cqu.device.entity.DeviceGroup; +import com.cqu.device.entity.vo.AreaVo; +import com.cqu.device.entity.vo.DeviceGroupVo; +import com.cqu.device.entity.vo.DeviceListVo; +import com.cqu.device.mapper.DeviceGroupMapper; +import com.cqu.device.service.DeviceAreaService; +import com.cqu.device.service.DeviceGroupService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.device.service.DeviceService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 设备组 设备组 服务实现类 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@Service +public class DeviceGroupServiceImpl extends ServiceImpl implements DeviceGroupService { + + @Autowired + private DeviceAreaService deviceAreaService; + + @Autowired + private DeviceService deviceService; + + @Autowired + private DeviceGroupMapper deviceGroupMapper; + + //查询区域、设备组的树形结构 + @Override + public List listTree() { + //设备列表 + DeviceListVo deviceListVo = new DeviceListVo(); + + //查询出所有的区域 + List areas = deviceAreaService.list(null); + //查询出所有的设备组 + List deviceGroups = baseMapper.selectList(null); + + //创建集合用于封装最后的数据 + List list = new ArrayList<>(); + + //封装区域 + List areaVoList = new ArrayList<>(); + for (DeviceArea area : areas) { + AreaVo areaVo = new AreaVo(); + areaVo.setAreaId(area.getId()); + areaVo.setShowName(area.getShowName()); + //封装属于区域下的设备组 + List deviceGroupVoList = new ArrayList<>(); + for (DeviceGroup deviceGroup : deviceGroups) { + //判断当前设备组的area_id是否和当前的区域的id相同 + if (deviceGroup.getAreaId().equals(area.getId())) { + DeviceGroupVo deviceGroupVo = new DeviceGroupVo(); + deviceGroupVo.setDeviceGroupId(deviceGroup.getId()); + deviceGroupVo.setShowName(deviceGroup.getShowName()); + deviceGroupVoList.add(deviceGroupVo); + } + } + areaVo.setChildren(deviceGroupVoList); + areaVoList.add(areaVo); + } + + //封装不属于区域下的设备组 + List deviceGroupVoList = new ArrayList<>(); + for (DeviceGroup deviceGroup : deviceGroups) { + //判断设备组的area_id是否为0 + if ("0".equals(deviceGroup.getAreaId())) { + DeviceGroupVo deviceGroupVo = new DeviceGroupVo(); + deviceGroupVo.setDeviceGroupId(deviceGroup.getId()); + deviceGroupVo.setShowName(deviceGroup.getShowName()); + deviceGroupVoList.add(deviceGroupVo); + } + } + + List children = new ArrayList(); + children.addAll(areaVoList); + children.addAll(deviceGroupVoList); + + deviceListVo.setChildren(children); + + list.add(deviceListVo); + + return list; + } + + //分页查询所有设备组列表 + @Override + public Result listDeviceGroupAll(Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.orderByAsc("gmt_create"); + baseMapper.selectPage(page, wrapper); + + List records = page.getRecords(); + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + } + + //根据区域id分组查询设备组列表 + @Override + public Result listDeviceGroupByAreaId(String areaId, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("area_id", areaId); + wrapper.orderByAsc("gmt_create"); + baseMapper.selectPage(page, wrapper); + + List records = page.getRecords(); + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + } + + //根据id删除设备组 + @Override + public Result deleteDeviceGroupById(String groupId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("group_id", groupId); + int count = deviceService.count(wrapper); + if (count == 0) { + return baseMapper.deleteById(groupId) > 0 ? Result.ok() : Result.error(); + } else { + throw new PhmException(20001, "此设备组下还有内容,删除失败!"); + } + } + + //批量删除设备组 + @Override + public Result deleteDeviceGroupBatch(List deviceGroupList) { + //检测是否有的设备组下还有设备 + for (DeviceGroup deviceGroup : deviceGroupList) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("group_id", deviceGroup.getId()); + int count = deviceService.count(wrapper); + if (count != 0) { + throw new PhmException(20001, "设备组下还有内容,删除失败!"); + } + } + //删除 + List ids = new ArrayList<>(); + for (DeviceGroup deviceGroup : deviceGroupList) { + ids.add(deviceGroup.getId()); + } + int i = baseMapper.deleteBatchIds(ids); + return i > 0 ? Result.ok() : Result.error(); + } + + /** + * 新建设备组(直接新建) + * @param deviceGroup 设备组实体 + * @return + */ + @Override + public Result addDeviceGroup(DeviceGroup deviceGroup) { + //检查设备组标识或名称是否重复 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("name", deviceGroup.getName()) + .or() + .eq("show_name", deviceGroup.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int insert = baseMapper.insert(deviceGroup); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建设备组失败,标识或名称重复!"); + } + } + + /** + * 新建设备组(在区域下) + * @param areaId 区域ID + * @param deviceGroup 设备组实体 + * @return + */ + @Override + public Result addDeviceGroupByAreaId(String areaId, DeviceGroup deviceGroup) { + //检查设备组标识或名称在当前区域是否重复 + String name = deviceGroup.getName(); + String showName = deviceGroup.getShowName(); + Integer count = deviceGroupMapper.getCountByAreaId(areaId, name, showName); + if (count == 0) { + int insert = baseMapper.insert(deviceGroup); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建设备组失败,标识或名称重复!"); + } + } + + /** + * 编辑设备组 + * @param deviceGroup 设备组实体 + * @return + */ + @Override + public Result updateDeviceGroup(DeviceGroup deviceGroup) { + //检查设备组标识或名称在当前区域是否重复 + String areaId = deviceGroup.getAreaId(); + String id = deviceGroup.getId(); + String name = deviceGroup.getName(); + String showName = deviceGroup.getShowName(); + Integer count = deviceGroupMapper.getCountByAreaIdAndId(areaId, id, name, showName); + if (count == 0) { + int update = baseMapper.updateById(deviceGroup); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改设备组失败,标识或名称重复!"); + } + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..14e37aa --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceServiceImpl.java @@ -0,0 +1,292 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.device.entity.Device; +import com.cqu.device.entity.Part; +import com.cqu.device.entity.PartType; +import com.cqu.device.entity.SubSystem; +import com.cqu.device.entity.vo.*; +import com.cqu.device.mapper.DeviceMapper; +import com.cqu.device.mapper.PartMapper; +import com.cqu.device.mapper.PartTypeMapper; +import com.cqu.device.mapper.SubSystemMapper; +import com.cqu.device.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

+ * 设备 设备 服务实现类 + *

+ * + * @author ranmaoqi + * @since 2022-05-18 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements DeviceService { + + @Autowired + private DeviceTypeService deviceTypeService; + + @Autowired + private DeviceTypeDetailService deviceTypeDetailService; + + @Autowired + private SubSystemService subSystemService; + + @Autowired + private PartTypeService partTypeService; + + @Autowired + private PartMapper partMapper; + + @Autowired + private SubSystemMapper subSystemMapper; + + @Autowired + private PartTypeMapper partTypeMapper; + + //根据设备组id查询设备 + @Override + public Result listDeviceByGroupId(String groupId, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("group_id", groupId); + baseMapper.selectPage(page, wrapper); + List records = page.getRecords(); + long total = page.getTotal(); + + for (Device device : records) { + String typeId = device.getTypeId(); //设备类型id + String detailId = device.getDetailId(); //设备型号id + String typeName = deviceTypeService.getById(typeId).getShowName(); //根据设备类型id查出设备类型名称 + String detailName = deviceTypeDetailService.getById(detailId).getShowName(); //根据设备型号id查出设备型号名称 + device.setTypeName(typeName); + device.setDetailName(detailName); + } + + return Result.ok().data("records", records).data("total", total); + } + + //多选删除设备 + @Override + public Result deleteDeviceBatch(List deviceList) { + List ids = new ArrayList<>(); + for (Device device : deviceList) { + ids.add(device.getId()); + } + int count = baseMapper.deleteBatchIds(ids); + return count > 0 ? Result.ok() : Result.error(); + } + + //查询设备对象结构树,根据设备对象id + @Override + public List getDeviceObjTreeById(String deviceId) { + //先根据deviceId查出detailId + Device device = baseMapper.selectById(deviceId); + String detailId = device.getDetailId(); + + //封装树形结构的第一级(device) + TypeNodeVo deviceVo = new TypeNodeVo(); + deviceVo.setId(deviceId); + deviceVo.setShowName(device.getName()); + + //查询出所有的子系统(根据设备型号id) + List subSystems = subSystemService.list(new QueryWrapper().eq("device_detail_id", detailId)); + //查询出所有的部件(根据设备型号id) + List parts = partMapper.selectList(new QueryWrapper().eq("device_detail_id", detailId)); + + //创建集合用于封装最后的数据 + List list = new ArrayList<>(); + + //封装子系统 + List subSystemVoList = new ArrayList<>(); + for (SubSystem subSystem : subSystems) { + + SubSystemVo subSystemVo = new SubSystemVo(); + + subSystemVo.setSubSystemId(subSystem.getId()); + subSystemVo.setShowName(subSystem.getShowName()); +// list.add(subSystemVo); + + //封装属于子系统下的部件 + List partVoList = new ArrayList<>(); + + for (Part part : parts) { + //判断部件的subSystemId是否和当前subSystem的id相同 + if (part.getSubSystemId().equals(subSystem.getId())) { + PartVo partVo = new PartVo(); + partVo.setPartId(part.getId()); + String partTypeShowName = partTypeService.getPartTypeShowNameById(part.getPartTypeId()); + partVo.setShowName(partTypeShowName); + + partVoList.add(partVo); + } + } + subSystemVo.setChildren(partVoList); + subSystemVoList.add(subSystemVo); + } + + //封装不属于子系统下的部件 + List partVoList = new ArrayList<>(); + for (Part part : parts) { + //判断部件的subSystemId是否为0 + if ("0".equals(part.getSubSystemId())) { + PartVo partVo = new PartVo(); + partVo.setPartId(part.getId()); + String partTypeShowName = partTypeService.getPartTypeShowNameById(part.getPartTypeId()); + partVo.setShowName(partTypeShowName); + + partVoList.add(partVo); + } + } + + List children = new ArrayList(); + children.addAll(subSystemVoList); + children.addAll(partVoList); + + deviceVo.setChildren(children); + + list.add(deviceVo); + + return list; + } + + /** + * 新建设备 + * @param groupId 设备组id + * @param device 设备实体 + * @return + */ + @Override + public Result addDeviceByGroupId(String groupId, Device device) { + //判断当前组是否有重复的设备标识 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("group_id", groupId); + wrapper.eq("name", device.getName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int insert = baseMapper.insert(device); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建设备失败,标识重复!"); + } + } + + /** + * 修改设备 + * @param device 设备实体 + * @return + */ + @Override + public Result updateDevice(Device device) { + //判断当前组是否有重复的设备标识(除当前设备外) + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("group_id", device.getGroupId()); + wrapper.ne("id", device.getId()); + wrapper.eq("name", device.getName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int update = baseMapper.updateById(device); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建设备失败,标识重复!"); + } + } + + @Override + public String getDeviceDetailIdByDeviceId(String deviceId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id", deviceId); + Device device = baseMapper.selectById(deviceId); + return device.getDetailId(); + } + + /** + * 根据设备Id查询结构图谱 + * @param deviceId + * @return + */ + @Override + public Result getStructureGraphById(String deviceId) { + Device device = baseMapper.selectById(deviceId); + + GraphVo graph = new GraphVo(); //图谱 + List nodes = new LinkedList<>(); //图谱的节点 + List links = new LinkedList<>(); //图谱的连线关系 + + //根节点就是当前device + int i = 0; + String index = String.valueOf(i); + NodesVo root = new NodesVo(); + root.setId(index); + root.setCategory(0); + root.setName(device.getName()); + + nodes.add(root); + + graph.setNodes(nodes); + graph.setLinks(links); + + String detailId = device.getDetailId(); + //根据detailId查到subsystemIds,使用set去重 + Set subsystemIds = new HashSet<>(partMapper.getSubSystemIdsByDetailId(detailId)); + for (String subsystemId : subsystemIds) { + if (!"0".equals(subsystemId)) { + //子系统节点 + SubSystem subSystem = subSystemMapper.selectById(subsystemId); + NodesVo subSystemNode = new NodesVo(); + subSystemNode.setId(String.valueOf(++i)); + subSystemNode.setCategory(1); + subSystemNode.setName(subSystem.getShowName()); + nodes.add(subSystemNode); + //子系统节点与设备型号连接 + LinksVo link = new LinksVo(); + link.setSource(root.getId()); + link.setTarget(subSystemNode.getId()); + links.add(link); + + List partTypeIds = partMapper.listPartTypeBySubSystemId(subsystemId); + for (String partTypeId : partTypeIds) { + //子系统下的部件节点 + PartType partType = partTypeMapper.selectById(partTypeId); + NodesVo partTypeNode = new NodesVo(); + partTypeNode.setId(String.valueOf(++i)); + partTypeNode.setCategory(2); + partTypeNode.setName(partType.getShowName()); + nodes.add(partTypeNode); + //子系统与部件节点相连 + link = new LinksVo(); + link.setSource(subSystemNode.getId()); + link.setTarget(partTypeNode.getId()); + links.add(link); + } + } else { + //subsystemId == 0, 说明部件直接与设备型号相连 + List partTypeIds = partMapper.listPartTypeIdByDetailId(detailId); + for (String partTypeId : partTypeIds) { + //型号下的部件节点 + PartType partType = partTypeMapper.selectById(partTypeId); + NodesVo partTypeNode = new NodesVo(); + partTypeNode.setId(String.valueOf(++i)); + partTypeNode.setCategory(2); + partTypeNode.setName(partType.getShowName()); + nodes.add(partTypeNode); + //设备型号与部件节点相连 + LinksVo link = new LinksVo(); + link.setSource(root.getId()); + link.setTarget(partTypeNode.getId()); + links.add(link); + } + } + } + + return Result.ok().data("graph", graph); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeDetailServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeDetailServiceImpl.java new file mode 100644 index 0000000..51c1edc --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeDetailServiceImpl.java @@ -0,0 +1,395 @@ +package com.cqu.device.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.device.entity.*; +import com.cqu.device.entity.vo.*; +import com.cqu.device.mapper.DeviceTypeDetailMapper; +import com.cqu.device.mapper.PartMapper; +import com.cqu.device.mapper.PartTypeMapper; +import com.cqu.device.mapper.SubSystemMapper; +import com.cqu.device.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +import java.util.*; + +/** + *

+ * 设备型号 设备型号表 服务实现类 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Service +public class DeviceTypeDetailServiceImpl extends ServiceImpl implements DeviceTypeDetailService { + + @Autowired + private DeviceTypeService deviceTypeService; + + @Autowired + private DeviceTypeGroupService deviceTypeGroupService; + + @Autowired + private DeviceTypeDetailMapper deviceTypeDetailMapper; + + @Autowired + private PartMapper partMapper; + + @Autowired + private SubSystemMapper subSystemMapper; + + @Autowired + private PartTypeMapper partTypeMapper; + + //查询设备类型列表、设备类型分组、设备型号列表的树形列表 +// @Override +// public List listDeviceDetail() { +// +// //1.查询所有的设备类型 +// List deviceTypes = deviceTypeService.list(null); +// //2.查询所有的设备类型分组 +// List deviceTypeGroups = deviceTypeGroupService.list(null); +// //3.查询所有的设备型号 +// List deviceTypeDetails = baseMapper.selectList(null); +// +// //创建集合用于封装最终的数据 +// List deviceTypeVoList = new ArrayList<>(); +// +// for (DeviceType deviceType : deviceTypes) { +// //用于封装属于类型而不属于分组的型号 +// List detailVoListNot4Group = new ArrayList<>(); +// +// DeviceTypeVo deviceTypeVo = new DeviceTypeVo(); +// deviceTypeVo.setTypeId(deviceType.getId()); +// deviceTypeVo.setShowName(deviceType.getShowName()); +//// BeanUtils.copyProperties(deviceType, deviceTypeVo); +// deviceTypeVoList.add(deviceTypeVo); +// +// //封装类型分组 +// List deviceTypeGroupVoList = new ArrayList<>(); +// for (DeviceTypeGroup deviceTypeGroup : deviceTypeGroups) { +// DeviceTypeGroupVo deviceTypeGroupVo = new DeviceTypeGroupVo(); +// //判断类型分组的type_id是否和该设备类型的id相同 +// if (deviceTypeGroup.getTypeId().equals(deviceType.getId())) { +// deviceTypeGroupVo.setTypeGroupId(deviceTypeGroup.getId()); +// deviceTypeGroupVo.setShowName(deviceTypeGroup.getShowName()); +//// BeanUtils.copyProperties(deviceTypeGroup, deviceTypeGroupVo); +// deviceTypeGroupVoList.add(deviceTypeGroupVo); +// } +// +// //封装设备型号(属于分组下的设备型号) +// List deviceTypeDetailVoList = new ArrayList<>(); +// for (DeviceTypeDetail deviceTypeDetail : deviceTypeDetails) { +// //判断设备型号的type_group_id是否和类型分组的id相同 +// if (deviceTypeDetail.getTypeGroupId().equals(deviceTypeGroup.getId())) { +// DeviceTypeDetailVo deviceTypeDetailVo = new DeviceTypeDetailVo(); +// deviceTypeDetailVo.setTypeDetailId(deviceTypeDetail.getId()); +// deviceTypeDetailVo.setShowName(deviceTypeDetail.getShowName()); +//// BeanUtils.copyProperties(deviceTypeDetail, deviceTypeDetailVo); +// deviceTypeDetailVoList.add(deviceTypeDetailVo); +// } +// } +// deviceTypeGroupVo.setChildren(deviceTypeDetailVoList); +// } +// +// //封装设备型号(属于类型而不属于分组的设备型号) +// List deviceTypeDetailVoList_1 = new ArrayList<>(); +// for (DeviceTypeDetail deviceTypeDetail : deviceTypeDetails) { +// //判断该型号是否直接在类型下,而不是类型的分组下 +// if (deviceTypeDetail.getTypeId().equals(deviceType.getId()) && "0".equals(deviceTypeDetail.getTypeGroupId())) { +// DeviceTypeDetailVo deviceTypeDetailVo = new DeviceTypeDetailVo(); +// deviceTypeDetailVo.setTypeDetailId(deviceTypeDetail.getId()); +// deviceTypeDetailVo.setShowName(deviceTypeDetail.getShowName()); +//// BeanUtils.copyProperties(deviceTypeDetail, deviceTypeDetailVo); +// deviceTypeDetailVoList_1.add(deviceTypeDetailVo); +// } +// } +// detailVoListNot4Group.addAll(deviceTypeDetailVoList_1); +// deviceTypeGroupVoList.addAll(detailVoListNot4Group); +// deviceTypeVo.setChildren(deviceTypeGroupVoList); +// } +// +// return deviceTypeVoList; +// } + //查询设备类型列表、设备类型分组、设备型号列表的树形列表 + @Override + public List listDeviceDetail() { + //1.查询所有的设备类型 + List deviceTypes = deviceTypeService.list(null); + //2.查询所有的设备类型分组 + List deviceTypeGroups = deviceTypeGroupService.list(null); + //3.查询所有的设备型号 + List deviceTypeDetails = baseMapper.selectList(null); + + +// // 设备分组 +// ArrayList groupNodeVos = new ArrayList<>(); +// HashMap groupHashMap = new HashMap<>(); +// for (DeviceTypeGroup deviceTypeGroup : deviceTypeGroups) { +// GroupNodeVo groupNodeVo = new GroupNodeVo(); +// BeanUtils.copyProperties(deviceTypeGroup, groupNodeVo); +// groupNodeVos.add(groupNodeVo); +// groupHashMap.put(groupNodeVo.getId(), groupNodeVo); +// } +// +// // 设备类型 +// ArrayList typeNodeVos = new ArrayList<>(); +// HashMap typeHashMap = new HashMap<>(); +// for (DeviceType deviceType : deviceTypes) { +// TypeNodeVo typeNodeVo = new TypeNodeVo(); +// BeanUtils.copyProperties(deviceType, typeNodeVo); +// typeNodeVos.add(typeNodeVo); +// typeHashMap.put(typeNodeVo.getId(), typeNodeVo); +// } +// +// // 设备 +// ArrayList nodeVos = new ArrayList<>(); +// for (DeviceTypeDetail deviceTypeDetail : deviceTypeDetails) { +// NodeVo nodeVo = new NodeVo(); +// BeanUtils.copyProperties(deviceTypeDetail, nodeVo); +// nodeVos.add(nodeVo); +// } +// +//// System.err.println(nodeVos); +// +// // 组递归 +// recurDevice recurTree = new recurDevice(groupNodeVos); +// List groupList = recurTree.builTree(); +//// System.out.println(groupList); +// +// // 将组挂在设备类型上 +// for (commonGroupVo commonGroupVo : groupList) { +// GroupNodeVo groupNodeVo = (GroupNodeVo)commonGroupVo; +// if (typeHashMap.containsKey(groupNodeVo.getTypeId())) { +// if (typeHashMap.get(groupNodeVo.getTypeId()).getChildren() == null) { +// typeHashMap.get(groupNodeVo.getTypeId()).setChildren(new ArrayList()); +// } +// typeHashMap.get(groupNodeVo.getTypeId()).getChildren().add(groupNodeVo); +// } +// } +// +// // 将设备挂在类型或者组上 +// for (NodeVo nodeVo : nodeVos) { +// if (!nodeVo.getTypeGroupId().equals("0")) { +// if (groupHashMap.get(nodeVo.getTypeGroupId()).getChildren() == null) { +// groupHashMap.get(nodeVo.getTypeGroupId()).setChildren(new ArrayList<>()); +// } +// // 挂载到组上 +// groupHashMap.get(nodeVo.getTypeGroupId()).getChildren().add(nodeVo); +// } else { +// // 挂载到类型上 +// typeHashMap.get(nodeVo.getTypeId()).getChildren().add(nodeVo); +// } +// } +// +// String typeJsonOutput = JSONArray.toJSONString(typeNodeVos); +//// System.err.println(typeJsonOutput); +// return typeNodeVos; + return new commonDetailServiceImpl().tree(deviceTypes, deviceTypeGroups, deviceTypeDetails); + } + + //根据设备类型id查询所有的设备型号(分页+条件) + @Override + public Result listDeviceDetailByTypeId(String typeId, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_id", typeId); + wrapper.orderByAsc("gmt_create"); + baseMapper.selectPage(page, wrapper); + + List records = page.getRecords(); + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + } + + //根据设备分组id查询所有设备型号(分页) + @Override + public Result listDeviceDetailByGroupId(String groupId, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_group_id", groupId); + wrapper.orderByAsc("gmt_create"); + baseMapper.selectPage(page, wrapper); + + List records = page.getRecords(); + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + } + + @Override + public String getDetailNameById(String id) { + String name = deviceTypeDetailMapper.getDetailNameById(id); + return name; + } + + //根据checkbox多选框批量删除设备型号 + @Override + public Result deleteDeviceDetailBatch(List detailList) { + List ids = new ArrayList<>(); + //遍历 + for (DeviceTypeDetail deviceTypeDetail : detailList) { + ids.add(deviceTypeDetail.getId()); //将需要删除的detail的id存入ids列表 + } + int count = baseMapper.deleteBatchIds(ids); + return count > 0 ? Result.ok() : Result.error(); + } + + //根据设备类型id查询该类型所有设备型号(用于设备对象管理模块) + @Override + public Result listDeviceDetailAllByTypeId(String typeId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_id", typeId); + List detailList = baseMapper.selectList(wrapper); + List nodeVoList = new ArrayList<>(); + for (DeviceTypeDetail detail : detailList) { + NodeVo nodeVo = new NodeVo(); + nodeVo.setId(detail.getId()); + nodeVo.setShowName(detail.getShowName()); + nodeVoList.add(nodeVo); + } + return Result.ok().data("list", nodeVoList); + } + + //新建设备型号(基于设备类型id) + @Override + public Result addDeviceDetail(String typeId, DeviceTypeDetail deviceTypeDetail) { + //检查是否有重复的name或showName + String name = deviceTypeDetail.getName(); + String showName = deviceTypeDetail.getShowName(); + Integer count = deviceTypeDetailMapper.getCountByTypeId(typeId, name, showName); + if (count == 0) { + int insert = baseMapper.insert(deviceTypeDetail); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建设备型号失败,标识或名称重复!"); + } + } + + //新建设备型号(基于设备类型id和设备分组id) + @Override + public Result addDeviceDetailByTypeIdAndGroupId(String groupId, DeviceTypeDetail deviceTypeDetail) { + //检查是否有重复的name或showName + String name = deviceTypeDetail.getName(); + String showName = deviceTypeDetail.getShowName(); + Integer count = deviceTypeDetailMapper.getCountByGroupId(groupId, name, showName); + if (count == 0) { + int insert = baseMapper.insert(deviceTypeDetail); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建设备型号失败,标识或名称重复!"); + } + } + + //修改设备型号 + @Override + public Result updateDeviceDetail(DeviceTypeDetail deviceTypeDetail) { + String typeId = deviceTypeDetail.getTypeId(); + String typeGroupId = deviceTypeDetail.getTypeGroupId(); + String id = deviceTypeDetail.getId(); + String name = deviceTypeDetail.getName(); + String showName = deviceTypeDetail.getShowName(); + if ("0".equals(typeGroupId)) { //该设备型号在设备类型下 + Integer count = deviceTypeDetailMapper.getCountByIdAndTypeId(id, typeId, name, showName); + if (count == 0) { + int update = baseMapper.updateById(deviceTypeDetail); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改设备型号失败,标识或名称重复!"); + } + } else { //该设备型号在设备分组下 + Integer count = deviceTypeDetailMapper.getCountByIdAndGroupId(id, typeGroupId, name, showName); + if (count == 0) { + int update = baseMapper.updateById(deviceTypeDetail); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改设备型号失败,标识或名称重复!"); + } + } + } + + /** + * 根据设备型号id查询结构图谱 + * @param detailId + * @return + */ + @Override + public Result getStructureGraphById(String detailId) { + DeviceTypeDetail detail = baseMapper.selectById(detailId); + + GraphVo graph = new GraphVo(); + List nodes = new LinkedList<>(); + List links = new LinkedList<>(); + + int i = 0; + //根节点:当前设备型号 + NodesVo root = new NodesVo(); + root.setId(String.valueOf(i)); + root.setCategory(0); + root.setName(detail.getShowName()); + + nodes.add(root); //将根节点加入到nodes列表 + graph.setNodes(nodes); //nodes列表加入到graph + graph.setLinks(links); //links列表加入到graph + + //根据detailId查到subsystemIds,使用set去重 + Set subsystemIds = new HashSet<>(partMapper.getSubSystemIdsByDetailId(detailId)); + for (String subsystemId : subsystemIds) { + if (!"0".equals(subsystemId)) { + //子系统节点 + SubSystem subSystem = subSystemMapper.selectById(subsystemId); + NodesVo subSystemNode = new NodesVo(); + subSystemNode.setId(String.valueOf(++i)); + subSystemNode.setCategory(1); + subSystemNode.setName(subSystem.getShowName()); + nodes.add(subSystemNode); + //子系统节点与设备型号连接 + LinksVo link = new LinksVo(); + link.setSource(root.getId()); + link.setTarget(subSystemNode.getId()); + links.add(link); + + List partTypeIds = partMapper.listPartTypeBySubSystemId(subsystemId); + for (String partTypeId : partTypeIds) { + //子系统下的部件节点 + PartType partType = partTypeMapper.selectById(partTypeId); + NodesVo partTypeNode = new NodesVo(); + partTypeNode.setId(String.valueOf(++i)); + partTypeNode.setCategory(2); + partTypeNode.setName(partType.getShowName()); + nodes.add(partTypeNode); + //子系统与部件节点相连 + link = new LinksVo(); + link.setSource(subSystemNode.getId()); + link.setTarget(partTypeNode.getId()); + links.add(link); + } + } else { + //subsystemId == 0, 说明部件直接与设备型号相连 + List partTypeIds = partMapper.listPartTypeIdByDetailId(detailId); + for (String partTypeId : partTypeIds) { + //型号下的部件节点 + PartType partType = partTypeMapper.selectById(partTypeId); + NodesVo partTypeNode = new NodesVo(); + partTypeNode.setId(String.valueOf(++i)); + partTypeNode.setCategory(2); + partTypeNode.setName(partType.getShowName()); + nodes.add(partTypeNode); + //设备型号与部件节点相连 + LinksVo link = new LinksVo(); + link.setSource(root.getId()); + link.setTarget(partTypeNode.getId()); + links.add(link); + } + } + } + + return Result.ok().data("graph", graph); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeGroupServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeGroupServiceImpl.java new file mode 100644 index 0000000..e596ff6 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeGroupServiceImpl.java @@ -0,0 +1,93 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cqu.base.exception.PhmException; +import com.cqu.device.entity.DeviceTypeDetail; +import com.cqu.device.entity.DeviceTypeGroup; +import com.cqu.device.mapper.DeviceTypeGroupMapper; +import com.cqu.device.service.DeviceTypeDetailService; +import com.cqu.device.service.DeviceTypeGroupService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

+ * 设备分组 设备分组 服务实现类 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Service +public class DeviceTypeGroupServiceImpl extends ServiceImpl implements DeviceTypeGroupService { + + @Autowired + private DeviceTypeDetailService deviceTypeDetailService; + + //删除设备分组(需要判断下面是否还有设备型号) + @Override + public Result deleteDeviceGroupById(String id) { + //判断分组下是否还有设备型号 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_group_id", id); + int count = deviceTypeDetailService.count(wrapper); + + //若分组下没有型号,则可以删除,反之则不能 + if (count == 0) { + return baseMapper.deleteById(id) > 0 ? Result.ok() : Result.error(); + } else { + throw new PhmException(20001, "此设备分组下还有内容,删除失败!"); + } + + } + + //根据设备分组id查询设备类型id,解决小BUG + @Override + public String getTypeIdByGroupId(String groupId) { + DeviceTypeGroup deviceTypeGroup = baseMapper.selectById(groupId); + if (deviceTypeGroup != null) { + String typeId = deviceTypeGroup.getTypeId(); + return typeId; + } else { + return null; + } + } + + //新建设备分组 + @Override + public Result addDeviceGroup(String typeId, String typeGroupId, DeviceTypeGroup deviceTypeGroup) { + //判断是否有重复的名称 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_id", typeId); + wrapper.eq("parent_group_id", typeGroupId); + wrapper.eq("show_name", deviceTypeGroup.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int change = baseMapper.insert(deviceTypeGroup); + return change == 0 ? Result.error() : Result.ok().data("id", deviceTypeGroup.getId()); + } else { + return Result.error().message("新建设备分组失败,名称重复!"); + } + } + + //修改设备分组 + @Override + public Result updateDeviceGroup(DeviceTypeGroup deviceTypeGroup) { + //判断是否有重复的名称 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne("id", deviceTypeGroup.getId()); + wrapper.eq("type_id", deviceTypeGroup.getTypeId()); + wrapper.eq("parent_group_id", deviceTypeGroup.getParentGroupId()); + wrapper.eq("show_name", deviceTypeGroup.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int update = baseMapper.updateById(deviceTypeGroup); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改设备分组失败,名称重复!"); + } + } + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeServiceImpl.java new file mode 100644 index 0000000..18a62fd --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/DeviceTypeServiceImpl.java @@ -0,0 +1,111 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cqu.base.exception.PhmException; +import com.cqu.device.entity.DeviceType; +import com.cqu.device.entity.DeviceTypeDetail; +import com.cqu.device.entity.DeviceTypeGroup; +import com.cqu.device.entity.vo.NodeVo; +import com.cqu.device.mapper.DeviceTypeMapper; +import com.cqu.device.service.DeviceTypeDetailService; +import com.cqu.device.service.DeviceTypeGroupService; +import com.cqu.device.service.DeviceTypeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 设备类型 设备类型 服务实现类 + *

+ * + * @author testjava + * @since 2022-04-11 + */ +@Service +public class DeviceTypeServiceImpl extends ServiceImpl implements DeviceTypeService { + + @Autowired + private DeviceTypeGroupService deviceTypeGroupService; + + @Autowired + private DeviceTypeDetailService deviceTypeDetailService; + + @Autowired + private DeviceTypeMapper deviceTypeMapper; + + //删除设备类型(需要判断设备类型下是否还有设备分组、设备型号) + @Override + public Result deleteDeviceTypeById(String id) { + //先根据id查出该类型下是否还有设备分组或设备型号 + QueryWrapper groupWrapper = new QueryWrapper<>(); + groupWrapper.eq("type_id", id); + int count1 = deviceTypeGroupService.count(groupWrapper); + + QueryWrapper detailWrapper = new QueryWrapper<>(); + detailWrapper.eq("type_id", id); + int count2 = deviceTypeDetailService.count(detailWrapper); + + //当该类型下,分组和型号的数量都为0,才能删除该类型 + if (count1 == 0 && count2 == 0) { + + return baseMapper.deleteById(id) > 0 ? Result.ok() : Result.error(); + + } else { //该类型下,只要有分组或型号,都不能删除成功 + + throw new PhmException(20001, "此设备类型下还有内容,删除失败!"); + + } + } + + //查询所有设备类型(用于设备对象管理模块) + @Override + public Result listDeviceTypeAll() { + List typeList = baseMapper.selectList(null); + List nodeVoList = new ArrayList<>(); + for (DeviceType type : typeList) { + NodeVo nodeVo = new NodeVo(); + nodeVo.setId(type.getId()); + nodeVo.setShowName(type.getShowName()); + nodeVoList.add(nodeVo); + } + return Result.ok().data("list", nodeVoList); + } + + //新建设备类型 + @Override + public Result addDeviceType(DeviceType deviceType) { + //先判断是否已存在该名字的设备类型 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("name", deviceType.getName()); + wrapper.or().eq("show_name", deviceType.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + //不存在重复名称 + int change = baseMapper.insert(deviceType); + return change == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建设备类型失败,名称或显示名称重复!"); + } + } + + //修改设备类型 + @Override + public Result updateDeviceType(DeviceType deviceType) { + String id = deviceType.getId(); + String name = deviceType.getName(); + String showName = deviceType.getShowName(); + int count = deviceTypeMapper.getCount(id, name, showName); + if (count == 0) { + int update = baseMapper.updateById(deviceType); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改设备类型失败,名称或显示名称重复!"); + } + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartServiceImpl.java new file mode 100644 index 0000000..63f4113 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartServiceImpl.java @@ -0,0 +1,220 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cqu.device.entity.Part; +import com.cqu.device.entity.PartType; +import com.cqu.device.entity.SubSystem; +import com.cqu.device.entity.vo.PartVo; +import com.cqu.device.entity.vo.SubSystemVo; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.device.mapper.PartMapper; +import com.cqu.device.service.DeviceTypeDetailService; +import com.cqu.device.service.PartService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.device.service.PartTypeService; +import com.cqu.device.service.SubSystemService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 部件 部件 服务实现类 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +@Service +public class PartServiceImpl extends ServiceImpl implements PartService { + + @Autowired + private SubSystemService subSystemService; + + @Autowired + private PartTypeService partTypeService; + + @Autowired + private DeviceTypeDetailService deviceTypeDetailService; + + @Autowired + private PartMapper partMapper; + + //根据设备型号id,查询子系统、部件的树形列表 + @Override + public List listPartTreeByDeviceDetailId(String id) { + //封装设备型号 + TypeNodeVo deviceDetailVo = new TypeNodeVo(); + deviceDetailVo.setId(id); + String detailName = deviceTypeDetailService.getDetailNameById(id); + deviceDetailVo.setShowName(detailName); + + //查询出所有的子系统(根据设备型号id) + List subSystems = subSystemService.list(new QueryWrapper().eq("device_detail_id", id)); + //查询出所有的部件(根据设备型号id) + List parts = baseMapper.selectList(new QueryWrapper().eq("device_detail_id", id)); + + //创建集合用于封装最后的数据 + List list = new ArrayList<>(); + + //封装子系统 + List subSystemVoList = new ArrayList<>(); + for (SubSystem subSystem : subSystems) { + + SubSystemVo subSystemVo = new SubSystemVo(); + + subSystemVo.setSubSystemId(subSystem.getId()); + subSystemVo.setShowName(subSystem.getShowName()); +// list.add(subSystemVo); + + //封装属于子系统下的部件 + List partVoList = new ArrayList<>(); + + for (Part part : parts) { + //判断部件的subSystemId是否和当前subSystem的id相同 + if (part.getSubSystemId().equals(subSystem.getId())) { + PartVo partVo = new PartVo(); + partVo.setPartId(part.getId()); + String partTypeShowName = partTypeService.getPartTypeShowNameById(part.getPartTypeId()); + partVo.setShowName(partTypeShowName); + + partVoList.add(partVo); + } + } + subSystemVo.setChildren(partVoList); + subSystemVoList.add(subSystemVo); + } + + //封装不属于子系统下的部件 + List partVoList = new ArrayList<>(); + for (Part part : parts) { + //判断部件的subSystemId是否为0 + if ("0".equals(part.getSubSystemId())) { + PartVo partVo = new PartVo(); + partVo.setPartId(part.getId()); + String partTypeShowName = partTypeService.getPartTypeShowNameById(part.getPartTypeId()); + partVo.setShowName(partTypeShowName); + + partVoList.add(partVo); + } + } + + List children = new ArrayList(); + children.addAll(subSystemVoList); + children.addAll(partVoList); + + deviceDetailVo.setChildren(children); + + list.add(deviceDetailVo); + + return list; + } + + //根据部件id获得子系统id、设备型号id + @Override + public Result getSubSystemIdAndDetailIdByPartId(String id) { + Part part = baseMapper.selectById(id); + String detailId = part.getDeviceDetailId(); + String subSystemId = part.getSubSystemId(); + return Result.ok().data("detailId", detailId).data("subSystemId", subSystemId); + } + + //在设备型号结构树中新增部件(在设备型号下) + @Override + public Result addPartByDetailId(String detailId, List partTypeIds) { + //新增之前,先把之前选择过的部件删除,然后再根据多选框选择的部件添加进去 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("device_detail_id", detailId); + wrapper.eq("sub_system_id", "0"); + baseMapper.delete(wrapper); + //如果partTypeList不为空且size>0,说明新建部件时,多选框不为空,选择了部件类型 + if (partTypeIds != null && partTypeIds.size() > 0) { + //遍历partTypeId + for (String partTypeId : partTypeIds) { + Part part = new Part(); + part.setDeviceDetailId(detailId); + part.setPartTypeId(partTypeId); + //插入part + baseMapper.insert(part); + } + } + return Result.ok(); + } + + //在设备型号结构树中新增部件(在设备型号下的子系统下) + @Override + public Result addPartBySubSystemId(String detailId, String subSystemId, List partTypeIds) { + //新增之前,先把之前选择过的部件删除,然后再根据多选框选择的部件添加进去 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("device_detail_id", detailId); + wrapper.eq("sub_system_id", subSystemId); + baseMapper.delete(wrapper); + //如果partTypeList不为空且size>0,说明新建部件时,多选框不为空,选择了部件类型 + if (partTypeIds != null && partTypeIds.size() > 0) { + //遍历选择的部件类型,获得partTypeId + for (String partTypeId : partTypeIds) { + Part part = new Part(); + part.setDeviceDetailId(detailId); + part.setSubSystemId(subSystemId); + part.setPartTypeId(partTypeId); + //插入part + baseMapper.insert(part); + } + } + return Result.ok(); + } + + //查询部件型号下关联的部件(在部件型号下而不在子系统下),用于回显 + @Override + public Result listPartTypeByDetailId(String detailId) { + /*根据部件型号id查出part表中device_detail_id = detailId且sub_system_id = 0的项, + 即属于部件型号而不属于子系统的项, 得到其part_type_id + */ + List partTypeIds = partMapper.listPartTypeIdByDetailId(detailId); + return Result.ok().data("partTypeIds", partTypeIds); + } + + //根据子系统id查询出下面关联的部件类型(回显) + @Override + public Result listPartTypeBySubSystemId(String subSystemId) { + /*根据子系统id查出part表中sub_system_id = subSystemId的项, + 即属于子系统的项, 得到其part_type_id + */ + List partTypeIds = partMapper.listPartTypeBySubSystemId(subSystemId); + return Result.ok().data("partTypeIds", partTypeIds); + } + + //根据设备型号id + 部件id删除部件 + @Override + public Result deleteByDetailIdAndPartId(String detailId, String partId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("device_detail_id", detailId); + wrapper.eq("sub_system_id", "0"); + wrapper.eq("id", partId); + return baseMapper.delete(wrapper) > 0 ? Result.ok() : Result.error(); + } + + //根据设备型号id + 子系统id + 部件id删除部件 + @Override + public Result deleteBySubSystemIdAndPartId(String detailId, String subSystemId, String partId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("device_detail_id", detailId); + wrapper.eq("sub_system_id", subSystemId); + wrapper.eq("id", partId); + return baseMapper.delete(wrapper) > 0 ? Result.ok() : Result.error(); + } + + //根据partId查询PartType用于回显 + @Override + public Result getPartTypeByPartId(String partId) { + //先根据partId查到partTypeId + Part part = baseMapper.selectById(partId); + String partTypeId = part.getPartTypeId(); + //后根据partTypeId查表的到PartType + PartType partType = partTypeService.getById(partTypeId); + return Result.ok().data("partType", partType); + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeDetailServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeDetailServiceImpl.java new file mode 100644 index 0000000..5401037 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeDetailServiceImpl.java @@ -0,0 +1,207 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.device.entity.*; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.device.mapper.PartTypeDetailMapper; +import com.cqu.device.service.PartTypeDetailService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.device.service.PartTypeGroupService; +import com.cqu.device.service.PartTypeService; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 部件型号 部件型号表 服务实现类 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Service +public class PartTypeDetailServiceImpl extends ServiceImpl implements PartTypeDetailService { + + @Autowired + private PartTypeService partTypeService; + + @Autowired + private PartTypeGroupService partTypeGroupService; + + @Autowired + private PartTypeDetailMapper partTypeDetailMapper; + + //查询部件类型、部件分组、部件型号的树形列表 + @Override + public List listPartDetail() { + //1.查询所有的部件类型 + List partTypes = partTypeService.list(null); + //2.查询所有的部件分组 + List partTypeGroups = partTypeGroupService.list(null); + //3.查询所有的部件型号 + List partTypeDetails = baseMapper.selectList(null); + +// //创建集合用于封装最终的数据 +// List partTypeVoList = new ArrayList<>(); +// +// for (PartType partType : partTypes) { +// //封装属于部件类型而不属于部件分组的部件型号 +// List detailVoListNot4Group = new ArrayList<>(); +// +// PartTypeVo partTypeVo = new PartTypeVo(); +// partTypeVo.setTypeId(partType.getId()); +// partTypeVo.setShowName(partType.getShowName()); +// partTypeVoList.add(partTypeVo); +// +// //封装类型分组 +// List partTypeGroupVoList = new ArrayList(); +// for (PartTypeGroup partTypeGroup : partTypeGroups) { +// PartTypeGroupVo partTypeGroupVo = new PartTypeGroupVo(); +// //判断类型分组的typeId是否和部件类型的id相同 +// if (partTypeGroup.getTypeId().equals(partType.getId())) { +// partTypeGroupVo.setTypeGroupId(partTypeGroup.getId()); +// partTypeGroupVo.setShowName(partTypeGroup.getShowName()); +// partTypeGroupVoList.add(partTypeGroupVo); +// } +// +// //封装部件型号(属于分组下的部件型号) +// List partTypeDetailVoList = new ArrayList<>(); +// for (PartTypeDetail partTypeDetail : partTypeDetails) { +// //判断部件型号的type_group_id是否和分组的id相同 +// if (partTypeDetail.getTypeGroupId().equals(partTypeGroup.getId())) { +// PartTypeDetailVo partTypeDetailVo = new PartTypeDetailVo(); +// partTypeDetailVo.setTypeDetailId(partTypeDetail.getId()); +// partTypeDetailVo.setShowName(partTypeDetail.getShowName()); +// partTypeDetailVoList.add(partTypeDetailVo); +// } +// } +// partTypeGroupVo.setChildren(partTypeDetailVoList); +// } +// +// //封装部件型号(属于类型下而不属于分组下的部件型号) +// List partTypeDetailVoList_1 = new ArrayList<>(); +// for (PartTypeDetail partTypeDetail : partTypeDetails) { +// //判断该型号是否直接在类型下,而不是在分组下 +// if (partTypeDetail.getTypeId().equals(partType.getId()) && "0".equals(partTypeDetail.getTypeGroupId())) { +// PartTypeDetailVo partTypeDetailVo = new PartTypeDetailVo(); +// partTypeDetailVo.setTypeDetailId(partTypeDetail.getId()); +// partTypeDetailVo.setShowName(partTypeDetail.getShowName()); +// partTypeDetailVoList_1.add(partTypeDetailVo); +// } +// } +// +// detailVoListNot4Group.addAll(partTypeDetailVoList_1); +// partTypeGroupVoList.addAll(detailVoListNot4Group); +// partTypeVo.setChildren(partTypeGroupVoList); +// } +// +// return partTypeVoList; + + return new commonDetailServiceImpl().tree(partTypes,partTypeGroups,partTypeDetails); + } + + //根据部件类型id查询所有部件型号(分页) + @Override + public Result listPartDetailByTypeId(String typeId, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_id", typeId); + wrapper.orderByAsc("gmt_create"); + baseMapper.selectPage(page, wrapper); + + List records = page.getRecords(); + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + } + + //根据部件分组id查询所有部件型号(分页) + @Override + public Result listPartDetailByGroupId(String groupId, Integer current, Integer size) { + Page page = new Page<>(current, size); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_group_id", groupId); + wrapper.orderByAsc("gmt_create"); + baseMapper.selectPage(page, wrapper); + + List records = page.getRecords(); + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + } + + //根据checkbox多选框批量删除部件型号 + @Override + public Result deleteDeviceDetailBatch(List detailList) { + List ids = new ArrayList<>(); + //遍历 + for (PartTypeDetail partTypeDetail : detailList) { + ids.add(partTypeDetail.getId()); //将需要删除的detail的id存入ids列表 + } + int count = baseMapper.deleteBatchIds(ids); + return count > 0 ? Result.ok() : Result.error(); + } + + /** + * 新建部件型号(基于部件类型id) + * @param typeId + * @param partTypeDetail + * @return + */ + @Override + public Result addPartDetailByTypeId(String typeId, PartTypeDetail partTypeDetail) { + String name = partTypeDetail.getName(); + String showName = partTypeDetail.getShowName(); + Integer count = partTypeDetailMapper.getCountByTypeId(typeId, name, showName); + if (count == 0) { + int insert = baseMapper.insert(partTypeDetail.setTypeId(typeId)); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建部件型号失败,标识或名称重复!"); + } + } + + /** + * 新建部件型号(基于部件类型id和部件分组id) + * @param typeId + * @param partTypeDetail + * @return + */ + @Override + public Result addPartDetailByTypeIdAndGroupId(String typeId, String groupId, PartTypeDetail partTypeDetail) { + String name = partTypeDetail.getName(); + String showName = partTypeDetail.getShowName(); + Integer count = partTypeDetailMapper.getCountByTypeIdAndGroupId(typeId, groupId, name, showName); + if (count == 0) { + partTypeDetail.setTypeId(typeId).setTypeGroupId(groupId); + int insert = baseMapper.insert(partTypeDetail); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建部件型号失败,标识或名称重复!"); + } + } + + /** + * 修改部件型号 + * @param partTypeDetail + * @return + */ + @Override + public Result updatePartDetail(PartTypeDetail partTypeDetail) { + String id = partTypeDetail.getId(); + String typeId = partTypeDetail.getTypeId(); + String groupId = partTypeDetail.getTypeGroupId(); + String name = partTypeDetail.getName(); + String showName = partTypeDetail.getShowName(); + Integer count = partTypeDetailMapper.getCountByTypeIdAndGroupIdExceptId(id, typeId, groupId, name, showName); + if (count == 0) { + int update = baseMapper.updateById(partTypeDetail); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改部件型号失败,标识或名称重复!"); + } + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeGroupServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeGroupServiceImpl.java new file mode 100644 index 0000000..9a52e7b --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeGroupServiceImpl.java @@ -0,0 +1,97 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cqu.base.exception.PhmException; +import com.cqu.device.entity.DeviceTypeDetail; +import com.cqu.device.entity.PartTypeDetail; +import com.cqu.device.entity.PartTypeGroup; +import com.cqu.device.mapper.PartTypeGroupMapper; +import com.cqu.device.service.PartTypeDetailService; +import com.cqu.device.service.PartTypeGroupService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

+ * 部件分组 部件分组 服务实现类 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Service +public class PartTypeGroupServiceImpl extends ServiceImpl implements PartTypeGroupService { + + @Autowired + private PartTypeDetailService partTypeDetailService; + + //删除部件分组(需要判断下面是否还有部件型号) + @Override + public Result deletePartGroupById(String id) { + //判断分组下是否还有型号 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_group_id", id); + int count = partTypeDetailService.count(wrapper); + + //若分组下没有型号,则可以删除,反之则不能 + if (count == 0) { + return baseMapper.deleteById(id) > 0 ? Result.ok() : Result.error(); + } else { + throw new PhmException(20001, "此部件分组下还有内容,删除失败!"); + } + } + + //根据部件分组id查询部件类型id,解决小BUG + @Override + public String getTypeIdByGroupId(String groupId) { + PartTypeGroup partTypeGroup = baseMapper.selectById(groupId); + String typeId = partTypeGroup.getTypeId(); + return typeId; + } + + /** + * 新建部件分组 + * @param typeId + * @param typeGroupId + * @param partTypeGroup + * @return + */ + @Override + public Result addPartGroupByTypeId(String typeId, String typeGroupId, PartTypeGroup partTypeGroup) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("type_id", typeId); + wrapper.eq("parent_group_id", typeGroupId); + wrapper.eq("show_name", partTypeGroup.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + partTypeGroup.setTypeId(typeId).setParentGroupId(typeGroupId); + int insert = baseMapper.insert(partTypeGroup); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建部件分组失败,名称重复!"); + } + } + + /** + * 修改部件分组 + * @param partTypeGroup 部件分组实体 + * @return + */ + @Override + public Result updatePartGroup(PartTypeGroup partTypeGroup) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne("id", partTypeGroup.getId()); + wrapper.eq("type_id", partTypeGroup.getTypeId()); + wrapper.eq("parent_group_id", partTypeGroup.getParentGroupId()); + wrapper.eq("show_name", partTypeGroup.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int update = baseMapper.updateById(partTypeGroup); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改部件分组失败,名称重复!"); + } + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeServiceImpl.java new file mode 100644 index 0000000..a7f4fa5 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/PartTypeServiceImpl.java @@ -0,0 +1,115 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cqu.base.exception.PhmException; +import com.cqu.device.entity.PartType; +import com.cqu.device.entity.PartTypeDetail; +import com.cqu.device.entity.PartTypeGroup; +import com.cqu.device.mapper.PartTypeMapper; +import com.cqu.device.service.PartTypeDetailService; +import com.cqu.device.service.PartTypeGroupService; +import com.cqu.device.service.PartTypeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 部件类型表 部件类型表 服务实现类 + *

+ * + * @author testjava + * @since 2022-04-15 + */ +@Service +public class PartTypeServiceImpl extends ServiceImpl implements PartTypeService { + + @Autowired + private PartTypeGroupService partTypeGroupService; + + @Autowired + private PartTypeDetailService partTypeDetailService; + + @Autowired + private PartTypeMapper partTypeMapper; + + //删除部件类型(需要判断部件类型下是否还有部件分组、部件型号) + @Override + public Result deletePartTypeById(String id) { + //先根据id查出该类型下面是否还有分组或型号 + QueryWrapper groupWrapper = new QueryWrapper<>(); + groupWrapper.eq("type_id", id); + int count1 = partTypeGroupService.count(groupWrapper); + + QueryWrapper detailWrapper = new QueryWrapper<>(); + detailWrapper.eq("type_id", id); + int count2 = partTypeDetailService.count(detailWrapper); + + //当该类型下,分组和型号的数量都为0,才能删除该类型 + if (count1 == 0 && count2 == 0) { + return baseMapper.deleteById(id) > 0 ? Result.ok() : Result.error(); + } else { //该类型下,只要有分组或型号,都不能删除成功 + throw new PhmException(20001, "此部件类型下还有内容,删除失败!"); + } + } + + //根据部件类型id获得部件类型名称 + @Override + public String getPartTypeShowNameById(String id) { + String name = partTypeMapper.getPartTypeShowNameById(id); + return name; + } + + //查询所有部件类型(用于设备型号结构树中关联部件)(分页) + @Override + public Result listAllParts(Integer current, Integer size) { + Page page = new Page<>(current, size); + baseMapper.selectPage(page, null); + List records = page.getRecords(); + long total = page.getTotal(); + return Result.ok().data("records", records).data("total", total); + } + + /** + * 新建部件类型 + * @param partType 部件类型实体 + * @return + */ + @Override + public Result addPartType(PartType partType) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("name", partType.getName()) + .or() + .eq("show_name", partType.getShowName()); + Integer count = baseMapper.selectCount(wrapper); + if (count == 0) { + int insert = baseMapper.insert(partType); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建部件类型失败,标识或名称重复!"); + } + } + + /** + * 修改部件类型 + * @param partType 部件类型实体 + * @return + */ + @Override + public Result updatePartType(PartType partType) { + String name = partType.getName(); + String showName = partType.getShowName(); + String id = partType.getId(); + Integer count = partTypeMapper.getCountById(id, name, showName); + if (count == 0) { + int update = baseMapper.updateById(partType); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改部件类型失败,标识或名称重复!"); + } + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/SubSystemServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/SubSystemServiceImpl.java new file mode 100644 index 0000000..0a1b301 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/SubSystemServiceImpl.java @@ -0,0 +1,83 @@ +package com.cqu.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cqu.base.exception.PhmException; +import com.cqu.device.entity.Part; +import com.cqu.device.entity.SubSystem; +import com.cqu.device.mapper.PartMapper; +import com.cqu.device.mapper.SubSystemMapper; +import com.cqu.device.service.SubSystemService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cqu.utils.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

+ * 子系统 子系统 服务实现类 + *

+ * + * @author testjava + * @since 2022-04-21 + */ +@Service +public class SubSystemServiceImpl extends ServiceImpl implements SubSystemService { + + @Autowired + private SubSystemMapper subSystemMapper; + @Autowired + private PartMapper partMapper; + + //根据子系统id获得设备型号id + @Override + public Result getDetailIdBySubSystemId(String id) { + SubSystem subSystem = baseMapper.selectById(id); + String datailId = subSystem.getDeviceDetailId(); + return Result.ok().data("datailId", datailId); + } + + //删除子系统, 先查找该子系统下还有没有部件,如果有,则删除失败 + @Override + public Result deleteSubSystemById(String id) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("sub_system_id", id); + Integer count = partMapper.selectCount(queryWrapper); + if (count == 0) { + return baseMapper.deleteById(id) > 0 ? Result.ok() :Result.error(); + } else { + throw new PhmException(20001, "此子系统下还有内容,删除失败!"); + } + } + + //新建子系统(根据设备型号id) + @Override + public Result addSubSystem(String detailId, SubSystem subSystem) { + //判断是否有重复的子系统标识或名字 + String name = subSystem.getName(); + String showName = subSystem.getShowName(); + Integer count = subSystemMapper.getCount("0", detailId, name, showName); + if (count == 0) { + int insert = baseMapper.insert(subSystem); + return insert == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("新建子系统失败,标识或名称重复!"); + } + } + + //修改子系统 + @Override + public Result updateSubSystem(SubSystem subSystem) { + //判断是否有重复的子系统标识或名称 + String id = subSystem.getId(); //子系统id + String detailId = subSystem.getDeviceDetailId(); + String name = subSystem.getName(); + String showName = subSystem.getShowName(); + Integer count = subSystemMapper.getCount(id, detailId, name, showName); + if (count == 0) { + int update = baseMapper.updateById(subSystem); + return update == 0 ? Result.error() : Result.ok(); + } else { + return Result.error().message("修改子系统失败,标识或名称重复!"); + } + } +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/commonDetailServiceImpl.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/commonDetailServiceImpl.java new file mode 100644 index 0000000..70b8e65 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/commonDetailServiceImpl.java @@ -0,0 +1,91 @@ +package com.cqu.device.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.cqu.device.entity.DeviceType; +import com.cqu.device.entity.DeviceTypeDetail; +import com.cqu.device.entity.DeviceTypeGroup; +import com.cqu.device.entity.vo.GroupNodeVo; +import com.cqu.device.entity.vo.NodeVo; +import com.cqu.device.entity.vo.TypeNodeVo; +import com.cqu.device.entity.vo.commonGroupVo; +import com.google.common.collect.Lists; +import org.springframework.beans.BeanUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * @author xiaolong + * @Description + * @create 2022-04-26-19:01 + */ +public class commonDetailServiceImpl{ + + public List tree(List typeList, List groupList, List detailList){ + + // 设备分组 + ArrayList groupNodeVos = new ArrayList<>(); + HashMap groupHashMap = new HashMap<>(); + for (G TypeGroup : groupList) { + GroupNodeVo groupNodeVo = new GroupNodeVo(); + BeanUtils.copyProperties(TypeGroup, groupNodeVo); + groupNodeVos.add(groupNodeVo); + groupHashMap.put(groupNodeVo.getId(), groupNodeVo); + } + + // 设备类型 + ArrayList typeNodeVos = new ArrayList<>(); + HashMap typeHashMap = new HashMap<>(); + for (T deviceType : typeList) { + TypeNodeVo typeNodeVo = new TypeNodeVo(); + BeanUtils.copyProperties(deviceType, typeNodeVo); + typeNodeVos.add(typeNodeVo); + typeHashMap.put(typeNodeVo.getId(), typeNodeVo); + } + + // 设备 + ArrayList nodeVos = new ArrayList<>(); + for (D deviceTypeDetail : detailList) { + NodeVo nodeVo = new NodeVo(); + BeanUtils.copyProperties(deviceTypeDetail, nodeVo); + nodeVos.add(nodeVo); + } + +// System.err.println(nodeVos); +// System.err.println(groupNodeVos); +// System.err.println(typeNodeVos); +// System.err.println(nodeVos); + + + // 组递归 + recurDevice recurTree = new recurDevice(groupNodeVos,typeNodeVos); + recurTree.buildTree(); +// System.out.println(groupNodeVos); +// System.out.println(typeNodeVos); + + + // 将设备挂在类型或者组上 + for (NodeVo nodeVo : nodeVos) { + if (!nodeVo.getTypeGroupId().equals("0")) { + if (groupHashMap.get(nodeVo.getTypeGroupId()).getChildren() == null) { + groupHashMap.get(nodeVo.getTypeGroupId()).setChildren(new ArrayList<>()); + } + // 挂载到组上 + groupHashMap.get(nodeVo.getTypeGroupId()).getChildren().add(nodeVo); + } else { + // 挂载到类型上 + typeHashMap.get(nodeVo.getTypeId()).getChildren().add(nodeVo); + } + } + System.out.println("typeNodeVos"+typeNodeVos); + List typeNodeVo = Lists.transform(typeNodeVos, s -> (TypeNodeVo) s); + +// String typeJsonOutput = JSONArray.toJSONString(typeNodeVos); +// System.err.println(typeJsonOutput); + return typeNodeVo; + + } + + +} diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/recurDevice.java b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/recurDevice.java new file mode 100644 index 0000000..7a5e7d8 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/main/java/com/cqu/device/service/impl/recurDevice.java @@ -0,0 +1,48 @@ +package com.cqu.device.service.impl; + + +import com.cqu.device.entity.vo.commonGroupVo; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author xiaolong + * @Description 树形结构 + * @create 2022-04-22-11:25 + */ +public class recurDevice { + private List GroupNodeVoList; + private List parentNodeVoList; + + + public recurDevice(ArrayList GroupNodeVoList, List parentNodeVoList) { + this.GroupNodeVoList = GroupNodeVoList; + this.parentNodeVoList = parentNodeVoList; + } + + + //建立树形结构 + public void buildTree() { + List treeGroupNodeVos = new ArrayList(); + for (commonGroupVo rootGroupNodeVoNode : this.parentNodeVoList) { + rootGroupNodeVoNode = buildChildTree(rootGroupNodeVoNode); + treeGroupNodeVos.add(rootGroupNodeVoNode); + } + } + + //递归,建立子树形结构 + private commonGroupVo buildChildTree(commonGroupVo gNode) { + //改变了名称: chilGroupNodeVos => childGroupNodeVos + List childGroupNodeVos = new ArrayList(); + for (commonGroupVo GroupNodeVoNode : GroupNodeVoList) { + // 第一个条件用于组中组的递归;第二个条件用于第一次从设备类型到子组 + if (GroupNodeVoNode.getParentGroupId().equals(gNode.getId()) || GroupNodeVoNode.getTypeId().equals(gNode.getId()) && gNode.getParentGroupId() == null && GroupNodeVoNode.getParentGroupId().equals("0")) { + childGroupNodeVos.add(buildChildTree(GroupNodeVoNode)); + } + } + gNode.setChildren(childGroupNodeVos); + return gNode; + } +} + diff --git a/phm_rotate/backend/phm_backend/service/service_device/src/test/java/com/cqu/test/CodeGenerator.java b/phm_rotate/backend/phm_backend/service/service_device/src/test/java/com/cqu/test/CodeGenerator.java new file mode 100644 index 0000000..ebcffb1 --- /dev/null +++ b/phm_rotate/backend/phm_backend/service/service_device/src/test/java/com/cqu/test/CodeGenerator.java @@ -0,0 +1,77 @@ +package com.cqu.test; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.rules.DateType; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import org.junit.Test; + +/** + * @author + * @since 2018/12/13 + */ +public class CodeGenerator { + + @Test + public void run() { + + // 1、创建代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 2、全局配置 + GlobalConfig gc = new GlobalConfig(); + String projectPath = System.getProperty("user.dir"); + gc.setOutputDir("F:\\JavaDevelop\\workspace_idea\\phm_parent\\service\\service_device" + "/src/main/java"); + gc.setAuthor("ranmaoqi"); + gc.setOpen(false); //生成后是否打开资源管理器 + gc.setFileOverride(false); //重新生成时文件是否覆盖 + gc.setServiceName("%sService"); //去掉Service接口的首字母I + gc.setIdType(IdType.ID_WORKER_STR); //主键策略 + gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型 + gc.setSwagger2(true);//开启Swagger2模式 + + mpg.setGlobalConfig(gc); + + // 3、数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl("jdbc:mysql://localhost:3306/phm_device?serverTimezone=GMT%2B8"); + dsc.setDriverName("com.mysql.cj.jdbc.Driver"); + dsc.setUsername("root2"); + dsc.setPassword("root2"); + dsc.setDbType(DbType.MYSQL); + mpg.setDataSource(dsc); + + // 4、包配置 + PackageConfig pc = new PackageConfig(); + pc.setParent("com.cqu"); + pc.setModuleName("device"); //模块名 + pc.setController("controller"); + pc.setEntity("entity"); + pc.setService("service"); + pc.setMapper("mapper"); + mpg.setPackageInfo(pc); + + // 5、策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setInclude("device_area", "device_group", "device"); //表名 + strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略 +// strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀 + + strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略 + strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 + + strategy.setRestControllerStyle(true); //restful api风格控制器 + strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符 + + mpg.setStrategy(strategy); + + + // 6、执行 + mpg.execute(); + } +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DataSamplingFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DataSamplingFunction.java new file mode 100644 index 0000000..3031e0c --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DataSamplingFunction.java @@ -0,0 +1,29 @@ +package com.cqu.warehouse.realtime.app.func; + +import com.cqu.warehouse.realtime.utils.DownSamplingUtils; +import org.apache.flink.streaming.api.functions.async.AsyncFunction; +import org.apache.flink.streaming.api.functions.async.ResultFuture; + +import java.util.Collections; +import java.util.List; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.app.func + *@Author: markilue + *@CreateTime: 2023-05-23 16:21 + *@Description: TODO 进行数据降维的异步Function + *@Version: 1.0 + */ +public abstract class DataSamplingFunction implements AsyncFunction, DownSampleFunction { + + @Override + public void asyncInvoke(T obj, ResultFuture resultFuture) throws Exception { + List rawData = getDownSamplingData(obj); + int freq = getFreq(obj); + int threshold = getThreshold(obj); + List downSampleData = DownSamplingUtils.downSamplingData(rawData, freq, threshold); + setDownSamplingData(obj,downSampleData); + resultFuture.complete(Collections.singleton(obj)); + } +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimAsyncFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimAsyncFunction.java new file mode 100644 index 0000000..bd8eb54 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimAsyncFunction.java @@ -0,0 +1,74 @@ +package com.cqu.warehouse.realtime.app.func; + + +import com.alibaba.fastjson.JSONObject; +import com.cqu.warehouse.realtime.utils.DimUtils; +import com.cqu.warehouse.realtime.utils.ThreadPoolUtils; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.functions.async.ResultFuture; +import org.apache.flink.streaming.api.functions.async.RichAsyncFunction; +import org.apache.hadoop.tracing.SpanReceiverInfo; + +import java.util.Collections; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.app.func + *@Author: markilue + *@CreateTime: 2023-05-18 20:15 + *@Description: TODO 维度关联方法 + *@Version: 1.0 + */ +public abstract class DimAsyncFunction extends RichAsyncFunction implements DimJoinFunction { + + ExecutorService threadPool; + String tableName; + + public DimAsyncFunction(String tableName) { + this.tableName = tableName; + } + + @Override + public void open(Configuration parameters) throws Exception { + threadPool = ThreadPoolUtils.getThreadPool(); + } + + //异步调用主方法 + @Override + public void asyncInvoke(T obj, ResultFuture resultFuture) { + + threadPool.submit( + new Runnable() { + @Override + public void run() { + try { + long start = System.currentTimeMillis(); + //选取指定字段 + String key = getKey(obj); + //根据对应的id查询出需要关联的对象 + JSONObject joinObj = DimUtils.getDimInfoWithCache(tableName, key); + //让当前对象与查询出的对象进行异步关联 + if (joinObj != null) { + join(obj, joinObj); + } +// System.out.println(joinObj); + + long end = System.currentTimeMillis(); + System.out.println("维度异步查询耗时:" + (end - start) + "毫秒"); + resultFuture.complete(Collections.singleton(obj)); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("维度查询发生异常"); + } + + + } + } + ); + + } + + +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimFunction.java new file mode 100644 index 0000000..994c5cd --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimFunction.java @@ -0,0 +1,95 @@ +package com.cqu.warehouse.realtime.app.func; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.cqu.warehouse.realtime.common.PHMConfig; +import org.apache.flink.api.common.functions.MapFunction; +import org.apache.flink.api.common.functions.RichMapFunction; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.functions.ProcessFunction; +import org.apache.flink.util.Collector; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.Set; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.app.func + *@Author: markilue + *@CreateTime: 2023-05-20 18:18 + *@Description: TODO 燃机维度信息添加 + *@Version: 1.0 + */ +public class DimFunction extends RichMapFunction { + + private Connection connection; + + @Override + public void open(Configuration parameters) throws Exception { + Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); + connection = DriverManager.getConnection(PHMConfig.PHOENIX_SERVER); + connection.setSchema(PHMConfig.HBASE_SCHEMA); + } + + @Override + public JSONObject map(JSONObject jsonObject) throws Exception { + String dimTable = "dim_" + jsonObject.getString("table"); + String type = jsonObject.getString("type"); + //注意:maxwell可以对历史数据进行处理,这时候type为bootstrap-insert,这时候需要修复 + if (type.equals("bootstrap-insert")) { + type = "insert"; + jsonObject.put("type", type); + } + + JSONObject data = jsonObject.getJSONObject("data"); + Set colName = data.keySet(); + //如果说 读取到的配置信息是维度数据的话,那么提前在Hbase中创建维度表 + if ("insert".equals(type)) { + //如果是维度数据且是insert;update就没必要在创建 + existTable(dimTable, colName); + } + + jsonObject.put("sinkTable", dimTable); + return jsonObject; + } + + private void existTable(String dimTable, Set colName) { + StringBuilder sql = new StringBuilder("create table if not exists " + dimTable + "("); + int i = 0; + for (String col : colName) { + if ("id".equals(col)) { + sql.append(col + " varchar primary key"); + } else { + sql.append(col + " varchar"); + } + if (i++ < colName.size() - 1) { + sql.append(","); + } + } + sql.append(")"); + PreparedStatement preparedStatement = null; + String executeSQL = sql.toString(); + System.out.println(executeSQL); + try { + preparedStatement = connection.prepareStatement(executeSQL); + preparedStatement.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } finally { + if (preparedStatement == null) { + try { + preparedStatement.close(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + } + + + } + +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimJoinFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimJoinFunction.java new file mode 100644 index 0000000..06d3b0c --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimJoinFunction.java @@ -0,0 +1,21 @@ +package com.cqu.warehouse.realtime.app.func; + +import com.alibaba.fastjson.JSONObject; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.app.func + *@Author: markilue + *@CreateTime: 2023-05-22 14:40 + *@Description: + * TODO 维度关联接口:定义好维度关联需要的方法 + * 1)获取关联字段 + * 2)进行维度关联 + *@Version: 1.0 + */ +public interface DimJoinFunction { + + public String getKey(T inObj); + + public void join(T inObj, JSONObject joinObj) throws Exception; +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimSink.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimSink.java new file mode 100644 index 0000000..9de8bb1 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DimSink.java @@ -0,0 +1,83 @@ +package com.cqu.warehouse.realtime.app.func; + + +import com.alibaba.fastjson.JSONObject; +import com.cqu.warehouse.realtime.common.PHMConfig; +import com.cqu.warehouse.realtime.utils.DimUtils; +import com.cqu.warehouse.realtime.utils.RedisUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.functions.sink.RichSinkFunction; +import org.apache.flink.streaming.api.functions.sink.SinkFunction; +import redis.clients.jedis.Jedis; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.app.func + *@Author: markilue + *@CreateTime: 2023-05-20 19:09 + *@Description: TODO 维度数据表写回Hbase + *@Version: 1.0 + */ +public class DimSink extends RichSinkFunction { + + private Connection connection; + + @Override + public void open(Configuration parameters) throws Exception { + Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); + connection = DriverManager.getConnection(PHMConfig.PHOENIX_SERVER); + connection.setSchema(PHMConfig.HBASE_SCHEMA); + } + + @Override + public void invoke(JSONObject jsonObject, Context context) { + String sinkTable = jsonObject.getString("sinkTable"); + JSONObject data = jsonObject.getJSONObject("data"); + String sql = generateSQL(sinkTable, data); + String id = data.getString("id"); + + try (PreparedStatement preparedStatement = connection.prepareStatement(sql);){ + + preparedStatement.executeUpdate(); + //TODO 注意:提交事务(MQSQL默认自动提交事务,Phoenix默认是手动提交事务) + connection.commit(); + } catch (SQLException e) { + e.printStackTrace(); + throw new RuntimeException("向phoenix中插入维度数据失败"); + } + + + String type = jsonObject.getString("sinkTable"); + + if("update".equals(type)||"delete".equals(type)){ + DimUtils.deleteCache(sinkTable,id); + } + } + + public String generateSQL(String sinkTable, JSONObject data) { + + + List col = new ArrayList<>(); + List value = new ArrayList<>(); + + for (Map.Entry entry : data.entrySet()) { + col.add(entry.getKey()); + value.add(entry.getValue()); + } + + String sql = "upsert into " + sinkTable + "(" + StringUtils.join(col, ",") + ") values ('" + StringUtils.join(value, "','") + "')"; + System.out.println(sql); + + + return sql; + } +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DownSampleFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DownSampleFunction.java new file mode 100644 index 0000000..492779b --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/DownSampleFunction.java @@ -0,0 +1,22 @@ +package com.cqu.warehouse.realtime.app.func; + +import java.util.List; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.app.func + *@Author: markilue + *@CreateTime: 2023-05-23 16:31 + *@Description: TODO 降采样接口需要实现的方法 + *@Version: 1.0 + */ +public interface DownSampleFunction { + + void setDownSamplingData(T obj, List downSampleData); + + int getFreq(T obj); + + int getThreshold(T obj); + + List getDownSamplingData(T obj); +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/FFTSamplingAsyncFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/FFTSamplingAsyncFunction.java new file mode 100644 index 0000000..7ade903 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/FFTSamplingAsyncFunction.java @@ -0,0 +1,68 @@ +package com.cqu.warehouse.realtime.app.func; + +import com.alibaba.fastjson.JSONObject; +import com.cqu.warehouse.realtime.utils.ThreadPoolUtils; +import com.cqu.warehouse.realtime.utils.TransformUtils; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.datastream.AsyncDataStream; +import org.apache.flink.streaming.api.functions.async.AsyncFunction; +import org.apache.flink.streaming.api.functions.async.ResultFuture; +import org.apache.flink.streaming.api.functions.async.RichAsyncFunction; +import org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction; +import org.apache.flink.streaming.api.windowing.windows.TimeWindow; +import org.apache.flink.util.Collector; +import org.apache.flink.util.OutputTag; +import org.apache.lucene.util.RamUsageEstimator; + +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.concurrent.ExecutorService; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.app.func + *@Author: markilue + *@CreateTime: 2023-05-24 17:46 + *@Description: + * TODO 计算数据的FFT 异步版 + * 使用ProcessFunction实现 目前已经没有问题 + *@Version: 1.0 + */ +public abstract class FFTSamplingAsyncFunction extends RichAsyncFunction { + + ExecutorService executorService; + + @Override + public void open(Configuration parameters) throws Exception { + executorService = ThreadPoolUtils.getThreadPool(); + } + + @Override + public void asyncInvoke(T t, ResultFuture resultFuture) throws Exception { + + executorService.submit( + new Runnable() { + @Override + public void run() { + //需要注意:这里需要换一个对象,不能使用原来的对象 + T obj = t; + List transformData = getTransformData(obj); + List fft = TransformUtils.fft(transformData); + setTransformData(obj, fft); +// System.out.println("fftDataSize:"+ObjectSizeCalculator.getObjectSize(t)); + System.out.println("fftDataSize:" + RamUsageEstimator.humanSizeOf(obj)); + resultFuture.complete(Collections.singleton(obj)); + } + } + ); + + } + + protected abstract void setTransformData(T obj, List fft); + + protected abstract List getTransformData(T obj); + + +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/FFTSamplingFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/FFTSamplingFunction.java new file mode 100644 index 0000000..0d9f2a6 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/FFTSamplingFunction.java @@ -0,0 +1,79 @@ +package com.cqu.warehouse.realtime.app.func; + +import com.alibaba.fastjson.JSONObject; +import com.cqu.warehouse.realtime.utils.TransformUtils; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction; +import org.apache.flink.streaming.api.windowing.windows.TimeWindow; +import org.apache.flink.util.Collector; +import org.apache.flink.util.OutputTag; +import org.apache.lucene.util.RamUsageEstimator; + +import java.util.Date; +import java.util.List; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.app.func + *@Author: markilue + *@CreateTime: 2023-05-24 17:46 + *@Description: + * TODO 计算数据的FFT + * 使用ProcessFunction实现 目前已经没有问题 + *@Version: 1.0 + */ +public class FFTSamplingFunction extends ProcessWindowFunction, TimeWindow> { + + OutputTag fftTag; + + public FFTSamplingFunction(OutputTag FFTTag) { + this.fftTag = FFTTag; + } + + @Override + public void process(Tuple2 key, ProcessWindowFunction, TimeWindow>.Context context, Iterable iterable, Collector collector) throws Exception { + JSONObject obj = null; + long start = context.window().getStart(); + long end = context.window().getEnd(); + System.out.println("key:" + key + " start:" + new Date(start) + " end:" + new Date(end) + " size: " + RamUsageEstimator.humanSizeOf(iterable)); + //参考:https://zhuanlan.zhihu.com/p/534376156 + //经过测试:1000个点一发:iterable500M + //10000个点一发:iterable370M + for (JSONObject eachObj : iterable) { + if (obj == null) { + obj = eachObj; + } else { + obj.getJSONArray("x").addAll(eachObj.getJSONArray("x")); + } + } + System.out.println("mergeSize:"+RamUsageEstimator.humanSizeOf(obj)); + collector.collect(obj); + String s = fftTransform(obj).toJSONString(); +// System.out.println("fft后:"+s); + context.output(fftTag, s); +// System.out.println("fft回收成功:"+s); + } + + //窗口结束时触发 + public JSONObject fftTransform(JSONObject t){ + JSONObject obj = t; + List transformData = getTransformData(obj); + List fft = TransformUtils.fft(transformData); + setTransformData(obj, fft); +// System.out.println("fftDataSize:"+ObjectSizeCalculator.getObjectSize(t)); + System.out.println("fftDataSize:" + RamUsageEstimator.humanSizeOf(obj)); + + return obj; + + } + + protected void setTransformData(JSONObject jsonObject, List fft) { + jsonObject.put("x", fft); + } + + protected List getTransformData(JSONObject jsonObject) { + return jsonObject.getJSONArray("x").toJavaList(Double.class); + } + + +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/GasWideProcessFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/GasWideProcessFunction.java new file mode 100644 index 0000000..d6d650c --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/GasWideProcessFunction.java @@ -0,0 +1,46 @@ +package com.cqu.warehouse.realtime.app.func; + +import com.alibaba.fastjson.JSONObject; +import org.apache.flink.api.common.state.ValueState; +import org.apache.flink.api.common.state.ValueStateDescriptor; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction; +import org.apache.flink.streaming.api.windowing.windows.TimeWindow; +import org.apache.flink.util.Collector; + +import java.util.Date; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.func + *@Author: markilue + *@CreateTime: 2023-05-18 17:26 + *@Description: TODO 燃机的维度关联 大宽表的function + *@Version: 1.0 + */ +public class GasWideProcessFunction extends ProcessWindowFunction { + + @Override + public void process(String key, ProcessWindowFunction.Context context, Iterable iterable, Collector collector) throws Exception { + //窗口结束触发方法,iterable里面存放窗口里的所有数据,存放在内存中,所以不适合太多 + JSONObject json = null; + for (JSONObject jsonObject : iterable) { + String tagName = jsonObject.getString("tagName"); + Double value = jsonObject.getDouble("value"); + if (json == null) { + jsonObject.remove("tagName"); + jsonObject.remove("value"); + jsonObject.put(tagName, value); + json = jsonObject; + } else { + json.put(tagName, value); + } + } + long start = context.window().getStart(); + long end = context.window().getEnd(); + System.out.println("key:"+key+" start:"+new Date(start)+" end:"+new Date(end)+" size: "+json.size()); + + collector.collect(json); + } +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/MyDeserializerSchemaFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/MyDeserializerSchemaFunction.java new file mode 100644 index 0000000..ca89582 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/MyDeserializerSchemaFunction.java @@ -0,0 +1,57 @@ +package com.cqu.warehouse.realtime.app.func; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.ververica.cdc.debezium.DebeziumDeserializationSchema; +import io.debezium.data.Envelope; +import org.apache.flink.api.common.typeinfo.TypeInformation; +import org.apache.flink.util.Collector; +import org.apache.kafka.connect.data.Field; +import org.apache.kafka.connect.data.Struct; +import org.apache.kafka.connect.source.SourceRecord; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.func + *@Author: markilue + *@CreateTime: 2023-05-18 14:03 + *@Description: TODO 自定义反序列化器 + *@Version: 1.0 + */ +public class MyDeserializerSchemaFunction implements DebeziumDeserializationSchema { + @Override + public void deserialize(SourceRecord sourceRecord, Collector collector) throws Exception { + Struct value = (Struct) sourceRecord.value(); + Struct source = value.getStruct("source"); + Struct afterData = value.getStruct("after"); + + JSONObject jsonObject = new JSONObject(); + + jsonObject.put("database", source.getString("db")); + jsonObject.put("table", source.getString("table")); + + //类型 + String type = Envelope.operationFor(sourceRecord).toString().toLowerCase();//内部通过枚举类,将op转为对应的string + if (type.equals("create")) { + type = "insert"; + } + jsonObject.put("type", type); + + JSONObject dataObject = new JSONObject(); + if (afterData != null) { + for (Field field : afterData.schema().fields()) { + String fieldName = field.name(); + Object fieldValue = afterData.get(fieldName); + dataObject.put(fieldName, fieldValue); + } + } + jsonObject.put("data", dataObject); + collector.collect(jsonObject.toJSONString()); + } + + @Override + public TypeInformation getProducedType() { + return TypeInformation.of(String.class); + } + + +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/TableProcessFunction.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/TableProcessFunction.java new file mode 100644 index 0000000..8f80db7 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/TableProcessFunction.java @@ -0,0 +1,90 @@ +package com.cqu.warehouse.realtime.app.func; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.cqu.warehouse.realtime.entity.GasCodeProcess; +import org.apache.flink.api.common.state.BroadcastState; +import org.apache.flink.api.common.state.MapStateDescriptor; +import org.apache.flink.api.common.state.ReadOnlyBroadcastState; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.functions.co.BroadcastProcessFunction; +import org.apache.flink.util.Collector; +import org.apache.flink.util.OutputTag; + +import java.text.SimpleDateFormat; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.func + *@Author: markilue + *@CreateTime: 2023-05-18 14:32 + *@Description: TODO 数据脱敏function实现类 + *@Version: 1.0 + */ +public class TableProcessFunction extends BroadcastProcessFunction { + + private MapStateDescriptor mapStateDescriptor; + + private OutputTag outTag; + + private SimpleDateFormat sdf; + + @Override + public void open(Configuration parameters) throws Exception { + sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + } + + public TableProcessFunction(OutputTag outTag, MapStateDescriptor mapStateDescriptor) { + this.mapStateDescriptor = mapStateDescriptor; + this.outTag = outTag; + } + + + @Override + public void processElement(JSONObject jsonObject, BroadcastProcessFunction.ReadOnlyContext readOnlyContext, Collector collector) throws Exception { + ReadOnlyBroadcastState gasTableState = readOnlyContext.getBroadcastState(mapStateDescriptor); + + String area = jsonObject.getString("area"); + String tagName = jsonObject.getString("tagName"); + + + GasCodeProcess truth1 = gasTableState.get(area); + if (truth1 != null) { + jsonObject.put("area", truth1.getTag_desc()); + } + GasCodeProcess truth = gasTableState.get(tagName); + if (truth != null) { +// jsonObject.put("originaltagName", truth.getDecode_value()); + jsonObject.put("tagName", truth.getDecode_value()); +// jsonObject.put("tag_desc", truth.getTag_desc()); +// jsonObject.put("unit", truth.getUnit()); +// jsonObject.put("is_calculated", truth.getIs_calculated()); +// readOnlyContext.output(outTag, jsonObject.toJSONString()); + } + + //添加上时间戳,方便后面注册水位线 + String time = jsonObject.getString("realtime"); + long ts = sdf.parse(time).getTime(); + jsonObject.put("ts",ts); + + collector.collect(jsonObject); + + } + + @Override + public void processBroadcastElement(String s, BroadcastProcessFunction.Context context, Collector collector) throws Exception { + BroadcastState gasTableProcessState = context.getBroadcastState(mapStateDescriptor); + + JSONObject jsonObject = JSON.parseObject(s); + + JSONObject data = jsonObject.getJSONObject("data"); + GasCodeProcess gasTableProcess = JSON.parseObject(jsonObject.getString("data"), GasCodeProcess.class); + if (data != null) { + String encode_value = data.getString("encode_value"); + if (encode_value != null) { + gasTableProcessState.put(encode_value, gasTableProcess);// + } + } + + } +} diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/format.json b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/format.json new file mode 100644 index 0000000..92deb29 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/format.json @@ -0,0 +1,26528 @@ +{ + "TC-004-5A": 16.388888465085376, + "TC-004-3A": 16.174404180794955, + "TC-004-1A": 17.399999618530273, + "IPT.NLP": 6798.819, + "T5TC8": 14.574999809265137, + "IPT.NHPS": 1.33200000000033, + "NPT": 2999.291, + "TC-004-12A": 15.495934943823764, + "TC-004-10A": 14.625051892983416, + "TC-004-16A": 18.715925347122052, + "company": "PENGBO", + "TC-004-14A": 18.189884806858995, + "TC-002A": 16.580334984418005, + "TC-002B": 14.649947725546857, + "T5TC6": 15.720535523506502, + "area": "TJ", + "realtime": "2023-01-01 00:00:05+00:00", + "TC-004-4A": 15.381883676474294, + "NHP_2": 0.0, + "NHP_1": 0.0, + "TE-405": 17.30650138501854, + "TC-004-2A": 16.914492427371442, + "TE-406": 12.75, + "IPT.NLPS": 1.62100000000009, + "gt_no": "PL19-3CEPB_C", + "TC-004-13A": 17.3510875862247, + "NPT_1": 0.0, + "NPT_2": 0.0, + "TC-004-11A": 14.899999618530273, + "NPT_3": 0.0, + "NPT_4": 0.0, + "SE-003E": 0.0, + "typeId": "PL19-3CEPB", + "TC-004-15A": 18.601334706973283, + "NLPCOR": 6964.0, + "time": "20230518171144", + "FI-7003A": 0.0, + "ts": 1672502405000 +} + + +{ + "GenExYAxisVib": 1.3521160539358485, + "GenExXAxisVib": 0.030277005878220582, + "T5TC9": 13.762499809265137, + "T5TC8": 14.574999809265137, + "PT-541": 0.2893644869327545, + "PT-542": 0.2544423043727875, + "PT-301": 3.7197840213775635, + "PT-302": 0.01945525035262108, + "PT-303": 0.013618679717183113, + "LubeDP_1": 0.4795, + "PT-305": 0.002509268932044506, + "T5TC1": 17.399999618530273, + "NHPS": 1.33200000000033, + "T5TC3": 16.174404180794955, + "T5TC2": 16.914492427371442, + "LFT": 13.777970314025879, + "T5TC5": 16.388888465085376, + "T5TC4": 15.381883676474294, + "PT-141": 0.0, + "T5TC7": 15.287857060382764, + "T5TC6": 15.720535523506502, + "TE-543": 25.590229885187, + "LFDP3": 0.0, + "AirInletDP": 0.4699, + "GFVlvPos": 0.03891034422752758, + "LFDP2": 0.6417040824890137, + "LFDP1": 0.1681240051984787, + "TE-142": 3.9642447746203593, + "TE-143": 6.919320775708184, + "TE-144": 3.6937499046325684, + "TE-541": 31.399999618530273, + "TE-542": 29.30980319622904, + "P2_2": 3.8415757444454357E-4, + "P2_1": 0.0, + "PT-651": 9.765625E-4, + "PT-652": 0.0015206909738481045, + "TankLevel": 552.1400756835938, + "typeId": "PL19-3CEPB", + "P2COR": 1.743, + "XT-004": 0.0, + "XT-001": 0.0, + "T5AVGCOR": 635.9, + "TankT": 39.29999923706055, + "PT-201": 0.041828788816928864, + "NLP": 6798.819, + "PT-202": 0.022629080340266228, + "GFT": 17.674999237060547, + "PT-203": 0.02175096981227398, + "TI-1535-AI1": 61.50103712081909, + "PT-601": 103.04540252685547, + "GenDrXAxisVib": 0.7065324326356252, + "LubeHaderPS": 0.0, + "PTB1XAxisVib": 0.034702058881521225, + "T1": 1.5, + "T7": 16.325344161037357, + "TE-601": 20.5, + "NHP_2": 0.0, + "LFFlow": 7.538909912109375, + "TE-602": 19.203675782556335, + "NLPS": 1.62100000000009, + "NHP_1": 0.0, + "HT-401": 0.0, + "T5AVg": 606.11875, + "POWER": 1.4162535526896438, + "EQURunningTime": 0.0, + "GPB1XAxisVib": 0.021722519971262955, + "PI-1501": 1726.3428649902344, + "TT-241": 14.210359573364258, + "TI-1535": 0.0, + "NPT_1": 0.0, + "NPT_2": 0.0, + "P15": 5.350193969206885E-4, + "NPT_3": 0.0, + "NPT_4": 0.0, + "NPT_5": 0.0, + "T15": 16.580334984418005, + "LFVlvPos": 0.019789973254470777, + "ZI-541": 0.527961231706043, + "LubeHaderP1": 0.009722140384837985, + "ZI-141": 5.949376106262207, + "ts": 1672502405000, + "XT-042": 230.22590306599935, + "XT-041": 222.02859895564615, + "HT-655": 37.097961738784214, + "TT-655": 8.921201508585364, + "TT-656": 2.641325143769306, + "HT-656": 48.680594845861194, + "GFFlow": 0.0, + "PT-342": 0.7079765796661377, + "TS1": 47.8, + "PT-103": 1.5402074131998233E-4, + "TC-002B": 14.649947725546857, + "area": "天津", + "realtime": "2023-01-01 00:00:05+00:00", + "GPB2XAxisVib": 0.13213856075384076, + "TT-301": 19.75046900291927, + "gt_no": "PL19-3CEPB_C", + "LubeReturnT4": 13.774999618530273, + "POWERCOR": 17.57, + "LubeReturnT2": 16.399999618530273, + "LubeReturnT3": 14.474655076023192, + "VE-401": 0.25278837216707567, + "LubeReturnT1": 16.799999237060547, + "XT-602": 10.64977370897929, + "XT-601": 7.845129648844401, + "NLPCOR": 6964.0, + "GFNozzleP": 0.01750973053276539, + "VE-402": 0.3067261383946364, + "FI-7003A": 0.0, + "XT-444": 1.6750426267584164, + "FI-7003B": 4665.285481770833, + "XT-443": 45.00442378882211, + "NU-STA-A": 0.0, + "XT-442": 0.21687513142824172, + "TE-653": 2.5999999046325684, + "TE-411": 16.889347404032016, + "XT-142": 0.003361384260157744, + "TE-654": 2.8260775385114054, + "TE-412": 16.174999237060547, + "XT-141": 5.064921343767613, + "TE-413": 16.46385730447558, + "T5TC10": 14.625051892983416, + "LT-541": 374.06939697265625, + "PI-1533": 10488.949951171875, + "TI-1501-AI1": 60.09032201766968, + "TE-651": 5.929999951521555, + "TE-652": 7.1476561546325685, + "PT-243": 0.8881018757820129, + "PT-002": 9.366126732857083E-5, + "NPT": 2999.291, + "PT-004": 0.010308037512004375, + "TI-1501": 0.0, + "AirInletDP_1": 0.0, + "PT-006": 0.0, + "AirInletDP_2": 0.0, + "PT-007": 0.008062498643994331, + "NHP": 8899.316, + "T5TC12": 15.495934943823764, + "TE-408": 12.582088929688325, + "T5TC11": 14.899999618530273, + "company": "PENGBO", + "T5TC14": 18.189884806858995, + "T5TC13": 17.3510875862247, + "LubeHaderP": 0.5440661, + "T5TC16": 18.715925347122052, + "NU-STO-FA": 0.0, + "T5TC15": 18.601334706973283, + "GFP0": 3.881516933441162, + "GenDrYAxisVib": 1.7166104729287326, + "LFNozzleP": 0.01945525035262108, + "P0": 0.0, + "TE-401": 33.90503839768159, + "P1": 0.0, + "LubeDT1": 44.3, + "TE-402": 33.09032756898087, + "P2": 1.767317, + "LubeDT2": 45.8, + "TE-403": 16.0, + "LubeDT3": 30.3, + "TE-404": 17.174999237060547, + "LubeReturnP": 0.0029182881116867065, + "TE-405": 17.30650138501854, + "NHPCOR": 9115.0, + "P5": 2.841948880814016E-4, + "NPTS": 0.122000000000298, + "TE-406": 12.75, + "TE-407": 12.274999618530273, + "T1_1": 10.0, + "NLP_1": 0.0, + "NLP_2": 0.0, + "LubeDT4": 27.8, + "GFDP1": 0.07133592665195465, + "T1_2": 10.585208142641932, + "T1_3": 10.274999618530273, + "LFP1": 0.006744488142430782, + "LFP0": 0.002677770098671317, + "time": "20230518171903", + "NPTCOR": 3072.0, + "RunningTime": 0.0, + "XT-542": 17.40686043103536, + "XT-541": 4.760690505238987 +} + +{ + "typeId": "PL19-3CEPB", + "ts": 1672502405000, + "area": "天津", + "realtime": "2023-01-01 00:00:05+00:00", + "gt_no": "PL19-3CEPB_C", + "company": "PENGBO", + "time": "20230518171903" +} + +//风电SCADA原始数据 +{ + "wt_no": 8, + "realtime": "2018-07-30 00:00:00", + "num_windspeed": 7.318091, + "num_gen_torque": 36.32, + "num_gearbox_sumptemp": 50.035297, + "num_gearbox_inletoiltemp": 47.73672, + "degree_winddirection": 172.95117, + "num_gearbox_coolingwatertemp": 42.06111, + "num_envtemp": 23.717888, + "num_gen_speed": 1516.0, + "num_gearbox_inletpress": 2.621296, + "num_gearbox_pumpoutletpress": 5.004181, + "num_engineroom_temp": 32.029892, + "num_rotorspeed": 11.877784, + "num_activepower": 678.0, + "num_engineroom_vibration_x": 0.007827997, + "num_engineroom_vibration_y": -0.0063325884, + "time": "20230522160208", + "windfarm": "jingbian_siqi", + "num_gearbox_highspeedshaft_front_temp": 60.51593, + "num_gen_max_windingtemp": 78.60004, + "num_gearbox_highspeedshaft_rear_temp": 62.51814 +} + +//风电SCADA添加维度信息之后的数据 +{ + "num_gen_torque": 39.46, + "num_gearbox_sumptemp": 50.000015, + "num_gearbox_inletoiltemp": 50.43372, + "production": "20000", + "degree_winddirection": 169.71074, + "num_envtemp": 23.794512, + "num_gen_speed": 1581.0, + "rated_efficiency": "96", + "rated_load": "26521", + "num_gearbox_pumpoutletpress": 5.10184, + "rated_speed": "1731", + "num_engineroom_temp": 32.000015, + "num_rotorspeed": 12.354458, + "num_activepower": 753.0, + "num_engineroom_vibration_x": 0.006851387, + "rated_air_volume": "9397", + "num_engineroom_vibration_y": -0.005844307, + "num_gearbox_highspeedshaft_front_temp": 59.30092, + "num_gen_max_windingtemp": 79.11553, + "num_gearbox_highspeedshaft_rear_temp": 62.39875, + "wt_no": 8, + "realtime": "2018-07-30 00:11:00", + "num_windspeed": 7.5500317, + "rated_power": "1090", + "type_id": "3", + "rated_press": "16036", + "num_gearbox_coolingwatertemp": 40.426754, + "num_gearbox_inletpress": 2.6798916, + "location": "靖边四期", + "time": "20230525201243", + "windfarm": "jingbian_siqi" +} + + + +//cms合并之后的数据 +{ + "wt_no": 5, + "realtime": "20180618003450", + "g": 3, + "freq": "25600", + "x": [ + -0.029078494757, + -0.33095228672, + -0.12124221772, + 0.553512275219, + -0.158036053181, + 0.268739402294, + -0.638222515583, + 0.233140587807, + -0.173265621066, + 0.467218101025, + -0.372010827065, + -0.136630430818, + 0.343256533146, + 0.008932195604, + 0.613946974277, + -0.472766160965, + -0.019138045609, + -0.505356311798, + 0.853407621384, + -0.066301003098, + 0.146147549152, + -0.280819863081, + -0.525986969471, + 0.366588324308, + -0.036731801927, + 0.330040037632, + -0.333122253418, + 0.452384650707, + -0.136009842157, + 0.328189402819, + -0.454961061478, + 0.29191878438, + -0.122065745294, + 0.233512058854, + 0.149526923895, + -0.290793389082, + 0.145229548216, + -0.252845942974, + 0.292725294828, + -0.293026179075, + 0.164610385895, + -0.344593524933, + 0.09048871696, + 0.463503748178, + -0.362560898066, + 0.496681928635, + -0.567240059376, + 0.213604450226, + -0.480576515198, + 0.476601272821, + -0.282229065895, + 0.166787996888, + -0.141303136945, + 0.41615948081, + 0.599322319031, + -0.260483384132, + 0.191646501422, + -0.511845052242, + 0.482503861189, + -0.076130375266, + 0.165461018682, + -0.426607728004, + 0.157976552844, + 0.330171465874, + -0.309290081263, + 0.411923438311, + -0.5438144207, + 0.552554249763, + -0.261836290359, + 0.209453493357, + -0.334464430809, + 0.109030462801, + -0.098268143833, + 0.260095775127, + 0.390022963285, + -0.479398995638, + 0.079886943102, + -0.419823646545, + 0.316686332226, + -0.229425027966, + 0.128140717745, + -0.231022894382, + 0.181133702397, + 0.464348077774, + -0.369807809591, + 0.309649050236, + -0.228748321533, + 0.42059019208, + -0.307453542948, + 0.551860630512, + -0.484827667475, + 0.137057825923, + -0.428699761629, + 0.458087861538, + -0.271428048611, + -0.380198806524, + 0.289344578981, + -0.342718571424, + 0.667070865631, + 0.184046164155, + 0.313873440027, + -0.475974261761, + 0.110225185752, + -0.371238410473, + 0.529460251331, + -0.126595854759, + 0.417800039053, + -0.690335512161, + 0.168511897326, + 0.412033706903, + -0.325204968452, + 0.330751925707, + -0.462101310492, + 0.357438057661, + -0.105153165758, + 0.331811517477, + -0.326660573483, + 0.199789389968, + -0.236286595464, + 0.369768738747, + 0.551734089851, + -0.334055691957, + 0.145272552967, + -0.42711275816, + 0.283298969269, + -0.250242620707, + 0.482341378927, + -0.501518547535, + 0.263728201389, + -0.313754707575, + 0.222955942154, + 0.30739402771, + -0.404732853174, + 0.229817166924, + -0.316539168358, + 0.628141760826, + -0.197051793337, + 0.196546405554, + -0.527596592903, + 0.348038882017, + 0.511522233486, + -0.284629642963, + 0.194880187511, + -0.660540997982, + 0.418407738209, + -0.143235087395, + 0.348967909813, + -0.623169898987, + 0.225823789835, + -0.156107872725, + -0.277396410704, + 0.212103530765, + -0.366513311863, + 0.482186555862, + -3.05579102E-4, + 0.244089260697, + -0.549581468105, + 0.017119785771, + -0.426618784666, + 0.207134187222, + 0.349347949028, + -0.181335419416, + 0.337992459536, + -0.378702223301, + 0.341935575008, + -0.282293856144, + 0.331603199244, + -0.332905173302, + 0.252420842648, + -0.273250550032, + 0.258531659842, + -0.25084656477, + -0.326528340578, + 0.1918656528, + -0.222104266286, + 0.400067985058, + -0.340025126934, + 0.053426798433, + -0.263475805521, + 0.446889549494, + -0.398472875357, + -0.373658239841, + 0.345264911652, + -0.556693375111, + 0.708959341049, + -0.19674693048, + 0.298976629972, + -0.762985229492, + 0.410083264112, + -0.202059403062, + -8.81749787E-4, + 0.230139061809, + -0.713303864002, + 0.377048164606, + -0.041203379631, + 0.490294128656, + -0.500940918922, + 0.095139734447, + -0.252010464668, + -0.01398898568, + 0.076010033488, + 0.436469227076, + -0.481215417385, + 0.191250905395, + -0.380820065737, + 0.331293135881, + 0.42034214735, + -0.42621037364, + 0.347148120403, + -0.495266079903, + 0.158605933189, + -0.213528573513, + 0.178913995624, + -0.297323614359, + 0.211846366525, + -0.005010046996, + 0.359516054392, + -0.344754844904, + -0.058473855257, + -0.300740122795, + 0.226580739021, + 0.341035962105, + -0.449769616127, + 0.006112853996, + -0.600252568722, + 0.809677839279, + -0.160817101598, + 0.196927338839, + 0.244967475533, + -0.606265842915, + 0.501715421677, + -0.16649505496, + 0.223989248276, + -0.489673882723, + 0.508738934994, + -0.156036004424, + 0.350254148245, + 0.411829829216, + -0.722376227379, + 0.079148091376, + -0.042920552194, + 0.296198576689, + -0.496229439974, + 0.405724197626, + -0.259050071239, + 0.312453061342, + -0.259913951159, + 0.134070888162, + 0.375253260136, + -0.258389502764, + 0.39026081562, + -0.279319673777, + 0.138711556792, + -0.424706071615, + 0.355331778526, + 0.589181900024, + -0.05017413944, + 0.148984849453, + -0.46645206213, + 0.276159822941, + -0.035826288164, + 0.536329507828, + -0.345894128084, + 0.078729122877, + -0.394608438015, + 0.757433354855, + -0.226453125477, + 0.137089565396, + 0.100375629961, + -0.479825377464, + 0.47748067975, + -0.137546136975, + 0.206563860178, + -0.365759342909, + 0.442045688629, + -0.050418421626, + 0.235932826996, + -0.433775544167, + -0.577944397926, + 0.477026462555, + -0.012101998553, + 0.196010485291, + -0.568921327591, + 0.306714445353, + -0.284332126379, + 0.428109645844, + -0.494183629751, + 0.361444056034, + -0.174799963832, + 0.294963985682, + 0.376574754715, + -0.289258956909, + 0.030703162774, + -0.312231510878, + 0.453447759151, + -0.123975381255, + 0.353027641773, + -0.216050878167, + -0.054524820298, + -0.263231426477, + -0.068875737488, + 0.209946990013, + -0.050608161837, + 0.444378107786, + -0.442881375551, + 0.144137263298, + -0.506614148617, + 0.491727977991, + -0.271631062031, + 0.144119501114, + -0.368415087461, + 0.430553048849, + -0.232071042061, + -0.028384163976, + 0.170193716884, + -0.326988011599, + 0.511266827583, + -0.147369399667, + 0.176426142454, + -0.481418311596, + 0.332495927811, + -0.026494117454, + -0.199116438627, + 0.200938552618, + -0.556364715099, + 0.429237723351, + -0.143518000841, + 0.145672440529, + -0.482182085514, + 0.140158683062, + -0.249938219786, + 0.1606233567, + 0.363459289074, + -0.245477378368, + 0.281194627285, + -0.306648284197, + 0.346022158861, + -0.445820629597, + 0.121122993529, + -0.374612122774, + 0.489571869373, + -0.170974999666, + 0.198893159628, + -0.375596374273, + -0.371745347977, + 0.078449144959, + -0.190787792206, + 0.406823307276, + -0.325668632984, + -0.087461367249, + -0.461575567722, + 0.293660074472, + -0.311341196299, + -0.481546700001, + 0.139293789864, + -0.38714364171, + 0.418158352375, + -0.147188410163, + 0.173821881413, + -0.336148887873, + 0.469759732485, + -0.135301634669, + 0.422448903322, + -0.755888402462, + 0.320868998766, + -0.416776508093, + 0.131361857057, + 0.074648007751, + -0.239327937365, + 0.260330438614, + -0.111533388495, + 0.401247262955, + -0.287294685841, + 0.171042770147, + -0.376011252403, + -0.04062563926, + 0.568513572216, + -0.152525275946, + 0.532582521439, + -0.499803364277, + 0.463852524757, + -0.335416823626, + 0.385360687971, + -0.479748129845, + 0.040160607547, + -0.194858461618, + -0.3914719522, + 0.431780397892, + -0.172445014119, + 0.219153508544, + -0.263881474733, + 0.399859786034, + -0.292548894882, + 0.144238635898, + -0.337858051062, + 0.33768722415, + 0.436181992292, + -0.177840158343, + 0.115516148508, + -0.090343400836, + -0.218661412597, + -0.369625627995, + 0.578981697559, + -0.104463905096, + 0.29586815834, + -0.653020560741, + 0.342526853085, + -0.214382275939, + 0.235472023487, + -0.327397018671, + 0.078607395291, + 0.265963166952, + -0.279221743345, + 0.294304102659, + -0.619070768356, + 0.435149252415, + -0.473715662956, + 0.279672712088, + -0.156390830874, + 0.136589288712, + -0.136000961065, + -0.40850007534, + 0.515323102474, + -0.261266976595, + 0.374851077795, + -0.168348610401, + 0.109973587096, + -0.191388368607, + 0.109903723001, + 0.29610016942, + -0.528380930424, + 0.109186694026, + -0.160792261362, + 0.544470131397, + -0.230264618993, + 0.048103056848, + -0.182372733951, + 0.344608426094, + -0.064256884158, + -0.010341443121, + -0.450179100037, + -0.315451800823, + 0.522907793522, + 0.00847531762, + 0.273418158293, + -0.660255551338, + 0.053934209049, + -0.451828241348, + 0.271998226643, + -0.350194185972, + 0.091889753938, + -0.241332903504, + -0.193588808179, + 0.36039724946, + -0.31486427784, + 0.357817262411, + -0.303738445044, + 0.471354484558, + -0.124062202871, + 0.205018207431, + -0.477118819952, + -0.547948181629, + 0.390642881393, + -0.447975039482, + 0.333715856075, + -0.403279215097, + 0.319347441196, + -0.248574465513, + 0.267708599567, + 0.427544206381, + -0.288976073265, + 0.244994148612, + -0.286292999983, + 0.597565412521, + -0.336551219225, + 0.277812480927, + -0.226803213358, + 0.430476427078, + -0.120056718588, + 0.142060950398, + -0.552424073219, + 0.382368147373, + -0.05380025506, + 0.33389672637, + 0.376160979271, + -0.3459649086, + 0.117020249367, + -0.130180954933, + 0.599907457829, + -0.305445611477, + 0.416717737913, + -0.369554698467, + 0.033157918602, + 0.566483616829, + -0.61248511076, + 0.213445141912, + -0.365889966488, + 0.514775574207, + -0.237466931343, + -0.13971221447, + -0.05823238194, + 0.303656727076, + -0.437560498714, + 0.542901515961, + -0.40175268054, + 0.237126395106, + 0.450896322727, + -0.416107773781, + 0.180507063866, + -0.236822798848, + 0.334592998028, + -0.330331206322, + 0.207037165761, + -0.379604846239, + 0.324769377708, + -0.344569981098, + 0.158084288239, + 0.165339842439, + -0.387277722359, + 0.382418304682, + -0.126261666417, + 0.102941043675, + -0.373728960752, + 0.522181808949, + -0.207928672433, + 0.091232977808, + -0.347655713558, + 0.153319865465, + -0.095192849636, + 0.107018396258, + 0.139414399862, + -0.348564893007, + 0.378407865763, + -0.153319507837, + 0.191747874022, + -0.592983424664, + 0.103788115084, + -0.283550143242, + 0.19641238451, + 0.286277651787, + -0.442783117294, + 0.202279061079, + -0.639319121838, + 0.42347317934, + -0.032509062439, + 0.482608228922, + -0.541419863701, + -0.238775745034, + 0.182866230607, + -0.170170962811, + 0.698588788509, + -0.48782813549, + 0.19948874414, + -0.582925677299, + 0.559163033962, + -0.304402470589, + 0.122698545456, + -0.245523929596, + -0.434871912003, + 0.677606940269, + -0.298726052046, + 0.342146277428, + -0.539886415005, + 0.709338486195, + -0.136722669005, + 0.312583565712, + -0.415457993746, + 0.34863820672, + -0.126153334975, + 0.178117200732, + 0.384994745255, + -0.521056950092, + 0.324090570211, + -0.103555746377, + 0.515537977219, + -0.390784412622, + 0.224359929562, + -0.485599994659, + 0.271433442831, + -0.035704918206, + 0.236087054014, + -0.213088780642, + 0.246320322156, + 0.386512339115, + -0.281103163958, + 0.388433218002, + -0.538570046425, + 0.111936606467, + -0.497301518917, + 0.472383916378, + -0.248176172376, + 0.013864484616, + 0.320543527603, + -0.498647391796, + 0.397169858217, + -0.367194771767, + 0.181423902512, + -0.321458131075, + 0.366908311844, + 0.278123319149, + 0.389809370041, + -0.230170354247, + 0.016422735527, + -0.342314243317, + 0.342788398266, + 0.381747633219, + -0.108280219138, + 0.141655758023, + -0.319535821676, + 0.178203359246, + -0.16299700737, + 0.162378266454, + -0.212964490056, + -0.383389681578, + 0.431192904711, + -0.169746354222, + 0.266693592072, + -0.497992962599, + 0.345283597708, + -0.24366787076, + 0.384681433439, + -0.417106091976, + -0.015404863283, + -0.417261332273, + 0.200666099787, + 0.345179617405, + -0.183590367436, + 0.256792575121, + -0.38613986969, + 0.450577110052, + -0.301928848028, + 0.289733350277, + -0.429439008236, + 0.155463710427, + 0.579043805599, + -0.336137920618, + 0.359780967236, + -0.639056622982, + 0.284427195787, + -0.451301336288, + 0.473871827126, + -0.286324858665, + -0.317388355732, + -0.246055051684, + 0.621906876564, + -0.30020943284, + -0.002912328346, + 0.059645429254, + -0.684911727905, + 0.599073112011, + -9.96581512E-4, + 0.343540430069, + -0.592369019985, + 0.204310774803, + -0.245534449816, + 0.093701124191, + -0.295925110579, + -0.328602015972, + 0.412930548191, + -0.01393221505, + 0.326504379511, + -0.512643277645, + 0.138925522566, + -0.151260897517, + 0.23618555069, + 0.428242325783, + -0.145554736257, + 0.233069613576, + -0.416168421507, + 0.263752907515, + -0.46304449439, + 0.517960965633, + -0.41807988286, + 0.412761956453, + -0.27309897542, + 0.192462518811, + -0.375151216984, + -0.357290774584, + 0.270837903023, + -0.145529583097, + 0.632436692715, + -0.196443974972, + 0.136848554015, + -0.200692787766, + 0.413564145565, + -0.109821937978, + -0.521752357483, + 0.204269528389, + -0.54967969656, + 0.540420472622, + -0.207651391625, + 0.284737080336, + -0.249574869871, + 0.370407938957, + -0.104056864977, + -0.172028928995, + 0.032222222537, + -0.503584265709, + 0.319799244404, + -0.0520446226, + -0.05477174744, + 0.167664423585, + -0.051220729947, + -0.321958720684, + -0.157164782286, + 0.461797952652, + 0.044459328055, + 0.261268883944, + -0.393125116825, + 0.136720836163, + -0.277557343245, + 0.259057044983, + -0.245750442147, + 0.289948105812, + -0.583904445171, + 0.163726821542, + -0.153316661716, + 0.219370231032, + -0.332414329052, + -0.258123397827, + 0.213888466358, + -0.129298985004, + 0.482860833406, + -0.266397625208, + -0.162329092622, + 0.055008064955, + 0.548299252987, + -0.137551918626, + 0.235963359475, + -0.464658677578, + 0.441174656153, + -0.18647775054, + -0.449412882328, + 0.130248084664, + -0.500886380672, + 0.414556086063, + -0.106374412775, + 0.212570205331, + -0.419871121645, + 0.344152629375, + 0.690597057343, + -0.20988227427, + 0.4138854146, + -0.36842250824, + 0.443590223789, + 0.002581460401, + 0.565744638443, + -0.563661575317, + 0.208056971431, + -0.410819202662, + 0.110081784427, + 0.424223214388, + -0.371293514967, + 0.335664689541, + -0.382374286652, + 0.311430960894, + -0.179533019662, + 0.355194866657, + -0.29391759634, + 0.331522166729, + -0.073864340782, + 0.312792152166, + -0.332022249699, + -0.057590380311, + 0.291549801826, + -0.142662465572, + 0.47056299448, + -0.333243817091, + 0.022026810795, + -0.410105198622, + 0.41387245059, + -0.154521211982, + 0.089818954468, + 0.1146318838, + -0.298613071442, + 0.53212338686, + -0.612216413021, + -0.15112760663, + -0.611400485039, + 0.31915268302, + -0.059662476182, + 0.184213384986, + -0.353023707867, + -0.510718524456, + 0.300554335117, + -0.007141815498, + 0.3370873034, + -0.281768471003, + 0.30792888999, + -0.320025682449, + 0.186920642853, + 0.28069037199, + -0.191543117166, + 0.123735539615, + -0.220759928226, + 0.114281468093, + -0.259327799082, + 0.011509581469, + -0.303467512131, + -0.191366761923, + -0.062329713255, + 0.223788335919, + -0.113000936806, + 0.246717721224, + -0.271191269159, + -0.139479845762, + 0.415112644434, + 0.069637104869, + 0.43717443943, + -0.452130258083, + 0.169953644276, + -0.388280332088, + 0.428350925446, + -0.06840891391, + 0.052032869309, + -0.418289870024, + 0.303179591894, + 0.402608603239, + -0.184078544378, + 0.058654695749, + -0.484527885914, + 0.42033842206, + -0.217048093677, + 0.475767463446, + -0.316011279821, + 0.306193053722, + 0.480678856373, + -0.062350347638, + 0.246124759316, + -0.727918148041, + 0.128826722503, + -0.323827296495, + 0.640162229538, + -0.210846766829, + 0.393267959356, + -0.226228117943, + 0.20693911612, + -0.145020931959, + 0.177428886294, + -0.137230023742, + 0.214638546109, + 0.263020128012, + -0.203082442284, + 0.125539347529, + -0.49018111825, + 0.24214027822, + -0.268796205521, + 0.346460968256, + -0.375418335199, + -0.095174737275, + 0.16331872344, + -0.165571466088, + 0.557892978191, + -0.139156654477, + 0.200608372688, + -0.304217040539, + 0.463180422783, + -0.144051253796, + -0.310326397419, + 0.036655221134, + -0.618154287338, + 0.370812535286, + -0.069465786219, + 0.273610413074, + -0.514444112778, + 0.379300653934, + -0.151677295566, + 0.347545206547, + -0.323659777641, + 0.399333328009, + -0.070965319872, + 0.344392627478, + 0.268539100885, + -0.185052067041, + 0.1744877249, + -0.354510128498, + 0.088475450873, + -0.611585736275, + 0.131098538637, + -0.374298155308, + 0.013546305709, + 0.391210436821, + -0.289893478155, + 0.103040322661, + -0.378830432892, + 0.447806894779, + -0.010421739891, + 0.54432708025, + -0.256536275148, + -0.090060509741, + -0.344861418009, + 0.130523666739, + 0.348870903254, + -0.609258294106, + 0.210782960057, + -0.360303491354, + 0.638783097267, + -0.102301955223, + -0.147325441241, + 0.072857141495, + 0.040600955486, + -0.509767234325, + 0.050142139196, + 0.578684508801, + -0.464486896992, + 0.782767653465, + -0.571078896523, + 0.875027000904, + -0.224765241146, + 0.147380322218, + -0.747823894024, + 0.293102383614, + -0.399641156197, + 0.234259560704, + -0.321532428265, + 0.192542180419, + 0.342054486275, + -0.201318502426, + 0.534338355064, + -0.702933847904, + 0.507909417152, + -0.19875434041, + 0.632618010044, + -0.081439480186, + 0.322273343801, + -0.278020113707, + -0.521223366261, + 0.609017550945, + 0.026326263323, + 0.323247402906, + -0.446551442146, + -0.044916685671, + -0.350300073624, + 0.40057721734, + -0.161963805556, + -0.279392659664, + 0.087692476809, + -0.30919060111, + 0.541067302227, + -0.225167304277, + 0.202878922224, + -0.413206458092, + 0.43047401309, + -0.011537998915, + 0.260948747396, + -0.590080797672, + 0.534251332283, + -0.067744001746, + -0.2394413203, + 0.001967489021, + -0.506259799004, + 0.097262643278, + 0.246165573597, + 0.260773360729, + -0.586396932602, + 0.094381988049, + -0.283424049616, + -0.073358006775, + 0.440191328526, + -0.487667113543, + 0.290130734444, + -0.269250720739, + 0.380135238171, + -0.348996251822, + -0.044972050935, + -0.300741791725, + 0.265950232744, + 0.370949745178, + -0.009763727896, + 0.199991285801, + -0.373120129108, + 0.227277547121, + -0.171527326107, + 0.484265059233, + -0.438424259424, + -0.2332778126, + -0.395728260279, + -0.381792128086, + 0.350646555424, + -0.269861608744, + 0.256163805723, + -0.286024600267, + 0.47429355979, + -0.105000607669, + 0.05683716014, + -0.767210125923, + 0.276244312525, + -0.108429782093, + 0.290706455708, + 0.307390868664, + -0.550757288933, + 0.28391507268, + -0.42401316762, + 0.446214973927, + -0.467384040356, + 0.534593641758, + -0.129213258624, + 0.28047990799, + 0.426662772894, + -0.285619854927, + -0.320832997561, + -0.523906648159, + 0.297312319279, + -0.205825269222, + 0.735099613667, + -0.41135174036, + 0.193422958255, + -0.409455686808, + 0.300226688385, + -0.226163938642, + -0.430340737104, + 0.103493973613, + -0.433699160814, + 0.565596163273, + -0.134141609073, + 0.509504973888, + -0.49241155386, + 0.441319704056, + -0.54282194376, + 0.579851508141, + -0.058248449117, + -0.397581875324, + 0.822456121445, + -0.935534894466, + 0.719885408878, + -0.279459506273, + 0.159489840269, + -0.693939566612, + 0.492516160011, + -0.302225828171, + 0.112270742655, + 0.212677821517, + -0.785045027733, + 0.561084449291, + -0.352518260479, + 0.543693840504, + -0.623315811157, + 0.394430607557, + -0.205399170518, + 0.463175535202, + -0.558160066605, + 0.269477427006, + -0.258845210075, + 0.284572154284, + 0.430330693722, + -0.700712859631, + 0.102233558893, + -0.44303882122, + 0.428742349148, + -0.311731815338, + 0.308955490589, + -0.281131088734, + 0.276797443628, + 0.334271341562, + -0.254547804594, + 0.35929402709, + -0.326836884022, + 0.592142105103, + -0.299500197172, + 0.096648909152, + -0.526045680046, + 0.096927993, + -0.132688611746, + -0.195918083191, + 0.554729938507, + -0.287660866976, + 0.087365932763, + -0.100923597813, + 0.332031130791, + -0.288999170065, + -0.522363364697, + 0.103921622038, + -0.554990410805, + 0.386501967907, + -0.184406474233, + 0.65897578001, + -0.47515642643, + 0.373609781265, + -0.366919398308, + 0.125930696726, + -0.454634547234, + 0.524100363255, + -0.027525959536, + -0.17129842937, + 0.365011245012, + -0.684375524521, + 0.353381544352, + -0.163604348898, + 0.394709646702, + -0.587945759296, + 0.210031569004, + -0.512494027615, + 0.579446852207, + -0.086450867355, + 0.498025685549, + -0.295129686594, + -0.509339988232, + 0.506843268871, + -0.409583747387, + 0.056052029133, + -0.03058292903, + 0.288247644901, + -0.352441996336, + 0.226082280278, + -0.340726822615, + 0.558969914913, + -0.289980381727, + -0.254714846611, + 0.408466100693, + -0.205261722207, + 0.494625598192, + -0.276998639107, + 0.171271234751, + -0.531160473824, + 0.120757557452, + -0.216755136847, + 0.113369397819, + -0.127201706171, + 0.05738857016, + 0.36037760973, + -0.423031181097, + 0.123295292258, + -0.551593184471, + 0.464285045862, + -0.11430221796, + 0.338693320751, + -0.262634783983, + -0.325968563557, + 0.356216013432, + -0.055797506124, + 0.338600635529, + -0.617354691029, + 0.20413812995, + -0.272148191929, + 0.448779851198, + -0.231289833784, + 0.200573459268, + -0.36836245656, + 0.205184936523, + 0.331440657377, + -0.306497693062, + 0.217904299498, + -0.50530987978, + 0.139842242002, + -0.604668617249, + 0.319517344236, + -0.45714867115, + 0.028374066576, + 0.581195890903, + -0.016840506345, + 0.319333165884, + -0.467196136713, + 0.09282309562, + -0.420285910368, + 0.526243269444, + -0.176152527332, + 0.035233478993, + -0.449765652418, + 0.394906103611, + -0.169312015176, + 0.02332932502, + -0.521015822887, + -0.667556703091, + 0.686765134335, + -0.154012829065, + 0.151178956032, + -0.714635312557, + 0.269768953323, + 0.396581202745, + 0.062789708376, + 0.439892470837, + -0.397902727127, + 0.224358394742, + -0.4285338521, + 0.373652130365, + -0.478846669197, + 0.090225242078, + -0.230671837926, + 0.566082656384, + -0.54024887085, + 0.171860232949, + -0.392507404089, + -0.361538171768, + 0.521492481232, + -0.309238880873, + 0.441099762917, + -0.428853064775, + 0.479264557362, + 0.040222723037, + 0.451175093651, + -0.377718567848, + -0.642572820187, + 0.214090719819, + -0.237631812692, + 0.560311019421, + -0.212012514472, + 0.068940259516, + -0.470996022224, + 0.25360429287, + 0.403567671776, + 0.367668569088, + -0.183866739273, + 0.221500113606, + -0.449834048748, + 0.382763445377, + 0.495123147964, + -0.177269369364, + 0.266467690468, + -0.46555134654, + 0.41768604517, + -0.246206387877, + 0.359290063381, + -1.603691577911, + 0.399470210075, + -0.355529844761, + 0.282975971699, + 0.62538087368, + -0.292387634516, + 0.22043158114, + -0.445421904325, + 0.285901963711, + -0.358051210642, + 0.208155304193, + -0.345441222191, + 0.343597352505, + 0.385914176702, + -0.169493064284, + 0.351585000753, + -0.618138194084, + 0.539374053478, + -0.332904309034, + 0.483933478594, + -0.330254733562, + 0.023633923382, + -0.23648712039, + 0.271230280399, + 0.433255255222, + -0.305683940649, + 0.199901401997, + -0.295760989189, + 0.502488791943, + -0.329485177994, + 0.141174435616, + -0.622796714306, + 0.388241380453, + -0.15771882236, + -0.254999399185, + 0.201593920588, + -0.686521589756, + 0.44180944562, + -0.117270804942, + 0.067094743252, + -0.589591324329, + 0.036192763597, + -0.077343329787, + 0.349254071712, + 0.389759719372, + -0.509349822998, + 0.242624342442, + -0.299433916807, + 0.306314945221, + -0.417300969362, + 0.309839427471, + -0.176457867026, + 0.319816380739, + 0.468123793602, + -0.289381235838, + 0.117284916341, + -0.59838539362, + 0.289237290621, + -0.548031270504, + 0.121020615101, + -0.351912379265, + 0.250418066978, + -0.282182067633, + 0.287136226892, + 0.316592097282, + -0.391842365265, + 0.368546158075, + -0.024492530152, + 0.647943615913, + -0.08942784369, + 0.14205236733, + -0.406533867121, + 0.583084821701, + -0.121208056808, + -0.480448693037, + -0.047375552356, + -0.722867488861, + 0.575832009315, + -0.175795331597, + 0.112268403172, + -0.274879932404, + 0.161114916205, + 0.39641931653, + 0.360097616911, + -0.353277683258, + -0.387536495924, + 0.139904662967, + -0.022949626669, + -0.043994482607, + -0.283412128687, + 0.350356906652, + -0.445464104414, + 0.600164055824, + -0.132128298283, + 0.205084964633, + -0.508576750755, + 0.018799552694, + -0.42501026392, + 0.413980931044, + 0.664052426815, + -0.39237344265, + 0.245448455215, + -0.518631994724, + 0.188798621297, + -0.175866380334, + 0.337057203054, + -0.251765668392, + -0.457888990641, + 0.339961618185, + -0.266995757818, + 0.679922044277, + -0.548029720783, + 0.134370550513, + -0.34188362956, + 0.638081967831, + -0.158638656139, + 0.071239605546, + -0.625872850418, + 0.120508350432, + -0.414759606123, + 0.216595754027, + -0.203684449196, + -0.517034590244, + 0.311067670584, + -0.078420944512, + 0.389058381319, + -0.341347396374, + 0.408679813147, + -0.231820166111, + 0.292932212353, + -0.439192712307, + 0.299070268869, + -0.067573882639, + -0.071925483644, + 0.348818749189, + -0.462366044521, + 0.256545066833, + -0.637919187546, + 0.447514414787, + -0.220431610942, + 0.241610556841, + 0.300543636084, + -0.380914986134, + 0.519193649292, + -0.427822560072, + 0.629148840904, + -0.290894657373, + 0.54431450367, + -0.503288269043, + 0.565210998058, + -0.467325329781, + -0.161301791668, + 0.367896139622, + -0.751109600067, + 0.373966783285, + -0.350992530584, + 0.614321887493, + -0.410855054855, + 0.448902398348, + -0.382274001837, + -0.453824102879, + 0.28900244832, + -0.550582110882, + 0.530035316944, + -0.365756958723, + 0.426242679358, + -0.553958237171, + 0.63925921917, + -0.174871191382, + 0.135218724608, + -0.593271553516, + -0.891780614853, + 0.30480915308, + -0.221877455711, + 0.341647088528, + -0.636214256287, + 0.413268893957, + -0.217193409801, + 0.607646644115, + -0.412611275911, + 0.180223450065, + -0.379839241505, + -0.483318388462, + 0.421980053186, + -0.319947779179, + 0.638391137123, + -0.468263536692, + -0.335456460714, + -0.269331842661, + 0.328869044781, + -0.637970209122, + 0.433536857367, + -0.381776213646, + 0.168956071138, + -0.301484018564, + 0.386869192123, + 0.260986477137, + -0.473341107368, + 0.202887684107, + -0.336766242981, + 0.647564768791, + 0.027583805844, + -0.344465196133, + -0.708481252193, + 0.349242299795, + -0.455571353436, + -0.204280987382, + 0.170712739229, + -0.530544161797, + 0.645352363586, + -0.138102889061, + 0.209692686796, + -0.649115264416, + 0.21062707901, + 0.005761478096, + -0.070001810789, + 0.539196789265, + -0.407178461552, + 0.233656823635, + -0.097730845213, + 0.32702383399, + -0.510899782181, + 0.241959199309, + -0.405165195465, + 0.313973128796, + -0.326613008976, + 0.310993671417, + -0.410126775503, + -0.450593531132, + 0.348360329866, + -0.305093556643, + 0.402856737375, + -0.276395052671, + 0.456891983747, + -0.356855720282, + 0.54325979948, + -0.488263458014, + 0.149300709367, + 0.406386375427, + -0.040191512555, + 0.731349408627, + -0.326384931803, + 0.343104660511, + -0.656684815884, + 0.513360261917, + -0.38135766983, + 0.136151224375, + -0.458531320095, + -0.608291089535, + 0.568215966225, + -0.315649807453, + 0.318878442049, + -0.783028125763, + 0.610715508461, + -0.017961507663, + 0.362707734108, + -0.493197292089, + -0.761300504208, + 0.181239083409, + -0.028129454702, + 0.579427659512, + -0.47728741169, + 0.270297080278, + -0.496991723776, + 0.532484769821, + -0.365368872881, + 0.292323023081, + -0.426107943058, + 0.010265774094, + 0.466005533934, + -0.4603754282, + 0.030624384061, + -0.454681634903, + 0.488876283169, + -0.271330475807, + 0.472083121538, + -0.590093433857, + -0.644622683525, + 0.532942831516, + -0.293443471193, + 0.715576946735, + -0.63813906908, + 0.227391839027, + -0.277722805738, + 0.712496817112, + -0.402820825577, + -0.196522444487, + -0.368337899446, + -0.288399547338, + -0.784271776676, + 0.295498877764, + 0.409707605839, + -0.181356847286, + 0.175589635968, + -0.463180661201, + 0.437442421913, + -0.182302102447, + 0.24911481142, + -0.429851353168, + 0.363544821739, + 0.50187766552, + -0.161116540432, + 0.184118673205, + -0.55122256279, + 0.4061229527, + -0.310547590256, + 0.217203840613, + -0.70779633522, + 0.144324034452, + -0.226332396269, + 0.463341474533, + -0.169094055891, + -0.369573205709, + 0.176545292139, + -0.252374827862, + 0.587259948254, + -0.184574857354, + 0.35931250453, + -0.487725824118, + -0.506928622723, + 0.423260092735, + 0.502488076687, + -0.775295495987, + -0.183293223381, + 0.182975709438, + -0.280874848366, + 0.801841378212, + -0.026652110741, + 0.196634247899, + -0.382090032101, + 0.402655512094, + 0.499310225248, + -0.209004446864, + 0.405063569546, + -0.520788550377, + 0.594615101814, + -0.281634122133, + 0.007458055858, + -0.637599110603, + 0.383684188128, + -0.14662386477, + 0.235775381327, + -0.304690629244, + -0.638677418232, + 0.366747140884, + 0.004744745325, + 0.610973477364, + -0.294701814651, + 0.310639888048, + -0.090511120856, + 0.387823700905, + -0.514698386192, + 0.20504283905, + -0.279073596001, + -0.378690183163, + 0.31416657567, + -0.239196240902, + 0.401559829712, + -0.40144303441, + 0.516629099846, + -0.09407003969, + 0.22928404808, + -0.520541369915, + 0.264510422945, + 0.473955363035, + -0.31994792819, + 0.332603782415, + -0.398447692394, + 0.074063047767, + -0.211979344487, + 0.661292076111, + -0.477365076542, + -0.023990433663, + 0.160287603736, + -0.416274368763, + 0.380149453878, + -0.188663035631, + 0.075957275927, + -0.641538977623, + 0.687889099121, + 0.018486496061, + 0.224152520299, + -0.325244039297, + 0.148206472397, + -0.280679315329, + 0.020189261064, + -0.148846283555, + 0.048393808305, + -0.013992495835, + -0.498035013676, + 0.383254438639, + -0.096496008337, + 0.399327516556, + -0.364992141724, + 0.318469375372, + -0.405304968357, + -0.009094583802, + 0.371614485979, + -0.406583636999, + 0.258982181549, + -0.359684735537, + 0.626577079296, + -0.411087572575, + 0.257204592228, + -0.414456695318, + 0.074901171029, + 0.004167640582, + 0.347344249487, + 0.56913292408, + -0.267195820808, + 0.075935654342, + -0.499218434095, + 0.387148797512, + -0.320307463408, + 0.159346237779, + -0.564802825451, + 0.44971498847, + -0.225246608257, + 0.079661399126, + 0.1850566715, + -0.541446805, + 0.621731340885, + -0.038582842797, + 0.23631079495, + -0.49241399765, + 0.469187110662, + 0.134025886655, + -0.006736306008, + 0.500917315483, + -0.612589359283, + 0.261880666018, + -0.288462668657, + 0.180558040738, + -0.429959237576, + 0.205171227455, + -0.475280761719, + 0.079805321991, + 0.442227393389, + -0.155448019505, + 0.307881593704, + -0.332618951797, + 0.714587271214, + -0.121434241533, + 0.406037092209, + -0.32523176074, + 0.284198433161, + -0.276624917984, + 0.221636265516, + -0.469711154699, + -0.518346428871, + 0.222174733877, + -0.22734631598, + 0.301581740379, + -0.623029589653, + -0.01644044742, + -0.388611376286, + 0.726402044296, + -0.29228374362, + 0.194511115551, + -0.191686794162, + -0.328199625015, + 1.074882268906, + 1.875180482864, + 0.171109631658, + -2.697786331177, + 0.139928609133, + -1.678134322166, + 1.440429210663, + -1.07059943676, + 0.471539050341, + 0.78026676178, + -0.850704371929, + 0.378735244274, + -0.980928063393, + -0.099508747458, + -0.941209435463, + 0.422652900219, + 0.271132647991, + 0.79894977808, + 0.931483566761, + 0.019387621433, + 0.710913777351, + -1.127568364143, + -0.017433738336, + -0.422478705645, + 0.883542835712, + 0.787767350674, + -0.010804592632, + 0.103344716132, + 0.122272536159, + -1.00067794323, + -1.138871312141, + -0.383761584759, + 0.441960245371, + -0.181003570557, + 0.252499461174, + -0.117644295096, + -0.060035970062, + 0.664024710655, + -0.073975801468, + -0.084046155214, + -0.643834888935, + 0.40653693676, + 0.706278204918, + 0.393007487059, + -0.12384197861, + -0.722919940948, + -0.147260189056, + -0.670029997826, + 0.24692453444, + -0.539971232414, + 0.521370232105, + -0.057385560125, + 0.486654728651, + -0.089072629809, + -0.73194026947, + 0.552172839642, + -0.280222445726, + 0.504380524158, + -0.433795630932, + 0.044929552823, + -0.461604744196, + 0.518501996994, + -0.169984742999, + -0.335237056017, + -0.001383313444, + -0.479536443949, + 0.436833977699, + -0.025254499167, + 0.455618530512, + -0.608918905258, + -0.800084173679, + 0.131436273456, + -0.101918317378, + 0.788318514824, + 0.040385127068, + 0.191840484738, + -0.34311529994, + 0.381690829992, + -0.121502481401, + 0.093200661242, + -0.457250952721, + 0.346412956715, + -0.192097261548, + 0.026903241873, + 0.07715395093, + -0.573794066906, + 0.523897171021, + -0.197088226676, + 0.225990146399, + -0.663352608681, + 0.416636317968, + -0.336987018585, + 0.402315527201, + -0.321806550026, + -0.591998755932, + 0.392998576164, + -0.222802892327, + 0.695176064968, + -0.401819616556, + -0.094092182815, + -0.567765831947, + 0.160228610039, + 0.118713982403, + -0.425142467022, + 0.394788593054, + -0.212690278888, + 0.412185490131, + -0.511512935162, + 0.32879576087, + -0.649389743805, + 0.08508631587, + -0.295377492905, + 0.423601537943, + 0.476543754339, + -0.156632259488, + 0.270726472139, + -0.387272328138, + 0.27143239975, + -0.528024315834, + -0.130016535521, + -0.392399638891, + 0.302779525518, + -0.290742605925, + 0.079267270863, + 0.273694425821, + -0.282110661268, + 0.194351971149, + 0.326266050339, + 0.552110612392, + 0.03015538305, + 0.158233016729, + -0.661116480827, + 0.242836117744, + -0.278167486191, + 0.329249441624, + -0.480702251196, + 0.561867117882, + -0.312655925751, + 0.318748295307, + 0.415984541178, + -0.738987326622, + 0.29275611043, + -0.239734828472, + 0.52827590704, + -0.482794433832, + 0.10388238728, + -0.441940039396, + -0.007870834321, + 0.633055388927, + -0.19499219954, + 0.525871038437, + -0.524453401566, + 0.296117693186, + -0.294293045998, + 0.147784471512, + -0.383691728115, + 0.263584285975, + -0.05409983173, + 0.660922825336, + -0.002569751348, + -0.20883603394, + 0.059649646282, + -0.240380227566, + 0.610921442509, + -0.270816385746, + 0.089855924249, + -0.278186023235, + 0.521779596806, + -0.109375752509, + -0.308595061302, + 0.139050468802, + -0.633836269379, + 0.625593721867, + 0.098731949925, + 0.161749273539, + -0.64846009016, + 0.219768539071, + -0.291003465652, + 0.369051814079, + 0.507691979408, + -0.499447882175, + 0.305664330721, + -0.181661993265, + 0.403531253338, + -0.505333840847, + 0.1716863662, + -0.38588821888, + 0.49439021945, + -0.108707904816, + -0.30075865984, + 0.279623150826, + -0.420177012682, + 0.415093898773, + -0.395155370235, + 0.190400108695, + -0.401860445738, + 0.26681253314, + -0.22351911664, + 0.236938402057, + 0.389830052853, + -0.559712767601, + -0.072563819587, + -0.046533685178, + 0.611439049244, + -0.337602496147, + 0.125686436892, + -0.416542351246, + 0.611597895622, + -0.100468181074, + 0.148240566254, + 0.180772274733, + -0.629724442959, + 0.238359898329, + -0.191302210093, + 0.065374575555, + -0.567257404327, + 0.30833235383, + -0.188293606043, + 0.318899720907, + -0.360400378704, + -0.443556964397, + 0.320421606302, + -0.071330703795, + 0.373277008533, + -0.533771038055, + 0.354224562645, + 0.183153435588, + 0.096630550921, + -0.487765878439, + 0.382609635592, + -0.378533542156, + 0.359820723534, + -0.597202539444, + -0.040293898433, + 0.606030285358, + -0.374568909407, + 0.291286170483, + -0.420271337032, + 0.50385081768, + -0.323706269264, + 0.587888240814, + -0.619112789631, + -0.298427402973, + 0.427249878645, + -0.045291215181, + 0.361928999424, + -0.547483682632, + -0.032008808106, + -0.348236471415, + 0.579975366592, + -0.300895035267, + 0.087096132338, + -0.364803314209, + 0.381669044495, + 0.664758861065, + -0.141734197736, + 0.127839818597, + -0.650699794292, + 0.389087587595, + -0.285277485847, + 0.181175559759, + -0.599610328674, + 0.08293800801, + -0.013827982359, + 0.278913974762, + 0.316447049379, + -0.547502279282, + 0.405918329954, + -0.297884553671, + 0.42758333683, + -0.432903051376, + 0.211945697665, + -0.285022169352, + 0.088052384555, + 0.33647570014, + -0.415873944759, + 0.269713968039, + -0.530886590481, + 0.322056055069, + -0.258387029171, + 0.365140795708, + -0.287806898355, + -0.626338720322, + 0.543096780777, + -0.169909715652, + 0.442595154047, + -0.412264227867, + 0.076223403215, + -0.503339648247, + 0.548058092594, + -0.166778132319, + -0.256128370762, + 0.089731626213, + -0.21512876451, + 0.68636983633, + -0.23825737834, + 0.307458758354, + -0.430666983128, + 0.612638771534, + -0.02761596255, + 0.130624845624, + -0.455278992653, + 0.003990466241, + 0.409421145916, + -0.204673975706, + 0.120473079383, + -0.788330733776, + 0.261126875877, + -0.271692216396, + 0.262488335371, + -0.317467361689, + 0.246401906013, + -0.235307604074, + 0.353019207716, + 0.33446598053, + -0.20501293242, + 0.39005163312, + -0.29436737299, + 0.413625389338, + -0.387589305639, + 0.354477852583, + -0.520269870758, + -0.468115478754, + 0.409309476614, + -0.429951310158, + 0.581071555614, + -0.276529341936, + -0.397481918335, + 0.214075967669, + 0.329166829586, + -0.410534143448, + 0.387649178505, + -0.342332452536, + 0.121006704867, + -0.359305202961, + 0.57040989399, + -0.190306484699, + -0.5333583951, + 0.112169280648, + -0.572413802147, + 0.796787977219, + -0.269924074411, + 0.114456854761, + -0.474749565125, + 0.589235544205, + 0.028904108331, + 0.20403136313, + -0.523478925228, + 0.271318048239, + -0.291213929653, + 0.226865470409, + 0.327069878578, + -0.341198503971, + 0.140039026737, + -0.292896360159, + 0.295928895473, + -0.179775431752, + 0.147494748235, + -0.178314253688, + -0.133885294199, + 0.502365767956, + -0.340135723352, + 0.233613222837, + -0.519605338573, + 0.603885173798, + -0.219451725483, + 0.334561228752, + -0.444689631462, + -0.523689746857, + -0.019544189796, + -0.429636925459, + 0.443823575974, + -0.195185065269, + -0.397481173277, + 0.293795138597, + -0.186387702823, + 0.484011739492, + -0.264369577169, + 0.059854820371, + -0.49907246232, + 0.559973657131, + 0.141035273671, + 0.163241773844, + -0.503800451756, + 0.447107076645, + -0.1432595402, + 0.185367211699, + -0.578793466091, + 0.165946826339, + -0.254865378141, + 0.13887552917, + 0.173038721085, + -0.299752354622, + 0.009662617929, + -0.158023804426, + 0.310235738754, + -0.216118857265, + 0.334091246128, + -0.313570529222, + 0.172631874681, + 0.270186603069, + -0.256444454193, + 0.23205511272, + -0.406020671129, + 0.482524305582, + -0.305740505457, + 0.263181328773, + -0.599295556545, + 0.206941068172, + -0.312772244215, + 0.256023198366, + 0.445323646069, + -0.105674803257, + 0.348155230284, + -0.183055952191, + 0.442673265934, + -0.436258077621, + 0.164451882243, + -0.167661577463, + -0.537308931351, + 0.674186885357, + -0.118821166456, + 0.113523393869, + -0.542985618114, + 0.648427128792, + -0.023037001491, + 0.023745877668, + -0.136937737465, + 0.252316594124, + -0.668327689171, + 0.291766345501, + -0.043441098183, + 0.289533555508, + 0.098618291318, + -0.471631139517, + 0.175810649991, + -0.198208361864, + 0.323553115129, + -0.406589597464, + 0.263206034899, + -0.430633157492, + 0.243474006653, + -0.265537500381, + -0.467466294765, + 0.323266863823, + -0.514791369438, + 0.568843662739, + -0.403133422136, + 0.272432178259, + -0.506754875183, + 0.153621926904, + -0.179975271225, + 0.26232278347, + 0.277234166861, + -0.453780680895, + 0.221321091056, + -0.264049589634, + 0.416461497545, + -0.250873059034, + 0.046662844718, + -0.352308064699, + 0.328527837992, + -0.056848786771, + -0.307678490877, + 0.061912272125, + -0.530271470547, + 0.68268507719, + -0.037925332785, + 0.084556750953, + -0.45514279604, + -0.142334029078, + 0.106918781996, + -0.125427126884, + 0.205972328782, + -0.393944501877, + 0.266716122627, + -0.277805924416, + 0.358186990023, + -0.443147540092, + 0.224835380912, + -0.266835540533, + 0.170981407166, + -0.180994808674, + 0.144075378776, + 0.270500332117, + -0.359492003918, + 0.353582292795, + -0.367102742195, + 0.294723838568, + -0.482391089201, + 0.139393046498, + -0.148003667593, + 0.445657849312, + -0.235309407115, + -0.475245058537, + 0.258379906416, + -0.457104295492, + 0.548432528973, + -0.172803595662, + 0.168257862329, + -0.3915322721, + 0.694050550461, + -0.404430866241, + -0.070836402476, + -0.590493679047, + -0.721323370934, + 0.690169095993, + -0.101551264524, + 0.255483418703, + -0.288895666599, + 0.430191248655, + -0.028176538646, + -0.194798946381, + 0.339604228735, + -0.62231272459, + 0.359116047621, + -0.066384859383, + 0.500021636486, + -0.429915338755, + 0.352991580963, + -0.171517074108, + 0.543357312679, + -0.352923423052, + 0.1994291991, + -0.321918159723, + -0.44735366106, + 0.403062403202, + 0.40883615613, + 0.650913417339, + -0.3158210814, + 0.430186361074, + -0.357389003038, + 0.110362268984, + -0.368132203817, + 0.461922854185, + -0.154769003391, + -0.250156193972, + 0.320176035166, + -0.441006839275, + 0.40099516511, + -0.433856636286, + 0.225784644485, + -0.296875417233, + 0.61611789465, + -0.099086590111, + 0.275416433811, + -0.705207109451, + 0.295803636312, + 0.422460138798, + -0.443244457245, + 0.153593689203, + -0.295499682426, + 0.285938560963, + -0.099363900721, + 0.176607087255, + -0.438846021891, + 0.075422570109, + -0.237244531512, + 0.080416336656, + 0.225955054164, + -0.348483562469, + 0.390419363976, + -0.090409807861, + 0.125380530953, + -0.500888764858, + 0.160165205598, + -0.359682738781, + 0.413070052862, + -0.070076242089, + 0.2164170295, + -0.238162025809, + -0.245715618134, + 0.197964221239, + -0.08834747225, + 0.370933026075, + -0.420623838902, + -0.025829482824, + -0.474062770605, + 0.217732906342, + -0.426698029041, + -0.175581023097, + 0.065764337778, + -0.44477674365, + 0.44145205617, + -0.055122535676, + 0.237001478672, + -0.579951405525, + 0.69216299057, + -0.368462830782, + -0.080988034606, + 0.222321823239, + -0.414678841829, + 0.303901165724, + -0.192466139793, + 0.270167559385, + -0.676765441895, + 0.104352287948, + -0.296758055687, + 0.400319039822, + 0.043044731021, + -0.519381523132, + 0.450942486525, + -0.19944897294, + 0.394055068493, + -0.588245630264, + 0.219388604164, + -0.421274930239, + 0.341300904751, + 0.539191305637, + -0.171731337905, + 0.294670313597, + -0.44583889842, + 0.099357567728, + -0.348598837852, + 0.595899164677, + -0.570844948292, + 0.053424179554, + -0.417791098356, + 0.393105775118, + -0.172314852476, + -0.302370905876, + 0.141676992178, + -0.407741189003, + 0.432574301958, + -0.043838068843, + -0.326494276524, + 0.07236648351, + -0.051676299423, + -0.523007690907, + 0.633561789989, + -0.142595097423, + -0.389231711626, + 0.094998672605, + -0.750703811646, + 0.702549993992, + -0.180743306875, + 0.397363692522, + -0.529237091541, + 0.472106724977, + -0.091829381883, + 0.303274601698, + -0.360930025578, + -0.352405458689, + 0.236998647451, + -0.291575908661, + 0.412784695625, + -0.461159437895, + 0.299474179745, + -0.349755823612, + 0.171918347478, + -0.362595677376, + 0.056839883327, + 0.181757330894, + -0.304499983788, + 0.42314055562, + -0.465618938208, + 0.317774832249, + -0.627032220364, + 0.256128072739, + -0.289142429829, + 0.345164656639, + -0.39062282443, + -0.015522187576, + 0.253446400166, + -0.356161862612, + 0.479171961546, + -0.414400279522, + 0.09534098953, + -0.28193923831, + 0.524007022381, + -0.155098050833, + -0.247087955475, + 0.181336313486, + -0.759799182415, + 0.552350282669, + -0.286014258862, + 0.490187704563, + -0.624785721302, + 0.274145960808, + -0.318562626839, + 0.46554967761, + -0.31859511137, + 0.300413906574, + -0.387031763792, + -0.146055117249, + 0.376558989286, + -0.394789040089, + 0.266334712505, + -0.24829235673, + 0.31976428628, + -0.294711828232, + 0.233428314328, + 0.340930044651, + -0.368798106909, + 0.336867272854, + -0.423611670732, + 0.43183273077, + -0.400816231966, + 0.359763532877, + -0.41389515996, + 0.324643224478, + -0.344312399626, + -0.306053251028, + 0.32597514987, + -0.268904834986, + 0.280158936977, + -0.326200813055, + 0.04054260999, + -0.225785329938, + 0.503160834312, + -0.067681528628, + -0.248572289944, + 0.105844952166, + -0.491985052824, + 0.666310667992, + -0.144067212939, + 0.42553883791, + -0.45983543992, + 0.351280421019, + -0.242372900248, + 0.187554299831, + -0.512472450733, + 0.188695266843, + -0.364117980003, + 0.00519426167, + 0.214856177568, + 0.054934140295, + -0.049409780651, + -0.325497865677, + 0.111866898835, + -0.220465421677, + 0.363989263773, + -0.274444311857, + 0.280269384384, + -0.300049245358, + -0.407867580652, + 0.383534997702, + -0.217239394784, + 0.205642133951, + -0.305290013552, + 0.055706057698, + -0.164523854852, + 0.106890164316, + 0.162952646613, + -0.223329901695, + 0.297726422548, + -0.132520645857, + 0.321753382683, + -0.305256962776, + -0.298729270697, + 0.212580367923, + 0.393861085176, + -0.102155156434, + 0.063626803458, + -0.417017012835, + 0.233654856682, + 0.400425881147, + -0.223011359572, + 0.092034555972, + -0.528853833675, + 0.286421835423, + -0.24279281497, + 0.230102807283, + -0.477350562811, + 0.156087696552, + -0.22573761642, + 0.122456140816, + 0.347164452076, + -0.686577379704, + 0.126716911793, + -0.156806066632, + 0.472654759884, + -0.636676907539, + 0.163727805018, + -0.50846850872, + 0.51658052206, + -0.180575489998, + 0.227288141847, + 0.409391313791, + -0.287116885185, + 0.211729168892, + -0.366903960705, + 0.210157319903, + -0.394465118647, + -0.282549023628, + 0.364570975304, + -0.145169690251, + 0.350913465023, + -0.270043641329, + 0.327246040106, + -0.355403333902, + 0.433091729879, + -0.238029867411, + 0.355037093163, + -0.440211385489, + 0.450026720762, + -0.150052517653, + -0.029018254951, + 0.156975209713, + -0.314543604851, + 0.531822383404, + -0.389120548964, + 0.222575172782, + -0.419051200151, + 0.265877991915, + -0.228283286095, + 0.280029773712, + -0.489159852266, + -1.043074011803, + 0.690691709518, + -0.371352165937, + 0.624195337296, + -0.825438380241, + 0.216348737478, + -0.592415869236, + 0.627295196056, + -0.099677853286, + -0.408697426319, + 0.394267588854, + -0.502680420876, + 0.355931520462, + -0.637428224087, + 0.441665947437, + -0.27448785305, + 0.211572319269, + 0.274389714003, + -0.320105969906, + -0.319249689579, + 0.362604022026, + -0.293551057577, + -0.443860471249, + 0.212963730097, + -0.174344211817, + 0.332687824965, + -0.272895902395, + 0.039853103459, + -0.415663540363, + 0.22308845818, + -0.159713178873, + 0.234017059207, + -0.206398904324, + -0.309752702713, + 0.421992361546, + -0.128742516041, + 0.230340465903, + -0.459006696939, + 0.55191218853, + -0.235125690699, + 0.042201448232, + -0.337912887335, + 0.289339900017, + 0.526368379593, + -0.065833292902, + 0.313036769629, + -0.51737177372, + 0.215939283371, + -0.299202591181, + 0.396396547556, + -0.304956406355, + 0.359646946192, + -0.151104897261, + -0.326740592718, + 0.285444229841, + -0.754330575466, + 0.386933863163, + -0.297625988722, + 0.46562898159, + -0.293454647064, + 0.387956619263, + -0.489997625351, + -0.531258702278, + 0.482685476542, + -0.21259714663, + 0.482320398092, + -0.430742502213, + 0.142668306828, + -0.332919180393, + 0.377979665995, + -0.153545588255, + -0.191888585687, + 0.190898150206, + -0.24065849185, + 0.531103789806, + -0.368560433388, + 0.086428888142, + -0.461505055428, + 0.294816911221, + -0.060774639249, + 0.139526695013, + -0.436419487, + -0.254558861256, + 0.5943582654, + -0.187745898962, + 0.254582643509, + -0.508617639542, + 0.276544362307, + -0.197220012546, + 0.326536953449, + -0.269568383694, + 0.212662741542, + -0.365420371294, + -0.394559949636, + 0.248168930411, + -0.350314378738, + 0.317763000727, + -0.200494244695, + 0.269604325294, + -0.335483342409, + 0.355745017529, + -0.25051215291, + 0.159484744072, + 0.350994169712, + -0.36650878191, + 0.506393969059, + -0.310709625483, + 0.078918360174, + -0.477514207363, + 0.113824427128, + -0.493246525526, + -0.063655138016, + 0.228407651186, + -0.336373269558, + 0.385908633471, + -0.203152611852, + 0.138795793056, + -0.376112580299, + -0.069962568581, + 0.017867151648, + 0.332576662302, + -0.216309636831, + 0.07185177505, + -0.473436236382, + 0.573312401772, + -0.008988635615, + 0.219372853637, + -0.475695252419, + 6.74684532E-4, + 0.080810755491, + -0.24338413775, + 0.241459071636, + -0.413058102131, + 0.289266139269, + -0.348678916693, + 0.12264059484, + 0.436186373234, + -0.561342060566, + 0.378736078739, + -0.286968976259, + 0.46770298481, + -0.404973685741, + 0.217210054398, + -0.450801253319, + 0.578178226948, + -0.127587378025, + 0.414589554071, + -0.603488206863, + -0.080218911171, + 0.333401054144, + -0.230417713523, + 0.417203485966, + -0.46350723505, + 0.112929850817, + -0.594096362591, + 0.819482028484, + 0.064467541873, + -0.503289759159, + 0.354308068752, + -0.360723763704, + 0.453616201878, + -0.117134429514, + 0.319679826498, + -0.628289699554, + 0.410676509142, + -0.198315620422, + 0.380855739117, + 0.106778219342, + -0.528658390045, + 0.593844711781, + -0.525300562382, + 0.825039982796, + -0.255799293518, + 0.352232515812, + -0.389631122351, + 0.24954597652, + -0.420728623867, + -0.540270447731, + 0.318916648626, + -0.255129724741, + 0.549429953098, + -0.312962323427, + 0.272047758102, + -0.449084103107, + 0.256793409586, + -0.357980936766, + 0.334980070591, + -0.288186371326, + -0.065432704985, + 0.373820632696, + -0.486434310675, + 0.551587462425, + -0.273311197758, + 0.285796701908, + -0.547851026058, + 0.451511412859, + 0.651035130024, + -0.231922060251, + 0.172052562237, + -0.763997852802, + 0.346753954887, + -0.256537228823, + 0.227273464203, + -0.504433512688, + 0.520988106728, + -0.159166231751, + 0.187360540032, + 0.051503997296, + -0.545850157738, + 0.30408629775, + -0.152001902461, + 0.335408091545, + -0.386416912079, + 0.232027590275, + -0.27104267478, + 0.199272707105, + -0.437853574753, + -0.494797945023, + 0.13384963572, + 0.205278918147, + -0.207360103726, + 0.144714161754, + 0.246089428663, + -0.355099588633, + 0.082339577377, + -0.451763540506, + 0.325316816568, + -0.22110247612, + 0.078243143857, + 0.276306897402, + -0.415667980909, + 0.464691400528, + -0.245462059975, + 0.602969229221, + -0.264708071947, + 0.222038418055, + -0.464972347021, + 0.493420660496, + -0.368527501822, + -0.029183931649, + 0.347476691008, + -0.751154839993, + 0.618402779102, + -0.291489839554, + 0.334537506104, + -0.446881145239, + 0.557664573193, + -0.242282167077, + -0.473569273949, + 0.105593331158, + -0.704484164715, + 0.351210206747, + 0.02567813918, + 0.537318706512, + -0.326216727495, + 0.436317384243, + -0.288765192032, + 0.278880596161, + -0.569482028484, + 0.327047526836, + -0.249625280499, + 0.209667697549, + 0.312042474747, + -0.3623239398, + 0.276500880718, + -0.30037638545, + 0.358714729548, + -0.097474768758, + 0.286712288857, + -0.274195551872, + -0.386943459511, + 0.495673805475, + -0.264332026243, + 0.698461949825, + -0.431852310896, + 0.222168684006, + -0.614954650402, + 0.285611152649, + -0.392902582884, + 0.077130362391, + -0.467922925949, + 0.124632917345, + 0.552087426186, + -0.346641123295, + 0.179679378867, + -0.235449269414, + 0.340772360563, + 0.405408620834, + -0.156568899751, + 0.343190163374, + -0.393245071173, + 0.345156282187, + -0.297775447369, + 0.106360822916, + -0.637465059757, + 0.092203475535, + -0.249579519033, + 0.05192701146, + -0.446932345629, + 0.110394053161, + 0.319486707449, + -0.312121063471, + 0.294528007507, + -0.388124406338, + 0.372512131929, + -0.242107927799, + 0.363792330027, + -0.135717615485, + 0.302208572626, + -0.363277196884, + -0.442746847868, + 0.354386031628, + -0.356408596039, + 0.625473737717, + -0.491607636213, + 0.612614989281, + -0.729411661625, + 0.307144850492, + 0.202033728361, + 0.207753911614, + -0.462875247002, + 0.083974413574, + -0.372636437416, + -0.278435081244, + 2.16525387764, + -2.758563756943, + 2.117224931717, + -1.341310739517, + 1.448092460632, + -0.822235763073, + 1.158356189728, + -0.624272704124, + 0.431800454855, + 0.645017504692, + -0.557264328003, + 0.370754539967, + -0.567288935184, + 0.592131316662, + -0.354841768742, + 0.368947297335, + -0.856556475163, + 0.571205615997, + -0.232314169407, + 0.372567892075, + 0.459893167019, + -0.488212198019, + 0.328440338373, + -0.486850053072, + 0.200191631913, + -0.40943095088, + 0.361872702837, + -0.232193604112, + 0.223527163267, + -0.280282080173, + 0.126578271389, + -0.39877474308, + -0.591935694218, + 0.233574926853, + -0.168201312423, + 0.529084742069, + -0.176718562841, + 0.292401492596, + -0.385402649641, + 0.275976896286, + -0.265679836273, + -0.358170926571, + 0.161399006844, + -0.269103258848, + 0.419483721256, + -0.202700421214, + 0.31287369132, + -0.47845107317, + 0.339608430862, + -0.25747230649, + 0.043708246201, + 0.184839427471, + -0.401648521423, + 0.170498579741, + -0.303507059813, + 0.165744692087, + -0.150855898857, + 0.465660333633, + 0.006269525271, + -0.152024030685, + -0.099278077483, + -0.859945356846, + 0.240880221128, + -0.160680800676, + 0.262992471457, + -0.331937074661, + 0.273925364017, + -0.266503453255, + 0.198762997985, + 0.161044061184, + -0.523450016975, + 0.110232904553, + -0.390275865793, + 0.320448547602, + -0.253475159407, + 0.457924336195, + -0.131944745779, + 0.304891556501, + -0.45319417119, + 0.174647003412, + 0.313904762268, + -0.46392723918, + 0.213047653437, + -0.393733888865, + 0.478399574757, + -0.388435095549, + 0.297589123249, + -0.51439845562, + 0.374647706747, + 0.551156044006, + -0.05932385847, + 0.036256480962, + -0.626738071442, + 0.232756197453, + 0.094743214548, + 0.160177394748, + -0.332372426987, + 0.209960833192, + -0.460895955563, + 0.617210745811, + 0.101125270128, + 0.365800231695, + -0.573549866676, + -0.597381472588, + 0.230729043484, + -0.141968145967, + 0.550346910954, + -0.665538668633, + 0.50467389822, + -0.372111678123, + 0.226698294282, + -0.286691576242, + 0.032713521272, + 0.154236361384, + -0.302140086889, + 0.284316837788, + -0.412817299366, + 0.22334061563, + -0.202963620424, + 0.438683241606, + -0.251745939255, + 0.452536940575, + -0.28105583787, + -0.463530480862, + 0.305776149035, + -0.502601802349, + 0.420426160097, + -0.446532994509, + 0.23949560523, + -0.233528181911, + 0.401921927929, + -0.139002531767, + 0.158644244075, + 0.389501065016, + -0.402723759413, + 0.404789358377, + -0.188197702169, + 0.339047163725, + -0.620083093643, + 0.351662874222, + -0.22778211534, + 0.215309485793, + -0.244154572487, + 0.450046896935, + -0.452360898256, + -0.090763688087, + 0.027721188962, + -0.585525751114, + 0.687555789948, + -0.58730661869, + 0.773014485836, + -0.544194221497, + 1.151264667511, + -0.780272424221, + 0.376254022121, + -0.259954541922, + -0.53251928091, + 0.104098767042, + -0.339618951082, + 0.156803160906, + -0.427359580994, + -0.064453177154, + -0.486792773008, + 0.161636665463, + 0.522079348564, + -0.428279519081, + 0.433596491814, + -0.424377053976, + 0.08251003176, + -0.240010783076, + 0.434908270836, + -0.061737291515, + -0.275436997414, + 0.306456267834, + -0.318507552147, + 0.334773033857, + -0.334214478731, + 0.146083682775, + -0.551243960857, + 0.2723069489, + 0.398626357317, + -0.132772281766, + -0.490737438202, + 0.344530045986, + 0.721400678158, + -0.228086337447, + 0.134753420949, + -0.496405541897, + 0.215904116631, + -0.72606408596, + 1.028311491013, + -0.329895406961, + -0.375001847744, + 0.488921314478, + 0.023854119703, + -0.423135995865, + 0.098506711423, + 0.358992010355, + -0.547226667404, + 0.527562856674, + -0.247681856155, + 0.13662302494, + -0.263334363699, + 0.234961152077, + -0.388906210661, + 0.489268451929, + -0.094433143735, + 0.363362729549, + -0.452302664518, + 0.075263112783, + 0.085189819336, + -0.194660246372, + 0.400416910648, + -0.091395266354, + 0.241411432624, + -0.542139589787, + 0.405504912138, + -0.354472368956, + -0.466978609562, + 0.180628299713, + -0.288656800985, + 0.619866907597, + -0.198283702135, + 0.271978348494, + -0.729653954506, + 0.388593822718, + -0.396987229586, + -0.070167444646, + 0.413359612226, + -0.433351129293, + 0.342017501593, + -0.33165961504, + 0.145618155599, + -0.647487163544, + 0.507490754128, + 0.067656345665, + -0.074832677841, + 0.27273234725, + -0.53434753418, + 0.234365016222, + -0.283046901226, + 0.321416020393, + -0.503764688969, + 0.34007832408, + -0.190409094095, + 0.597172439098, + -0.242387756705, + 0.165766686201, + -0.160128623247, + -0.256512850523, + 0.322245925665, + -0.127670288086, + 0.305352002382, + -0.262032926083, + -0.395802974701, + 0.087727442384, + -0.475520640612, + 0.550404250622, + -0.250261098146, + 0.249191373587, + -0.584891140461, + 0.592364549637, + -0.271318048239, + 0.204129546881, + -0.608426690102, + 0.371808290482, + -0.398689627647, + -0.117985799909, + 0.209426045418, + -0.518577694893, + 0.585680484772, + -0.233203485608, + 0.521616637707, + -0.625031590462, + 0.285339564085, + -0.525711119175, + 0.27457433939, + -0.356578737497, + 0.319058746099, + 0.55430752039, + -0.297848045826, + 0.419268935919, + -0.55923217535, + 0.350346922874, + -0.245663493872, + 0.350244432688, + -0.022251812741, + -0.331621527672, + 0.332453340292, + -0.441326200962, + 0.244742825627, + -0.616192877293, + 0.344572901726, + -0.370548844337, + -0.399811536074, + -0.31594863534, + 0.203929930925, + -0.491062998772, + 0.237812578678, + -0.30480825901, + 0.277775496244, + -0.126849681139, + 0.437604337931, + 0.480859577656, + -0.19137352705, + 0.222604691982, + -0.526164054871, + 0.672690033913, + -0.073760166764, + 0.385323792696, + -0.623951494694, + -0.718777775764, + 0.313315987587, + -0.266748666763, + 0.246745571494, + -0.602998018265, + 0.479226887226, + -0.110044360161, + 0.216203764081, + -0.581750869751, + 0.263172328472, + -0.307081490755, + 0.014976262115, + 0.453051388264, + -0.543021917343, + 0.317469358444, + -0.287524133921, + 0.399730563164, + -0.552083194256, + 0.004670126829, + 0.251648277044, + -0.344899237156, + 0.344372302294, + -0.295519649982, + 0.241031706333, + -0.480670571327, + 0.075099378824, + -0.254539817572, + 0.408820867538, + -0.114428877831, + -0.152002289891, + 0.237252578139, + -0.152549028397, + 0.44783616066, + -0.389001727104, + -0.007429800462, + -0.251830905676, + 0.724762201309, + -1.19541815E-4, + 0.172868028283, + -0.601416110992, + 0.173096463084, + 0.481834739447, + -0.258626669645, + 0.266334474087, + -0.577150285244, + 0.335213690996, + -0.142486616969, + 0.235520228744, + -0.523858010769, + 0.233709782362, + -0.148190572858, + 0.147827684879, + 0.296180516481, + -0.6428861022, + 0.290062457323, + -0.269281029701, + 0.647108256817, + -0.587145030499, + 0.303612112999, + -0.32103869319, + -0.2949398458, + 0.385635763407, + -0.581531465054, + 0.492285728455, + -0.328091174364, + 0.385521918535, + -0.224402979016, + 0.18410398066, + -0.254021376371, + 0.266079008579, + -0.006378863007, + 0.361700356007, + 0.618626177311, + -0.305603981018, + 0.229047954082, + -0.496173918247, + 0.269297778606, + -0.559300065041, + 0.247446969151, + -0.122969135642, + 1.072581529617, + 0.087306164205, + -0.61156129837, + -0.058920398355, + 0.107305623591, + -0.610397398472, + -1.036719083786, + 0.70612102747, + -0.263846993446, + 0.342310458422, + -0.847210526466, + 0.604958236217, + -0.026460826397, + 0.444164395332, + -0.707891523838, + 0.04800882563, + 0.432397961617, + -0.292790621519, + 0.470432013273, + -0.641060352325, + 0.374970823526, + -0.536838173866, + 0.241297468543, + -0.395251125097, + 0.215789750218, + 0.491160035133, + -0.282747596502, + 0.399911731482, + -0.66966676712, + 0.2991078794, + -0.486607313156, + 0.449078917503, + -0.288912534714, + 0.074786528945, + -0.44357329607, + -0.429253011942, + 0.176201060414, + -0.013965765014, + 0.346787780523, + -0.271722644567, + 0.040899205953, + -0.242259189487, + 0.231863796711, + 0.474245280027, + -0.239728808403, + 0.391208350658, + -0.22484511137, + 0.421881258488, + -0.163461983204, + -0.025719931349, + -0.742796838284, + 0.259159713984, + -0.144216418266, + 0.328017473221, + -0.251577973366, + -0.389555990696, + 0.387121647596, + -0.163756132126, + 0.245348706841, + -0.424592077732, + 0.47320625186, + -0.330972284079, + 0.49588111043, + -0.239735782146, + 0.351733982563, + -0.124458506703, + -0.240058422089, + 0.073762856424, + -0.51255351305, + 0.207439348102, + -0.260810941458, + 0.457967340946, + -0.5123513937, + 0.443151772022, + -0.189534693956, + -0.275029957294, + 0.570264399052, + -0.172838300467, + 0.455110132694, + -0.280485421419, + 0.269402831793, + -0.421778678894, + 0.46071216464, + -0.040633298457, + 0.314482450485, + -0.067909896374, + 0.182350501418, + -0.262611448765, + -0.420218467712, + 0.159610196948, + -0.480061858892, + 0.318365752697, + -0.151548027992, + 0.143837377429, + -0.443031489849, + 0.0379624255, + 0.42352321744, + -0.192412346601, + 0.204413354397, + -0.379556804895, + 0.358111560345, + -0.239808365703, + -0.077137336135, + 0.246020868421, + 0.187913611531, + -0.447578847408, + 0.270999968052, + -0.137121364474, + 0.357036441565, + -0.147650241852, + -0.439947485924, + 0.22003236413, + -0.453569352627, + 0.393031656742, + -0.455022841692, + 0.419091492891, + -0.319564700127, + 0.363574653864, + -0.392147183418, + 0.263239771128, + -0.253733664751, + -0.098669148982, + 0.163152262568, + -0.221558243036, + 0.339223146439, + -0.158872008324, + 0.237336337566, + -0.450207799673, + 0.394117981195, + -0.061100397259, + -0.248629763722, + 0.214972913265, + -0.42164927721, + 0.185335934162, + -0.320153057575, + -0.002352233045, + -0.362333804369, + 0.473620861769, + -0.061672713608, + 0.118786886334, + -0.252426087856, + -0.474126130342, + 0.410646468401, + -0.300054788589, + 0.256624519825, + -0.617269337177, + 0.388513624668, + -0.244095697999, + 0.183398902416, + -0.578040719032, + 0.031120683998, + -0.002097149612, + -0.271797120571, + 0.470136195421, + -0.365666210651, + 0.316903054714, + -0.510760068893, + 0.492143660784, + -0.345078915358, + 0.392210096121, + -0.172404289246, + 0.101613037288, + 0.190398856997, + -0.35047313571, + 0.235065490007, + -0.446958839893, + 0.001133696642, + -0.433560371399, + 0.049153491855, + 0.414149165154, + -0.026670329273, + 0.548357069492, + -0.049371551722, + 0.55568665266, + -0.272636145353, + 0.042195141315, + -0.508130431175, + 0.654048919678, + -0.223713025451, + 0.051099102944, + -0.201735526323, + 0.346537202597, + 0.191304981709, + -0.295927047729, + 0.052395068109, + -0.55784881115, + 0.433629274368, + 0.00160262757, + 0.378962397575, + -0.358016014099, + 0.403680801392, + -0.102348312736, + -0.202287495136, + 0.538023412228, + -0.3911472857, + 0.114143118262, + -0.513162374496, + 0.57103073597, + -0.519385695457, + 0.309541046619, + -0.271342247725, + -0.260207206011, + 0.417021304369, + 0.198922172189, + 0.058840312064, + -0.177953675389, + 0.457004249096, + -0.329726547003, + 0.064578592777, + -0.463513761759, + 0.152660042048, + -0.335548698902, + 0.262760221958, + 0.50378626585, + 0.026361577213, + 0.40621483326, + -0.622818589211, + -0.103586614132, + -0.408637315035, + 0.588023483753, + -0.010731108487, + 0.072365090251, + -0.270862698555, + 0.164909020066, + 0.436247617006, + -0.272278398275, + 0.040565371513, + -0.585721075535, + 0.411946952343, + 0.020209817216, + 0.353198379278, + -0.759904265404, + -0.030803492293, + -0.412206232548, + 0.503095209599, + -0.15096257627, + 0.230148330331, + -0.505974531174, + 0.003976678941, + 0.237164467573, + -0.554284274578, + 0.338181257248, + -0.326930314302, + 0.633683919907, + -0.109799832106, + 0.294654875994, + 0.47279882431, + -0.397030711174, + 0.425553560257, + -0.451402157545, + 0.640307068825, + -0.302656084299, + 0.56556648016, + -0.39883902669, + 0.129198879004, + -0.696198999882, + -0.760624885559, + -0.054523896426, + -0.045900437981, + 0.719654023647, + -0.052561119199, + -0.506431400776, + -0.416759759188, + 0.361094892025, + 0.500929772854, + 0.021459395066, + 0.435709774494, + -0.322925239801, + 0.704730451107, + -0.157735958695, + 0.327871531248, + -0.669965863228, + 0.271572649479, + -0.422230541706, + 0.321354746819, + -0.670068085194, + 0.193362861872, + -0.426264375448, + 0.087014205754, + 0.331682533026, + -0.511615157127, + 0.298595428467, + -0.181334167719, + 0.621007502079, + -0.049190677702, + 0.429150849581, + -0.184527128935, + -0.343792080879, + 0.716594576836, + -0.335708290339, + 0.401543080807, + -0.566270291805, + 0.086829386652, + -0.375397324562, + 0.396801888943, + 0.614921927452, + -0.469584017992, + -0.520086288452, + 0.341063797474, + 0.46589282155, + -0.230142056942, + 0.579377055168, + -0.382241904736, + -0.199927404523, + -0.149301916361, + 0.513638138771, + -0.261822193861, + 0.333215624094, + -0.5027384758, + 0.254904985428, + -0.249776571989, + -0.080511815846, + 0.061280377209, + -0.435374200344, + 0.349878847599, + -0.314921945333, + 0.144297495484, + -0.701039791107, + 0.041237663478, + -0.16181987524, + 0.371944636106, + 0.436065763235, + -0.484888911247, + 0.016819933429, + -0.358922660351, + 0.643496513367, + -0.245445281267, + 0.438878446817, + -0.456018090248, + 0.160349801183, + 0.418185263872, + -0.390064746141, + 0.365186214447, + -0.41721495986, + 0.06058197841, + -0.496675342321, + 0.694998323917, + -0.371832579374, + 0.426049768925, + -0.261822074652, + 0.509545326233, + -0.036679264158, + -0.393123567104, + 0.426318854094, + -0.545956254005, + 0.358735769987, + -0.433910042048, + 0.196344256401, + -0.294574171305, + 0.536838650703, + -0.107584409416, + -0.341696292162, + 0.096532896161, + -0.64984369278, + 0.50763553381, + -0.166935175657, + 0.336999535561, + -0.916288912296, + -0.025925029069, + 0.397717297077, + 0.378963023424, + -0.414916902781, + -0.604668557644, + 0.23005387187, + -0.291982710361, + 0.461657881737, + -0.352941274643, + 0.253252625465, + -0.532432198524, + 0.183273434639, + -0.391197830439, + 0.312638580799, + -0.262369096279, + -0.297480106354, + 0.40702611208, + -0.413340896368, + 0.544367313385, + -0.205756008625, + 0.269596368074, + -0.169468820095, + 0.594549059868, + 0.748519062996, + -0.375708132982, + 0.44250074029, + -0.494924128056, + 0.641616404057, + -0.003253571223, + 0.830628633499, + -1.221802592278, + -0.136631175876, + -0.854587316513, + -0.115983195603, + 0.332391649485, + -0.471715420485, + 0.748884439468, + -0.502521753311, + 0.15438619256, + -0.76889705658, + -0.032217491418, + -0.117955900729, + -0.268805801868, + 0.626717031002, + -0.005086474121, + 0.723552167416, + 0.719044148922, + 0.016664819792, + -0.409214198589, + 0.191882416606, + -0.739006698132, + 0.330601632595, + -0.264163523912, + 0.461598306894, + -0.615076839924, + -0.07426020503, + -0.833997130394, + 0.123534038663, + -0.151710033417, + 0.759531021118, + 0.775248289108, + -0.002716264222, + 0.583508849144, + -0.395602047443, + 0.580693364143, + -0.65981900692, + 0.427914589643, + -0.268224149942, + 0.531018018723, + -0.275602519512, + -0.369745999575, + -0.002918323502, + -0.88374966383, + 0.415429085493, + -0.431104630232, + 0.628593325615, + 0.006285231095, + 1.001837491989, + 1.180836677551, + -0.303082376719, + -0.112918168306, + -1.052148342133, + 0.571382939816, + -0.050588659942, + 0.316399484873, + -0.606144785881, + 0.169137567282, + -0.533807814121, + 0.066202186048, + -0.209223940969, + 0.358923584223, + -0.055601045489, + 0.288851171732, + 0.434575766325, + -0.270796477795, + 0.329036921263, + -0.427555173635, + 0.072099491954, + -0.177196726203, + 0.405678600073, + 0.449710458517, + -0.430151939392, + 0.140426069498, + -0.508921921253, + 0.292110830545, + -0.422469884157, + 0.53877800703, + -0.189142227173, + 0.40203037858, + -0.342761725187, + -0.482413262129, + 0.052673254162, + -0.306138336658, + 0.67330545187, + -0.207166969776, + 0.279805392027, + -0.570246100426, + 0.552956700325, + -0.198570296168, + -0.173311591148, + 0.206974834204, + -0.601845920086, + 0.389587402344, + -0.016804542392, + 0.107180722058, + -0.492774128914, + -0.005696870387, + 0.31843239069, + 0.0058142622, + 0.550670266151, + 4.39227151E-4, + 0.226661980152, + -0.262065470219, + 0.040563505143, + -0.482781857252, + 0.254017949104, + -0.134897857904, + -0.146994397044, + 0.53624111414, + -0.11262241751, + 0.153644502163, + -0.521670520306, + 0.465646713972, + -0.158634409308, + 0.434677869081, + -0.027916897088, + -0.155132189393, + -0.44589817524, + 0.226197436452, + -0.299704372883, + 0.603209853172, + -0.333581596613, + -0.013576925732, + -0.381117224693, + 0.238918274641, + 0.603991687298, + -0.284652471542, + 0.263726234436, + -0.774797976017, + 0.632677435875, + -0.353127419949, + 0.484536141157, + -0.421771526337, + 0.624648749828, + -0.267458438873, + -0.38762113452, + 0.095492117107, + -0.735106408596, + 0.63017565012, + -0.208555355668, + 0.318729698658, + -0.322780698538, + 0.300851553679, + -0.020677017048, + -0.392186284065, + 0.304990977049, + -0.480732172728, + 0.382793694735, + -0.135068073869, + 0.471980750561, + -0.233769416809, + 0.1559676826, + -0.308775693178, + -0.539783835411, + 0.447067975998, + -0.346132904291, + 0.462240099907, + -0.408848762512, + 0.199442222714, + -0.213369101286, + 0.436742722988, + -0.152780786157, + 0.207529902458, + -0.358056366444, + 0.233825609088, + 0.511753082275, + -0.252697408199, + 0.273842185736, + -0.482782423496, + 0.472690850496, + -0.125520542264, + 0.302298396826, + -0.496801137924, + 0.473169893026, + -0.242720559239, + -0.500345528126, + 0.17572028935, + -0.505113601685, + 0.495912671089, + -0.052883736789, + 0.241033405066, + -0.354523837566, + 0.28295648098, + -0.264752209187, + 0.323498696089, + -0.251680463552, + -0.520910978317, + 0.256150782108, + -0.196474641562, + 0.317401617765, + -0.318596154451, + 0.139225050807, + -0.326515883207, + 0.274200558662, + -0.187763690948, + 0.243653953075, + -0.293430835009, + 0.021626189351, + -0.168913081288, + -0.170267224312, + 0.364793330431, + -0.192357778549, + 0.260395437479, + -0.414866119623, + 0.412575721741, + -0.297555863857, + -0.448777794838, + 0.042957797647, + -0.371446311474, + 0.57445526123, + -0.232759520411, + 0.304873138666, + -0.472600311041, + 0.735617876053, + 0.800494611263, + 0.010722837411, + -0.092379100621, + 0.320402294397, + -0.474022656679, + 0.283185005188, + 0.328442275524, + -0.175607845187, + 0.271006792784, + -0.794972896576, + 0.450137794018, + -0.179650381207, + 0.405874490738, + -0.364941686392, + 0.377335071564, + -0.464780241251, + 0.455635666847, + 0.45062187314, + -0.252197057009, + 0.27694606781, + -0.209056407213, + 0.498488396406, + -0.404291629791, + 0.157593294978, + -0.292956739664, + -0.19334679842, + 0.146100282669, + -0.157014548779, + 0.351804852486, + -0.335932672024, + 0.349650174379, + -0.051033321768, + 0.364383488894, + -0.3162740767, + 0.244562283158, + -0.277482748032, + 0.478407800198, + 0.560072481632, + -0.321745455265, + 0.019019719213, + -0.745529174805, + 0.67505133152, + -0.265967488289, + 0.18105584383, + -0.318331450224, + 0.160511806607, + 0.415457546711, + -0.203632384539, + 0.302330583334, + -0.616979181767, + 0.469260215759, + -0.141395524144, + 0.384283781052, + -0.531704246998, + 0.158104583621, + -0.235693901777, + 0.322674542665, + -0.362304568291, + -0.408904701471, + 0.263453423977, + -0.370729804039, + 0.446597754955, + -0.403534948826, + 0.180873483419, + -0.282337069511, + 0.188217699528, + 0.45692422986, + -0.161760851741, + 0.218961745501, + -0.477948874235, + 0.315737575293, + -0.363916963339, + 0.425682574511, + -0.492666333914, + 0.148935094476, + -0.178538754582, + 0.591516494751, + -0.252315312624, + -0.339043527842, + 0.042566634715, + -0.513407409191, + 0.687992751598, + -0.259010404348, + 0.089673772454, + -0.44519212842, + 0.314438223839, + -0.257558852434, + -0.308893799782, + 0.194704040885, + -0.603314220905, + 0.471307337284, + -0.140533924103, + 0.334022551775, + -0.740793466568, + 0.461875617504, + -0.211638346314, + 0.541033446789, + -0.29088640213, + 0.33758983016, + -0.457057267427, + -0.017658157274, + 0.240556582808, + 0.284496486187, + 0.551162600517, + -0.380951881409, + 0.179544657469, + -0.3001729846, + 0.487343072891, + -0.279928803444, + 0.667431950569, + -0.629120767117, + 0.37692913413, + -0.124176062644, + 0.395095944405, + 0.523645162582, + -0.427678138018, + 0.330015450716, + -0.305920004845, + 0.452485203743, + -0.319064736366, + -0.488686978817, + 0.195955380797, + -0.206615641713, + 0.64761608839, + -0.230310469866, + -0.02697005868, + -0.434683710337, + 0.54281026125, + -0.05525283888, + 0.313785970211, + -0.656951665878, + 0.326463758945, + 0.529218256474, + -0.206550732255, + 0.338611602783, + -0.657849311829, + 0.304416209459, + -0.173995807767, + 0.433612525463, + -0.5981143713, + 0.287101119757, + -0.305770933628, + 0.45582613349, + -0.381665557623, + 0.054933466017, + -0.238562077284, + -0.308649837971, + 0.410089045763, + -0.584901452065, + 0.2245426476, + -0.493783861399, + 0.45146933198, + -0.148228541017, + 0.152324259281, + -0.48580121994, + -0.466222375631, + 0.23340575397, + -0.224006175995, + 0.538459002972, + -0.148240685463, + 0.171073928475, + -0.518805205822, + 0.557182371616, + -0.257358461618, + -0.309291183949, + 0.058881387115, + -0.324490755796, + 0.535994052887, + -0.419416517019, + 0.331710547209, + -0.515537679195, + 0.32227486372, + -0.536930263042, + 0.1879478544, + -0.30647739768, + -0.497486889362, + 0.41022130847, + -0.340218693018, + 0.349374830723, + -0.622637569904, + 0.511763751507, + -0.257657319307, + 0.542789578438, + -0.468636393547, + 0.156390681863, + -0.158643275499, + -0.366707235575, + 0.6360450387, + -0.346009939909, + 0.547827064991, + -0.401067852974, + 0.435497015715, + -0.300949931145, + 0.410820782185, + -0.069311931729, + -0.43457326293, + 0.438125103712, + -0.29536241293, + 0.472120344639, + -0.433478266001, + 0.099845871329, + -0.125793159008, + -0.211113333702, + -0.174737423658, + 0.532017350197, + -0.128214001656, + 0.110539019108, + 0.273415803909, + -0.552659273148, + 0.419599205256, + -0.282087594271, + 0.292818784714, + -0.439262777567, + 0.695791363716, + -0.117129050195, + 0.189419522882, + -0.687571525574, + 0.285906195641, + -0.197588160634, + 0.183790162206, + 0.335943967104, + -0.48956361413, + 0.279362589121, + -0.200996279716, + 0.316416800022, + -0.449287384748, + 0.497675925493, + -0.145313426852, + -0.305384993553, + 0.495134800673, + -0.568242311478, + 0.442526698112, + -0.519165635109, + 0.263797789812, + -0.282728463411, + 0.29411137104, + -0.25750926137, + 0.136770173907, + -0.205508440733, + 0.189637467265, + 0.325865209103, + -0.316146105528, + 0.153893515468, + -0.051748417318, + 0.303615272045, + -0.367617368698, + 0.095836319029, + -0.501270532608, + 0.208783939481, + -0.446637153625, + 0.351506441832, + -0.211048841476, + -0.317947745323, + 0.289570957422, + -0.333032816648, + 0.040937345475, + -0.265078723431, + 0.552265226841, + -0.034858006984, + 0.363487541676, + -0.323241651058, + -0.644036114216, + -0.020821228623, + -0.262399971485, + 0.339632093906, + -0.493271142244, + 0.400496840477, + -0.427381128073, + 0.346094161272, + -0.4716142416, + 0.316078007221, + 0.476737082005, + -0.304419755936, + 0.527496039867, + -0.436881512403, + 0.317753762007, + -0.441988676786, + 0.285265743732, + -0.262490004301, + 0.376770913601, + -0.361355245113, + -0.332935571671, + 0.32612580061, + -0.339108079672, + 0.389855474234, + -0.333552449942, + 0.209864959121, + -0.30329349637, + 0.508243262768, + -0.162118345499, + 0.114842958748, + -0.362244933844, + -0.570234894753, + 0.347279697657, + -0.12292907387, + 0.214050650597, + -0.524875760078, + 0.404414385557, + -0.063418865204, + -0.197353556752, + 0.094420909882, + -0.271611154079, + -0.400505751371, + 0.022576544434, + -0.012902424671, + 0.376791298389, + 0.336614370346, + -0.252705723047, + 0.31055366993, + -0.510756850243, + 0.176486760378, + -0.354289472103, + 0.45304274559, + -0.321844398975, + 0.072857826948, + -0.392430484295, + 0.074406519532, + -0.248559817672, + -0.198218241334, + 0.419975817204, + 0.090090483427, + 0.515351951122, + -0.438648402691, + -0.299311518669, + 0.263953328133, + -0.073297604918, + 0.447500765324, + -0.24844174087, + 0.111880414188, + -0.564922690392, + 0.391007840633, + -0.391893982887, + -0.114719130099, + -0.360357761383, + 0.111043013632, + 0.336772441864, + -0.177496030927, + 0.057193741202, + -0.453148335218, + 0.369745403528, + -0.0587053895, + 0.449059337378, + -0.233764246106, + 0.185342475772, + -0.134562000632, + -0.22994326055, + 0.219154730439, + -0.482963383198, + 0.206124976277, + -0.381038755178, + 0.332680881023, + -0.24919128418, + 0.271974086761, + -0.35963588953, + 0.224385917187, + 0.21270672977, + -0.322724163532, + 0.244457364082, + -0.319115936756, + 0.244739040732, + -0.462973386049, + 0.23753555119, + -0.389831602573, + 0.318945288658, + 0.030421735719, + 0.403027743101, + -0.396831572056, + -0.508376955986, + 0.160243093967, + -0.468512862921, + 0.311779052019, + -0.162392705679, + 0.153663814068, + -0.310354441404, + 0.234061226249, + 0.213291823864, + -0.601584732533, + 0.111204825342, + -0.463233828545, + 0.563834428787, + -0.004986839835, + 0.34595054388, + -0.438725739717, + 0.347540229559, + -0.105639904737, + 0.224865213037, + -0.474821329117, + 0.239632830024, + -0.137882575393, + -0.304719716311, + 0.12855297327, + -0.275198042393, + 0.113571368158, + -0.337408274412, + 0.239376559854, + -0.253867328167, + 0.234636440873, + -0.220125421882, + 0.20607213676, + -0.160881116986, + -0.33524876833, + 0.269610792398, + 0.283274620771, + -0.165983766317, + -0.2274132967, + 0.307276904583, + -0.108974739909, + 0.40545091033, + -0.577859818935, + -0.060175314546, + -0.411827981472, + 0.250267654657, + -0.070814110339, + 0.182718634605, + 0.239148154855, + -0.314689785242, + 0.219818368554, + -0.214328482747, + 0.311643689871, + -0.042505253106, + 0.298972815275, + 0.404302090406, + -0.284146428108, + 0.013507311232, + -0.502076208591, + 0.50629389286, + 0.061890531331, + 0.454562306404, + -0.381698489189, + 0.2185934484, + -0.218121647835, + -0.278539210558, + 0.202130183578, + -0.286487996578, + 0.321299999952, + -0.149924203753, + 0.478063553572, + -0.252313673496, + 0.178785443306, + -0.469022065401, + 0.106803961098, + -0.233898639679, + 0.16594478488, + -0.184485808015, + -0.183730095625, + 0.578018724918, + -0.325766056776, + 0.347501039505, + -0.409636825323, + 0.113492138684, + -0.183757707477, + 0.389065951109, + -0.262656062841, + -0.334757328033, + 0.303780436516, + -0.221219569445, + 0.615949034691, + -0.168965905905, + 0.075139455497, + -0.489596128464, + 0.404870301485, + -0.115360707045, + 0.090183280408, + -0.260284513235, + -0.561843216419, + 0.686446487904, + -0.081562153995, + 0.138666689396, + -0.599204540253, + 0.152423113585, + -0.306073725224, + 0.433650195599, + -0.050083521754, + -0.277949988842, + 0.105405822396, + -0.172277644277, + 0.369874447584, + -0.285249918699, + 0.250246465206, + -0.114513993263, + 0.224949792027, + -0.220828682184, + 0.074899479747, + -0.235475972295, + -0.307300657034, + 0.387982785702, + -0.275308847427, + 0.420730292797, + -0.435198247433, + 0.095499292016, + -0.45549249649, + 0.413142800331, + -0.30860221386, + 0.246393233538, + 0.41164675355, + -0.421619743109, + 0.459476679564, + -0.3660800457, + 0.240262106061, + -0.496380835772, + 0.559315443039, + 0.43711566925, + 0.461995452642, + -0.159725964069, + 0.201972350478, + -0.591928124428, + 0.562723398209, + -0.163831263781, + 0.210949927568, + -0.322142750025, + -0.273008942604, + 0.397902369499, + 0.021904701367, + 0.255817562342, + -0.406603515148, + 0.151231437922, + -0.273345053196, + 5.88664552E-4, + 0.172571703792, + -0.668421149254, + 0.236114934087, + -0.177923887968, + 0.314792186022, + -0.125044971704, + 0.295003831387, + -0.26999232173, + 0.38428452611, + -0.164837792516, + 0.025379115716, + -0.426063209772, + -0.359209239483, + 0.169458180666, + -0.049556754529, + 0.495413988829, + -0.160985201597, + 0.209790825844, + -0.311992526054, + 0.191330134869, + 0.362693339586, + -0.268105328083, + 0.196741044521, + -0.274274379015, + 0.626756966114, + -0.126742735505, + 0.023127101362, + -0.664090454578, + 0.557829201221, + -0.055536281317, + 0.457490831614, + -0.169840231538, + -0.371998757124, + 0.164327055216, + -0.228797882795, + 0.462394028902, + -0.316154450178, + 0.549961924553, + 0.037874083966, + 0.378101110458, + -0.540286302567, + 0.103906340897, + -0.112261928618, + -0.376036971807, + 0.235312029719, + -0.098863117397, + 0.371437966824, + -0.492517381907, + 0.344677388668, + -0.141336411238, + 0.128602221608, + -0.299830436707, + -0.170558854938, + 0.287726163864, + -0.035548761487, + 0.381204992533, + -0.276445895433, + 0.026901802048, + -0.375029951334, + 0.4905641675, + -0.242517516017, + 0.065737769008, + -0.334330290556, + -0.45535504818, + 0.281532108784, + -0.141651898623, + 0.166025742888, + -0.362545609474, + 0.508073568344, + -0.010615497828, + 0.149807170033, + -0.355750530958, + -0.569263517857, + 0.360978424549, + -0.223772421479, + 0.544662296772, + -0.939667642117, + 0.446775376797, + -0.229007899761, + 0.261829555035, + -0.331196993589, + 0.099755421281, + 0.262373745441, + -0.136750102043, + -0.04079721868, + -0.11187684536, + 0.254589021206, + -0.390542387962, + -0.019388705492, + -0.22843657434, + 0.371401309967, + -0.106894180179, + 0.236388713121, + -0.405522555113, + -0.641975283623, + 0.203466907144, + -0.368960469961, + 0.587302088737, + -0.300339609385, + 0.093901880085, + -0.428657412529, + 0.287859171629, + -0.299934446812, + 0.106412231922, + -0.367402732372, + 0.143283173442, + 0.36875346303, + -0.234940901399, + 0.174749135971, + -0.345908552408, + 0.556588053703, + -0.171539723873, + 0.065019249916, + -0.317450225353, + 0.406557023525, + -0.259945571423, + 0.147604227066, + 0.21102245152, + -0.626180410385, + 0.323617786169, + -0.189703419805, + 0.416953206062, + -0.436751395464, + 0.424473375082, + -0.185522124171, + 0.337484925985, + -0.275472462177, + -0.443575412035, + 0.077396072447, + -0.220110818744, + 0.567131996155, + -0.128829061985, + 0.287002980709, + -0.34103885293, + 0.166558757424, + -0.320275753736, + 0.255655735731, + 0.437792509794, + -0.288822084665, + 0.259022116661, + -0.267296463251, + 0.325700849295, + -0.322440773249, + 0.35760897398, + -0.085822552443, + 0.462465286255, + -0.142277479172, + -0.212162822485, + -0.23242944479, + -0.324104756117, + 0.416437000036, + -0.112574115396, + 0.180236712098, + -0.381307154894, + 0.398213237524, + -0.095220826566, + 0.219900906086, + -0.672436892986, + 0.15444201231, + 0.430260032415, + -0.300863862038, + 0.369439214468, + -0.486492991447, + 0.263836324215, + -0.032397996634, + 0.243397176266, + -0.444246053696, + 0.024078695104, + 0.253691613674, + 0.011748427525, + 0.354676038027, + -0.414194792509, + -0.051765762269, + -0.446485608816, + 0.44451418519, + -0.181812807918, + 0.353764414787, + -0.513482153416, + -0.417118251324, + 0.211422130466, + -0.481688052416, + 0.199181064963, + -0.39495947957, + -0.276724010706, + -0.30262696743, + 0.110595524311, + -0.122623406351, + 0.410600632429, + -0.205296203494, + 0.047997906804, + -0.203712403774, + 0.349540442228, + 0.504091382027, + -0.612529277802, + 1.162310123444, + -1.618649721146, + 0.920583307743, + -0.416360646486, + 0.32387137413, + -0.737125754356, + 0.17205606401, + -0.303657650948, + 0.054273094982, + 0.116385228932, + -0.515688180923, + 0.262365698814, + -0.177549898624, + 0.652593553066, + -0.632270693779, + 0.25331094861, + -0.479916661978, + 0.306096851826, + 0.529273748398, + -0.435921788216, + 0.305214315653, + -0.452965438366, + 0.508303999901, + -0.242430388927, + 0.332978576422, + -0.243221119046, + 0.245499819517, + -0.10431817174, + 0.180868119001, + -0.164993062615, + -0.186383321881, + 0.541174888611, + -0.190355479717, + 0.622621357441, + -0.574933111668, + 0.126055464149, + -0.2967838943, + 0.59878963232, + -0.215295031667, + 0.058400254697, + -0.486807644367, + -0.49395647645, + 0.355499655008, + 0.436408281326, + -0.053404562175, + -0.325868666172, + 0.123149886727, + 0.314968317747, + -0.206979736686, + 0.19500926137, + -0.495933324099, + 0.197371199727, + -0.242675453424, + 0.352806866169, + -0.41801789403, + 0.393865466118, + -0.013033135794, + 0.198859751225, + -0.545143663883, + 0.026206299663, + -0.242590010166, + -0.328905075788, + 0.53780913353, + -0.12744461, + 0.377649962902, + -0.219987288117, + 0.27459564805, + -0.235953107476, + 0.033543717116, + -0.394408643246, + -0.426348119974, + 0.257913708687, + -0.227371394634, + 0.383184105158, + -0.4497384727, + -0.2185613662, + 0.12985882163, + -0.252462774515, + 0.365603268147, + -0.460694789886, + 0.301756441593, + -0.374234348536, + 0.483800500631, + -0.071170516312, + 0.025788163766, + -0.406694710255, + 0.351918876171, + 0.287401586771, + -0.16458030045, + -0.115335591137, + -0.056154858321, + -0.475446492434, + -0.018005166203, + 0.341127842665, + -0.167037025094, + 0.110087327659, + -0.567351102829, + 0.347478210926, + -0.003160440596, + 0.40159741044, + -0.3580339849, + 0.127299234271, + -0.415197074413, + 0.329861491919, + -0.072942718863, + -0.247109532356, + 0.251547753811, + -0.380912542343, + 0.327623277903, + -0.303672462702, + 0.340795487165, + -0.3140848279, + 0.236339047551, + 0.450245767832, + -0.254449307919, + 0.347202956676, + -0.478845030069, + 0.508932352066, + -0.259856075048, + 0.414882957935, + -0.446152895689, + 0.112752944231, + -0.387016028166, + 0.443458557129, + -0.010383009911, + -0.200028941035, + 0.101432934403, + -0.380092710257, + 0.476844370365, + -0.17730152607, + 0.204915955663, + -0.38185095787, + 0.430956453085, + 0.553384661674, + -0.133887887001, + -0.031244812533, + -0.74538308382, + 0.4001917243, + -0.151226505637, + 0.385624319315, + -0.461743474007, + 0.298438966274, + -0.136621460319, + 0.320793271065, + 0.407557070255, + -0.345048397779, + 0.285247564316, + -0.291615307331, + 0.464855909348, + -0.494003385305, + 0.22448900342, + -0.300749510527, + 0.212174266577, + -0.335097312927, + 0.247535556555, + 0.343860596418, + -0.997263252735, + 0.926132261753, + -0.296945661306, + 0.714593231678, + -0.314554572105, + 0.194889292121, + -0.296674966812, + 0.22814296186, + -0.379196614027, + -0.551651060581, + 0.143866375089, + -0.476665169001, + 0.350658863783, + -0.325267463923, + 0.157592013478, + -0.353419333696, + 0.414525896311, + -0.102632403374, + 0.031901150942, + -0.40342476964, + 0.407177865505, + 0.654339015484, + -0.101731531322, + 0.138214796782, + -0.428495615721, + 0.13191203773, + -0.151645481586, + 0.223698094487, + 0.058926727623, + -0.637762129307, + 0.063734695315, + -0.156685858965, + 0.420976251364, + 0.128093704581, + -0.156434908509, + -0.472935676575, + 0.259867280722, + -0.162770599127, + 0.625499367714, + -0.5007853508, + 0.324903458357, + -0.523559629917, + -0.815071284771, + 0.745595872402, + -0.245275080204, + 0.605767309666, + -0.468822330236, + 0.257438182831, + -0.292166680098, + 0.409231305122, + -0.144916728139, + 0.280019551516, + -0.482069462538, + 0.45154774189, + -0.25707796216, + -0.224059730768, + 0.248767241836, + -0.378640711308, + 0.286819636822, + -0.287574321032, + 0.153514549136, + -0.552402257919, + 0.517293334007, + -0.109704755247, + 0.181936860085, + -0.293830782175, + -0.408908247948, + 0.384837269783, + 0.123349569738, + 0.374453693628, + -0.528090178967, + 0.095397867262, + -0.427515774965, + 0.337325960398, + -0.408215254545, + 0.256249368191, + 0.412748515606, + -0.131632491946, + 0.486489266157, + -0.320854216814, + 0.296943575144, + -0.437270849943, + 0.552454471588, + -0.314228057861, + 0.29908016324, + -0.31639623642, + -0.325183212757, + 0.353909403086, + -0.224127799273, + 0.395926833153, + -0.462476879358, + 0.240781575441, + -0.437828481197, + 0.240561276674, + 0.370593309402, + -0.213718280196, + 0.244227573276, + -0.233272522688, + 0.698763549328, + -0.275568425655, + 0.141757652164, + -0.529526650906, + 0.36790433526, + -0.145990341902, + -0.158236190677, + 0.232037335634, + -0.530519604683, + 1.328515768051, + -1.416066169739, + 1.156891465187, + -0.808637619019, + 0.68427759409, + -0.392485678196, + 0.452854663134, + -0.533493518829, + 0.187304958701, + 0.62855386734, + -0.162818089128, + 0.772225558758, + -0.41602191329, + 0.170183122158, + -0.574188113213, + 0.326553612947, + -0.630313336849, + -0.082425870001, + -0.462840497494, + -0.620271325111, + 0.558046102524, + -0.059072580189, + 0.696679472923, + -0.475051999092, + 0.289574503899, + -0.48966217041, + 0.01154148113, + 0.015781112015, + 0.451316148043, + -0.360144495964, + 0.199110299349, + -0.381474077702, + 0.255044937134, + 0.525351703167, + -0.398796021938, + 0.187678456306, + -0.499271810055, + 0.555272221565, + -0.137752369046, + -0.332059144974, + -0.524633705616, + 0.076388128102, + 0.554628372192, + 0.01125101652, + 0.334472119808, + -0.443965524435, + 0.270186424255, + -0.313631772995, + 0.179010629654, + -0.64350259304, + 0.174709960818, + -0.10969042033, + 0.477599412203, + 0.391738802195, + -0.442888736725, + 0.156463235617, + -0.291029930115, + 0.3435074687, + -0.354167878628, + 0.234971091151, + -0.368321567774, + 0.194249659777, + 0.391733825207, + -0.346085697412, + 0.439092367887, + -0.561637163162, + 0.312047600746, + -0.39042159915, + 0.655119001865, + -0.352598398924, + 0.173459663987, + -0.53037071228, + 0.392154246569, + 0.570777177811, + -0.470127910376, + 0.155397668481, + -0.307981222868, + 0.643632233143, + -0.056794542819, + 0.264504462481, + -0.552007615566, + 0.181840538979, + 0.435314506292, + -0.622475743294, + 0.908921778202, + -0.682644248009, + 1.275950908661, + -0.478397876024, + 0.168049901724, + -0.758515119553, + -0.114961460233, + 0.419214844704, + -0.002567597898, + 0.313153326511, + -0.671430230141, + 0.224755734205, + -0.037448570132, + 0.583814680576, + -0.36117374897, + 0.336839288473, + -0.516176402569, + 0.312382519245, + -0.363921046257, + 0.459362030029, + 0.591890335083, + -0.422181606293, + 0.362898945808, + -0.163152635098, + 0.495711386204, + -0.229406505823, + 0.377246201038, + -0.471361815929, + 0.27611887455, + 0.375538319349, + -0.395474553108, + 0.479218304157, + -0.19050693512, + 0.532700300217, + -0.460087269545, + 0.337989062071, + -0.46048283577, + 0.678017914295, + -0.042931720614, + -0.215166375041, + 0.340220272541, + -0.460167616606, + 0.292760401964, + 0.431800872087, + 0.523213326931, + -0.209064751863, + 0.216679990292, + -0.558892726898, + 0.440491110086, + -0.271873503923, + 0.384218305349, + -0.570315659046, + -0.053686026484, + 0.318032741547, + -0.004471215419, + 0.438907653093, + -0.440577149391, + 0.485732108355, + -0.303406238556, + 0.459294259548, + -0.579272329807, + 0.375629335642, + -0.261831462383, + 0.347934305668, + 0.490576326847, + -0.45231243968, + 0.229278787971, + -0.540734767914, + 0.415229529142, + -0.372880101204, + 0.374974012375, + -0.53967410326, + 0.133409142494, + 0.36378377676, + -0.254934221506, + 0.554961383343, + -0.307367771864, + 0.248822435737, + -0.44902446866, + 0.551927924156, + -0.268769621849, + 0.01476319693, + -0.50376367569, + 0.24343842268, + 0.387743622065, + -0.267765343189, + 0.312415599823, + -0.516717791557, + 0.596434593201, + -0.021634310484, + 0.114910021424, + -0.487260431051, + -0.636757135391, + 0.23615410924, + -0.176999107003, + 0.337760895491, + -0.615769207478, + 0.072501905262, + -0.226165428758, + 0.452616751194, + -0.189738467336, + 0.120897866786, + -0.504022836685, + 0.040625691414, + 0.274817615747, + -0.303899616003, + 0.088137738407, + -0.30324229598, + 0.435085296631, + -0.078350394964, + 0.46404260397, + -0.162059783936, + -0.308227002621, + 0.402270942926, + -0.178471833467, + 0.578297734261, + -0.341892778873, + 0.424046784639, + -0.326978504658, + 0.578695476055, + -0.451092749834, + 0.009311856702, + -0.390939682722, + 0.369395941496, + 0.504652500153, + -0.299309641123, + 0.23150973022, + -0.649618864059, + 0.614417910576, + -0.013550910167, + 0.363201200962, + -0.61050927639, + 0.43058219552, + -0.060666173697, + -0.1982755512, + 0.405828386545, + -0.534009933472, + 0.277641296387, + -0.319336026907, + 0.340458363295, + -0.258725225925, + 0.286627739668, + -0.025599373505, + -0.043866526335, + -0.337853312492, + 0.071114525199, + -0.435951054096, + 0.436153709888, + -0.185830399394, + -0.096279628575, + 0.570160269737, + -0.289981693029, + 0.405495166779, + -0.311198830605, + 0.729932308197, + -0.121862910688, + 0.65833902359, + -0.468934267759, + 0.160204365849, + -0.107722520828, + 0.315761804581, + 0.369597315788, + -0.742426931858, + -0.166193068027, + -0.683260202408, + 0.699899435043, + -0.087783567607, + 0.066088579595, + -0.666837930679, + 0.228911355138, + 0.443752646446, + -0.214252591133, + 0.254927754402, + -0.715537130833, + 0.509837090969, + 0.003417073283, + 0.488811165094, + -0.477883160114, + 0.207152038813, + -0.308196097612, + 0.00164777704, + 0.324375808239, + -0.349141389132, + 0.274758845568, + -0.155960604548, + 0.350165814161, + -0.401253759861, + 0.047941919416, + -0.243032410741, + 0.355594485998, + 0.216780230403, + -0.40328669548, + 0.06193594262, + -0.470579326153, + 0.45563980937, + -0.336516439915, + 0.21785210073, + -0.660341799259, + 0.051216036081, + -0.132234916091, + 0.384373724461, + 0.473859131336, + -0.288334339857, + 0.167394191027, + -0.100331880152, + 0.69251203537, + -0.165380328894, + 0.396554976702, + -0.305753499269, + 0.526278495789, + -0.117355071008, + 0.080735765398, + 0.090905793011, + -0.951547145844, + 0.364806085825, + -0.378307104111, + 0.220838025212, + -0.199681162834, + 0.325891762972, + 0.426515460014, + -0.276838898659, + 0.405530273914, + -0.406558513641, + 0.405355423689, + -0.047934543341, + 0.55507671833, + -0.363646179438, + 0.495197862387, + -0.123528286815, + 0.35422873497, + 0.311999797821, + -0.386242121458, + 0.143118143082, + -0.486740618944, + 0.504459857941, + -0.24666801095, + 0.320063769817, + -0.384098172188, + -0.342799693346, + 0.460700452328, + -0.011242009699, + 0.602500975132, + -0.321672976017, + -0.250705271959, + -0.241428479552, + 0.107536271214, + -0.280434638262, + 0.584533810616, + -0.226940050721, + 0.258888602257, + -0.361662447453, + 0.525251209736, + -0.262531965971, + -0.424347728491, + 0.159781634808, + -0.68095511198, + 0.555519163609, + -0.171009033918, + 0.196253627539, + -0.441628396511, + 0.34425920248, + -0.290862411261, + 0.293975710869, + -0.404840379953, + -0.242751449347, + 0.240796357393, + -0.238556757569, + 0.278887778521, + -0.533019781113, + 0.433576077223, + -0.298041373491, + 0.286955744028, + -0.502809047699, + -0.056011144072, + -0.480604678392, + 0.204175338149, + 0.385123133659, + -0.39918166399, + 0.250041037798, + -0.428670793772, + 0.163868889213, + -0.369674861431, + 0.307411372662, + -0.304486393929, + -0.378263086081, + 0.430103242397, + -0.196307644248, + 0.70830821991, + -0.308795839548, + 0.032573986799, + -0.505391001701, + 0.451788634062, + -0.359571903944, + 0.353145301342, + -0.435772657394, + 0.476147651672, + 0.60375058651, + -0.450691342354, + 0.063707314432, + -0.783576250076, + 0.653639554977, + -0.063091635704, + 0.507150828838, + -0.552286565304, + 0.39231222868, + -0.253378123045, + 0.164820939302, + -0.007134219632, + -0.982083857059, + 0.349234670401, + -0.280402719975, + 0.351523578167, + -0.741674900055, + 0.167436689138, + -0.283751875162, + 0.632251679897, + 0.423158168793, + -0.266425669193, + 0.398012518883, + -0.187460511923, + 0.632260560989, + -0.365082025528, + 0.499074101448, + -0.23431430757, + -0.352651715279, + 0.291221380234, + -0.215250641108, + 0.425895690918, + -0.233916714787, + 0.166421920061, + -0.261882990599, + 0.459037750959, + -0.23633491993, + 0.30415353179, + -0.119385764003, + 0.543753623962, + -0.11810747534, + -0.375873714685, + 0.285043030977, + -0.476555913687, + 0.58826649189, + -0.241713151336, + -0.440033882856, + -0.410055011511, + 0.319790780544, + -0.656705737114, + 0.587305784225, + -0.156144425273, + 0.200524717569, + -0.639497697353, + -0.460499852896, + 0.419313341379, + -0.00599848479, + 0.548823058605, + -0.565994679928, + 0.20137809217, + -0.161664903164, + 0.398324966431, + -0.287648618221, + 0.181094616652, + -0.287536412477, + -0.427196085453, + 0.30665999651, + -0.595962762833, + 0.408489912748, + -0.524486303329, + 0.248612180352, + -0.120840124786, + 0.476476281881, + -0.116917178035, + -0.211688160896, + 0.094814419746, + -0.391329407692, + 0.262250632048, + -0.511338472366, + 0.143506795168, + -0.143765181303, + 0.542575955391, + -0.352366954088, + -0.50288182497, + 0.078237682581, + -0.529022216797, + 0.762280106544, + -0.168611869216, + 0.325290292501, + -0.751608848572, + 0.535866737366, + -0.145149722695, + 0.233861520886, + -0.628636002541, + 0.247027814388, + 0.509025216103, + -0.049048662186, + 0.456170707941, + -0.732176601887, + 0.057320702821, + -0.069835714996, + 0.643712222576, + -0.280581951141, + 0.462237000465, + -0.336196452379, + -0.057607471943, + 0.370194047689, + -0.596109271049, + 0.188293799758, + -0.469387173653, + 0.323184370995, + -0.369952529669, + 0.227098032832, + -0.349493801594, + -0.344527095556, + 0.508804619312, + -0.095232121646, + 0.637701094151, + -0.460767090321, + 0.29805380106, + -0.17526088655, + 0.330783039331, + -0.53016525507, + -0.627863407135, + 0.244534790516, + -0.318015515804, + 0.838355064392, + -0.232230648398, + 0.018563253805, + -0.847257554531, + 0.400824248791, + -0.050877895206, + 0.329665005207, + -0.41995999217, + 0.351695716381, + 0.592292010784, + -0.180505186319, + 0.32732668519, + -0.554827809334, + 0.453698992729, + -0.19492316246, + 0.068232782185, + -0.907758176327, + 0.351891666651, + -0.255611896515, + 0.12769292295, + 0.26372563839, + 0.194493532181, + -0.507352173328, + -0.020854134113, + -0.195877462626, + 0.173575669527, + 0.352355033159, + -0.23924446106, + 0.027629077435, + -0.274825364351, + -0.2171343714, + 0.56761443615, + 0.002533673774, + 0.481181889772, + -0.496497690678, + 0.169088542461, + -0.277143269777, + 0.557186722755, + -0.534544885159, + -0.015609570779, + -0.500988304615, + 0.613987267017, + 0.056326586753, + 0.292224735022, + -0.281233370304, + -0.442964226007, + 0.180964112282, + -0.470497310162, + 0.154531225562, + -0.34937787056, + 0.735998272896, + 0.021944589913, + 0.265113383532, + -0.444833219051, + -0.64178019762, + 0.35572218895, + -0.256133794785, + 0.232132986188, + -0.995157539845, + 0.593498885632, + -0.18059591949, + 0.66668343544, + -0.72036087513, + 0.078030586243, + -0.449989318848, + 0.419544786215, + 0.631977915764, + -0.13766553998, + 0.476452231407, + -0.419861584902, + 0.397666752338, + -0.185579672456, + 0.390933126211, + -0.345405250788, + -0.506954967976, + 0.341916203499, + -0.197592049837, + 0.481622934341, + -0.413964301348, + 0.194318950176, + -0.33556330204, + 0.301620215178, + -0.19873945415, + 0.114169806242, + 0.273105442524, + -0.053766172379, + 0.525919020176, + -0.443651735783, + 0.267138183117, + -0.569117724895, + 0.753614127636, + -0.110444538295, + 0.139253020287, + -0.341206848621, + -0.521425962448, + 0.425794839859, + -0.13074709475, + 0.179045453668, + -0.504594504833, + 0.436107039452, + -0.177911251783, + 0.425876736641, + -0.395491749048, + 0.19856967032, + -0.015257399529, + 0.222691237926, + 0.418706893921, + -0.25565290451, + 0.24073857069, + -0.374863475561, + 0.010500555858, + -0.272329062223, + 0.037260565907, + -0.406880170107, + -0.384591519833, + 0.314588844776, + -0.262354940176, + 0.0973501876, + -0.446299880743, + 0.107514053583, + -0.027228116989, + -0.007902459241, + -0.139578670263, + 0.391505300999, + -0.1169731915, + -0.194029048085, + 0.276836842299, + -0.103893749416, + 0.451037764549, + -0.335231900215, + 0.081613898277, + -0.373076617718, + 0.488028585911, + -0.023117965087, + 0.145186036825, + -0.558455228806, + 0.497054159641, + 0.07873442024, + -0.058482337743, + 0.141443192959, + -0.521363973618, + 0.337213218212, + -0.333849787712, + 0.194289758801, + -0.392471581697, + 0.184419453144, + -0.232215166092, + -0.286168843508, + 0.50544244051, + -0.394210785627, + 0.676604092121, + -0.389611333609, + 0.417532712221, + -0.484265267849, + 0.184470579028, + -0.46233266592, + 0.357986241579, + -0.052479244769, + 0.426011264324, + 0.562383890152, + -0.174335375428, + 0.205850362778, + -0.314823955297, + 0.053836684674, + -0.525908589363, + -0.579342782497, + 0.278627753258, + 0.60156172514, + 0.672234416008, + -0.433258771896, + -0.019952660426, + -0.479369968176, + 0.518467903137, + -0.033513113856, + 0.245571807027, + -0.410260885954, + 0.871172964573, + 0.299605131149, + -0.061871469021, + 0.362775623798, + -0.616410136223, + -0.690637230873, + -0.133632808924, + 0.225385412574, + -0.206626415253, + 0.181134596467, + -0.371492475271, + 0.178017318249, + -0.479263365269, + -0.515092551708, + 0.218323081732, + -0.175145998597, + 0.32857811451, + -0.182243466377, + 0.25052562356, + -0.378931075335, + 0.474604457617, + -0.112561888993, + 0.218625515699, + -0.305721610785, + -0.135813012719, + 0.294191271067, + -0.017251059413, + 0.299461632967, + -0.601543903351, + -0.714416980743, + 0.058840051293, + -0.245111018419, + 0.586969316006, + -0.116329848766, + 0.130366802216, + -0.456360280514, + 0.419592738152, + 0.076694823802, + 0.18102838099, + -0.396384209394, + 0.566743552685, + -0.190121307969, + 0.016852552071, + 0.038091287017, + -0.373055428267, + -0.324253022671, + 0.213304400444, + -0.200176820159, + -0.261442095041, + 0.144665643573, + -0.409622192383, + 0.39623144269, + -0.119333304465, + 0.292903095484, + -0.384129375219, + 0.203023463488, + -0.133511587977, + 0.335958480835, + 0.292836308479, + -0.330982804298, + 0.118680916727, + -0.569037139416, + 0.565190851688, + -0.055081158876, + 0.329610526562, + -0.282358825207, + -0.290956348181, + 0.431037396193, + -0.413745135069, + 0.410439997911, + -0.378816217184, + 0.165148660541, + -0.205622136593, + 0.419701039791, + -0.155983179808, + -0.327769756317, + 0.257546901703, + -0.016666207463, + 0.480801343918, + -0.171492561698, + -0.002768995008, + -0.365853458643, + 0.315060764551, + -0.266090482473, + 0.057424344122, + -0.291853010654, + 0.518209695816, + 0.024241639301, + 0.219140589237, + 0.293796002865, + -0.568467319012, + 0.262038171291, + -0.215234428644, + 0.316927731037, + -0.494946837425, + 0.355301558971, + -0.227516129613, + 0.324989050627, + 0.158967390656, + -0.383024811745, + 0.145374521613, + -0.473602324724, + 0.363472998142, + -0.51295208931, + 0.086992703378, + -0.421499341726, + 0.320642083883, + 0.553643405437, + -0.088836029172, + 0.322219640017, + -0.624719262123, + 0.267201513052, + -0.312029868364, + 0.472876936197, + -0.382222056389, + 0.086138434708, + -0.305997818708, + 0.252998292446, + 0.497014701366, + -0.117704764009, + 0.037366021425, + -0.412013739347, + 0.356171399355, + 0.017558274791, + 0.10652628541, + -0.554746091366, + -0.149077668786, + 0.174090191722, + -0.259530395269, + 0.191940113902, + -0.393720537424, + 0.631701648235, + -0.081874936819, + 0.047552809119, + -0.501916706562, + 0.233177930117, + -0.108081944287, + 0.231200218201, + -0.310514479876, + 0.146358788013, + -0.211827650666, + 0.373705714941, + 0.439080029726, + -0.601074397564, + -0.215020030737, + -0.251550734043, + -0.100759260356, + -0.437952548265, + 0.394913613796, + 0.608416974545, + -0.181103914976, + 0.49601238966, + -0.491684377193, + 0.446907401085, + -0.518996417522, + 0.408299475908, + -0.446761101484, + 0.289906233549, + -0.308616369963, + 0.550651550293, + -0.300095975399, + -0.494295865297, + 0.259118050337, + -0.426673710346, + 0.725149571896, + -0.034986495972, + -0.280909270048, + -0.523220598698, + 0.6557315588, + 0.026772670448, + 0.120410203934, + -0.327120959759, + 0.344335049391, + -0.082565940917, + 0.276082575321, + -0.263636469841, + -0.548500239849, + 0.290875971317, + -0.124872177839, + 0.298040211201, + -0.342318326235, + 0.345232963562, + -0.31080532074, + 0.260581940413, + 0.379770249128, + -0.425705522299, + 0.304216206074, + -0.348631054163, + 0.401617586613, + -0.2123234272, + 0.337188988924, + -0.344070404768, + -0.441967457533, + 0.248917743564, + -0.358007639647, + 0.354065299034, + -0.3698772192, + 0.390922009945, + -0.106190353632, + 0.557689845562, + -0.604618012905, + -0.109785489738, + -0.277833133936, + 0.444557189941, + 0.555204570293, + -0.315490365028, + 0.104621991515, + -0.485369235277, + 0.729401230812, + -0.110354013741, + 0.113132849336, + -0.642281711102, + 0.229797720909, + 0.011706102639, + 0.191828355193, + 0.081417873502, + -0.345187455416, + 0.187527731061, + -0.145343735814, + 0.133944839239, + -0.50126260519, + -0.007917490788, + -0.202774301171, + 0.190436124802, + 0.208377286792, + -0.412259310484, + 0.193383768201, + -0.251733243465, + 0.402573883533, + -0.118426658213, + 0.388404101133, + -0.339356601238, + 0.266561836004, + -0.103062085807, + 0.402545392513, + -0.409134298563, + -0.4122364223, + 0.408802568913, + -0.435794621706, + 0.641155540943, + -0.429154425859, + -0.595224678516, + -0.302705258131, + 0.457605153322, + 0.340438306332, + 0.474668323994, + -0.394550353289, + 0.107484705746, + 0.23441760242, + -0.556047022343, + 0.799941062927, + -0.168456986547, + 0.197438672185, + -0.590886294842, + 0.417871743441, + -0.253990381956, + 0.232037782669, + 0.306680440903, + -0.594176828861, + 0.354473829269, + -0.116821572185, + 0.462577730417, + -0.437004268169, + 0.078773252666, + -0.044105667621, + 0.333728522062, + -0.150623440742, + -0.345623731613, + 0.289749860764, + -0.248322889209, + 0.467131525278, + -0.406932502985, + 0.404271155596, + -0.465297490358, + 0.16753578186, + -0.231111943722, + 0.186427086592, + -0.260167717934, + 0.076448872685, + 0.50562363863, + -0.055138956755, + 0.490050196648, + -0.447697222233, + 0.105820350349, + -0.141595065594, + 0.270988255739, + -0.588837981224, + 0.030150862411, + 0.233512490988, + -0.316192954779, + 0.706003129482, + -0.262808382511, + 0.207322582603, + -0.448156863451, + 0.531544208527, + 8.74797115E-4, + -0.181235358119, + 0.176159694791, + -0.359611660242, + 0.498318403959, + 0.030926572159, + 0.157889544964, + -0.676191210747, + 0.140524238348, + 8.45552713E-4, + 0.223394080997, + -0.401183307171, + -0.68337905407, + 0.174509301782, + -0.484203249216, + 0.536057949066, + -0.349038720131, + 0.131369963288, + -0.502354264259, + 0.16874152422, + 0.303326547146, + -0.176812008023, + 0.161101147532, + -0.422367572784, + 0.069374784827, + -0.037643428892, + 0.350353002548, + -0.309204995632, + -0.472383260727, + 0.420139759779, + -0.132721543312, + 0.545343160629, + -0.341135829687, + 0.151055246592, + -0.437177211046, + 0.647339582443, + -0.299210637808, + 0.122179321945, + -0.241642579436, + 0.408520430326, + 0.052192732692, + -0.251659393311, + 0.255537509918, + -0.505106389523, + 0.4522780478, + -0.025212883949, + 0.189204409719, + -0.520808875561, + -0.056898847222, + 0.351449042559, + 0.403668791056, + 0.453537374735, + -0.086508110166, + -0.684108138084, + -0.09332562983, + -0.221206307411, + 0.633081972599, + 0.118008993566, + -0.220279946923, + 0.079141803086, + -0.276359468699, + 0.279725551605, + -0.219286113977, + 0.186118319631, + -0.264055252075, + -0.021955220029, + 0.36269235611, + -0.293870091438, + 0.27961140871, + -0.378116935492, + 0.275209695101, + -0.107545517385, + 0.284575521946, + -0.325121998787, + 0.250104635954, + -0.198917746544, + 0.326564222574, + 0.362202078104, + -0.190335944295, + -0.007383856922, + -0.272088468075, + 0.500360548496, + -0.13264529407, + 0.102974079549, + -0.535612165928, + 0.226685538888, + -0.079572021961, + 0.192455500364, + 0.256374180317, + -0.468083351851, + 0.338092267513, + -0.035219050944, + 0.379775822163, + -0.438597500324, + -0.005826056935, + -0.321624577045, + 0.192630320787, + 0.318374961615, + -0.069706454873, + 0.21515725553, + -0.287668257952, + 0.384669929743, + -0.239892348647, + 0.266395926476, + -0.265327960253, + -0.300291031599, + 0.231314569712, + -0.298767775297, + 0.248321697116, + -0.437569022179, + 0.347060441971, + -0.174845024943, + 0.552234470844, + -0.149969801307, + -0.207219213247, + -0.332229942083, + 0.259351849556, + -0.03469767049, + -0.238692015409, + 0.085499070585, + -0.321105182171, + 0.454331636429, + -0.169655099511, + 0.091215722263, + -0.52065628767, + 0.390067696571, + -0.008837135509, + 0.177958860993, + 0.150031775236, + -0.637087404728, + 0.356605023146, + -0.101387761533, + 0.514806509018, + -0.495160937309, + 0.091078095138, + -0.251689702272, + 0.209017589688, + 0.29827773571, + -0.407973945141, + 0.255774110556, + -0.207097560167, + 0.370934218168, + -0.208730876446, + 0.189651280642, + -0.214993000031, + 0.221572607756, + 0.352973788977, + -0.09985640645, + 0.220434218645, + -0.160202816129, + -0.156881183386, + -0.57410722971, + 0.366495609283, + -0.319191455841, + 0.411988466978, + -0.337074249983, + 0.057620823383, + -0.161329045892, + 0.378483682871, + 0.376742601395, + -0.311980068684, + 0.086576975882, + -0.403753250837, + 0.541297972202, + -0.180790290236, + 0.207013085485, + -0.593759477139, + 0.416063308716, + -0.13780772686, + 0.003586952807, + 0.067176632583, + -0.620430409908, + 0.606823205948, + -0.299223035574, + 0.196560993791, + -0.556363344193, + 0.373221427202, + 0.02291896753, + 0.237981125712, + 0.308941781521, + -0.330483704805, + 0.160614609718, + -0.207308143377, + 0.29396623373, + -0.56624853611, + 0.13703802228, + -0.295621842146, + 0.407278090715, + 0.065726570785, + 0.161561951041, + -0.271505564451, + -0.343806087971, + 0.322054624557, + -0.219739973545, + 0.278346866369, + -0.245728075504, + -0.327328830957, + 0.13588295877, + -0.153130963445, + 0.429623872042, + -0.212861582637, + 0.147353813052, + -0.3341191113, + 0.170997157693, + -0.315360546112, + 0.116438291967, + -0.297412574291, + 0.350962728262, + 0.386850833893, + -0.168483555317, + 0.227585747838, + -0.64745426178, + 0.556431293488, + -0.065279737115, + 0.190286263824, + -0.459075331688, + 0.072548218071, + -0.073612891138, + 0.205235242844, + 0.365536779165, + -0.363688975573, + 0.213488698006, + -0.25277620554, + 0.489938080311, + -0.308560878038, + 0.374081104994, + -0.319514065981, + 0.278026968241, + 0.306606888771, + -0.440171539783, + 0.204522505403, + -0.457867830992, + 0.633684694767, + -0.322927713394, + 0.394810974598, + -0.314779758453, + -0.017951892689, + -0.091226421297, + 0.39959821105, + 0.392932057381, + -0.295715242624, + 0.278266429901, + -0.567354619503, + 0.519798517227, + -0.195203512907, + 0.018042849377, + -0.536277651787, + 0.073312342167, + 0.404162377119, + -0.046326998621, + 0.104137443006, + 0.250185459852, + -0.396305710077, + 0.373423933983, + -0.116105347872, + -0.159036174417, + 0.205761089921, + -0.25520965457, + 0.286356717348, + -0.153704047203, + 0.376253128052, + -0.754059314728, + 0.288766622543, + -0.195316553116, + -0.395879417658, + 0.3958530128, + -0.581468582153, + 0.440062344074, + -0.298764139414, + 0.342187732458, + -0.271025240421, + 0.273594915867, + -0.427397966385, + -0.493034154177, + 0.482781738043, + -0.172635450959, + 0.483210831881, + -0.222589284182, + -0.454128324986, + 0.119536213577, + -0.226761355996, + 0.226171791553, + -0.228678479791, + 0.351862639189, + -0.340678334236, + 0.22012861073, + -0.357996463776, + 0.156240433455, + -0.192079648376, + 0.329911410809, + -0.19000774622, + 0.187108933926, + -0.112895779312, + 0.316425472498, + 0.606563866138, + -0.171948358417, + -0.074542321265, + -0.556188166142, + 0.212277069688, + 0.039416085929, + 0.339053720236, + -0.368154525757, + 0.184212237597, + -0.237417817116, + 0.124219983816, + 0.337152510881, + -0.234038367867, + 0.491289407015, + -0.230316534638, + 0.258213162422, + -0.381914436817, + 0.221522405744, + -0.421679913998, + 0.265470385551, + 0.438608914614, + -0.295466154814, + 0.488090723753, + -0.184904843569, + 0.213857591152, + -0.373293578625, + 0.309093594551, + -0.238398477435, + -0.361640751362, + 0.366418659687, + -0.367370098829, + 0.607040464878, + -0.346273690462, + 0.05968400836, + -0.452862918377, + 0.576635420322, + -0.151352062821, + 0.106122992933, + -0.431799173355, + 0.449169188738, + 0.684598505497, + -0.095237359405, + 0.088374018669, + -0.552758157253, + 0.324433296919, + 0.05588568002, + 0.378119498491, + -0.53104621172, + -0.599960386753, + 0.183366954327, + -0.393632978201, + 0.699392795563, + -0.553187787533, + 0.639120459557, + -0.649647295475, + -0.37769946456, + -0.270054727793, + 0.364110946655, + -0.637793004513, + 0.569951474667, + -0.447077035904, + 0.474896430969, + 0.383952468634, + -0.565533041954, + 0.247701823711, + -0.445235162973, + 0.340736925602, + -0.360406190157, + 0.352092653513, + -0.425869137049, + -0.540210425854, + 0.264349728823, + -0.342145144939, + 0.390561461449, + -0.197476029396, + 0.187412947416, + -0.333354175091, + 0.52901417017, + -0.191412240267, + -0.493875563145, + -0.618854165077, + 0.446954369545, + 0.512574017048, + -0.149367570877, + 0.088549226522, + -0.469803869724, + 0.302053570747, + -0.402841687202, + 0.491156101227, + -0.346661150455, + 0.116847023368, + -0.412816673517, + 0.121958725154, + 0.115699894726, + -0.674866735935, + 0.257650226355, + -0.163486629725, + 0.655425131321, + -0.464273184538, + 0.408234059811, + -0.496167898178, + 0.374932318926, + 0.489728599787, + -0.230207443237, + 0.41697204113, + -0.326469391584, + 0.342557638884, + -0.365119725466, + 0.37520378828, + -0.493030905724, + 0.179939672351, + -0.356729328632, + 0.289605468512, + 0.65926104784, + -0.196327984333, + 0.23288603127, + -0.380983352661, + 0.295218259096, + -0.264326870441, + 0.13167694211, + -0.077270247042, + 0.406381249428, + -0.210325375199, + -0.374389708042, + 0.339261591434, + -0.468006700277, + 0.561132013798, + -0.169780403376, + 0.338412851095, + -0.436983197927, + 0.239875361323, + 0.611644744873, + -0.135183915496, + 0.264488935471, + -0.408804506063, + 0.610446095467, + -0.002250452759, + 0.300921320915, + -0.513079583645, + 0.168796539307, + -0.226885825396, + 0.17503502965, + 0.397909760475, + -0.503945052624, + 0.294770538807, + -0.530128657818, + 0.536343276501, + -0.461098223925, + 0.468286812305, + -0.394868761301, + 0.202959686518, + 0.320919811726, + -0.332588583231, + 0.375044435263, + -0.499168097973, + -0.280525505543, + -0.041591525078, + 0.36807924509, + -0.357167571783, + 0.418967157602, + -0.32253202796, + 0.024748329073, + -0.329260349274, + 0.332962155342, + 0.491441518068, + -0.356568545103, + 0.309684425592, + -0.584098935127, + 0.501665055752, + -0.190602585673, + 0.152069583535, + -0.368106216192, + 0.034879926592, + 0.277047902346, + -0.251663357019, + 0.114264562726, + -0.383316457272, + 0.285812169313, + -0.498528003693, + 0.169095143676, + -0.511109232903, + 0.206262975931, + -0.01285570953, + 0.343645215034, + 0.236944630742, + -0.456892967224, + 0.247585326433, + -0.32991951704, + 0.322491526604, + -0.190901875496, + 0.457372307777, + -0.287564426661, + 0.133719906211, + 0.229853361845, + -0.414765059948, + 0.203594371676, + -0.338851839304, + 0.280032664537, + -0.225098088384, + 0.3300524652, + -0.392046332359, + -0.524139165878, + 0.152578115463, + -0.104556061327, + 0.652698993683, + -0.169565737247, + 0.219915986061, + -0.614919304848, + 0.389653742313, + -0.340840369463, + 0.041196398437, + -0.371747225523, + 0.836150050163, + 0.278507947922, + -0.138100191951, + 0.237376227975, + -0.542367339134, + 0.404316186905, + -0.20095269382, + 0.280245155096, + -0.373446553946, + 0.058611869812, + 0.385984420776, + -0.058119364083, + 0.130098029971, + -0.572521150112, + 0.061599772424, + -0.342124193907, + 0.402528762817, + -0.229758873582, + 0.340051323175, + -0.260223180056, + 0.005670618266, + 0.278284519911, + -0.286869943142, + 0.506228029728, + -0.197229415178, + 0.26433300972, + -0.335923671722, + 0.443580925465, + -0.319919645786, + -0.314432740211, + 0.269770801067, + -0.30645942688, + 0.559256434441, + -0.33254095912, + 0.390581816435, + -0.460471689701, + 0.428917735815, + -0.302031368017, + 0.026785409078, + -0.503999471664, + 0.264929205179, + 0.762555062771, + -0.449393600225, + -0.439056843519, + 0.137768819928, + -0.32627594471, + -0.306714087725, + 0.379880875349, + -0.331071019173, + 0.230175971985, + -0.585814356804, + 0.271216422319, + -0.040673963726, + -0.075729012489, + 0.389951258898, + -0.442915469408, + 0.059500802308, + -0.308667719364, + 0.261687397957, + -0.340536653996, + 0.138760000467, + -0.293595910072, + 0.077454224229, + -0.385440349579, + 0.284723937511, + -0.306313425303, + -0.263327181339, + 0.408130884171, + -0.423473417759, + 0.361285120249, + -0.277230173349, + -0.477932214737, + 0.471964359283, + -0.163176164031, + 0.618987202644, + -0.316963225603, + 0.388541400433, + -0.537097334862, + 0.312214076519, + -0.297765642405, + 0.093581900001, + -0.245871633291, + 0.242558836937, + -0.376254111528, + -0.454591095448, + 0.393647879362, + -0.430151671171, + 0.670595943928, + -0.032313484699, + 0.245816960931, + -0.623302161694, + 0.522568285465, + -0.037326909602, + 0.213377177715, + -0.257004022598, + -0.513736188412, + 0.199950113893, + -0.439147412777, + 0.19325453043, + -0.397890418768, + 0.086592815816, + -0.303796857595, + -0.06505586952, + 0.186372295022, + -0.410296678543, + 0.442965894938, + -0.209803789854, + 0.59061640501, + -0.220761299133, + 0.326556056738, + -0.40845656395, + 0.346808105707, + -0.455223441124, + 0.339189261198, + -0.480214178562, + -0.147817075253, + 0.229592651129, + -0.301827520132, + 0.476154714823, + -0.23564209044, + 0.074862852693, + -0.350083649158, + 0.159323140979, + 0.36492651701, + -0.379484206438, + 0.268293082714, + -0.26997834444, + 0.274033695459, + -0.131311461329, + 0.125053361058, + -0.401236146688, + 0.232333630323, + 0.451823234558, + -0.27587968111, + 0.142941638827, + -0.601554393768, + 0.387105464935, + -0.369810551405, + 0.21046487987, + -0.353567570448, + 0.160043343902, + -0.251659184694, + 0.078787915409, + 0.055897396058, + -0.019819971174, + -0.267001062632, + 0.223153814673, + -0.295638084412, + 0.092943027616, + 0.27063447237, + -0.219641804695, + 0.250848501921, + -0.424462169409, + 0.338079124689, + -0.267635017633, + 0.380273967981, + -0.36601421237, + 0.017727347091, + -0.206735923886, + -0.380825221539, + 0.47251906991, + -0.134215429425, + 0.197030037642, + -0.558043301105, + 0.283691823483, + -0.369505733252, + 0.223154306412, + 0.043052431196, + -0.466911822557, + 0.592134177685, + -0.310718804598, + 0.136209443212, + -0.817980766296, + 0.728188872337, + -0.133143112063, + 0.429396033287, + -0.224839121103, + -0.636454641819, + 0.206205800176, + -0.261035293341, + 0.45405960083, + -0.39772567153, + 0.410674571991, + -0.278333723545, + 0.274380236864, + -0.511088073254, + 0.377281039953, + -0.46545535326, + 0.120738551021, + 0.45851790905, + -0.341736108065, + 0.516584396362, + -0.236641287804, + 0.652366161346, + -0.199124827981, + 0.620111703873, + -0.705162584782, + -0.190697774291, + 0.120406441391, + -0.900914669037, + 0.708516597748, + -0.526327133179, + 0.360225081444, + -0.463662028313, + 0.585724592209, + -0.325409293175, + 0.339130491018, + -0.077877752483, + -0.465941280127, + 0.484409064054, + -0.160839796066, + 0.375854253769, + -0.527161002159, + 0.751278698444, + -0.298468828201, + -0.008936146274, + 0.143651306629, + -0.676980912685, + 0.427264690399, + -0.153797641397, + 0.539754152298, + -0.493090182543, + 0.418490976095, + -0.099741920829, + 0.363759964705, + 0.300306141376, + -0.343909680843, + 0.347470164299, + -0.486433446407, + 0.236955136061, + -0.707548737526, + 0.100050061941, + -0.516532599926, + 0.30677574873, + -0.280146092176, + 0.144313246012, + -0.190916463733, + -0.284876316786, + 0.330406159163, + -0.344944834709, + 0.523883521557, + -0.079759612679, + 0.3280377388, + 0.318541765213, + 0.335729569197, + -0.471329450607, + 0.280145257711, + -0.556733906269, + 0.105340488255, + 0.246466934681, + -0.333619713783, + 0.537084579468, + -0.489027112722, + 0.138594299555, + -0.678508579731, + 0.65002477169, + -0.180453449488, + 0.105716437101, + -0.315068155527, + 0.276498526335, + 0.478939682245, + -0.283526837826, + 0.315280050039, + -0.59721660614, + 0.568121254444, + -0.405049622059, + 0.274877130985, + -0.649894118309, + 0.673376917839, + 0.002753397916, + -0.26402965188, + 0.361591160297, + -0.521352052689, + 0.338805168867, + -0.268201082945, + 0.408578634262, + -0.430978655815, + 0.134033694863, + 0.534504890442, + -0.085407197475, + 0.526479482651, + -0.503087818623, + 0.341052919626, + -0.575483262539, + 0.155209541321, + -0.539666473866, + 0.563429296017, + -0.295688927174, + 0.326804935932, + -0.034273270518, + -0.286921620369, + 0.682230234146, + -0.434280961752, + 0.103869177401, + -0.688959538937, + 0.499613374472, + -0.377589583397, + 0.232372015715, + -0.34441691637, + -0.5091817379, + 0.549980223179, + -0.223216503859, + 0.154860779643, + -0.954442858696, + 0.480914801359, + -0.270857274532, + 0.389788120985, + -0.670386254787, + 0.278044074774, + 0.43745213747, + -0.261218339205, + 0.230118751526, + -0.695162713528, + 0.251665353775, + -0.284534245729, + 0.368585973978, + 0.510942518711, + -0.409788906574, + 0.200353220105, + -0.252880990505, + 0.643985629082, + -0.267741471529, + 0.386745989323, + -0.574882209301, + 0.169461652637, + -0.437916606665, + 0.306045532227, + -0.238774821162, + -0.515215575695, + 0.328923344612, + -0.350901991129, + 0.490189194679, + -0.285736113787, + -0.367093294859, + -0.195462360978, + 0.519754230976, + -0.073339283466, + -0.331896215677, + 0.149880245328, + -0.618501484394, + 0.516709208488, + -0.387013792992, + 0.194655418396, + 0.285670518875, + 0.130553409457, + -0.893944859505, + 0.679555118084, + -0.547296822071, + 0.267074346542, + -0.624664306641, + 0.774703085423, + 0.011974253692, + 0.394752591848, + 0.3839661479, + -0.937350153923, + 0.367825776339, + -0.122893318534, + 0.607917964458, + -0.390000253916, + 0.404671907425, + -0.246094688773, + 0.169405832887, + -0.43938344717, + 0.097730867565, + -0.253286480904, + -0.363937914371, + 0.51341354847, + -0.151232257485, + 0.383092939854, + -0.406391084194, + 0.159090697765, + -0.20289093256, + 0.388875752687, + -0.102756895125, + -0.387297451496, + 0.317973315716, + -0.175424098969, + 0.305641233921, + -0.448956161737, + 0.002889094874, + -0.673436045647, + 0.400439500809, + -0.181487306952, + 0.447632968426, + 0.13061439991, + -0.521759986877, + 0.556955337524, + -0.186987429857, + 0.364460706711, + -0.620522379875, + 0.632979333401, + -0.36239618063, + 0.200476154685, + 0.400715321302, + -0.648152470589, + 0.354572325945, + -0.143231973052, + 0.236958578229, + -0.543176531792, + 0.310265362263, + -0.323833286762, + 0.270749688148, + 0.086567528546, + -0.490052491426, + 0.201697990298, + -0.091942556202, + 0.249847531319, + -0.118531376123, + 0.265337765217, + -0.201370030642, + -0.304210245609, + 0.184971809387, + -0.446826606989, + 0.234748616815, + -0.239684864879, + 0.317062079906, + -0.139017254114, + 0.184137418866, + -0.486928105354, + 0.002115983982, + -0.402309954166, + 0.515500843525, + -0.303393155336, + 0.200498268008, + -0.178691804409, + -0.39107838273, + 0.464254528284, + -0.192733928561, + 0.055478528142, + -0.477459579706, + 0.311049491167, + -0.181964039803, + 0.267317771912, + -0.281926870346, + -0.567971527576, + 0.851599395275, + 0.04116769135, + 0.308020889759, + -0.710164785385, + 0.167096629739, + -0.399033606052, + 0.148246407509, + 0.429408580065, + -0.122657828033, + -0.333943039179, + 0.464924395084, + -0.089575365186, + -0.065660141408, + 0.477095395327, + -0.357565701008, + 0.380091071129, + -0.281651884317, + 0.641300857067, + -0.341318309307, + 0.218003049493, + -0.394523590803, + -0.54877525568, + 0.745132446289, + -0.620009422302, + 0.834733426571, + -0.670109212399, + 0.521900177002, + -0.571541786194, + 0.410034060478, + 0.54779291153, + -0.215381368995, + 0.377086937428, + -0.722195029259, + 0.503525435925, + -0.558719277382, + 0.469826757908, + -0.427063047886, + 0.560470581055, + -0.438338220119, + 0.166637852788, + -0.592069029808, + 0.273317605257, + 0.57515245676, + -0.435534358025, + 0.762844502926, + -0.65038818121, + 0.487730622292, + -0.299947440624, + -0.007038691081, + -0.526854038239, + -0.614553928375, + 0.46779191494, + -0.083228670061, + 0.409224271774, + -0.581804871559, + 0.265261381865, + -0.303066760302, + 0.393455862999, + -0.589470922947, + 0.254119992256, + -0.459642231464, + -0.372655749321, + 0.570751547813, + -0.262518465519, + 0.150765538216, + -0.323295474052, + 0.071998387575, + -0.068327412009, + 0.173230141401, + 0.471400082111, + -0.556616425514, + 0.127993062139, + -0.476850926876, + 0.436078667641, + -0.317981302738, + 0.122723832726, + -0.525788009167, + 0.315210163593, + -0.095670707524, + 0.030071171001, + -0.642241358757, + 0.185855716467, + 0.718710005283, + -0.142046362162, + 0.31097176671, + -0.529398262501, + 0.257900744677, + -0.412157326937, + 0.175405040383, + -0.395954847336, + 0.305192112923, + -0.181531041861, + 0.091529257596, + 0.493139356375, + -0.848598062992, + 0.356488019228, + -0.282694250345, + 0.453446596861, + -0.469337195158, + 0.089216142893, + -0.400822341442, + 0.28361004591, + 0.584265589714, + -0.152510434389, + 0.588098704815, + -0.188096120954, + 0.216719642282, + -0.249701082706, + 0.029646823183, + 0.189462035894, + 0.526596128941, + -0.129409968853, + 0.294481933117, + -0.431392759085, + 0.188819870353, + 0.342574715614, + -0.313556283712, + 0.196366503835, + -0.248639836907, + 0.34139034152, + -0.287582218647, + 0.087766431272, + -0.62489682436, + 0.53152436018, + -0.100904397666, + 0.215658411384, + 0.221955642104, + -0.341168761253, + 0.361061096191, + -0.077852346003, + 0.255855172873, + -0.388553768396, + 0.438697367907, + -0.114586018026, + 0.349141746759, + -0.356426477432, + 0.053590200841, + 0.274899214506, + -0.328898638487, + 0.257904678583, + -0.388253927231, + 0.309857100248, + -0.481918334961, + 0.476651906967, + -0.286670029163, + 0.159346729517, + 0.261660426855, + -0.300581216812, + 0.447225391865, + -0.128032028675, + 0.528757750988, + -0.529129743576, + 0.11823888123, + -0.663449168205, + 0.188648656011, + -0.309375792742, + -0.077184580266, + 0.412287294865, + -0.324075251818, + 0.3573346138, + -0.366136014462, + -0.078410454094, + -0.689109444618, + 0.447787165642, + -0.093699947, + 0.159457206726, + 0.132921427488, + -0.460717380047, + 0.261951833963, + -0.352678358555, + 0.22538946569, + -0.561580359936, + 0.648800373077, + -0.123604103923, + 0.260224401951, + -0.601619303226, + -0.853787481785, + 0.421409457922, + -0.234228983521, + 0.630740404129, + -0.732282519341, + 0.35842949152, + -0.401669532061, + 0.218190297484, + -0.563267827034, + 0.20786049962, + 0.420278429985, + -0.365992903709, + 0.482942134142, + -0.470252662897, + 0.30140799284, + -0.379598289728, + 0.330243349075, + -0.35073018074, + 0.396722048521, + -0.166053459048, + -0.17068707943, + 0.525744855404, + -0.213992834091, + 0.495066910982, + -0.278184831142, + 0.126452967525, + -0.259374171495, + 0.590685069561, + -0.163663372397, + 0.156472146511, + -0.311844676733, + -0.576294660568, + 0.076125428081, + -0.025273350999, + 0.299547553062, + -0.244627341628, + 0.389806330204, + -0.342236489058, + 0.57194930315, + -0.163597047329, + 0.197720944881, + -0.644575476646, + 0.291513264179, + -0.177218019962, + 0.111622214317, + 0.239654362202, + -0.510712504387, + 0.281153798103, + -0.468041628599, + 0.463432997465, + -0.524646878242, + 0.252708911896, + -0.235012203455, + -0.33759072423, + 0.373362392187, + -0.515551030636, + 0.576328873634, + -0.321921378374, + 0.426083624363, + -0.297233998775, + 0.344708949327, + -0.258124083281, + -0.235838234425, + 0.299185633659, + -0.212143942714, + 0.612917840481, + -0.207351326942, + 0.345729291439, + -0.392781496048, + 0.295723587275, + -0.264886885881, + -0.485595405102, + 0.101392000914, + -0.446530997753, + 0.407440334558, + -0.325617074966, + 0.231803938746, + -0.564510762691, + 0.506031394005, + -0.188844040036, + 0.362602472305, + -0.480724990368, + 0.378220796585, + -0.171573147178, + 0.125053599477, + 0.154433816671, + -0.701569020748, + 0.293790906668, + -0.174700453877, + 0.330939650536, + -0.504703223705, + 0.253041744232, + -0.332087308168, + -0.434801131487, + 0.577398538589, + -0.352939218283, + 0.465484589338, + -0.344290226698, + 0.585503816605, + -0.671263217926, + 0.446232229471, + -0.318312704563, + 0.538348138332, + -0.187967792153, + 0.558687567711, + 0.737178504467, + -0.576878964901, + 0.041912585497, + -0.687996685505, + 0.559122264385, + -0.07240935415, + 0.28057461977, + -0.739995479584, + 0.08113270998, + 0.289243191481, + -0.461826294661, + 0.266424745321, + -0.524558067322, + 0.509222209454, + -0.023107964545, + 0.302670657635, + -0.469599962234, + 0.522765398026, + -0.123578630388, + -0.246221899986, + 0.284462928772, + -0.621819794178, + 0.217747226357, + -0.265299469233, + 0.139979675412, + -0.480431318283, + 0.577205717564, + 0.402403116226, + 0.202972918749, + -0.180308222771, + 0.55747961998, + -0.69055378437, + 0.244332134724, + -0.527140319347, + 0.420744121075, + 0.512077987194, + -0.387720763683, + 0.386513948441, + -0.437545835972, + 0.377584069967, + -0.774182796478, + 0.477040976286, + -0.279655098915, + -0.327265560627, + 0.392544806004, + -0.242120295763, + 0.432982802391, + -0.351712375879, + 0.267000615597, + -0.251552730799, + 0.45427313447, + -0.280424147844, + -0.349250197411, + 0.124591305852, + -0.349911093712, + 0.250168472528, + -0.43561938405, + 0.162702351809, + -0.347783476114, + 0.503534436226, + -0.193777158856, + 0.055201884359, + -0.446233212948, + -0.476022422314, + 0.649455904961, + -0.099888913333, + 0.411199986935, + -0.650626897812, + 0.252928823233, + -0.278799951077, + 0.430031239986, + -0.595971405506, + 0.124267496169, + -0.293452829123, + 0.055500756949, + 0.365902215242, + -0.751857161522, + 0.292864084244, + -0.421587526798, + 0.586685836315, + -0.256075680256, + 0.441336363554, + -0.461819112301, + -0.594073295593, + 0.572134077549, + -0.301147133112, + 0.55676984787, + -0.519945085049, + 0.442602455616, + -0.394916862249, + 0.626261174679, + -0.403472214937, + -0.441371738911, + 0.05202806741, + -0.434132188559, + 0.574700891972, + -0.338936090469, + 0.295887410641, + -0.62159204483, + 0.416431218386, + -0.129541516304, + -0.349397331476, + 0.1386782974, + -0.345282047987, + 0.805069625378, + -0.168730467558, + 0.233201816678, + -0.631591141224, + 0.269346117973, + 0.004157806747, + 0.389828652143, + -0.143027797341, + 0.091574937105, + -0.306328326464, + -0.440670877695, + 0.20677600801, + -0.542333900928, + 0.25509378314, + -0.145396783948, + 0.552660167217, + -0.290159791708, + 0.226488769054, + -0.571621060371, + 0.14514683187, + 0.504284799099, + -0.316927731037, + 0.744226336479, + -0.20152579248, + -0.251964449883, + 0.248362481594, + 0.445898026228, + -0.423257648945, + 0.182920441031, + -0.643773257732, + 0.200402453542, + -0.152766659856, + 0.569231510162, + -0.502139985561, + -0.641188561916, + -0.185973718762, + -0.536134123802, + 0.472681671381, + 0.150382578373, + 0.301846921444, + -0.276861518621, + 0.470782279968, + -0.35167708993, + -0.355456441641, + -0.031733583659, + -0.391242474318, + 0.563279807568, + -0.073998399079, + 0.154412582517, + -0.666564583778, + -0.08744186908, + -0.315862715244, + 0.315280020237, + -0.296269983053, + 0.15863892436, + 0.340206056833, + -0.265505760908, + 0.367865651846, + -0.193372383714, + 0.213102817535, + -0.271332621574, + 0.523677706718, + -0.039114940912, + 0.158221766353, + -0.540003299713, + -0.504491746426, + 0.149644523859, + -0.238971531391, + 0.572702765465, + -0.339078336954, + 0.167618215084, + -0.537729859352, + 0.305353492498, + 0.530354440212, + -0.413598716259, + 0.4261687994, + -0.399316877127, + 0.678493618965, + -0.102927319705, + 0.167187333107, + -0.614371597767, + 0.435854196548, + -0.060661468655, + 0.298795908689, + -0.472831338644, + 0.056038700044, + 0.215991005301, + -0.321519553661, + 0.270910292864, + -0.181025102735, + 0.506363689899, + -0.135585010052, + 0.229560926557, + -0.57076883316, + -0.850897848606, + 0.083369538188, + -0.144504919648, + 0.681542038918, + -0.067277997732, + 0.309971272945, + -0.329755067825, + 0.37286823988, + -0.438676297665, + 0.191696882248, + -0.215410113335, + 0.091964237392, + 0.1709279567, + -0.22382427752, + 0.348493129015, + -0.373293757439, + 0.202512905002, + -0.297795891762, + 0.560021281242, + -0.194753944874, + -0.406368076801, + 0.215150266886, + -0.439756721258, + 0.435275703669, + -0.392618715763, + 0.126325681806, + -0.344497859478, + 0.760627746582, + -0.089104354382, + -0.176812514663, + -0.241647854447, + -0.081685490906, + -0.711831867695, + -0.118632644415, + 0.377700120211, + -0.020627303049, + 0.395790368319, + -0.39110442996, + 0.300534278154, + -0.199376434088, + 0.204992130399, + -0.63365650177, + 0.186967581511, + -0.309797465801, + 0.258315265179, + 0.362222790718, + -0.369146645069, + 0.165736839175, + -0.362826734781, + 0.265717744827, + -0.410259574652, + 0.278355300426, + -0.115167960525, + -0.192449897528, + 0.213227629662, + -0.365169912577, + 0.26634478569, + -0.232618421316, + 0.536536693573, + 0.061231702566, + 0.338150858879, + -0.410057812929, + -0.607792973518, + 0.119763970375, + 0.5476821661, + 0.66759711504, + -0.279882192612, + 0.131469517946, + -0.40733641386, + 0.645387351513, + -0.194411084056, + -0.468967854977, + 0.029915548861, + -0.314703553915, + 0.534036099911, + 0.018813932315, + 0.411532521248, + -0.464942008257, + 0.43709680438, + -0.308415770531, + 0.434298753738, + -0.364814728498, + 0.389281988144, + -0.201845213771, + -0.412245064974, + 0.147763133049, + -0.504009783268, + 0.372990250587, + -0.187681749463, + 0.348998427391, + -0.53189355135, + 0.122969962656, + -0.263921976089, + 0.246529504657, + -0.219903632998, + 0.512044668198, + 0.772051095963, + -0.122142113745, + 0.405401349068, + -0.496563524008, + 0.38043358922, + -0.505005955696, + 0.299743115902, + -0.355631619692, + 0.542423307896, + -0.39803314209, + -0.511797130108, + 0.040339235216, + -0.526075541973, + 0.329993993044, + -0.17558644712, + 0.446406453848, + -0.261092483997, + 0.658394575119, + 0.972239375114, + 0.563035666943, + -1.06761431694, + -1.050509691238, + 0.354862332344, + -0.401110678911, + 0.658307671547, + -0.793170511723, + 0.22557105124, + -0.441279470921, + -0.385555803776, + 0.296430528164, + -0.545674622059, + 0.231102526188, + -0.241754412651, + 0.382068544626, + 0.282447069883, + 0.486332476139, + -0.230358973145, + 0.582450926304, + -0.336114704609, + 0.389253884554, + -0.388502180576, + 0.311792522669, + -0.274145662785, + -0.44936221838, + 0.445324599743, + -0.669940233231, + 0.277333080769, + -0.575814366341, + 0.255972027779, + -0.036686100066, + 0.501473963261, + -0.390291005373, + -0.025773866102, + -0.334214448929, + 0.657161772251, + -0.035988662392, + 0.296629667282, + 0.353490650654, + -0.45220002532, + 0.565698742867, + -0.137900918722, + -0.434318602085, + 0.25241920352, + -0.735180795193, + 0.327846616507, + -0.331134617329, + 0.408353239298, + -0.352854728699, + 0.611574590206, + -0.210969269276, + 0.487748861313, + -0.261715918779, + 0.364412158728, + -0.14067222178, + 0.230968609452, + 0.446728825569, + -0.475226551294, + 0.227110773325, + -0.265264570713, + 0.467310398817, + -0.27947846055, + 0.288267225027, + -0.544435083866, + -0.05210877955, + 0.067095987499, + -0.348243623972, + 0.311543136835, + -0.340511441231, + 0.40757343173, + -0.07288082689, + 0.442675709724, + -0.173612833023, + -0.46151381731, + 0.13454541564, + -0.29901137948, + 0.459036171436, + -0.241820409894, + 0.218991354108, + -0.591097950935, + 0.55551725626, + -0.228799313307, + 0.325694322586, + -0.57998663187, + 0.510304808617, + -0.192803278565, + -0.440998286009, + 0.117726869881, + -0.602090537548, + 0.478217869997, + -0.125788882375, + 0.374351292849, + -0.460850387812, + 0.339319676161, + -0.151887699962, + 0.186289682984, + 0.114426203072, + -0.592308104038, + 0.312565952539, + -0.317797094584, + 0.461828529835, + -0.454803913832, + 0.443167418242, + -0.143989026546, + 0.291717380285, + 0.091730438173, + -0.679076850414, + -0.014672086574, + -0.555189669132, + 0.446009755135, + -0.210896611214, + 0.406715929508, + -0.355747640133, + -0.392959982157, + 0.007573389914, + 0.022296838462, + -0.240109160542, + 0.251094430685, + -0.302855700254, + 0.036045406014, + 0.341550499201, + -0.700997471809, + 0.371696799994, + -0.232586964965, + 0.137954875827, + -0.398001164198, + 0.440308958292, + -0.303073704243, + -0.417312353849, + 0.107089973986, + -0.634060025215, + 0.483752310276, + -0.147015571594, + 0.361874163151, + -0.653511941433, + 0.405930191278, + -0.02602709271, + 0.349601268768, + -0.782988727093, + 0.004431435373, + 0.403690963984, + -0.390469789505, + 0.534297227859, + -0.417472451925, + 0.292863041162, + -0.420696139336, + 0.307056039572, + -0.230900272727, + 0.181657657027, + -0.259403437376, + -0.223903089762, + 0.499731183052, + -0.208222776651, + 0.478501319885, + -0.322718322277, + 0.305718541145, + -0.276687294245, + 0.302476465702, + -0.314808428288, + 0.07405564189, + 0.310147374868, + -0.343447327614, + 0.50752645731, + -0.396356880665, + 0.141571208835, + -0.210222437978, + 0.624624788761, + -0.2033893466, + 0.103463947773, + 0.280024677515, + -0.751844108105, + 0.478080123663, + -0.193766385317, + 0.239984452724, + -0.686331033707, + 0.434577643871, + -0.032994605601, + 0.145887985826, + -0.68365329504, + 0.358338773251, + -0.189908474684, + -0.214990019798, + 0.492832988501, + -0.565704762936, + 0.29686319828, + -0.217695176601, + 0.314132988453, + -0.488617479801, + 0.046706229448, + 0.273198634386, + -0.298791348934, + 0.390669345856, + -0.225785240531, + 0.160625368357, + -0.408161580563, + -0.485450744629, + 0.615863263607, + 0.54898673296, + -0.399634003639, + -0.343434333801, + 0.115732602775, + -0.3784327209, + 0.210597410798, + -0.509978473186, + 0.061818279326, + -0.100921995938, + 0.426078021526, + -0.037775926292, + 0.133843317628, + -0.355699628592, + -0.452286988497, + 0.547080099583, + -0.062407106161, + 0.206607744098, + 0.024562913924, + 0.026163868606, + -0.497378826141, + 0.434579640627, + -0.0868081972, + 0.115130580962, + -0.505674302578, + 0.306653410196, + -0.331471949816, + 0.272462189198, + 0.327971965075, + -0.497537940741, + 0.070218488574, + -0.232113867998, + 0.414434254169, + -0.326834917068, + 0.408055722713, + -0.418229013681, + 0.044585417956, + 0.339625507593, + -0.334726125002, + 0.233423218131, + -0.541856825352, + 0.368615448475, + -0.16239528358, + 0.440698564053, + -0.530103504658, + -0.060642901808, + -0.220868766308, + 0.405684113503, + 0.478103667498, + -0.183143556118, + 0.146736577153, + -0.335960656404, + 0.411086797714, + -0.141311913729, + 0.119931653142, + -0.371781557798, + 0.333502084017, + -0.125301405787, + 0.177665486932, + 0.184405446053, + -0.654449820518, + 0.488738358021, + -0.132993400097, + 0.295418292284, + -0.398536860943, + 0.374896913767, + -0.169216141105, + 0.290218263865, + 0.399506181479, + -0.432628840208, + 0.038775812835, + -0.259512066841, + 0.48742043972, + -0.396141767502, + 0.326084375381, + -0.370556592941, + -0.358119606972, + 0.509190559387, + -0.116166636348, + 0.226306542754, + -0.454398214817, + 0.431558310986, + -0.240814864635, + 0.440972030163, + -0.395744144917, + 0.122300177813, + -0.242276370525, + 0.292534351349, + 0.160361006856, + -0.313113152981, + 0.180756360292, + -0.323941081762, + 0.635888576508, + -0.225255355239, + 0.07505966723, + -0.367965400219, + 0.451411277056, + -0.060640931129, + 0.119128383696, + 0.083868101239, + -0.369335860014, + 0.346657216549, + -0.165337562561, + 0.174139872193, + -0.461768448353, + 0.215469911695, + -0.218127086759, + 0.391175031662, + 0.00145676895, + -0.399646669626, + 0.190445736051, + -0.330178797245, + 0.446164190769, + -0.388183414936, + 0.317413151264, + -0.507874846458, + -0.079198896885, + 0.439528435469, + -0.202093690634, + -0.147018134594, + 0.356385499239, + -0.667199671268, + -0.430012077093, + 0.463656395674, + -0.382965177298, + 0.33071616292, + -0.380632400513, + 0.197453096509, + -0.139809340239, + 0.584976673126, + -0.113842561841, + -0.266187936068, + 0.230480730534, + -0.391368418932, + 0.413223445415, + -0.482922881842, + 0.231479376554, + -0.208697021008, + 0.636372983456, + -0.232165157795, + 0.01152268704, + -0.303391456604, + -0.439595103264, + 0.672708153725, + 0.003692218801, + 0.172235697508, + -0.453406631947, + 0.257887899876, + 0.010594544001, + 0.30083334446, + -0.330125153065, + -0.377079933882, + 0.136212334037, + -0.17463926971, + 0.313145339489, + -0.50564789772, + 0.20120960474, + -0.180044561625, + 0.411903172731, + -0.111521147192, + -0.287725120783, + 0.194626733661, + -0.303958952427, + 0.412196218967, + -0.418622910976, + 0.163328811526, + -0.282151907682, + -0.357481330633, + 0.291645050049, + -0.200060382485, + 0.23468722403, + -0.483040630817, + 0.428808361292, + -0.134347841144, + 0.482337385416, + -0.336117684841, + 0.057800747454, + -0.189646273851, + 0.381527751684, + -0.050773970783, + -0.354337126017, + 0.01666483283, + -0.435147017241, + 0.874202132225, + -0.014191702008, + 0.015610918403, + -0.549989581108, + 0.127648979425, + 0.339890122414, + 0.028056591749, + 0.243850871921, + -0.336151301861, + 0.140678673983, + -0.143888548017, + 0.262759834528, + -0.476475477219, + 0.245622873306, + -0.226625293493, + 0.306336283684, + -0.397649079561, + 0.119342632592, + -0.635609745979, + 0.072859100997, + 0.634306550026, + -0.376492321491, + 0.309416770935, + -0.449148118496, + 0.314437776804, + -0.215699836612, + 0.20547901094, + -0.345049381256, + -0.392570078373, + 0.216067433357, + -0.454256802797, + 0.543203771114, + -0.502365469933, + 0.367706775665, + -0.345275849104, + -0.171286195517, + -0.012526142411, + 0.457648962736, + -0.415499955416, + 0.068893559277, + -0.458418667316, + 0.551379621029, + -0.182770997286, + 0.179285615683, + 0.148825675249, + -0.276067763567, + 0.236391916871, + -0.27473154664, + 0.061708122492, + -0.541795134544, + 0.475642979145, + -0.028436617926, + 0.407380372286, + 0.282360583544, + -0.482966661453, + 0.212862074375, + -0.288052767515, + 0.431115567684, + -0.374952107668, + 0.232878401875, + -0.74702078104, + 0.492708086967, + -0.336648643017, + 0.174895629287, + -0.298042446375, + -0.261534154415, + 0.244469955564, + -0.451876729727, + 0.396389305592, + -0.385864794254, + 0.146681368351, + -0.300248086452, + 0.351130753756, + 0.535902678967, + -0.252549529076, + 0.258859008551, + -0.418233782053, + 0.355589568615, + -0.328554153442, + -0.448235034943, + -0.344285577536, + 0.671897411346, + -0.021515736356, + -0.20770971477, + 0.001031818218, + -0.495577961206, + 0.284544825554, + -0.00970936846, + -0.185156941414, + 0.189402133226, + -0.27537637949, + 0.363678961992, + -0.003188404022, + 0.141370788217, + -0.556834459305, + 0.169236645103, + -0.195383876562, + 0.217885315418, + -0.402977585793, + 0.185776680708, + -0.411039322615, + 0.366181850433, + -0.085820831358, + 0.074127689004, + -0.148989841342, + -0.136764883995, + 0.358835816383, + -0.179198801517, + 0.404182612896, + -0.27445730567, + 0.135894060135, + 0.35643568635, + -0.442131221294, + 0.358254045248, + -0.357433229685, + 0.242671310902, + -0.366267591715, + 0.723911166191, + -0.396954804659, + 0.17171408236, + -0.484389960766, + 0.535961687565, + -0.220739245415, + 0.123992621899, + 0.237196803093, + -0.478806942701, + 0.577848851681, + -0.239368915558, + 0.27247595787, + -0.428898125887, + 0.388438493013, + -0.156236588955, + 0.310762166977, + -0.007115391549, + -0.445339143276, + -0.134098276496, + -0.144133031368, + 0.254620432854, + -0.273860573769, + 0.423761516809, + -0.486422806978, + 0.353643000126, + -0.391264051199, + 0.242286860943, + -0.388767272234, + -0.50845181942, + -0.004504718352, + -0.219635531306, + 0.336866527796, + -0.30949023366, + 0.481559723616, + -0.324921905994, + 0.214024439454, + -0.319401651621, + 0.26379814744, + -0.434058725834, + -0.047724474221, + 0.298951029778, + -0.388693511486, + 0.506261825562, + -0.271263450384, + 0.107175506651, + -0.323753029108, + 0.417982310057, + -0.296279847622, + -0.056433625519, + 0.039014004171, + -0.554358243942, + 0.459984511137, + -0.217233881354, + 0.440153747797, + -0.399844825268, + 0.455793321133, + -0.245776340365, + 0.019627442583, + 0.025436557829, + -0.602147340775, + 0.313505113125, + -0.26117220521, + 0.324316233397, + -0.455522060394, + 0.450018823147, + -0.147465825081, + 0.179571613669, + 0.212051153183, + -0.364800393581, + 0.266635626554, + -0.326425611973, + 0.397509813309, + -0.307576864958, + 0.217758908868, + -0.463459610939, + 0.221035897732, + -0.316452026367, + 0.196397170424, + -0.524478077888, + -0.427847802639, + 0.130360588431, + -0.461840748787, + 0.526419043541, + -0.382170826197, + 0.16775713861, + -0.229880973697, + 0.616842925549, + -0.258374392986, + -0.308400720358, + 0.174505010247, + -0.556948781013, + 0.501453518867, + -0.190636619925, + 0.217923477292, + -0.777238547802, + 0.454107701778, + -0.1454436481, + 0.094823174179, + 0.219425275922, + -0.252045422792, + 0.375156342983, + -0.15997992456, + 0.203057229519, + -0.680573582649, + 0.3717700243, + -0.038126174361, + 0.343383252621, + 0.261813849211, + -0.355416148901, + 0.227082297206, + -0.374252855778, + 0.336755663157, + -0.369803100824, + 0.516238868237, + -0.252634704113, + 0.422149866819, + -0.276740312576, + 0.199079945683, + 0.110744096339, + 0.206846237183, + -0.331011742353, + -0.316630929708, + 0.27463889122, + -0.102615825832, + 0.51018768549, + -0.354756385088, + 0.162218481302, + -0.203802168369, + 0.559502601624, + -0.257405519485, + -0.408322274685, + 0.218748122454, + -0.545631468296, + 0.574677705765, + -0.226313725114, + 0.108128465712, + -0.584143459797, + 0.419871151447, + -0.051250312477, + 0.049217283726, + -0.583596944809, + 0.003811845789, + 0.321325808764, + -0.165328875184, + 0.233670666814, + -0.40048623085, + 0.189332857728, + 0.384984195232, + 0.008011892438, + 0.477820515633, + -0.232783168554, + 0.144418090582, + -0.283431231976, + 0.074038170278, + -0.490855693817, + 0.091201856732, + -0.336480051279, + 0.202498167753, + -0.299335211515, + -0.014012308791, + 0.128483474255, + -0.239779055119, + 0.251835763454, + -0.134531915188, + 0.365782469511, + -0.240512311459, + -0.115028552711, + 0.287059426308, + 0.330182462931, + -0.343569517136, + -0.041401661932, + -0.407787948847, + 0.206859499216, + 0.416891127825, + -0.370351403952, + 0.068871736526, + -0.326126158237, + 0.290193527937, + -0.268171399832, + 0.302613437176, + -0.563291430473, + 0.396978586912, + -0.054222434759, + -0.102821074426, + 0.377554565668, + -0.541947126389, + 0.194487467408, + -0.230357795954, + 0.269214838743, + -0.654456198215, + 0.329334616661, + -0.180969521403, + 0.340178787708, + 0.520265877247, + -0.338946551085, + 0.325699716806, + -0.371775686741, + 0.465754330158, + -0.132853969932, + 0.311490029097, + -0.388110935688, + -0.365023434162, + 0.461562782526, + -0.247369945049, + 0.352973490953, + -0.304501593113, + 0.22461207211, + -0.141683235765, + 0.24915060401, + -0.353831142187, + -0.364191681147, + 0.12188757211, + -0.419196367264, + 0.611478388309, + -0.272506535053, + 0.09340955317, + -0.42624104023, + 0.149549633265, + 0.265882343054, + 0.122145421803, + -0.416075587273, + 0.008662112057, + -0.733286321163, + 0.171692341566, + 0.874936878681, + 0.13624984026, + 0.166188776493, + -0.520887374878, + 0.387573897839, + 0.012216926552, + 0.425129115582, + -0.629347503185, + 0.193097963929, + -0.54415166378, + 0.041742317379, + 0.098068326712, + -0.355474114418, + 0.257381826639, + -0.225860849023, + 0.143705159426, + -0.401360690594, + 0.184979945421, + -0.297852396965, + -0.328272163868, + 0.396104604006, + -0.208005979657, + 0.450240433216, + -0.510774195194, + 0.548437714577, + -0.286303013563, + 0.401465982199, + -0.469367861748, + -0.033512592316, + -0.268795609474, + 0.216393098235, + 0.329837143421, + -0.276822894812, + 0.054582435638, + -0.413770318031, + 0.543925344944, + -0.183648332953, + 0.118231005967, + -0.530032753944, + 0.320924133062, + 0.564033806324, + -0.37447938323, + 0.241654992104, + -0.676632344723, + 0.724549174309, + -0.085123568773, + 0.497603356838, + -0.522859990597, + 0.297492980957, + -0.272250086069, + 0.614091217518, + -0.021414553747, + -0.482912808657, + 0.165942490101, + -0.36886537075, + 0.439401715994, + -0.47853320837, + 0.370201349258, + -0.309506952763, + 0.248879134655, + 0.40800434351, + -0.308000445366, + 0.285241484642, + -0.489863604307, + 0.632969081402, + -0.164612486959, + 0.371859997511, + -0.486709117889, + -0.298787325621, + 0.210995197296, + -0.170036658645, + 0.526146292686, + -0.448126524687, + 0.168451815844, + -0.324716567993, + 0.63414901495, + -0.32279253006, + -0.465939223766, + -0.318860322237, + 0.460078001022, + 0.546308636665, + -0.048169907182, + 0.156382665038, + -0.619907021523, + 0.545858561993, + -0.057514548302, + 0.249648749828, + -0.424609929323, + 0.373933345079, + -0.115426570177, + 0.273268133402, + 0.112146347761, + -0.639961183071, + 0.26020988822, + -0.203663825989, + -0.160951659083, + -0.217266201973, + 0.438728451729, + -0.340494126081, + 0.384511470795, + -0.309516340494, + 0.09993223846, + -0.256441056728, + 0.15609896183, + 0.248110324144, + -0.268514215946, + 0.478556632996, + -0.278047859669, + 0.219301432371, + -0.4279076159, + 0.03785482794, + -0.1358281672, + 0.547633886337, + -0.226956307888, + -0.325028002262, + 0.18311445415, + -0.329468458891, + 0.475423425436, + -0.154200643301, + 0.188915774226, + -0.372213065624, + 0.321657985449, + -0.121049419045, + -0.433915525675, + 0.034287381917, + -0.674002945423, + 0.714883923531, + -0.04875112325, + 0.282820254564, + -0.43283188343, + 0.312479048967, + -0.309027254581, + 0.030999170616, + 0.223372757435, + -0.31934979558, + 0.415260642767, + -0.210646763444, + 0.519690036774, + -0.652552127838, + 0.269491493702, + -0.316706031561, + 0.330869168043, + -0.419285058975, + 0.242656692863, + -0.650537073612, + 0.358875393867, + 0.513855218887, + -0.296606063843, + 0.416145861149, + -0.340413153172, + 0.374705046415, + -0.090930961072, + 0.460004359484, + -0.250616461039, + -0.433577299118, + 0.104717068374, + -0.469958722591, + 0.418794304132, + -0.587435305119, + 0.326780289412, + -0.643011212349, + 0.544154405594, + -0.146774917841, + -0.148290142417, + 0.39148414135, + -0.544193327427, + 0.555791437626, + -0.193645551801, + 0.271261125803, + -0.628163635731, + 0.214033856988, + -0.277535438538, + 0.252959996462, + -0.450900137424, + -0.66873216629, + 0.405020743608, + -0.269046425819, + 0.433197468519, + -0.594584941864, + 0.232477590442, + -0.303015857935, + 0.34905397892, + 0.44070199132, + -0.236978113651, + 0.370720624924, + -0.417526096106, + 0.307665556669, + -0.217541411519, + 0.47599953413, + -0.432428091764, + 0.149341031909, + -0.287653684616, + 0.524500310421, + 0.712596595287, + -0.181187883019, + -0.009124007076, + -0.620345175266, + 0.360077917576, + -0.735128462315, + 0.49392786622, + -0.757533013821, + 1.389465689659, + -0.662032723427, + 0.913442075253, + -0.276797652245, + 0.449954420328, + -0.443342536688, + 0.278460174799, + -0.378223598003, + 0.0384847112, + -0.3892981112, + -0.335319727659, + 0.322846740484, + -0.213583648205, + 0.292968064547, + -0.42208263278, + 0.109409175813, + 0.408857911825, + -0.243966668844, + 0.392812997103, + -0.310711890459, + 0.403429865837, + -0.437556266785, + 0.47029197216, + -0.488168269396, + 0.242931753397, + -0.432828009129, + 0.633778274059, + 0.576882660389, + -0.336452454329, + 0.37374946475, + -0.696848452091, + -0.021592574194, + -0.437062323093, + 0.590444147587, + -0.18991266191, + -0.46176725626, + 0.36916962266, + -0.59019857645, + 0.345003902912, + -0.467603892088, + 0.404835790396, + -0.253866016865, + 0.676232218742, + -0.145308852196, + 0.107516661286, + -0.535845518112, + 0.595703840256, + 0.694164574146, + -0.134105429053, + 0.109305672348, + -0.65506452322, + 0.021994404495, + -0.188204646111, + 0.333772629499, + -0.546722412109, + 0.270865172148, + -0.13253967464, + -0.209310904145, + 0.449970543385, + -0.564388215542, + 0.322488903999, + -0.318769365549, + 0.487735688686, + -0.132282540202, + 0.309320151806, + -0.395646840334, + 0.386525392532, + -0.104102797806, + -0.603246152401, + 0.345079183578, + -0.357920944691, + 0.427723616362, + -0.482204288244, + 0.472756385803, + -0.46936878562, + -0.536617875099, + 0.142872869968, + -0.584127366543, + 0.473104298115, + -0.512859284878, + 0.218197926879, + -0.369234412909, + 0.524412155151, + -0.480365395546, + 0.202208727598, + -0.074675984681, + -0.297073245049, + 0.708545744419, + -0.220776751637, + 0.250870019197, + -0.620340108871, + 0.508184731007, + -0.024364503101, + -0.136688649654, + -0.175113305449, + 0.212004169822, + -0.526999115944, + 0.249976232648, + -0.277929008007, + -0.440917611122, + 0.285249829292, + -0.563798487186, + 0.421259969473, + -0.202887400985, + 0.610796034336, + -0.412551015615, + 0.33238491416, + -0.222035869956, + 0.303444236517, + 0.085428267717, + -0.536634206772, + 0.378555834293, + -0.479999601841, + 0.422386646271, + -0.647817313671, + 0.324535042048, + -0.581066250801, + 0.51745390892, + -0.16639816761, + 0.342013537884, + 0.539510011673, + -0.218106180429, + 0.497186124325, + -0.312669873238, + 0.431665092707, + -0.427484750748, + 0.142476141453, + -0.118266016245, + 0.387736558914, + 0.430579483509, + -0.512007117271, + 0.117076344788, + -0.559113323689, + 0.741790950298, + -0.192255318165, + 0.316943943501, + -0.379567950964, + 0.031362771988, + 0.316476255655, + -0.164759024978, + 0.315770804882, + -0.494936406612, + 0.589932262897, + -0.233773350716, + 0.027697060257, + -0.639436483383, + 0.453630149364, + -0.632526278496, + 0.85399711132, + 0.607173860073, + -0.858634769917, + 0.282564133406, + -0.565205931664, + 0.504041552544, + -0.515420198441, + 0.310289680958, + -0.467143028975, + 0.044108632952, + 0.448744297028, + -0.414542198181, + 0.022792737931, + -0.409319162369, + 0.369137376547, + -0.375826925039, + 0.473072737455, + -0.338085114956, + -0.461661338806, + -0.002129784785, + -0.226785376668, + 0.484166115522, + -0.363089025021, + 0.284978181124, + -0.581265807152, + 0.444747924805, + -0.335542738438, + 0.091505207121, + -0.353661924601, + 0.207987338305, + 0.43087425828, + -0.533349871635, + 0.086127832532, + -0.666987836361, + 0.485858738422, + -0.290128022432, + 0.203819394112, + -0.691336870193, + 0.066811047494, + 0.281001865864, + -0.326927274466, + 0.26130387187, + -0.585041165352, + 0.396779507399, + -0.321233898401, + 0.00425855536, + 0.177107408643, + 0.387819558382, + -0.305934101343, + 0.121171981096, + -0.237833768129, + 0.384454399347, + 0.470328092575, + -0.153235480189, + 0.345861673355, + -0.358880400658, + 0.326066106558, + -0.359277665615, + 0.393125742674, + -0.431139975786, + 0.39467087388, + -0.519873678684, + 0.539716899395, + -0.422501087189, + -0.532877862453, + 0.225618511438, + -0.514802098274, + 0.405589908361, + -0.123458921909, + 0.330580383539, + -0.478498339653, + 0.231972143054, + 0.431117296219, + -0.283229768276, + 0.194313690066, + -0.537674069405, + 0.512702584267, + -0.487286478281, + 0.003190447809, + -0.436705380678, + 0.798810005188, + 0.137642890215, + 0.368893653154, + -0.437687754631, + -0.520971179008, + 0.56083470583, + -0.141248628497, + 0.487380176783, + -0.227081879973, + 0.102712184191, + -0.328575283289, + 0.152808174491, + -0.508886635303, + -0.685286462307, + 0.20386685431, + -0.40395912528, + 0.447363764048, + -0.180073931813, + 0.410710990429, + -0.401991605759, + 0.491753607988, + -0.320369184017, + 0.242405593395, + -0.502488613129, + -0.523960113525, + 0.035251788795, + -0.491426795721, + 0.502610325813, + -0.206599965692, + 0.073718845844, + -0.175441890955, + 0.216172203422, + 0.315656512976, + -0.5218116045, + 0.212219521403, + -0.480867475271, + 0.714880526066, + 0.055646393448, + 0.036036208272, + -0.830235302448, + 0.269988238811, + 0.571036994457, + -0.310037374496, + 0.213865920901, + -0.724479675293, + 0.417740821838, + -0.190640673041, + 0.394057005644, + -0.910348236561, + 0.457539647818, + -0.287902921438, + 0.702234625816, + -0.047129396349, + -0.564131200314, + 0.270405352116, + -0.536646902561, + 0.44515389204, + -0.399582624435, + 0.312641054392, + -0.564579606056, + 0.318094104528, + -0.488641470671, + 0.246682450175, + -0.402532279491, + -0.365949183702, + -0.109967246652, + -0.180904641747, + 0.280789524317, + -0.361302375793, + 0.516869068146, + -0.381576448679, + 0.353176891804, + -0.266212880611, + 0.607497990131, + -0.436722308397, + 0.260807067156, + -0.716892898083, + 0.217827215791, + 0.867864668369, + -0.413221865892, + 0.577275395393, + -0.793877065182, + 0.645194232464, + -0.483140021563, + 0.042013335973, + -0.70143955946, + 0.369410604239, + 0.14730283618, + -0.156777456403, + 0.513213098049, + -0.849587738514, + 0.447296589613, + -0.362901836634, + 0.75307148695, + -0.621035218239, + 0.611920773983, + -0.108938664198, + -0.167755007744, + 0.380871355534, + -0.431930959225, + 0.324252665043, + -0.309876829386, + 0.602114915848, + -0.336342900991, + 0.349426835775, + -0.433799892664, + -0.448198497295, + 0.253054916859, + -0.405609548092, + 0.696415543556, + -0.176458656788, + 0.353372126818, + -0.502885699272, + 0.672351717949, + -0.441373348236, + 0.129315704107, + -0.448757886887, + 0.335275381804, + 0.690654397011, + -0.596146583557, + 0.090732775629, + -0.859633803368, + 0.492745369673, + -0.235394284129, + 0.087320923805, + -0.409727007151, + -0.381925404072, + 0.326346933842, + -0.205045476556, + 0.436814635992, + -0.601355314255, + 0.407459199429, + -0.28874668479, + 0.41741091013, + -0.550500333309, + 0.350143998861, + -0.295805364847, + 0.054548949003, + 0.23208899796, + -0.626960337162, + 0.319951355457, + -0.388312458992, + 0.480951160192, + -0.470451653004, + 0.308766037226, + -0.281830132008, + -0.354763060808, + 0.416116714478, + -0.571847856045, + 0.404980778694, + -0.367443114519, + 0.544680297375, + -0.486110240221, + 0.399445146322, + -0.320316761732, + 0.196920067072, + 0.309416621923, + -0.40253803134, + 0.509170472622, + -0.346286922693, + 0.263002067804, + -0.725465118885, + 0.605640947819, + -0.174663990736, + -0.286823600531, + 0.073207564652, + 0.146715044975, + -0.569051504135, + 0.362222284079, + 0.615857481956, + -0.318396449089, + 0.393780380487, + -0.728558003902, + 0.588789582253, + -0.816650390625, + 1.297359228134, + -0.579206585884, + 0.458304524422, + -0.332832455635, + 0.279506653547, + 0.633932411671, + -0.44077834487, + 0.526228547096, + -0.389865964651, + 0.533143877983, + -0.573487281799, + 0.18604978919, + -0.283418118954, + 0.001119577326, + 0.491079509258, + -0.490760356188, + 0.465121686459, + -0.46062412858, + 0.574537694454, + -0.331168919802, + 0.476283937693, + -0.381205379963, + 0.412636816502, + -0.176443606615, + 0.537948489189, + 0.661203801632, + -0.618092358112, + 0.208531349897, + -0.79636245966, + 0.942624628544, + -0.389179855585, + 0.218100592494, + -0.538991928101, + -0.085750721395, + 0.54135119915, + -0.381790578365, + 0.434502452612, + -0.623727381229, + 0.567628920078, + -0.383852481842, + 0.586014032364, + -0.67060983181, + 0.320681333542, + -0.307802706957, + 0.248842075467, + 0.420124828815, + -0.594350278378, + 0.376977294683, + -0.216624245048, + 0.268298655748, + -0.585719108582, + 0.295921951532, + -0.126219674945, + -0.165514245629, + 0.724909245968, + -0.105861008167, + 0.789966821671, + -0.95348149538, + -0.061500273645, + -0.757049679756, + 0.499278992414, + -0.589123129845, + 0.309121340513, + -0.562252819538, + 0.343225598335, + 0.425958275795, + -0.586697816849, + 0.251377880573, + -0.464122444391, + 0.837436795235, + -0.348865687847, + 0.282345384359, + -0.659163355827, + 0.229340985417, + 0.65293353796, + -0.477206796408, + 0.596260011196, + -0.596006155014, + 0.782124698162, + -0.58790576458, + 0.006261145696, + -0.856565713882, + 0.263093650341, + 0.598741531372, + 0.085963636637, + 0.56264680624, + -0.511226475239, + 0.231858253479, + -0.326399445534, + -0.082178927958, + 0.230444848537, + 0.175505355, + -0.639725923538, + 0.628733098507, + -0.247738853097, + 0.6395226717, + -0.367939561605, + -0.774017810822, + 0.112583227456, + -0.53059220314, + 0.379888653755, + -0.498039901257, + 0.349187195301, + -0.305495172739, + 0.246033027768, + -0.344464898109, + 0.424684971571, + -0.333104819059, + -0.275976479053, + 0.453170955181, + 0.042193014175, + 0.538471341133, + -0.417227089405, + 0.324098736048, + -0.658156633377, + 0.796741127968, + -0.266587108374, + -0.412728637457, + 0.267559319735, + -0.593940854073, + 0.414260387421, + -0.33109998703, + 0.190755277872, + -0.548462748528, + 0.264646112919, + 0.459729701281, + -0.037211757153, + 0.255688875914, + -0.763743102551, + 0.262108206749, + -0.197749271989, + 0.5119099617, + -0.582829773426, + 0.451958149672, + -0.453048676252, + 0.27329659462, + -0.641864478588, + 0.071841709316, + 0.338288277388, + -0.347307235003, + 0.340857595205, + -0.573125183582, + 0.075104594231, + -0.356226593256, + -0.358867555857, + 0.26081892848, + -0.202495798469, + 0.367714285851, + -0.244307696819, + 0.502637147903, + -0.203465119004, + 0.268733024597, + -0.510119438171, + 0.127173140645, + -0.419769138098, + 0.584410786629, + -0.160144001245, + -0.311381757259, + 0.227654308081, + -0.550064027309, + 0.375467926264, + -0.346395999193, + 0.202246084809, + -0.480368465185, + 0.457372367382, + -0.185602128506, + 0.388604134321, + 0.451005429029, + -0.664813399315, + 0.435283154249, + -0.063067041337, + 0.265822082758, + -0.684865355492, + 0.538249135017, + -0.512692153454, + 0.342176765203, + -0.393492311239, + -0.013534877449, + 0.177871540189, + -0.376733392477, + 0.363814860582, + -0.454455137253, + 0.346658021212, + -0.323627740145, + 0.458725273609, + -0.227390065789, + -0.455148100853, + 0.818250238895, + -0.97301453352, + 0.820971429348, + 0.146282196045, + -0.033637981862, + 0.75538533926, + -0.009829748422, + -0.621062397957, + 0.339574366808, + -0.816069841385, + 0.340372920036, + -0.279029726982, + 0.108597613871, + 0.289153069258, + -0.294006437063, + 0.318021923304, + -0.447583705187, + 0.172894045711, + -0.471176445484, + 0.384600877762, + -0.214419528842, + 0.210268944502, + -0.368184268475, + -0.471988976002, + 0.710260689259, + -0.280990689993, + 0.030621562153, + -0.721063792706, + 0.534737110138, + -0.14689065516, + 0.251862108707, + -0.769206225872, + -0.057637851685, + -0.321882992983, + 0.406303673983, + 0.564945161343, + -0.328953027725, + 0.273131608963, + -0.321058601141, + 0.221041887999, + -0.471267640591, + 0.034314636141, + 0.264916151762, + -0.576440930367, + 0.470077157021, + -0.457522511482, + 0.30349496007, + -0.276336610317, + 0.136191651225, + -0.142620131373, + 0.389865845442, + 0.094333074987, + -0.178147852421, + 0.293367981911, + -0.188036367297, + 0.375665634871, + -0.136154741049, + 0.090324558318, + -0.469621300697, + 0.306365400553, + -0.243065237999, + 0.020341152325, + -0.014100354165, + -0.647833168507, + 0.676509320736, + -0.088142007589, + 0.244745403528, + -0.518602013588, + 0.484311550856, + 0.097351640463, + 0.386551946402, + -0.515770852566, + -0.176103964448, + 0.504727423191, + -0.261533498764, + 0.490720540285, + -0.476746022701, + 0.247976139188, + -0.443545848131, + 0.32994145155, + -0.387326717377, + 0.224878892303, + -0.561667382717, + -0.121458858252, + 0.618845701218, + -0.429681777954, + 0.302866101265, + -0.405258715153, + 0.226793020964, + -0.36255133152, + 0.435410887003, + -0.426949799061, + -0.063413567841, + 0.329111725092, + -0.28721010685, + 0.637186765671, + -0.369463950396, + 0.073746852577, + -0.461507737637, + 0.368051677942, + -0.278658360243, + -0.080867394805, + 0.031398493797, + -0.611625671387, + -0.714727580547, + 0.420402884483, + -0.290219664574, + -8.2332364E-5, + -0.323523849249, + -0.597640514374, + 0.355546861887, + 0.155756652355, + 0.35000795126, + -0.703869819641, + 0.074388667941, + -0.318925768137, + 0.595452427864, + 0.597960352898, + -0.38513943553, + 0.469408661127, + -0.375043839216, + 0.305670887232, + -0.675084590912, + -0.185774877667, + -0.60595446825, + 0.226208031178, + 0.471277862787, + -0.237646952271, + 0.218931749463, + -0.37952286005, + 0.251287668943, + -0.140178918839, + 0.440729439259, + -0.308966130018, + -0.09615111351, + 0.383171051741, + -0.393280625343, + 0.416641712189, + -0.437121152878, + -0.029397675768, + -0.300032556057, + 0.506231606007, + 0.627902328968, + -0.394150048494, + -0.610801339149, + 0.192817553878, + 0.320825994015, + -0.347793608904, + 0.077279493213, + -0.311364859343, + 0.385174542665, + -0.018723348156, + 0.234828084707, + -0.53509414196, + 0.273148149252, + -0.398684203625, + -0.017607241869, + 0.161618888378, + -0.674370408058, + 0.459064036608, + -0.285141736269, + 0.36124458909, + -0.464577466249, + 0.024383313954, + -0.2027143538, + 0.545735180378, + -0.269546478987, + -0.604881167412, + 0.33957862854, + -0.311354160309, + 0.487358480692, + -0.179238542914, + 0.131544575095, + -0.558544635773, + 0.342630535364, + -0.190657928586, + 0.332620680332, + -0.453872203827, + -0.433155298233, + 0.185171827674, + 0.005805950612, + 0.808042049408, + -0.142541334033, + -0.001176799997, + -0.497829526663, + 0.582664370537, + -0.230134963989, + 0.172802522779, + 0.212483018637, + -0.475879400969, + 0.489084094763, + -0.261671364307, + 0.370892167091, + -0.579581022263, + 0.16557790339, + -0.249154210091, + 0.188355773687, + 0.376628637314, + -0.562394320965, + 0.267458081245, + -0.409520983696, + 0.371804445982, + 0.207318738103, + -0.539830803871, + -0.520047366619, + 0.444188684225, + -0.28495952487, + 0.548612296581, + -0.416987895966, + -0.530179440975, + 0.250541627407, + -0.390295743942, + 0.543924570084, + -0.230308994651, + 0.593243002892, + -0.345963358879, + 0.328144401312, + -0.39587533474, + 0.113028109074, + 0.35829308629, + -0.387916713953, + 0.238155215979, + -0.295435637236, + 0.639239430428, + 0.00844567176, + -0.261618196964, + 0.117420382798, + -0.165444985032, + 0.272222787142, + -0.559014737606, + 0.156299263239, + -0.647448122501, + 0.44593539834, + -0.472980707884, + 0.231146901846, + -0.535116374493, + 0.265562832355, + -0.262117773294, + 0.150086179376, + 0.211260065436, + -0.39034807682, + 0.457156896591, + -0.169443845749, + 0.225704714656, + -0.579088628292, + 0.126918330789, + -0.243511334062, + 0.294530749321, + 0.288302510977, + -0.369334101677, + 0.123776167631, + -0.373862653971, + 0.382343798876, + -0.604868233204, + 0.453115105629, + -0.469821482897, + 0.261643588543, + -0.172985762358, + 0.335824608803, + -0.179292678833, + -0.259922742844, + 0.296819061041, + -0.132933139801, + 0.717587888241, + -0.269618928432, + 0.065690249205, + -0.461029797792, + 0.157606557012, + 0.183590456843, + -0.38303810358, + 0.25621765852, + -0.359999716282, + 0.635276734829, + -0.180822953582, + 0.244277387857, + -0.612097144127, + 0.567140519619, + 0.04801857844, + 0.241665542126, + -0.09180149436, + -0.23386593163, + 0.394595772028, + -0.142110496759, + 0.183471888304, + -0.69368904829, + 0.021475568414, + -0.089801639318, + 0.27484357357, + 0.339107424021, + -0.481349378824, + 0.356398582458, + -0.419713824987, + 0.217041060328, + -0.532426655293, + 0.353621035814, + -0.449933052063, + 0.275101035833, + -0.217192664742, + 0.443046241999, + 0.389609992504, + -0.222212210298, + 0.478815585375, + -0.430858761072, + -0.198337092996, + -0.068185701966, + 0.197474479675, + -0.661659359932, + 0.148775517941, + -0.172696381807, + 0.243101224303, + -0.609847128391, + -0.748295664787, + -0.045829057693, + -0.469837933779, + 0.560804128647, + -0.061370734125, + -0.310963273048, + -0.405248492956, + 0.137102648616, + 0.613294839859, + -0.034508634359, + 0.198776707053, + -0.472937971354, + 0.442881733179, + -0.116200573742, + 0.09272941947, + -0.688556134701, + 0.016189405695, + -0.188891649246, + -0.283616095781, + 0.18089145422, + -0.478030771017, + 0.360025107861, + -0.270353585482, + 0.241573140025, + -0.570237159729, + 0.295647472143, + -0.373336046934, + 0.637139081955, + -0.320181697607, + 0.142530843616, + 0.50119882822, + -0.272671401501, + 0.718121409416, + -0.304877460003, + 0.383468717337, + -0.823895573616, + 0.133124127984, + -0.49161568284, + 0.28841522336, + 0.432083517313, + -0.494785279036, + 0.271758794785, + -0.390780895948, + 0.606389760971, + -0.101460844278, + 0.211878165603, + -0.448551148176, + 0.34670779109, + 0.627165496349, + -0.266152322292, + 0.272897958755, + -0.786971628666, + 0.388022273779, + -0.144396975636, + 0.23351995647, + -0.488350272179, + 0.48086604476, + 0.009529040195, + 0.293688952923, + -0.194153293967, + -0.522619724274, + 0.374577492476, + -0.173148736358, + 0.421177059412, + -0.473075479269, + 0.184786826372, + -0.227305844426, + 0.366300046444, + -0.208578422666, + 0.169356524944, + -0.42350640893, + -0.549928307533, + 0.292936891317, + -0.269706815481, + 0.194191649556, + -0.488311737776, + -0.587723851204, + 0.321379125118, + -0.338507890701, + 0.437760025263, + -0.362235188484, + 0.180096790195, + -0.322065085173, + 0.638512790203, + -0.133716806769, + 0.083480343223, + -0.455220490694, + 0.168204933405, + 0.291165828705, + -0.392094373703, + 0.268226116896, + -0.659514665604, + 0.050909876823, + 0.075172439218, + 0.525971591473, + -0.10667925328, + -0.0413755849, + -0.57515591383, + 0.090507730842, + 0.493972748518, + -0.259256690741, + 0.030538840219, + -0.531886458397, + 0.247868597507, + 0.017165804282, + 0.238675296307, + -0.323767513037, + -0.343517392874, + -0.324818789959, + 0.20716561377, + -0.23707075417, + -0.024188864976, + -0.328175485134, + 0.013170368969, + 0.335581034422, + -0.094375699759, + 0.229332834482, + -0.58950984478, + 0.237475082278, + -0.313203245401, + 0.257972538471, + -0.448675900698, + 0.073142170906, + 0.233139023185, + -0.454331845045, + 0.450558066368, + -0.046772941947, + 0.054659664631, + -0.345169126987, + 0.362483710051, + -0.103169076145, + -0.174778476357, + 0.339620172977, + -0.39009937644, + 0.41614317894, + -0.444926768541, + -0.014550520107, + -0.398014992476, + 0.595048546791, + -0.101639032364, + 0.016119679436, + -0.317744016647, + -0.746195077896, + 0.304570794106, + -0.04818476364, + 0.268009603024, + -0.434010505676, + 0.177347570658, + -0.043505709618, + 0.324956923723, + -0.324002325535, + -0.586826503277, + 0.044824179262, + -0.455228835344, + 0.71551579237, + 0.021761048585, + 0.447804749012, + -0.60452914238, + 0.120242826641, + -0.428986519575, + 0.278702259064, + -0.273175865412, + -0.063385628164, + 0.111529991031, + -0.142486542463, + 0.512453794479, + -0.355534702539, + -0.028981549665, + -0.665864646435, + 0.444964617491, + -0.285009145737, + -0.430491328239, + 0.236172556877, + -0.254539430141, + 0.461167752743, + -0.494934350252, + -0.149014547467, + -0.767327129841, + 0.571273982525, + -0.0123924613, + 0.171612009406, + 0.10209286958, + -0.560005068779, + 0.178929209709, + 0.24288611114, + -0.105015724897, + 0.304213345051, + -0.291201353073, + 0.117974981666, + 0.070897653699, + 0.396696448326, + -0.254449158907, + 0.094845332205, + 0.141103357077, + -0.281327098608, + -0.193994805217, + 0.45365473628, + -0.437411338091, + 0.292115539312, + -0.399604439735, + 0.261591374874, + -0.325200289488, + 0.165467143059, + -0.320518016815, + 0.080487050116, + 0.317386239767, + -0.226210907102, + 0.209304645658, + -0.420792490244, + 0.17997084558, + -0.474633485079, + 0.545894920826, + -0.46287342906, + 0.187560513616, + 0.385614752769, + -0.345070540905, + 0.669282734394, + -0.212295025587, + 0.082303419709, + -0.551877677441, + 0.690017938614, + 0.025579722598, + 0.068461976945, + -0.134044960141, + -0.472194224596, + 0.188264161348, + -0.254831522703, + 0.509306550026, + -0.484273791313, + 0.463191479445, + -0.059596419334, + 0.364804893732, + -0.440941900015, + -0.059977903962, + 0.335433900356, + -0.127689182758, + 0.458297997713, + -0.191216245294, + 0.159315884113, + -0.434412449598, + 0.305650562048, + -0.37782433629, + 0.108456596732, + -0.423339337111, + -0.173335164785, + 0.39457732439, + -0.115916773677, + 0.349866658449, + -0.430118620396, + 0.264786720276, + -0.141731619835, + 0.423957586288, + -0.164715066552, + -0.246801167727, + 0.212793126702, + -0.299506962299, + 0.484969228506, + -0.168598428369, + 0.047878414392, + -0.722806453705, + 0.478925377131, + -0.25666859746, + 0.198920309544, + -0.183008447289, + -0.534174084663, + 0.318683981895, + -0.109607987106, + 0.284678041935, + -0.467271894217, + 0.309211909771, + -0.013771920465, + -0.238637968898, + 0.326423823833, + -0.455501079559, + 0.137315258384, + -0.222464755177, + 0.290443062782, + -0.363835394382, + 0.211673155427, + -0.237976968288, + 0.2486320436, + -0.38664612174, + 0.12300466001, + -0.311877578497, + -0.210406675935, + 0.337892353535, + -0.132580146194, + 0.29371842742, + -0.466390132904, + 0.347095638514, + -0.466366499662, + 0.133319050074, + 0.028527034447, + 0.112201318145, + -0.39930409193, + -0.108974158764, + 0.152994930744, + -0.270321458578, + 0.708485066891, + -0.165722444654, + 0.126447558403, + -0.726038277149, + 0.634178996086, + -0.374502956867, + 0.298856109381, + -0.345858246088, + -0.50823122263, + 0.414300084114, + -0.258071362972, + 0.313359111547, + -0.779283583164, + 0.444903582335, + -0.350541323423, + 0.3541880548, + -0.375259935856, + -0.390925884247, + 0.335494220257, + -0.211969003081, + 0.508220076561, + -0.6326572299, + 0.161286219954, + -0.399947166443, + 0.434993356466, + -0.405308574438, + -0.062095206231, + -0.475935548544, + -0.099006906152, + 0.426663607359, + -0.263296484947, + 0.406082093716, + -0.508906960487, + 0.370655477047, + -0.420942038298, + 0.44723379612, + -0.169265776873, + -0.370851755142, + 0.257339328527, + -0.406463801861, + 0.402842521667, + -0.552302122116, + 0.034603193402, + -0.535898447037, + 0.688377976418, + -0.231778711081, + -0.336653769016, + 0.160983413458, + -0.57944881916, + 0.483964979649, + -0.304593831301, + 0.350129246712, + -0.51852363348, + 0.548338711262, + -0.183133497834, + 0.241340667009, + 0.244918808341, + -0.65506696701, + 0.532348513603, + -0.31246522069, + 0.347705364227, + -0.572071731091, + 0.354313164949, + -0.41572111845, + 0.37362408638, + -0.302828133106, + -0.487971872091, + 0.119352601469, + -0.331461012363, + 0.430446326733, + -0.282496541739, + 0.263066828251, + -0.296937763691, + -0.457347244024, + 0.293231278658, + -0.225095704198, + 0.427840620279, + -0.311290204525, + 0.138823911548, + -0.437640070915, + 0.392628073692, + -0.157848760486, + 0.145589187741, + -0.286721199751, + 0.285445004702, + 0.401929914951, + -0.444697022438, + 0.006899029482, + -0.545116484165, + 0.601330578327, + -0.169619977474, + 0.297891646624, + -0.655517280102, + 0.145020663738, + 0.544017016888, + 0.472245782614, + -0.387282043695, + 0.160765066743, + -0.354942828417, + -0.674283564091, + 0.753010094166, + -0.017063708976, + 0.472682654858, + -0.631518483162, + 0.238417297602, + -0.344648391008, + 0.457202851772, + -0.28197145462, + 0.276634156704, + 0.566019117832, + -0.243096262217, + 0.449305266142, + -0.605435192585, + 0.500430345535, + -0.308873742819, + 0.362479537725, + -0.325829178095, + 0.3892801404, + -0.24793484807, + -0.35697516799, + 0.321408718824, + -0.446087360382, + 0.520022749901, + -0.506661236286, + 0.101878754795, + -0.325853049755, + 0.550502479076, + -0.252839386463, + -0.414504647255, + 0.35343542695, + -0.521168887615, + 0.571678698063, + -0.484054595232, + 0.260607153177, + -0.655990898609, + 0.636380910873, + -0.082820490003, + 0.139818131924, + -0.409562468529, + -0.821409881115, + 0.429510235786, + -0.188453376293, + 0.345538258553, + -0.89048075676, + 0.37214165926, + -0.070530444384, + 0.382921516895, + -0.425274640322, + -0.506332695484, + 0.355774194002, + -0.51030164957, + 0.430195182562, + -0.516229987144, + 0.332512050867, + -0.356271505356, + -0.426930397749, + 0.24984370172, + -0.419358044863, + 0.218910038471, + -0.208953857422, + 0.381500095129, + -0.335213243961, + 0.439305990934, + -0.408041447401, + -0.516834676266, + 0.315159589052, + -0.152646780014, + 0.559288263321, + -0.42838549614, + 0.324238985777, + -0.684564054012, + 0.555371522903, + -0.432608664036, + 0.12726905942, + -0.586178839207, + 0.257529586554, + 0.535534799099, + -0.301908135414, + 0.256435841322, + -0.676162302494, + 0.528158009052, + -0.226810291409, + 0.508494734764, + -0.68682128191, + 0.497094392776, + -0.064512044191, + -0.215864256024, + 0.296080589294, + -0.733776807785, + 0.50155210495, + -0.45135936141, + 0.659426510334, + -0.619223356247, + 6.59499376E-4, + 0.33615976572, + 0.117472685874, + -0.4437020123, + 0.316223710775, + -0.271873682737, + 0.042743958533, + 0.304083377123, + -0.407074779272, + 0.33286729455, + -0.396394133568, + 0.334519118071, + -0.3289462924, + -0.426532357931, + 0.481108486652, + -0.023250825703, + 0.557740807533, + -0.461408227682, + 0.329251736403, + -0.560683310032, + 0.805674672127, + -0.141826093197, + 0.248000949621, + -0.281312733889, + 0.420641392469, + -0.008755563758, + -0.283993214369, + 0.300333559513, + -0.539632618427, + 0.402434587479, + -0.303011417389, + 0.160006254911, + -0.556082844734, + 0.133257582784, + 0.471813380718, + -0.248360127211, + 0.359517633915, + -0.760259747505, + 0.696490049362, + -0.28493219614, + 0.385011821985, + -0.802768945694, + 0.130815595388, + -0.342351585627, + 0.211453959346, + 0.406295716763, + -0.523264527321, + 0.360405087471, + -0.30603531003, + 0.361796498299, + -0.374600470066, + 0.409696131945, + -0.314360380173, + -0.416542649269, + 0.256421655416, + -0.509439706802, + 0.363292872906, + -0.484041243792, + 0.265578597784, + -0.467860400677, + 0.495281308889, + -0.178079679608, + 0.006989744026, + -0.480165630579, + 0.073822773993, + -0.250466018915, + -0.273493349552, + 0.232142448425, + -0.480070412159, + 0.478047132492, + -0.13184556365, + 0.162733539939, + -0.690819144249, + 0.127717360854, + 0.254987955093, + -0.111535862088, + 0.380914270878, + -0.567074358463, + 0.294199317694, + -0.338724374771, + 0.303300589323, + -0.336638689041, + 0.2771076262, + -0.146634995937, + 0.468829274178, + 0.481342971325, + -0.54068762064, + 0.182628080249, + -0.407031297684, + 0.401381760836, + -0.437427550554, + 0.444800317287, + -0.396643310785, + -0.657957017422, + 0.428434044123, + -0.30868858099, + 0.38550311327, + -0.349989801645, + 0.258074700832, + -0.426463186741, + 0.453593254089, + 0.283177226782, + 0.498011261225, + -0.100290246308, + 0.318383276463, + -0.451395481825, + 0.339147239923, + 0.479736894369, + -0.313841223717, + 0.215551376343, + -0.538970828056, + 0.533514022827, + -0.146204218268, + 0.18799482286, + -0.572299718857, + 0.302058398724, + -0.093783564866, + -0.193793460727, + 0.322326123714, + -0.569178104401, + 0.33862426877, + -0.306452602148, + 0.308013051748, + -0.315557837486, + 0.181678250432, + -0.331103265285, + -0.281821519136, + 0.371793091297, + -0.46132299304, + 0.388475239277, + -0.300812780857, + 0.308298617601, + -0.323940932751, + 0.318303674459, + -0.363262861967, + -0.47490593791, + 0.500304400921, + -0.286003440619, + 0.363785922527, + -0.323907464743, + 0.028044665232, + -0.523461639881, + 0.354540705681, + -0.136932879686, + -0.347332268953, + 0.139344677329, + -0.442587196827, + 0.463141232729, + -0.321118414402, + 0.124146699905, + -0.617439806461, + 0.462360918522, + -0.061680108309, + -0.039243236184, + -0.877870202065, + 0.300503849983, + -0.144071981311, + 0.273075550795, + 0.333333700895, + -0.597713649273, + 0.310958296061, + -0.442056238651, + 0.197078689933, + -0.507465004921, + 0.374890774488, + -0.174213767052, + -0.195332869887, + 0.381834894419, + -0.707976102829, + 0.356593698263, + -0.295752376318, + 0.326742619276, + -0.445936471224, + 0.229181304574, + -0.257901698351, + 0.319633066654, + 0.568621873856, + -0.383445352316, + 0.488992512226, + -0.3894764781, + 0.20873080194, + -0.37384596467, + 0.332952052355, + -0.248465359211, + -0.357930749655, + 0.1760751158, + -0.394607305527, + 0.538940966129, + -0.301020115614, + 0.236662298441, + -0.407558888197, + 0.144132256508, + 0.350902527571, + -0.161235019565, + 0.222210496664, + -0.669606566429, + 0.670652508736, + -0.251178264618, + 0.27671277523, + -0.534828782082, + 0.296939253807, + -0.105998031795, + -0.247711360455, + -0.425297915936, + 0.255649536848, + -0.427325516939, + 0.353931218386, + -0.334501177073, + 0.051918271929, + 0.420515745878, + -0.374455988407, + 0.48664739728, + -0.249400883913, + 0.2626080513, + -0.438594967127, + 0.078717112541, + -0.460804373026, + 0.376534879208, + -0.3302051723, + 0.487334221601, + -0.400373458862, + -0.252609819174, + 0.17671097815, + -0.40194195509, + 0.369732677937, + -0.173153668642, + 0.133991003036, + -0.517045855522, + 0.179238066077, + 0.561189949512, + -0.357602804899, + 0.165056586266, + -0.514340519905, + 0.431977391243, + -0.158592283726, + -0.002086162567, + -0.569496273994, + 0.285097450018, + -0.149232938886, + 0.289004892111, + 0.096151202917, + -0.353813797235, + 0.309409409761, + -0.21843111515, + 0.193319320679, + -0.446097612381, + 0.279683202505, + -0.115614257753, + -0.484003812075, + 0.166134744883, + -0.593930065632, + 0.227202564478, + -0.233196079731, + 0.35804527998, + -0.447441339493, + 0.250304579735, + -0.522598206997, + 0.530492663383, + -0.238242790103, + 0.243109077215, + -0.313453137875, + -0.404178202152, + 0.160973161459, + -0.36315125227, + 0.379407733679, + -0.373553723097, + 0.147983849049, + -0.468378663063, + 0.434546917677, + 0.61332899332, + -0.320276618004, + 0.223029240966, + -0.492168068886, + 0.743907153606, + -0.194423288107, + 0.258866876364, + -0.419642984867, + 0.267333954573, + 0.776654005051, + -0.197376221418, + 0.170639738441, + -0.589040219784, + 0.210305824876, + -0.382988065481, + 0.19637696445, + -0.359906852245, + 0.371925204992, + -0.159631371498, + -0.220250293612, + 0.26962697506, + -0.660691916943, + 0.429994285107, + -0.250999778509, + 0.470419496298, + -0.230216354132, + 0.261920660734, + -0.395410686731, + 0.152862101793, + 0.323025941849, + -0.358814269304, + 0.285119324923, + -0.235064655542, + -0.384537667036, + -0.292876750231, + 0.169557243586, + -0.404707282782, + 0.449306935072, + -0.339651525021, + 0.214036464691, + -0.400506585836, + 0.481918632984, + -0.249368265271, + -0.298034846783, + 0.207553252578, + -0.672064960003, + 0.302325814962, + -0.343572705984, + 0.321498334408, + -0.386294066906, + 0.77179056406, + -0.375564903021, + -0.056262787431, + 0.118312604725, + -0.745521783829, + 0.299020916224, + -0.160562694073, + 0.264170497656, + -0.546428143978, + 0.191862016916, + -0.311871469021, + 0.044186647981, + -0.518258094788, + 0.106713369489, + 0.259280830622, + -0.098606571555, + 0.355375617743, + -0.42529374361, + 0.344482660294, + -0.228194415569, + 0.389608204365, + -0.083036951721, + 0.343189418316, + -0.236763715744, + -0.449460148811, + 0.121229737997, + -0.557274997234, + 0.436671167612, + -0.111296668649, + -0.209535509348, + 0.311773121357, + -0.306379169226, + 0.269244611263, + -0.346878051758, + 0.462238729, + -0.388848155737, + 0.530767500401, + -0.506035149097, + 0.25299218297, + -0.70051240921, + 0.741347253323, + -0.207287162542, + -0.581936597824, + 0.32837754488, + -0.614973008633, + 0.482737720013, + -0.358867019415, + 0.428636282682, + -0.523354411125, + 0.308186650276, + -0.191778197885, + 0.322126477957, + 0.312071323395, + -0.539697110653, + 0.584701061249, + -0.183650568128, + 0.173679351807, + -0.617255985737, + 0.009316374548, + -0.608304321766, + 0.134415701032, + 0.399503439665, + -0.511834025383, + 0.349938839674, + -0.286249816418, + 0.423363238573, + -0.485604763031, + 0.51164239645, + -0.207770600915, + 0.248618677258, + -0.163781955838, + 0.331906050444, + -0.419819295406, + -0.331124305725, + 0.166135013103, + -0.30770149827, + 0.403593987226, + -0.499586522579, + -0.092959612608, + -0.453062534332, + 0.289379090071, + 0.612917542458, + 0.046175912023, + -0.016346851364, + -0.251689165831, + 0.414377778769, + -0.545779109001, + 0.587804198265, + -0.246210843325, + 0.402553468943, + -0.820011734962, + 0.217063963413, + -0.317265838385, + -0.432318031788, + 0.23890709877, + -0.605648398399, + 0.45823007822, + -0.223120495677, + 0.19768871367, + -0.628377318382, + 0.1322465837, + -0.314918279648, + 0.200456112623, + 0.321119755507, + -0.185790807009, + 0.479643911123, + -0.01599262096, + 0.472160488367, + -0.435178279877, + 0.142032191157, + -0.45481133461, + -0.128646805882, + -0.272197127342, + 0.222458094358, + -0.291861921549, + -0.403091847897, + 0.094293028116, + -0.337101578712, + 0.276260375977, + -0.335534989834, + -0.374573498964, + -0.19688950479, + 0.532951831818, + 0.743283331394, + -0.303877800703, + -0.020818777382, + -0.773861289024, + 0.679275393486, + 0.092283830047, + 0.411792337894, + -0.371271163225, + 0.010615676641, + 0.202574342489, + -0.377395391464, + 0.212817698717, + -0.529996871948, + 0.593585073948, + -0.026569765061, + 0.342631220818, + -0.500145614147, + 0.278116166592, + -0.276700437069, + 0.132742315531, + 0.462209939957, + -0.234332174063, + 0.430118024349, + -0.276778429747, + 0.204136714339, + -0.338727504015, + 0.337766110897, + -0.390001684427, + 0.263808697462, + -0.003931355197, + 0.24316342175, + -0.232815787196, + -0.486018061638, + 0.120467327535, + -0.29634976387, + 0.402747869492, + -0.300694167614, + 0.218962952495, + -0.433790594339, + 0.349332094193, + -0.234864622355, + 0.19148132205, + 0.172071009874, + -0.712233960629, + 0.337212443352, + -0.152500376105, + 0.195108935237, + -0.552680790424, + 0.056884720922, + 0.26324352622, + -0.327671527863, + 0.152203023434, + -0.478658348322, + 0.403308570385, + -0.134648904204, + 0.306507557631, + -0.45120126009, + -0.328745663166, + 0.202575922012, + 0.131298691034, + 0.297953009605, + 0.001151340897, + 0.393586158752, + -0.475565195084, + 0.178253799677, + -0.429353684187, + 0.308547317982, + -0.344417184591, + 0.22420348227, + -0.288291662931, + 0.127694934607, + -0.208123743534, + 0.05692107603, + 0.177087381482, + -0.540165185928, + 0.111004322767, + -0.421786189079, + 0.508603870869, + -1.153481841087, + 1.039729475975, + -0.807060062885, + 1.115990638733, + -1.007870197296, + 0.246644318104, + 0.404562622309, + -0.593134939671, + 0.576844751835, + -0.222949534655, + 0.128001645207, + -0.500691950321, + 0.152047678828, + 0.480315923691, + -0.470483422279, + 0.257900059223, + -0.760266005993, + 0.702537417412, + -0.070952661335, + 0.184958741069, + -0.730877220631, + 0.718236267567, + 0.015992892906, + 0.466115355492, + 0.69549959898, + -0.48784661293, + 0.240790992975, + -0.388949751854, + 0.41134724021, + -0.55792337656, + 0.430419802666, + -0.350839853287, + -0.331469625235, + 0.290901750326, + -0.429841548204, + 0.297177433968, + -0.236154571176, + 0.496866345406, + -0.150904223323, + 0.334386527538, + -0.09612493962, + -0.215390875936, + 0.443423688412, + -0.101816616952, + 0.375203549862, + -0.177031725645, + 0.015251116827, + -0.465045243502, + 0.386699527502, + -0.166245952249, + -0.036566648632, + -0.478443056345, + 0.273818105459, + 0.403363466263, + -0.267536073923, + 0.051194082946, + -0.619237482548, + 0.283567070961, + -0.256273001432, + 0.370554178953, + -0.581063866615, + 0.396594882011, + -0.101064197719, + 0.281647473574, + 0.337335437536, + -0.749733626842, + 0.164172083139, + -0.403592139482, + 0.301386058331, + -0.400090932846, + 0.335263907909, + -0.309168636799, + -0.249036297202, + 0.471323907375, + -0.332512557507, + 0.343232154846, + -0.269705176353, + 0.379130840302, + -0.431185632944, + 0.033408533782, + -0.674339354038, + -0.219897419214, + -0.263651758432, + -0.683321177959, + 0.491267800331, + -0.198344632983, + 0.403315275908, + -0.234937995672, + 0.1318770051, + -0.285809695721, + 0.339223384857, + -0.291475474834, + 0.144032731652, + -0.304819822311, + 0.404357224703, + -0.111657649279, + -0.218062311411, + 0.106053762138, + -0.314502924681, + 0.265390872955, + -0.203241288662, + 0.033324785531, + -0.572088778019, + 0.920651972294, + 0.077838674188, + 0.170565798879, + -0.346553623676, + -0.78184980154, + 0.401360422373, + -0.295224875212, + 0.25761064887, + -0.51836502552, + 0.079668022692, + -0.187586560845, + 0.44304060936, + -0.563002586365, + 0.089115783572, + 0.435819715261, + -0.022628983483, + 0.453006029129, + -0.252786159515, + 0.381778597832, + -0.350192815065, + 0.442438721657, + -0.327669292688, + 0.120505981147, + -0.591839790344, + -0.470817685127, + 0.107837319374, + -0.183445334435, + 0.509718239307, + -0.345712065697, + 0.19706363976, + -0.544242858887, + 0.378750562668, + -0.217601925135, + -0.08606723696, + 0.331504464149, + -0.365407079458, + 0.62118691206, + -0.161125674844, + 0.166348904371, + -0.690486967564, + 0.289501786232, + -0.436535775661, + 0.540999174118, + -0.183175846934, + -0.340240627527, + 1.61200928688, + -0.424946516752, + 1.225010514259, + -1.736894011497, + 1.388048768044, + -1.292006015778, + 0.529400348663, + 0.601877450943, + -1.009169578552, + 0.669350922108, + -0.502761423588, + 0.407149255276, + -0.610094547272, + 0.461753845215, + -0.573286294937, + 0.365299254656, + 0.623997271061, + -0.355963200331, + 0.459606021643, + -0.649816691875, + 0.618279457092, + -0.107006564736, + 0.679137408733, + -0.067650638521, + -0.572151720524, + 0.132588207722, + -0.524955511093, + 0.225148677826, + -0.343101322651, + 0.232284799218, + -0.227869704366, + 0.390604585409, + -0.208653941751, + -0.317079931498, + -0.199620366096, + 0.235431373119, + -0.531480014324, + 0.668039977551, + -0.135954141617, + 0.179742828012, + -0.437252223492, + -0.013570979238, + 0.115573123097, + -0.22711327672, + 0.262423932552, + -0.525557816029, + 0.381029933691, + -0.264162003994, + 0.258300870657, + -0.444701761007, + -0.613800942898, + 0.247029095888, + -0.197288811207, + 0.592606604099, + -0.511577963829, + 0.447442352772, + -0.302204370499, + 0.475382298231, + -0.406728088856, + 0.232298731804, + -0.369313150644, + -0.05571315065, + 0.302573293447, + -0.406324923038, + 0.527617752552, + -0.305710464716, + 0.252788752317, + -0.377948850393, + 0.327054709196, + -0.354434102774, + -0.068107500672, + 0.240906506777, + -0.39624992013, + 0.278390139341, + -0.375900804996, + 0.261265486479, + -0.408645510674, + 0.480576187372, + 0.652954518795, + -0.241027638316, + 0.143583521247, + -0.678904056549, + 0.405171453953, + -0.249131187797, + 0.244388625026, + -0.315840452909, + 0.614728271961, + -0.205918937922, + 0.208444401622, + -0.626709699631, + 0.052374575287, + 0.30351755023, + -0.298249185085, + 0.257511168718, + -0.401520371437, + 0.439747571945, + -0.21748355031, + 0.551217079163, + -0.297526538372, + 0.239058181643, + 0.572226524353, + -0.232141166925, + 0.460489600897, + -0.82347124815, + 0.213022023439, + -0.607115089893, + 0.427509516478, + -0.511929512024, + 0.652455747128, + -0.062094908208, + -1.356386303902, + 0.72613799572, + -0.496970206499, + 0.771454513073, + -0.639734089375, + 0.209146142006, + -0.271592646837, + 0.339930742979, + 0.632426142693, + -0.388152599335, + 0.249057874084, + -0.656833231449, + 0.608642458916, + -0.245700791478, + 0.384610176086, + -0.94586366415, + 1.345963478088, + -0.454080790281, + 0.626244843006, + -0.171289011836, + 0.43867379427, + 0.695750832558, + -0.439401954412, + -0.185251057148, + 0.256954580545, + -0.32072943449, + -0.670311450958, + 0.278069555759, + -0.457566440105, + 0.400286376476, + -0.69734698534, + 0.419761568308, + -0.382937043905, + -0.527711868286, + 0.504956066608, + -0.645901978016, + 0.686255097389, + -0.52248942852, + 0.41266900301, + -0.691957235336, + 0.514721035957, + -0.072961427271, + 0.371445864439, + 0.570598363876, + -0.429736435413, + 0.522429466248, + -0.540432989597, + -0.002111420734, + -0.327868640423, + 0.493024647236, + -0.233256399632, + 0.792959928513, + -0.396740734577, + -0.943960487843, + 0.504796147346, + -0.291688501835, + 0.374930381775, + -0.549706876278, + 0.556015074253, + 0.574617862701, + -0.434796929359, + 0.22634652257, + -0.631550133228, + 0.496553599834, + -0.119977280498, + 0.468253493309, + -0.726765692234, + 0.239103883505, + -0.190338239074, + 0.162078782916, + -0.715341448784, + 0.416505813599, + -0.349712461233, + 0.176620557904, + 0.332090646029, + -0.509670138359, + 0.87926286459, + -0.315970212221, + 0.413298815489, + -0.449539780617, + 0.387862503529, + -0.289940804243, + -0.318759471178, + 0.466065466404, + -0.441110491753, + 0.384707450867, + -0.426167398691, + 0.164867371321, + -0.242057994008, + 0.651792228222, + -0.269723236561, + -0.727871537209, + 0.144235983491, + -0.636488378048, + 0.510111927986, + -0.302441090345, + 0.110469058156, + -0.350929141045, + 0.367948532104, + 0.129938825965, + -0.223090931773, + 0.358095228672, + -0.453295856714, + 0.389694482088, + -0.147375315428, + 0.181686908007, + -0.58732932806, + 0.267463177443, + -0.078957371414, + -0.270398110151, + 0.265577346087, + -0.551738739014, + 0.350829780102, + -0.341438233852, + 0.294482022524, + -0.219301998615, + 0.388689577579, + -0.237097680569, + 0.230270236731, + 0.420778036118, + -0.251776129007, + 0.335041970015, + -0.172822862864, + -0.254694133997, + 0.156505659223, + 0.364001572132, + -0.46112537384, + 0.446026980877, + -0.37368285656, + 0.308225750923, + -0.408817827702, + 0.308768987656, + -0.366563498974, + 0.38386926055, + -0.392762511969, + 0.399610131979, + -0.142603173852, + 0.116041123867, + -0.03647358343, + -0.609449386597, + 0.348693281412, + -0.314961403608, + 0.270763903856, + -0.310534477234, + 0.129277929664, + 0.461982578039, + -0.392926037312, + 0.18468631804, + -0.487027138472, + 0.539895832539, + 0.054463982582, + 0.245820611715, + -0.559175789356, + 0.235533818603, + -0.38011226058, + 0.1506408602, + 0.433291733265, + -0.368901818991, + 0.451266735792, + -0.347516238689, + 0.353409618139, + -0.647292137146, + 0.155914664268, + -0.537890136242, + 0.287628948689, + 0.390788823366, + -0.327904611826, + 0.401763379574, + -0.558362543583, + 0.172150269151, + -0.331895053387, + 0.430945277214, + -0.370489507914, + -0.031235879287, + 0.248045668006, + -0.215734004974, + 0.404422074556, + -0.319880276918, + 0.165073394775, + -0.374117851257, + 0.418529093266, + -0.256077677011, + -0.508438766003, + 0.051487907767, + -0.361601561308, + 0.465746879578, + -0.376251757145, + 0.090201579034, + -0.34955534339, + 0.538630962372, + -0.008604078554, + 0.011312426999, + -0.616563618183, + -0.106100097299, + 0.293888747692, + -0.10145804286, + 0.360495835543, + -0.211884796619, + 0.160841077566, + -0.088602557778, + 0.517306387424, + -0.508885800838, + 0.16642446816, + -0.239861935377, + -0.065224669874, + 0.272915750742, + -0.582458972931, + 0.306512922049, + -0.432030588388, + 0.440356999636, + -0.390336215496, + 0.353924065828, + -0.499413043261, + 0.110633589327, + 0.256785660982, + -0.213810801506, + 0.477770596743, + -0.184655502439, + 0.453848451376, + -0.369993776083, + 0.425513505936, + -0.378513276577, + -0.43493026495, + 0.164379954338, + 0.147387936711, + -0.534525036812, + 0.559386432171, + -0.219652459025, + -0.36925560236, + 0.22167122364, + -0.523056149483, + 0.69970703125, + -0.041319061071, + 0.28017821908, + -0.508146524429, + 0.169765979052, + 0.256521999836, + -0.194853693247, + 0.152710646391, + -0.449122786522, + 0.43642577529, + -0.130894392729, + 0.215824082494, + -0.595828056335, + 0.117091216147, + -0.219122573733, + 0.273884922266, + 0.36669716239, + -0.274777650833, + 0.281265288591, + -0.190157845616, + 0.57262045145, + -0.308727264404, + 0.241510003805, + -0.265031665564, + 0.181003555655, + 0.279396086931, + -0.250445753336, + 0.398452043533, + -0.55676728487, + -0.107428319752, + -0.618792653084, + 0.225820660591, + -0.249605566263, + 0.253359287977, + -0.33206436038, + 0.208207637072, + 0.437363833189, + -0.585363268852, + 0.042971685529, + -0.683094859123, + 0.72114533186, + -0.244247853756, + 0.164905667305, + -0.290629684925, + 0.307045191526, + -0.136358976364, + -0.225316226482, + 0.240310847759, + -0.614696681499, + 0.280384212732, + -0.292186230421, + -0.001389736426, + -0.527526915073, + 0.310226172209, + -0.038603164256, + 0.19056878984, + 0.361360251904, + -0.256251722574, + 0.129073873162, + -0.437881886959, + 0.466023802757, + -0.444267839193, + 0.12715922296, + -0.353075772524, + -0.431705415249, + 0.12717795372, + -0.342182725668, + 0.292530238628, + -0.26655998826, + 0.327072888613, + -0.180942952633, + 0.432919055223, + -0.23376095295, + -0.405556976795, + 0.416106492281, + -0.113625489175, + 0.766277730465, + -0.263516008854, + 0.058516040444, + -0.69124007225, + 0.527443945408, + -0.448581427336, + 0.164045184851, + -0.367326885462, + 0.17524766922, + 0.504745006561, + -0.276202499866, + 0.326719373465, + -0.701236128807, + 0.687131166458, + -0.144921258092, + 0.63880199194, + 0.400835722685, + 0.226775929332, + -0.470568329096, + 0.449531823397, + -0.155013799667, + 0.272800832987, + -0.407515734434, + -0.611493051052, + 0.301610469818, + -0.385948866606, + 0.287228792906, + -0.464360535145, + 0.102701000869, + -0.162892580032, + 0.434783726931, + -0.247902259231, + 0.232000336051, + 0.408778816462, + -0.414380908012, + 0.215458869934, + -0.531561374664, + 0.398426681757, + -0.336309343576, + 0.314406454563, + -0.452836841345, + 0.541769981384, + -0.430664598942, + -0.638101518154, + 0.177763581276, + -0.329269140959, + 0.676675915718, + -0.303218454123, + 0.104955092072, + -0.645016670227, + 0.458186537027, + -0.406136095524, + -0.001416852465, + 0.122298702598, + -0.465925723314, + 0.505272865295, + -0.296731889248, + 0.154638975859, + -0.651607334614, + 0.328802168369, + 0.073272146285, + -0.075328573585, + 0.350201964378, + -0.428658425808, + 0.187473624945, + -0.214308619499, + 0.106860019267, + -0.554821789265, + 0.222901046276, + -0.12012950331, + -0.273900657892, + 0.520255088806, + -0.478465944529, + 0.083895117044, + -0.455167800188, + 0.441580086946, + -0.125332951546, + 0.434617936611, + -0.364446282387, + 0.368304699659, + -0.263691484928, + 0.158460885286, + -0.782794058323, + -0.852000176907, + 0.079533517361, + -0.167192339897, + 0.975492358208, + -0.38460573554, + -0.792715549469, + 0.005536100827, + -0.53661608696, + 0.715847432613, + -0.26156899333, + 0.322684109211, + -0.367647975683, + 0.398876041174, + -0.153594240546, + 0.316616714001, + -0.664175748825, + 0.667162597179, + -0.084225736558, + 0.347875386477, + 0.229212701321, + -0.622454106808, + 0.155946224928, + -0.397034645081, + 0.221651628613, + -0.391106635332, + 0.494495242834, + -0.007316526957, + 0.448485910892, + -0.147303313017, + -0.352660000324, + 0.449621379375, + -0.272255539894, + 0.408470362425, + 0.086432106793, + 0.18151704967, + -0.328954666853, + 0.16391441226, + -0.40670466423, + 0.293567895889, + -0.365194708109, + 0.401836127043, + -0.457372575998, + -0.364029407501, + 0.410627216101, + -0.092471703887, + 0.659315526485, + -0.607763111591, + 0.295259267092, + -0.669498443604, + 0.778401255608, + -0.131895184517, + 0.376173317432, + -0.533786654472, + -0.676675140858, + 0.475509881973, + -0.204265221953, + 0.247472688556, + -0.639552950859, + 0.547019958496, + -0.120677895844, + 0.246588140726, + -0.463180541992, + 0.007308694534, + 0.311200767756, + -0.284238755703, + 0.20619982481, + -0.533531844616, + 0.417012542486, + -0.244111016393, + 0.59627789259, + -0.465815842152, + 0.076492533088, + 0.307850450277, + -0.220995992422, + 0.269421517849, + -0.345289766788, + 0.18635442853, + -0.340443640947, + 0.297688394785, + -0.39629343152, + 0.103277847171, + 0.294627696276, + -0.451312661171, + 0.387450367212, + -0.138715296984, + 0.493378847837, + -0.362077832222, + 0.094234406948, + -0.686043679714, + 0.316492944956, + 0.500617206097, + -0.108599223197, + 0.18437436223, + -0.585745573044, + 0.423425406218, + -0.555857002735, + 0.246313437819, + -0.753411829472, + 0.578955829144, + -0.059537425637, + 0.434931308031, + -0.334074765444, + -0.673264026642, + 0.419280439615, + -0.243910759687, + 0.274477988482, + -0.37403011322, + 0.508689165115, + -0.366368353367, + 0.218067586422, + -0.376365274191, + -0.624535620213, + 0.296260565519, + -0.145972296596, + 0.390509039164, + -0.335912108421, + 0.199253097177, + -0.400295913219, + 0.354759454727, + -0.221731245518, + 0.293440759182, + 0.380958169699, + -0.211153715849, + 0.732781708241, + 0.011085241102, + 0.338508248329, + -0.474261701107, + -0.855009019375, + -0.534888267517, + 0.428987622261, + 0.810801327229, + 0.020421802998, + 0.085383981466, + -0.266355842352, + -0.369924813509, + -0.622937381268, + 0.219411954284, + -0.418559521437, + 0.277571499348, + -0.423469811678, + 1.033521056175, + -0.201476857066, + 0.327677190304, + -0.381764382124, + -0.798279881477, + 0.486851453781, + -0.235402852297, + 0.265632748604, + -0.531560361385, + 0.298737674952, + -0.278366744518, + -0.005974882748, + -0.456585794687, + -0.004940504674, + 0.322896242142, + 0.031681697816, + 0.198506116867, + -0.453753203154, + -0.161802023649, + -0.289184778929, + 0.290002018213, + 0.086286105216, + 0.482882618904, + -0.115551561117, + -0.401966392994, + 0.123192749918, + -0.496560841799, + 0.142294019461, + -0.428663820028, + 0.355978816748, + -0.23785482347, + 0.201259464025, + -0.565987288952, + -0.514454364777, + -0.064261421561, + -0.180868655443, + 0.589975655079, + -0.224179312587, + 0.068669974804, + -0.525141656399, + 0.366071462631, + -0.287470072508, + 0.098807290196, + -0.380404919386, + 0.276932030916, + 0.870602190495, + -0.079515397549, + 0.080615162849, + -0.98253518343, + 0.057735361159, + -0.206519439816, + 0.308008491993, + 0.305928707123, + -0.369154751301, + 0.162659659982, + -0.390222489834, + 0.333248972893, + -0.478901654482, + 0.457305490971, + -0.210760369897, + 0.3368935287, + -0.16190956533, + 0.201010257006, + -0.245176032186, + -0.344973891973, + 0.622225046158, + -0.332783728838, + 0.345808714628, + -0.277192443609, + 0.192789256573, + -0.281233131886, + 0.232789427042, + -0.246733680367, + -0.256279677153, + 0.369234919548, + -0.119004629552, + 0.425777167082, + -0.534287750721, + -0.07721914351, + -0.31510335207, + 0.563925802708, + -0.070841401815, + 0.134541362524, + -0.497416377068, + -0.70284640789, + 0.470905065536, + -0.321339994669, + 0.084763929248, + -0.419315218925, + 0.678021788597, + 0.235038295388, + -0.030045298859, + 0.32359623909, + -0.455145567656, + -0.562787055969, + 0.107355646789, + 0.327850013971, + -0.183169186115, + 0.262299418449, + -0.714664518833, + 0.31210026145, + -0.161907196045, + 0.31012275815, + -0.338697820902, + -0.436868786812, + 0.026025952771, + -0.512406349182, + 0.347982257605, + -0.432817459106, + 0.097552187741, + -0.226580381393, + 0.411542892456, + -0.246435821056, + 0.222535610199, + 0.362602680922, + -0.402385801077, + 0.384800642729, + -0.257327288389, + 0.431747943163, + -0.530349910259, + 0.06170726195, + -0.381364107132, + 0.438605904579, + -0.203119024634, + -0.399735271931, + -0.558622539043, + 0.268914610147, + 0.707612097263, + -0.133226051927, + 0.048814244568, + -0.465378046036, + 0.201534867287, + -0.021355492994, + 0.206589370966, + -0.507753551006, + 0.283588320017, + -0.187260344625, + -0.02199940756, + 0.201002061367, + -0.740265965462, + 0.294827997684, + -0.241143837571, + 0.488843858242, + -0.31122097373, + 0.436306595802, + -0.129807263613, + 0.434576958418, + 0.511812746525, + -0.238422140479, + 0.211883082986, + -0.606148719788, + 0.095183320343, + 0.578951358795, + -0.125350028276, + 0.236187785864, + -0.620895028114, + -0.055271286517, + -0.354484528303, + 0.446193933487, + -0.211082339287, + 0.057808484882, + -0.361846536398, + 0.632694482803, + 0.060336377472, + -0.106651864946, + -0.325061440468, + 0.45966348052, + 0.835253000259, + -0.064405106008, + -0.50625449419, + -0.025862857699, + -0.163764834404, + 0.306276679039, + -0.186201319098, + 0.127133265138, + -0.518982470036, + 0.229226395488, + -0.205262765288, + 0.115659706295, + -0.553154051304, + 0.471299916506, + -8.12196813E-4, + 0.225770413876, + -0.511397004128, + -0.152403980494, + -0.453758090734, + 0.455014437437, + 0.661636054516, + -0.246741592884, + 0.187721118331, + -0.37813565135, + 0.024898471311, + 0.35416033864, + -0.358284175396, + -0.303503930569, + 0.289804637432, + -0.209401711822, + 0.257408171892, + 0.003176434198, + -0.359703600407, + 0.403210163116, + -0.32042580843, + 0.062105227262, + -0.291663646698, + 0.584595024586, + -0.143409460783, + 0.221843391657, + -0.542412221432, + 0.187650054693, + 0.461158245802, + -0.24127356708, + -0.032336823642, + -0.387115746737, + 0.346249789, + 0.077283993363, + -0.229294374585, + -0.561172962189, + 0.329051315784, + -0.176497414708, + 0.143999651074, + 0.118182048202, + -0.52866846323, + 0.324766397476, + -0.044772896916, + 0.366728663445, + -0.374534159899, + 0.051901459694, + -0.353007435799, + 0.39666312933, + 0.627795815468, + -0.61720263958, + 0.350217550993, + -0.332335054874, + 0.518884181976, + -0.279382735491, + 0.264985263348, + -0.446014940739, + -0.579474389553, + 0.562591075897, + -0.250381588936, + 0.514724135399, + -0.355642080307, + 0.083389811218, + -0.579950869083, + 0.405880182981, + -0.24549613893, + -0.393317490816, + 0.192513808608, + -0.291695773602, + 0.51626265049, + -0.156755134463, + 0.223591595888, + -0.33189317584, + 0.399941772223, + -0.231133788824, + 0.133431643248, + -0.287935853004, + -0.436788260937, + 0.335501879454, + -0.102674335241, + 0.063797496259, + -0.527697563171, + 0.441367298365, + -0.043239559978, + 0.222906336188, + -0.625092983246, + 0.131471574306, + -0.366312742233, + 0.170835882425, + 0.542510986328, + -0.335837841034, + 0.185421824455, + -0.393532603979, + 0.359813332558, + -0.520858883858, + 0.13827341795, + -0.466879248619, + 0.186486274004, + 0.261445552111, + -0.39231967926, + 0.440503627062, + -0.379341840744, + 0.281253069639, + -0.271543443203, + 0.405558437109, + -0.257453501225, + -0.487754672766, + 0.040941599756, + -0.258608311415, + 0.242833971977, + -0.57365500927, + -0.153557345271, + 0.103120721877, + -0.288591921329, + -0.168823227286, + 0.438635766506, + -0.043391473591, + 0.098778285086, + -0.551779806614, + 0.083094805479, + 0.390883505344, + 0.021904155612, + 0.07066834718, + -0.34545263648, + 0.381326764822, + -0.066641718149, + 0.360635697842, + -0.769402563572, + 0.169433474541, + -0.33203753829, + 0.326866358519, + 0.189835309982, + -0.53236746788, + 0.238598078489, + -0.450096607208, + 0.595436453819, + -0.39717656374, + 0.257033914328, + -0.400699138641, + 0.054953411222, + 0.349677562714, + -0.32502129674, + 0.143790543079, + -0.567687571049, + 0.479130327702, + -0.145014464855, + 0.486169457436, + -0.485002219677, + -0.575282514095, + 0.26431208849, + -0.239701613784, + 0.642509400845, + -0.322717308998, + 0.420430153608, + -0.423462331295, + 0.65330606699, + -0.11473313719, + -0.383100658655, + 0.207736298442, + -0.60065227747, + 0.555520534515, + -0.23117877543, + 0.176940143108, + -0.546159565449, + 0.270113110542, + -0.174207806587, + 0.26530918479, + -0.455143481493, + 0.413671165705, + -0.141500741243, + 0.142215698957, + 0.212132006884, + -0.564608812332, + 0.395625144243, + -0.270963549614, + 0.340033382177, + -0.616869449615, + 0.22901339829, + -0.286486327648, + 0.373858332634, + 0.293831706047, + -0.247934684157, + 0.206500172615, + -0.590938866138, + 0.565758466721, + -0.134927898645, + 0.409900665283, + -0.301523447037, + -0.564990162849, + 0.340959042311, + -0.418797522783, + 0.321800649166, + -0.649962484837, + 0.103250458837, + -0.493458360434, + 0.62920165062, + -0.104088597, + -0.279194802046, + 0.138002857566, + -0.348226338625, + 0.363660693169, + -0.396295487881, + 0.193102508783, + -0.3465911448, + 0.438444674015, + -0.029471261427, + -0.297472417355, + 0.228562101722, + -0.648253500462, + 0.2767534554, + -0.190555229783, + 0.131215244532, + -0.625925481319, + -0.128143951297, + -0.077865675092, + 0.307295322418, + -0.224773839116, + 0.321675211191, + -0.365857571363, + 0.494909793139, + -0.193855434656, + 0.228905782104, + 0.202691316605, + -0.548935890198, + 0.334241718054, + -0.312091529369, + 0.291648596525, + -0.381281375885, + 0.343605101109, + -0.347811788321, + 0.252055943012, + 0.438025474548, + -0.116842612624, + 0.579731225967, + -0.304033488035, + 0.322165131569, + -0.508324384689, + 0.672004163265, + -0.311561077833, + -0.443000197411, + 0.249330937862, + -0.326635271311, + 0.496445864439, + -0.3753503263, + 0.083927571774, + -0.616565525532, + 0.662844896317, + -0.109047405422, + 0.116525016725, + -0.362273514271, + 0.248097673059, + 0.627999424934, + -0.272564202547, + 0.261091321707, + -0.643404245377, + 0.214044362307, + -0.342982500792, + 0.207259714603, + -0.392176389694, + 0.311830580235, + -0.049696534872, + 0.381290137768, + -0.043070118874, + 0.225465402007, + -0.183843612671, + -0.305727213621, + 0.262400925159, + -0.248706758022, + 0.335413277149, + -0.438658177853, + -0.206299170852, + 0.327457129955, + -0.364654570818, + 0.319590032101, + -0.448961645365, + 0.197590693831, + -0.540968537331, + 0.384330421686, + -0.267883777618, + -0.332028955221, + 0.341127932072, + -0.287807673216, + 0.618907570839, + -0.489292412996, + 0.195008441806, + -0.569773674011, + 0.491037160158, + -0.125548496842, + 0.113302722573, + -0.055960696191, + -0.506379187107, + 0.447842031717, + -0.201403468847, + 0.294113785028, + -0.668803751469, + 0.172588735819, + -0.310524135828, + 0.009697999805, + 0.23002268374, + -0.400883495808, + 0.100927352905, + -0.328114748001, + 0.441436618567, + -0.266188144684, + 0.356098622084, + -0.201247110963, + 0.142769306898, + -0.412945777178, + 0.049344006926, + -0.358993083239, + -0.413785964251, + 0.586397469044, + -0.203208208084, + 0.089447878301, + 0.052505016327, + 0.460959285498, + -0.518642544746, + 0.207758948207, + -0.385633021593, + 0.348555415869, + -0.38543048501, + -0.120931491256, + 0.278449177742, + -0.261449366808, + 0.568810105324, + -0.297892600298, + 0.13882945478, + -0.435149073601, + 0.566658854485, + -0.155504152179, + 0.1454167068, + -0.296790748835, + -0.485692411661, + 0.79088640213, + -0.126084148884, + 0.299084931612, + -0.555246412754, + 0.080341354012, + 0.296650320292, + -0.288761198521, + 0.368466556072, + -0.38206923008, + 0.374165892601, + -0.353078365326, + 0.427240133286, + -0.3847669065, + 0.167999044061, + -0.247445076704, + 0.385057747364, + 0.523070394993, + -0.083444081247, + 0.253000736237, + -0.459118098021, + 0.468008965254, + -0.420869529247, + 0.25345826149, + -0.35917955637, + 0.22756575048, + -0.232952430844, + 0.452868282795, + -0.08608918637, + -0.334540039301, + 0.14678299427, + -0.341047018766, + 0.430423617363, + -0.298188865185, + 0.21125818789, + -0.458414614201, + 0.525592327118, + -0.201542884111, + -0.017214175314, + 0.09194227308, + -0.506613969803, + 0.781618416309, + -0.172548159957, + 0.074476227164, + -0.670999228954, + 0.096234962344, + 0.3826610744, + 0.090127721429, + 0.241091027856, + -0.358328521252, + 0.340970337391, + -0.249674648046, + 0.123311012983, + -0.66477483511, + 0.195223748684, + -0.211875796318, + 0.338911563158, + -0.149858593941, + 0.052702389657, + -0.442293792963, + -0.317608952522, + 0.458261758089, + -0.32621973753, + 0.485363662243, + -0.213724449277, + -0.303413569927, + 0.092006698251, + -0.147178277373, + 0.289067775011, + -0.282561540604, + 0.168853208423, + -0.29977196455, + 0.341791838408, + -0.43470582366, + 0.1803932935, + -0.489894300699, + 0.530457556248, + 0.02340468578, + -0.245253190398, + 0.31946888566, + -0.443338543177, + 0.368031471968, + 0.527632892132, + 0.772576928139, + -0.423302233219, + -0.011905337684, + -0.762264609337, + 0.309329986572, + -0.153870508075, + 0.431770145893, + -0.471207231283, + -0.090439878404, + 0.256308078766, + -0.26497733593, + 0.320755153894, + -0.577944993973, + 0.283752858639, + -0.210473909974, + 0.257908701897, + -0.232955753803, + 0.262227624655, + -0.374822944403, + 0.387313038111, + 0.416402190924, + -0.460251659155, + 0.100724972785, + -0.346080124378, + 0.099352233112, + -0.091544359922, + 0.350356400013, + -0.241278231144, + 0.26019218564, + 0.334422141314, + -0.199941128492, + 0.636162042618, + -0.267963171005, + -0.029756352305, + -0.515137851238, + 0.628835916519, + 0.011184212752, + -0.414673388004, + 0.061930987984, + -0.748278319836, + 0.720998644829, + -0.125877127051, + 0.324463129044, + -0.415182888508, + 0.331347614527, + -0.090050466359, + -0.310061454773, + 0.285762548447, + -0.421283572912, + 0.469772100449, + -0.203883811831, + 0.322979271412, + -0.593679666519, + 0.268761694431, + -0.309023976326, + 0.233519047499, + -0.352190166712, + 0.143445804715, + -0.225479438901, + -0.300919026136, + 0.394876092672, + -0.438941329718, + 0.043244745582, + -0.36426448822, + -0.322422862053, + 0.42847687006, + 0.484721153975, + -0.314066946507, + -0.527660965919, + 0.214694023132, + -0.388731777668, + 0.40159419179, + -0.400128215551, + 0.180362135172, + -0.316466510296, + 0.470075726509, + -0.238660752773, + -0.442793905735, + 0.129168838263, + -0.570538163185, + 0.674911916256, + -0.282013118267, + 0.174586012959, + -0.506947040558, + 0.329923123121, + -0.334398627281, + 0.211511403322, + -0.454055666924, + -0.545399844646, + 0.613854467869, + -0.28546410799, + 0.244510009885, + -0.658630609512, + 0.448438286781, + -0.115191906691, + -0.151746094227, + 0.415850967169, + -0.414743423462, + 0.121740728617, + 0.051656655967, + -0.366468697786, + 0.315317213535, + 0.354622632265, + -0.424222648144, + 0.23196990788, + -0.275554597378, + 0.380554705858, + -0.179983735085, + 0.401849746704, + -0.458379924297, + -0.484336435795, + 0.337624460459, + -0.154849290848, + 0.572192668915, + -0.34240719676, + 0.09500181675, + -0.488735944033, + 0.404301196337, + -0.432007849216, + 0.133619710803, + -0.513845443726, + 0.513596832752, + 0.649220824242, + -0.190928995609, + 0.081912010908, + -0.445384114981, + 0.45580342412, + 0.01448728051, + 0.329455167055, + -0.675989985466, + -0.083729453385, + 0.30956941843, + -0.386632204056, + 0.163994729519, + -0.737579882145, + 0.375444352627, + -0.056546721607, + 0.378126353025, + -0.483691006899, + 0.103865392506, + -0.460580259562, + 0.066790960729, + 0.523781895638, + -0.265163421631, + 0.239556923509, + -0.136866360903, + -0.410595983267, + 0.31815418601, + -0.394242465496, + 0.305888444185, + -0.457690805197, + 0.359176397324, + -0.229062825441, + 0.285003513098, + -0.236380785704, + 0.22015786171, + -0.353890389204, + 0.417058140039, + -0.245489865541, + 0.013322951272, + -0.443263083696, + 0.386512339115, + 0.438615947962, + -0.292183756828, + 0.317888259888, + -0.45155864954, + 0.679197728634, + -0.247509837151, + 0.180719271302, + -0.429408788681, + 0.383137643337, + -0.10043349117, + -0.100554414093, + 0.266691833735, + -0.531879484653, + 0.581418395042, + -0.19589908421, + 0.246372893453, + -0.754782021046, + 0.073140107095, + 0.356224626303, + -0.139812231064, + 0.447823524475, + -0.61675709486, + 0.304084122181, + -0.306695193052, + 0.442077636719, + -0.306382864714, + 0.439948678017, + 0.61940407753, + -0.560548722744, + 0.313886612654, + -0.657127797604, + 0.154630854726, + -0.493380367756, + 0.441163539886, + -0.260958909988, + 0.188066542149, + 0.471203684807, + 0.459371745586, + -0.283787250519, + -0.474737077951, + 0.160127475858, + -0.320666372776, + 0.635177612305, + -0.364310592413, + 0.194057166576, + -0.53417468071, + 0.573939442635, + -0.554335296154, + 0.526717662811, + -0.705951631069, + 0.560015320778, + 0.118998669088, + -0.63686722517, + 0.285580933094, + -0.653136193752, + 0.574248731136, + -0.358777225018, + 0.327798187733, + -0.578798532486, + 0.356733053923, + -0.320772200823, + 0.319517463446, + 0.329020708799, + -0.643710613251, + 0.335502803326, + -0.455034941435, + 0.320057630539, + -0.604143738747, + 0.661836206913, + -0.453200429678, + 0.277402371168, + 0.346099108458, + -0.465841025114, + 0.420878976583, + -0.250563591719, + 0.319231152534, + -0.48561000824, + 0.321582853794, + 0.514252841473, + -0.533718705177, + 0.013991095126, + -0.35075828433, + 0.454239457846, + -0.523248612881, + 0.184222891927, + -0.564249515533, + 0.626779258251, + 0.054023023695, + -0.25816449523, + 0.282384723425, + -0.471982240677, + 0.481076270342, + -0.091325946152, + 0.309519588947, + -0.410262435675, + 0.241340696812, + -0.258567601442, + 0.092921875417, + -0.413310348988, + 0.078623503447, + 0.262210398912, + -0.084605053067, + 0.273363351822, + -0.457316875458, + 0.41778215766, + -0.329646617174, + 0.389722913504, + -0.391370296478, + 0.317191809416, + -0.211269617081, + 0.288193702698, + 0.201873779297, + -0.494060188532, + 0.153566256166, + -0.429119348526, + 0.285967499018, + -0.297647058964, + 0.652524292469, + -0.24285325408, + -0.349019259214, + 0.505212247372, + -0.069978035986, + 0.48498570919, + -0.364607781172, + 0.083501398563, + -0.598260045052, + 0.313991069794, + -0.277817964554, + -0.015330599621, + 0.11846126616, + -0.440747261047, + 0.411670565605, + -0.301374554634, + 0.239166975021, + -0.411799579859, + 0.284840226173, + 0.329271197319, + 0.390381246805, + -0.101778112352, + 0.284561246634, + -0.39977055788, + 0.085527144372, + 0.304407805204, + -0.051800630987, + 0.194681301713, + -0.663401246071, + 0.358653604984, + -0.502419710159, + 0.308754861355, + -0.551624596119, + 0.174414873123, + -0.243267923594, + -0.204210057855, + 0.457241922617, + -0.389068365097, + 0.421350806952, + -0.337708830833, + 0.228974938393, + -0.471399515867, + 0.340029865503, + -0.222497358918, + -0.462262779474, + 0.325588196516, + -0.431154102087, + 0.451718896627, + -0.378826409578, + 0.306379914284, + -0.576584815979, + 0.273754566908, + -0.082392223179, + 0.068136870861, + -0.105776377022, + -0.349700540304, + 0.445453077555, + -0.184842288494, + 0.22402574122, + -0.520489811897, + 0.309829354286, + -0.147715523839, + -0.241735801101, + 0.168154373765, + -0.616652309895, + 0.48982027173, + -0.109748065472, + 0.543604195118, + -0.537772417068, + 0.367059439421, + -0.421464979649, + 0.239515736699, + -0.370902985334, + 0.087907277048, + -0.240879014134, + -0.347411304712, + 0.43015229702, + -0.593581199646, + 0.233825698495, + -0.455254256725, + 0.357442319393, + -0.208556264639, + 0.56261152029, + -0.029642513022, + -0.540322363377, + 0.441744685173, + -0.377558082342, + 0.390742689371, + -0.45430341363, + 0.282480865717, + -0.331932008266, + 0.513924658298, + -0.138093590736, + 0.076938435435, + -0.409292072058, + -0.62552022934, + 0.41843059659, + -0.15761654079, + 0.434542268515, + -0.401379793882, + 0.571264445782, + -0.032546654344, + -0.217820495367, + 0.207427963614, + -0.682378470898, + 0.58772367239, + -0.091381169856, + 0.360223710537, + -0.507118880749, + 0.204503968358, + -0.521600663662, + 0.101393379271, + 0.422772139311, + -0.241189941764, + 0.289283573627, + -0.169479072094, + 0.360425561666, + -0.476074546576, + 0.427213251591, + 0.011819312349, + -0.205217078328, + -0.298747718334, + 0.514767289162, + -0.429050862789, + 0.389931708574, + -0.493575572968, + 0.383044809103, + 0.449721843004, + -0.481106698513, + 0.441324621439, + -0.463388234377, + 0.100618071854, + -0.265303641558, + 0.486257851124, + -0.121823869646, + -0.32431563735, + 0.208607062697, + -0.409249186516, + 0.50964140892, + -0.342948317528, + -0.00449869968, + -0.689835250378, + 0.340035825968, + -0.189946949482, + 0.162845730782, + -0.602997541428, + 0.26928037405, + 0.465777784586, + -0.174087807536, + 0.121877722442, + -0.500201523304, + 0.283377945423, + -0.177455961704, + 0.2471755445, + -0.467539459467, + -0.096796698868, + -0.284887105227, + -0.0039906702, + 0.195063695312, + -0.638362765312, + 0.257352530956, + -0.503605365753, + 0.341772913933, + -0.261863052845, + 0.588679790497, + -0.391682684422, + -0.326168775558, + 0.422278702259, + -0.393542408943, + 0.533991873264, + -0.526879131794, + 0.18457506597, + -0.307455360889, + 0.304564207792, + 0.528487861156, + -0.237071946263, + 0.176408603787, + -0.646645009518, + 0.519645512104, + -0.579392552376, + 0.437561750412, + -0.377740859985, + 0.531396090984, + -0.205766096711, + 0.212064325809, + -0.496262401342, + -0.626000463963, + 0.624862790108, + -0.068467453122, + 0.381798505783, + -0.521317958832, + 0.187562033534, + -0.153406232595, + 0.556436598301, + -0.720244407654, + 0.181441709399, + 0.643760621548, + -0.246419027448, + 0.494001060724, + -0.469933360815, + 0.107803612947, + -0.416441887617, + 0.297928869724, + -0.650861859322, + 0.229004710913, + -0.367700695992, + 0.475275278091, + 0.521860063076, + -0.436627984047, + 0.45475178957, + -0.505977988243, + 0.255307048559, + -0.394588530064, + 0.562702596188, + -0.495511859655, + -0.477219879627, + 0.348906606436, + -0.741533696651, + 0.644321262836, + -0.172380566597, + -0.230929404497, + -0.430052131414, + 0.35906291008, + -0.515409588814, + 0.648195207119, + -0.329178571701, + 0.240183651447, + -0.631028234959, + 0.411153495312, + 0.807015478611, + -0.075084485114, + 0.359471648932, + -0.647681891918, + 0.156412795186, + -0.376508623362, + 0.116149440408, + -0.561328232288, + 0.222871631384, + -0.119498759508, + -0.44461145997, + 0.593014478683, + -0.505644261837, + 0.253330826759, + -0.276297777891, + 0.315681666136, + -0.49923363328, + 0.42116779089, + -0.474140793085, + 0.744839549065, + -0.330024540424, + -0.691642284393, + 0.400134563446, + -0.385871857405, + 0.226971596479, + -0.432558864355, + 0.268936514854, + -0.59921002388, + 0.221728488803, + -0.333163321018, + 0.493464827538, + 0.678735494614, + -0.455617815256, + 0.403967261314, + -0.4835691154, + 0.540229737759, + -0.19301623106, + 0.276140362024, + -0.576905190945, + 0.575200676918, + -0.336748719215, + 0.085644617677, + 0.33300614357, + -0.612783908844, + 0.471560746431, + -0.174063697457, + 0.233350038528, + -0.866586327553, + 0.052140060812, + 0.440860241652, + -0.248680591583, + 0.54541516304, + -0.589506924152, + 0.275191485882, + -0.21163778007, + 0.428200334311, + -0.442363768816, + 0.332076042891, + -0.394977152348, + 0.503810763359, + 0.678016960621, + -0.346011430025, + 0.438383102417, + -0.440963983536, + 0.204821407795, + -0.435084879398, + 0.46826300025, + -0.323797464371, + -0.245145142078, + 0.248636350036, + -0.533652424812, + 0.350882291794, + -0.330757200718, + 0.334508866072, + -0.467701643705, + 0.645406842232, + -0.422989100218, + 0.349545925856, + -0.379020363092, + 0.738887906075, + 0.721224308014, + -0.209722340107, + 0.257524609566, + -0.863003969193, + 0.331152439117, + -0.425595581532, + 0.271727919579, + -0.549086809158, + -0.701477229595, + 0.534564077854, + -0.045120596886, + 0.104375317693, + -0.086651533842, + 0.437839686871, + -0.487515091896, + 0.594133079052, + -0.019031655043, + 0.463655233383, + -0.65041667223, + 0.039010621607, + -0.427465587854, + 0.238207921386, + 0.144901975989, + -0.529347360134, + 0.283134520054, + -0.316825419664, + 0.524891197681, + -0.532699108124, + 0.422569930553, + -0.371149390936, + 0.245613858104, + -0.154564112425, + -0.269742518663, + 0.550132036209, + -0.524108469486, + 0.154377579689, + -0.552321732044, + 0.569460630417, + -0.430192768574, + 0.169338673353, + -0.450355947018, + 0.382959365845, + 0.687798261642, + -0.469039052725, + 0.317991763353, + -0.656118154526, + 0.828246831894, + -0.159713357687, + 0.315568089485, + -0.663280367851, + 0.365910947323, + 0.733888626099, + -0.520668148994, + 0.22780674696, + -0.706622600555, + 0.677529871464, + -0.247877642512, + 0.555305659771, + -0.413952678442, + 0.33952537179, + -0.19776853919, + 0.098878614604, + 0.377639532089, + -0.778272032738, + 0.323337703943, + -0.481647819281, + 0.567636728287, + -0.343400865793, + 0.412178605795, + -0.497663706541, + 0.13759700954, + 0.382237911224, + -0.29438534379, + 0.317271381617, + -0.385552406311, + 0.371683418751, + -0.278238326311, + 0.607411682606, + -0.191356703639, + -0.457111686468, + 0.41375502944, + -0.308605372906, + 0.603315293789, + -0.381941139698, + 0.281039267778, + -0.692107200623, + 0.572604835033, + -0.038312397897, + 0.236906468868, + 0.212443336844, + -0.650437951088, + 0.390893548727, + -0.527569115162, + 0.322243690491, + -0.831159234047, + 0.803308188915, + -0.147936448455, + 0.343309313059, + -0.284627467394, + -0.519158840179, + 0.247906789184, + -0.098680578172, + 0.324657291174, + -0.476909637451, + 0.417458534241, + -0.325529098511, + 0.403942286968, + -0.334066689014, + 0.207707047462, + 0.40250274539, + 0.006951035, + -0.046717710793, + -0.296508699656, + 0.175154700875, + -0.404255062342, + -0.045936748385, + -0.450449377298, + 0.417600005865, + -0.178468331695, + 0.752943992615, + -0.266738682985, + -0.414841890335, + 0.391550987959, + -0.055266037583, + 0.430428177118, + -0.289850831032, + 0.261566013098, + -0.63686722517, + 0.58374017477, + -0.197083353996, + 0.149787440896, + -0.647439777851, + 3.53374606E-4, + 0.410855561495, + -1.336606025696, + 0.546516180038, + -1.245753526688, + 0.611308813095, + -0.607441425323, + 0.607692658901, + -0.266097187996, + 0.313772827387, + 0.775875806808, + -0.490189760923, + 0.598901152611, + -0.733543336391, + 0.527615845203, + -0.404231756926, + 0.356866925955, + -0.652563273907, + 0.157098695636, + 0.392253905535, + -0.280222535133, + 0.368749886751, + -0.419008433819, + 0.541870892048, + -0.378857046366, + 0.408442825079, + -0.36288100481, + 0.315752446651, + -0.48195374012, + -0.528010845184, + 0.664046287537, + -0.199824497104, + 0.80610781908, + -0.651106059551, + 0.205920085311, + -0.615727365017, + 0.560683846474, + -0.430980712175, + 0.125553935766, + -0.320579916239, + 0.225892618299, + 0.551560640335, + -0.134057492018, + 0.149959415197, + -0.625905334949, + 0.359277784824, + -0.176958501339, + 0.081734351814, + -0.518883764744, + -0.540584445, + 0.566179275513, + -0.256358504295, + 0.477704286575, + -0.806128382683, + 0.419361591339, + -0.353622019291, + 0.142325788736, + -0.78416454792, + -0.098712995648, + 0.348130762577, + -0.32660934329, + 0.54781973362, + -0.355718791485, + 0.288287162781, + -0.127951994538, + -0.311992496252, + 0.377078354359, + -0.44261905551, + 0.298397064209, + -0.442817002535, + 0.710658013821, + -0.330783396959, + 0.327672272921, + -0.331684589386, + 0.109765850008, + 0.419616609812, + -0.231231659651, + 0.247333586216, + -0.079881168902, + -0.093889713287, + -0.507752001286, + 0.3310546875, + -0.609244227409, + 1.048565626144, + -0.552397012711, + 0.572456300259, + -0.807281374931, + 0.645024120808, + -0.065730981529, + -0.384402096272, + -0.536232054234, + 0.478154689074, + -0.256233036518, + 0.256625145674, + 0.378712356091, + -0.321840316057, + 0.355825096369, + -0.202342167497, + 0.54411315918, + -0.682838141918, + 0.220571309328, + 0.446389347315, + -0.215217381716, + 0.454244077206, + -0.507441580296, + 0.489018976688, + -0.174567565322, + 0.489628434181, + -0.357351273298, + 0.340916186571, + -0.406054079533, + 0.318471729755, + 0.608811438084, + -0.474695980549, + 0.337478846312, + -0.389138072729, + 0.775637745857, + -0.58091121912, + 0.716039061546, + -0.630478024483, + 0.381712883711, + -0.289414048195, + 0.632739961147, + 0.58984041214, + -0.607081949711, + 0.244315251708, + -0.573018193245, + 0.489381670952, + -0.128650963306, + 0.289792478085, + -0.550593554974, + 0.286935120821, + 0.611357271671, + -0.535033464432, + -0.008962040767, + -0.478224039078, + 0.337739884853, + 0.081241168082, + 0.462427139282, + -0.624547719955, + 0.173034802079, + -0.32553011179, + -0.05058113113, + 0.227870583534, + -0.365008294582, + 0.551945030689, + -0.170068085194, + 0.380322486162, + -0.537085652351, + -0.01739525795, + -0.520720779896, + 0.28490164876, + 0.469583123922, + -0.373191803694, + 0.359604030848, + -0.343486338854, + 0.021263318136, + -0.291703373194, + 0.172070875764, + -0.127097353339, + -0.399515837431, + 0.506138682365, + -0.305211663246, + 0.524122536182, + -0.374072313309, + 0.163138583302, + -0.406239926815, + 0.518967151642, + -0.351854264736, + 0.060894634575, + -0.491695195436, + 0.552667319775, + 0.783058702946, + -0.305562347174, + 0.180475249887, + -0.650907933712, + 0.650612592697, + -0.00595306186, + 0.021284103394, + -0.042497146875, + 0.387854009867, + -0.653148412704, + 0.412028253078, + -0.413619309664, + 0.307325690985, + -0.392521589994, + -0.604239106178, + 0.431452721357, + -0.325102508068, + 0.279950201511, + -0.593850672245, + 0.324804514647, + -0.481525361538, + 0.522221267223, + -0.347177714109, + -0.640891969204, + 0.348827630281, + -0.227005645633, + 0.387516766787, + -0.349881350994, + 0.571324944496, + -0.310990095139, + 0.431425213814, + -0.171909928322, + -0.435135394335, + 0.453597545624, + -0.34542247653, + 0.329157233238, + -0.396068871021, + 0.496063143015, + -0.299502402544, + 0.133421331644, + -0.56876885891, + 0.484176188707, + 0.576999306679, + -0.386445820332, + 0.156728565693, + -0.793155789375, + 0.728952169418, + -0.139511793852, + 0.360275924206, + -0.710188627243, + 0.450015693903, + -0.294237494469, + 0.175112232566, + 0.192398622632, + -0.907909691334, + 0.343156188726, + -0.219489097595, + 0.407005935907, + -0.61775124073, + 0.339787274599, + -0.494764715433, + 0.362094402313, + 0.418048977852, + -0.70450180769, + 0.317903101444, + -0.207425445318, + 0.361911118031, + -0.419870823622, + 0.322292178869, + -0.320864409208, + -0.385816276073, + 0.3180744946, + -0.252291440964, + 0.495174467564, + -0.282979428768, + 0.028870530427, + -0.463021278381, + 0.244926780462, + -0.182266891003, + 0.20614375174, + -0.269774705172, + 0.160824120045, + 0.28911280632, + -0.388974100351, + 0.040832299739, + -0.552117228508, + 0.626951575279, + -0.148087412119, + 0.129868000746, + -0.515323638916, + 0.548634111881, + -0.058451928198, + -0.320025593042, + 0.147655129433, + -0.767849743366, + 0.491518557072, + -0.422670543194, + 0.531385242939, + -0.602190554142, + -1.301952004433, + 0.509525537491, + 0.830472588539, + -0.267497122288, + -0.721975505352, + 0.327388197184, + -0.446546763182, + -0.178406834602, + 0.018924131989, + 0.610925555229, + -0.49638915062, + 0.499759107828, + -0.621180593967, + 0.26822027564, + -0.478865325451, + 0.304850041866, + -0.409741431475, + -0.436409860849, + 0.606203138828, + -0.235242053866, + 0.555002868176, + -0.081396371126, + -0.310053318739, + 0.355180114508, + 0.110026150942, + 0.6915589571, + -0.356687009335, + 0.295453578234, + -0.882340490818, + 0.315593034029, + -0.610547184944, + 0.316250711679, + -0.18442876637, + 0.631126463413, + -0.171507492661, + -0.332901805639, + 0.217939078808, + -0.7800552845, + 0.555218696594, + -0.161992520094, + 0.546172261238, + -0.612559318542, + 0.474888503551, + -0.022368004546, + 0.318311154842, + 0.492321312428, + -0.722181499004, + 0.376576244831, + -0.557835698128, + 0.597535431385, + -0.58223927021, + 0.119621954858, + -0.667256653309, + 0.25762450695, + 0.323965400457, + -0.240970864892, + 0.593520879745, + -0.472566336393, + 0.311751097441, + -0.472928375006, + 0.500493466854, + -0.209448754787, + -0.495323687792, + 0.371576219797, + -0.255702883005, + 0.675485670567, + -0.36087346077, + 0.085612118244, + -0.75242882967, + 0.472576469183, + -0.531728386879, + 0.138611495495, + -0.458774328232, + 0.383686512709, + -0.398170918226, + 0.038068860769, + 0.104347631335, + -0.501354634762, + 0.570351779461, + 0.008654930629, + 0.066028654575, + -0.693202197552, + 0.047578454018, + 0.36669203639, + -0.048990402371, + 0.464759081602, + -0.443392574787, + 0.480355530977, + -0.331405192614, + 0.422942370176, + -0.658089876175, + 0.084045633674, + -0.393833726645, + 0.377828359604, + 0.422478318214, + -0.347721606493, + 0.423818588257, + -0.468228459358, + 0.317562222481, + -0.45490026474, + 0.426053524017, + -0.13007466495, + -0.488705784082, + 0.6884573102, + -0.393039703369, + 0.400824129581, + -0.772316992283, + -0.655194997787, + -0.492515802383, + 0.273804605007, + -0.483619004488, + 0.765559971333, + -0.250603228807, + 0.166637942195, + -0.521362125874, + -0.054431948811, + 0.405234366655, + -0.215092167258, + 0.209477633238, + -0.470937788486, + 0.576885163784, + -0.119280092418, + 0.30122217536, + -0.730575978756, + 0.121603876352, + 0.356530219316, + -0.227425336838, + 0.28430005908, + -0.545340001583, + 0.429180234671, + -0.320686340332, + 0.206461757421, + -0.538265585899, + 0.161820173264, + -0.112302988768, + 0.257295608521, + 0.480132818222, + -0.407825082541, + 0.164673820138, + -0.204332306981, + 0.328930467367, + -0.377237558365, + 0.216142967343, + -0.451906710863, + -0.33342936635, + 0.520670056343, + -0.402085274458, + 0.321477413177, + -0.345121532679, + 0.281310319901, + -0.101045079529, + 0.41611006856, + 0.453224658966, + -0.345252245665, + 0.133969143033, + -0.417876958847, + 0.537980437279, + -0.220056608319, + 0.298776805401, + -0.482671022415, + 0.276894301176, + -0.081018149853, + 0.043154962361, + -0.565409004688, + 0.364396423101, + 0.465633153915, + -0.410806596279, + 0.13416069746, + -0.633086383343, + 0.20080973208, + -0.093094237149, + 0.25864931941, + -0.377662450075, + 0.249316692352, + -0.182474091649, + 0.139253333211, + 0.54372882843, + -0.551808714867, + 0.289507299662, + -0.432006686926, + 0.617170512676, + -0.422527700663, + 0.390380054712, + -0.456384330988, + 0.408510684967, + 0.444839596748, + -0.311474978924, + 0.405485391617, + -0.723060190678, + 0.167727068067, + -0.257495760918, + 0.645987451077, + 0.02806054242, + -0.063402317464, + 0.465307563543, + -0.378564208746, + 0.312075763941, + -0.546437263489, + 0.238143965602, + -0.297487199306, + 0.616177380085, + -0.222056910396, + -0.329589039087, + 0.167969062924, + -0.626054883003, + 0.385764956474, + -0.431553393602, + -0.214145094156, + -0.312636733055, + 0.209296137094, + -0.311771839857, + 0.512059152126, + -0.105712637305, + 0.015924628824, + -0.375089019537, + 0.514100730419, + 0.091690458357, + 0.376827031374, + -0.217338874936, + -0.497359216213, + 0.279458343983, + -0.299954116344, + 0.197575330734, + -0.314696162939, + 0.351468533278, + -0.145461335778, + 0.531341195107, + -0.321689903736, + 0.145025074482, + -0.420457333326, + 0.083888158202, + 0.281319886446, + -0.118777006865, + 0.749364733696, + -0.073947310448, + 0.088777936995, + -0.546585440636, + 0.250407725573, + -0.31639623642, + -0.279477328062, + 0.279828220606, + -0.477688938379, + 0.33980050683, + -0.537569642067, + 0.13299934566, + -0.431890428066, + 0.625008702278, + -0.075225718319, + 0.083540335298, + 0.080027863383, + -0.469593644142, + 0.179422140121, + -0.186435416341, + 0.264797717333, + -0.253135353327, + 0.407145172358, + -0.028267698362, + -0.208367213607, + 0.133036285639, + -0.571060657501, + 0.102721609175, + -0.305138498545, + 0.145695880055, + -0.345428347588, + 0.167647913098, + -0.36066827178, + 0.344234526157, + -0.13107702136, + -0.414673089981, + 0.361997663975, + -0.272643476725, + 0.449170708656, + -0.384793758392, + 0.479245781898, + -0.425835132599, + 0.492678076029, + -0.297578901052, + 0.085580326617, + -0.324942350388, + -0.299178719521, + 0.269362896681, + -0.399181455374, + 0.52637898922, + -0.548495233059, + 0.121468633413, + -0.459609121084, + 0.504971563816, + 0.809222996235, + -0.078592181206, + 0.201850891113, + -0.40752518177, + 0.450822412968, + 0.105463169515, + 0.043645858765, + -0.880331099033, + 0.115975499153, + -0.117545038462, + 0.220528885722, + 0.503852665424, + -0.302392452955, + 0.23478269577, + -0.316819906235, + 0.074880845845, + -0.510745048523, + 0.102283932269, + -0.196466445923, + 0.292302548885, + 0.500084340572, + 0.507712483406, + -0.264012545347, + 0.193819180131, + 0.440661251545, + -0.239854186773, + 0.198074355721, + -0.500693798065, + 0.232030659914, + -0.240313485265, + 0.502857506275, + -0.303254187107, + 0.178938478231, + 0.476882308722, + -0.509786069393, + 0.067594580352, + -0.508436977863, + 0.606275141239, + -0.484928458929, + -0.031528860331, + -0.462477833033, + 0.376646488905, + -0.226461485028, + -0.200567394495, + 0.298101425171, + -0.48504793644, + 0.394995182753, + -0.344968378544, + 0.120229646564, + -0.667874872684, + 0.376910984516, + 0.570709824562, + -0.024277256802, + 0.489058554173, + -0.298172235489, + 0.255176454782, + -0.464980065823, + -0.077760644257, + -0.561670005322, + 0.213299453259, + -0.184135377407, + 0.485703706741, + 0.389839500189, + -0.457657903433, + 0.375555545092, + -0.373767852783, + 0.448645561934, + -0.227608248591, + 0.420751929283, + -0.384134620428, + 0.235964000225, + -0.516703367233, + 0.339636921883, + 0.479694843292, + -0.382856398821, + 0.378913223743, + -0.475130319595, + 0.458035081625, + -0.349135637283, + 0.115841008723, + -0.390816003084, + 0.251779705286, + 0.71602421999, + -0.361210823059, + 0.356163859367, + -0.417901605368, + 0.657319843769, + -0.059370003641, + 0.263742893934, + -0.37842682004, + 0.289423942566, + -0.448630273342, + 0.160255819559, + 0.302631258965, + -0.472559660673, + 0.352520614862, + -0.235430777073, + 0.306124836206, + -0.741738021374, + 5.65375725E-4, + -0.364335745573, + 0.102838784456, + 0.434210002422, + -0.290549784899, + 0.33956104517, + -0.425040662289, + 0.362928777933, + -0.34374204278, + 0.423951983452, + -0.273733615875, + 0.386907339096, + -0.202127963305, + 0.422406613827, + 0.432865440845, + -0.544547319412, + 0.177642270923, + -0.508317053318, + 0.472730755806, + -0.211661860347, + -0.28802728653, + -0.027614658698, + 0.151872485876, + -0.629770636559, + 0.031410653144, + 0.292553275824, + -0.555443823338, + 0.153390273452, + -0.318153232336, + 0.885156750679, + 0.076513491571, + 0.524142444134, + -0.412456959486, + 0.49797514081, + 0.991693377495, + -0.668412685394, + 0.008497955278, + -1.041600584984, + 0.275611996651, + -0.220007359982, + 0.207506969571, + -0.618171155453, + -0.023746509105, + -0.402984708548, + 0.095002733171, + 0.198664814234, + -0.532077789307, + 0.280691593885, + -0.264003008604, + 0.698298096657, + -0.021766379476, + 0.497092247009, + -0.41441860795, + -0.479612529278, + 0.007551060058, + -0.391944378614, + 0.362870663404, + -0.231332823634, + 0.251456707716, + -0.609914779663, + 0.15749810636, + -0.462295114994, + 0.317836165428, + -0.194931685925, + 0.212447315454, + 0.633809447289, + -0.26223602891, + 0.387877702713, + -0.458415001631, + 0.90280765295, + -0.378298580647, + 0.028315456584, + -0.640180408955, + 0.269665658474, + 0.645960211754, + -0.320251315832, + 0.132236540318, + -1.14097738266, + 0.443865299225, + -0.019483178854, + 0.533436119556, + -0.507937908173, + 0.368151456118, + -0.115773558617, + 0.231790736318, + 0.740602374077, + -0.53340190649, + 0.491383880377, + -0.480203956366, + 0.302869766951, + -0.733793258667, + 0.050035320222, + -0.356621682644, + 0.24388101697, + 0.283593952656, + -0.382476747036, + 0.206557005644, + -0.379745453596, + 0.445881396532, + -0.168957263231, + 0.411741822958, + -0.334884166718, + -0.488196253777, + 0.384646475315, + -0.235267162323, + 0.611649274826, + -0.412472069263, + 0.208766654134, + -0.458413720131, + 0.574527323246, + -0.329269617796, + -0.117675364017, + -0.638697564602, + 0.079955756664, + 0.521778523922, + -0.117267847061, + 0.194486767054, + -0.625540852547, + 0.482927650213, + -0.093742035329, + 0.224186062813, + 0.023332780227, + 0.063984356821, + -0.713231086731, + 0.504905462265, + -0.126004740596, + -0.180276021361, + 0.350180506706, + -0.645074009895, + 0.393996715546, + -0.222743183374, + 0.354651242495, + -0.304615825415, + 0.114770948887, + -0.328356921673, + 0.011944195256, + 0.208754613996, + -0.455095529556, + 0.097063198686, + -0.310645729303, + 0.274735689163, + -0.190579742193, + 0.144021749496, + -0.294913291931, + -0.555930554867, + 0.390396535397, + -0.203275695443, + 0.608071267605, + -0.208833515644, + 0.373887419701, + -0.318452268839, + 0.519847989082, + -0.389379799366, + -0.205410718918, + -0.449082016945, + 0.46815186739, + 0.628696382046, + -0.134044498205, + 0.339397370815, + -0.529495954514, + 0.453760832548, + -0.225518792868, + 0.17209751904, + -0.525223016739, + -0.024239359424, + 0.428951144218, + -0.023158667609, + 0.348672866821, + -0.574568510056, + 0.289413422346, + -0.2526717484, + 0.370156556368, + -0.429936379194, + 0.119949549437, + 0.499128401279, + -0.141863256693, + 0.289362490177, + -0.283757328987, + 0.125755593181, + -0.173956632614, + 0.40068140626, + -0.077908709645, + 0.431906491518, + -0.406524062157, + -0.510395050049, + 0.163454905152, + -0.363705903292, + 0.383790493011, + -0.185683518648, + 0.272715389729, + -0.109792813659, + 0.468363195658, + -0.264923214912, + 6.10267569E-4, + -0.347176998854, + 0.393321961164, + 0.521732270718, + -0.081861414015, + 0.416116982698, + -0.421936303377, + 0.222781226039, + -0.299885064363, + 0.115852348506, + -0.439773529768, + 0.216980814934, + 0.584440112114, + -0.282707005739, + 0.091796196997, + -0.484327286482, + 0.399887382984, + -0.086203224957, + 0.307893782854, + -0.411739856005, + -0.082859188318, + 0.302780002356, + -0.22568911314, + 0.351664572954, + -0.657826602459, + 0.195204049349, + -0.310618728399, + 0.455519169569, + 0.421742558479 + ], + "location": "Shaft2_径向", + "time": "20230523193909", + "windfarm": "华能三塘湖项目(一期)", + "RPM": 14.41, + "ts": 1529253290000 +} + +//cms fft之后的数据 +{ + "wt_no": 5, + "realtime": "20180618003450", + "g": 3, + "freq": "25600", + "x": [ + 0.024937801518094965, + 0.006237987779865597, + 0.006366990450828672, + 0.0037352987818748714, + 0.0016164387215916345, + 0.003612048222019508, + 0.0013053162669418113, + 6.470945978785832E-4, + 0.0032420359364777026, + 0.002252693375921795, + 0.0018204396733314913, + 0.002061019606912809, + 0.0029974439495146625, + 0.003214392482306034, + 0.004019331827634978, + 0.0027065634199548855, + 0.0014859880642757427, + 0.0016566557378327833, + 0.0024287059677317612, + 0.0013952307635659849, + 0.0011969580846544069, + 0.0017576540681826923, + 0.0026031103107264247, + 0.0013201008835698655, + 0.002217718185817351, + 0.0029648238361355307, + 0.0018484053337773877, + 0.0014146117490056354, + 0.0023391158741072277, + 0.0015813178076503882, + 0.001117363103564986, + 0.001321729242831095, + 0.0016391305705687122, + 5.573049437557093E-4, + 0.0022614788686588115, + 0.0030027582721130265, + 3.6709527157314695E-4, + 0.0029033994150495786, + 0.002143409472271321, + 0.0031628975316382564, + 0.0020021066994108947, + 0.0018296806255586387, + 0.002594051391762434, + 0.0011676366908927936, + 0.0011927041981101914, + 0.0018827560493031162, + 4.646990482978769E-4, + 9.02361292789805E-4, + 0.002088625607639625, + 0.0032650622310350145, + 7.895938409445821E-4, + 0.0035744118565129266, + 0.0026017395316023295, + 0.0018533687591099544, + 0.0010033568857326742, + 0.0026008325449046973, + 0.0018511793671875294, + 0.0011366510553996732, + 0.002096367863877961, + 0.0016791294639636751, + 0.002891170596363311, + 1.790580491177691E-4, + 0.0029025505601968085, + 0.002410953194556179, + 6.991366420042301E-4, + 0.00413356888478048, + 0.0012255252511287268, + 0.001096451988676848, + 0.0017093895402207435, + 0.0012785353487267878, + 0.00204707812878527, + 0.0023630161304856296, + 9.988862431654464E-4, + 0.0012528361004449928, + 0.003004673619520351, + 0.0014472180532511644, + 0.0013134765944608517, + 0.0016081084017146243, + 0.003375394622931731, + 0.0030698004884681385, + 8.691932940012975E-4, + 0.0015414262122665668, + 0.003049510051692885, + 0.0023418905886825317, + 0.002223922017833135, + 7.23646873132027E-4, + 6.96021003382363E-4, + 0.0012741208030092425, + 0.0028102187161222034, + 7.01749419157204E-4, + 3.3194184797327486E-4, + 0.0022239611818621434, + 0.0021930770375592277, + 0.0011574682136457784, + 0.003315226124801803, + 0.0035759576216607106, + 0.001074306264548047, + 0.0015677610138603892, + 0.0017500577780805151, + 0.0034319986756406223, + 6.86539996256188E-4, + 0.0017754183287953045, + 0.0013247419826660162, + 0.0024290765527096208, + 7.029635144183918E-4, + 0.0016101433860820798, + 0.001958975824172111, + 0.001640016687959275, + 0.002060600056607794, + 0.003107070454105847, + 0.001279186271675249, + 2.8285754469084155E-4, + 0.001515484748453202, + 0.002130559290619222, + 0.003492831024931089, + 0.003108426205935253, + 0.0015510203477361658, + 6.227186827867046E-4, + 1.1949202966555619E-4, + 0.001157425771216485, + 0.0013911925626766428, + 0.005122409843165514, + 0.009497164448024158, + 0.0037189040871269826, + 8.196962526814605E-4, + 9.945354956401684E-4, + 0.0034558579736448775, + 0.003802265844788044, + 0.002565602871058561, + 0.001189255611270276, + 4.085817379414295E-4, + 0.0012897044521374356, + 8.343253173142714E-4, + 0.00316893597990248, + 0.001268406418566077, + 0.0013858463401237992, + 0.0020244702245516603, + 0.002545495459787931, + 0.001060308496477722, + 0.001446760689525166, + 0.001494657142097602, + 0.002731581859077182, + 0.003268754641531852, + 0.004703292177464984, + 0.008572429894086398, + 0.014778991832886177, + 0.0017853258667999633, + 0.003265218702894108, + 0.0028026934880972815, + 0.0015460950845554676, + 0.0011409685685300314, + 0.0029846917793132743, + 8.049582669705641E-4, + 0.0013682564383775053, + 0.003118603971177396, + 0.0011675588033736909, + 0.0016334435602352664, + 0.0010272520635581947, + 0.0019950092987724654, + 9.361429389637599E-4, + 7.776427349063733E-4, + 3.745079280799192E-4, + 0.0029361297638641486, + 0.00233441150052015, + 0.0011129727376883356, + 0.003242720839147529, + 7.157665395480071E-4, + 0.0012991121509473998, + 0.0013031669744273141, + 0.002110133640092625, + 0.0037073049332744744, + 4.042825226136773E-4, + 0.0019515270308460063, + 0.003652426024877598, + 5.155308004549695E-4, + 0.0013785599963621303, + 0.0020073676407489863, + 0.0015710556068107384, + 0.002704685692415249, + 3.539794365888783E-4, + 0.0035798689605098717, + 0.0013449259542472013, + 0.0012191649757687401, + 9.77415247231349E-4, + 0.001923048548232534, + 0.0020868731458670783, + 0.0019761793317006767, + 0.0021587860775044328, + 0.002759800491177812, + 0.0016931881857263882, + 0.0029801265119261426, + 0.0017651911722680127, + 0.0025048855952843844, + 0.0012193516037857972, + 0.00260392575501613, + 0.001930246001552373, + 0.0015990682092633652, + 0.0016510769347024062, + 0.0018505084257247084, + 5.050381050633972E-4, + 0.001069410785515957, + 0.0026306923497906444, + 7.219575086089954E-4, + 0.0027207047728227463, + 0.0014970905268564209, + 0.0025674463710635893, + 4.834793518565942E-4, + 0.0022288014334192643, + 0.0010842724462254436, + 0.0030701531058611037, + 7.494892593202108E-4, + 0.00256387306108532, + 0.0019549590488819727, + 0.0021166159427247226, + 9.921500336362785E-4, + 0.0038560494779251563, + 0.0015148458554837142, + 7.030897926544421E-4, + 0.0020111250274192087, + 0.0020050387625633794, + 8.716545192192221E-4, + 0.002330876575478423, + 0.0010709963959838046, + 0.002726428248347924, + 0.0014484945505189284, + 0.0015853896713808981, + 0.002396272261044407, + 0.001931226661915472, + 1.0906394187355796E-4, + 0.0011969128324093264, + 0.0026328046556318772, + 5.995210407638526E-4, + 0.0024744318762509477, + 0.002078541882280271, + 1.87275758477212E-4, + 0.0030667665254761607, + 0.0031865906325009167, + 0.002583199376882977, + 0.0014518246735831318, + 0.001671014060056312, + 0.001683698952753829, + 0.0018108391663451868, + 2.1897028067673728E-4, + 0.0031015800893917935, + 0.003205155821358725, + 0.003069422918398469, + 9.72138386922389E-4, + 0.001924291498500093, + 0.0026814112202589763, + 0.0023178161324396676, + 9.533956319024148E-4, + 0.002094776337505853, + 0.002565146535970758, + 0.001076773519335882, + 0.0014325246837954564, + 0.0017620602316515315, + 0.002222990898432331, + 7.356358574722433E-4, + 0.0012013191448270368, + 2.2022986322790458E-4, + 4.795652150566639E-4, + 0.0016953289542441289, + 0.002839042621063442, + 0.0010526078091716948, + 0.0011230812804521387, + 7.25825471087055E-4, + 0.0012590224829736876, + 8.716321472475306E-4, + 0.0025010749153802016, + 0.0012478177252224698, + 4.977957155054165E-4, + 0.0029207911673204676, + 0.004605296219136764, + 0.0016749216180960563, + 3.836074169270242E-4, + 0.0024544795805346727, + 0.0025419118226031713, + 0.0012995292338009114, + 8.65797847572294E-4, + 0.002737116259036179, + 0.0013066314905229525, + 0.0012192366824706293, + 0.001838655753176619, + 8.333971889663034E-4, + 0.0013770634586922216, + 0.0016206810032235175, + 1.0600577488064359E-4, + 0.0021427806093370022, + 0.003268675320360778, + 0.0024153000332394056, + 0.0032165961435482375, + 0.0018675309743284936, + 0.0016786501369522552, + 2.550758118496231E-4, + 0.002960347711330199, + 0.001726954291326112, + 0.0014437732055444107, + 0.0036041227452403264, + 0.002179688557263947, + 0.0021682322874076055, + 0.0012197954685286795, + 0.0036097422061482885, + 0.003372221019548544, + 0.0013742649813005233, + 0.0027989118164531415, + 0.0029441181035852414, + 0.0010436498050006952, + 0.0022733499695461764, + 0.004813067371749462, + 0.002949455017986799, + 0.001623467843748266, + 9.522295423176097E-4, + 0.0019477883619272193, + 0.001128227949714193, + 8.809828273994013E-4, + 0.002882854802012924, + 2.454604746045128E-4, + 6.928492361402488E-4, + 8.214264545790571E-4, + 0.0013229255728275094, + 0.0019416172903366172, + 0.0015436286265652888, + 0.0022433121793850024, + 0.001550062245838629, + 5.692812062548194E-4, + 0.0020932243751521275, + 8.688657993905827E-4, + 0.002373063604608962, + 0.0012727308603759351, + 0.0022086530132918118, + 0.002753869669179291, + 0.0013195361995949199, + 0.0029168094903876075, + 0.001352927581829981, + 7.550934407989005E-4, + 0.0030460352904708903, + 0.0019436596362454445, + 0.001422616070458305, + 6.514012040580567E-4, + 6.329352759679225E-4, + 0.002148444055283437, + 9.725854734232952E-4, + 0.002251419887930513, + 0.0019721350645341205, + 0.0020789284687917323, + 8.830432263248902E-4, + 0.0017036066606813387, + 0.0018681152970499652, + 0.00204711430587403, + 0.0022640450779170197, + 5.417092630616275E-4, + 0.0014935398669872675, + 0.00360742819623485, + 0.002746405730792502, + 6.939305905701679E-4, + 0.0036634187785843765, + 0.00197730714113418, + 0.0024554507139033163, + 0.0014082862897620342, + 0.003244531487502298, + 0.0026606069584430617, + 0.003174261983324013, + 0.0025055554157071913, + 0.001465827666810927, + 0.004110223178956297, + 0.004111340518324162, + 0.002028663357576739, + 0.0032140244523129954, + 8.890955662473511E-4, + 0.0020263867798236703, + 0.002308416307383603, + 0.003158555172748548, + 0.0012225902360093136, + 0.0028773928146458064, + 0.0015128297545465295, + 0.0020390042367337746, + 0.0014812558054046745, + 0.0012418063382610795, + 0.0015912287809875974, + 7.663644413573604E-4, + 0.002188491850031779, + 0.0011942327619322679, + 0.004480948437174781, + 0.0013739702788887554, + 0.0016202407827035793, + 6.20730204068418E-4, + 0.0028670739604073803, + 0.0027432807725642277, + 0.0036289096117829442, + 0.0018045516028859776, + 0.0017241394686747353, + 5.939361204942579E-4, + 0.0023601385397267285, + 0.002136908725566057, + 0.0038515851688207307, + 0.0034312493247707467, + 0.0024472373544617387, + 0.0034255231325281987, + 0.0036849381961345357, + 0.001697357358055114, + 0.003312795362893856, + 0.005055556474826678, + 9.319302450213333E-4, + 5.566289645910864E-4, + 0.0025188437743313354, + 0.0024295019177480765, + 0.00153979689966969, + 0.0035936878428771317, + 7.125475459061276E-4, + 0.002657652015566926, + 0.002455978879770399, + 0.0035397914851633067, + 0.0018305877410319524, + 0.0013511642685530654, + 0.0030285347965640402, + 0.003584548806562617, + 9.954067678318707E-4, + 0.0020538652432870023, + 0.004615344812730955, + 0.0015846519826563672, + 0.0016417501902942775, + 0.0012854566976949874, + 0.0011463559479066216, + 0.0019838784282302444, + 0.0015050840774952228, + 0.0024429078368646932, + 0.0023215988122375192, + 0.0023559970033566495, + 0.0034190219247154214, + 0.003191829003457839, + 0.0016331764498181205, + 0.0012252611588522582, + 0.0011424667563744398, + 0.0022354463193937006, + 0.00129954569651387, + 0.0023111363285029957, + 0.0022013856408881383, + 0.0010548193870251544, + 0.0031708850092549497, + 7.243211173669497E-4, + 0.0016245201731916415, + 0.0020195739011347187, + 0.0019037556907923554, + 0.0016200603563437316, + 6.088179626520231E-4, + 7.383451136371322E-4, + 0.0036079404044886726, + 0.004688595239539258, + 3.8929910758088356E-4, + 0.0016087003451628985, + 0.0028745090889279864, + 0.001637241698082941, + 0.0031466203459135336, + 0.0021851556096528267, + 0.002883061906134841, + 0.0031503377314026667, + 0.0021456770046463583, + 5.346125791074593E-4, + 0.0032708136102650802, + 5.112124196054768E-4, + 6.620455793196939E-4, + 0.0015644111696839127, + 0.004380795228294778, + 0.0026275084817651076, + 0.0011676391316221052, + 9.162318261622869E-4, + 0.001863798276391754, + 9.966875395210507E-4, + 0.0013571156085230777, + 1.2529413095583534E-4, + 0.001053265402548117, + 5.970133386035038E-4, + 0.0023394149911659294, + 0.0019622882559952094, + 0.003825292437912614, + 0.003925903703154334, + 0.0020486899478544427, + 0.0019760739856347713, + 0.00449811721056987, + 0.00281534478982006, + 0.004528453495527438, + 0.0029293016933731237, + 0.001765995457282756, + 4.4588928128861446E-4, + 0.002721165171899611, + 0.0014004967426882813, + 0.0037216251527539086, + 0.003936094547614516, + 0.003145635176928659, + 0.0030925322697359344, + 0.001636704530772743, + 0.001914805568418852, + 0.0022176766926961665, + 0.0017289969910185708, + 0.0067284440336784455, + 0.006122545852132719, + 0.0013877421349770454, + 0.0024271052005755476, + 0.0015983324699082111, + 0.002486080022518362, + 0.0015766383494890737, + 0.0025868607422076056, + 0.003467204841252791, + 0.00492403660450489, + 0.0015780667595500033, + 7.28974372148921E-4, + 0.0020460428597067633, + 0.00219176510624297, + 0.005381758064664183, + 0.003834854308634537, + 6.782987343879656E-4, + 0.003113207536662757, + 0.001662538702828628, + 0.003978920143397793, + 0.0023367400920898344, + 0.0033318888852657295, + 0.0014617564185336323, + 0.0016648272929333178, + 0.0021116663246757753, + 0.0010409835588535853, + 0.0038416366209214447, + 0.0031341386679088817, + 0.001963585592058386, + 0.002063751524111388, + 0.001222717779281898, + 0.0019607473719893127, + 0.003292203347480013, + 0.0013140506742395721, + 0.00241123916193763, + 0.0019350330173083284, + 0.0014838114040243051, + 0.002253176924245652, + 0.0017547945526389225, + 8.101948952031882E-4, + 4.32147621792043E-4, + 0.0020026037619703396, + 0.002763817508632699, + 0.0033726020183803026, + 0.003098297691055832, + 0.0015621571524164373, + 0.0017844873968598225, + 5.152195670547034E-4, + 0.001852254379189001, + 0.001364884159324199, + 0.0028058502769293457, + 0.0016870845713027039, + 6.363190233401385E-4, + 0.0033082737185281554, + 0.002580196571030119, + 0.003046326305767232, + 7.210274060080375E-4, + 8.844843809177812E-4, + 3.8802133860080023E-4, + 0.0024730074380724873, + 0.0014105855748203925, + 0.0011473343529842413, + 0.0021656353993729054, + 0.0012109264789172697, + 8.779669508874776E-4, + 0.002169345445044546, + 0.0025056660200212222, + 0.0013714762873581164, + 0.0013327891387888784, + 0.002707825143598375, + 0.00473566677303872, + 0.004810592197515142, + 0.0020065307928001396, + 0.006228935784448513, + 0.0013097428636903168, + 0.0012425723937732672, + 0.001793970278049849, + 0.0031204424392859186, + 0.004205737318917097, + 0.002566747903227606, + 0.002098994600124682, + 0.0035082066922074427, + 0.004779614415050198, + 0.005353341965273329, + 0.004625741558518647, + 0.0035572275015627124, + 0.001356663361610217, + 7.142625499319608E-4, + 0.0016304994890373923, + 0.0017033431373624484, + 0.002743451475634362, + 0.001998077928770634, + 0.004692574845051496, + 9.595841360256495E-4, + 0.0030469370430460004, + 0.0021829609024332374, + 0.001970992352070586, + 0.0035625357689347986, + 0.002591809404805784, + 0.0012239816708235329, + 0.003994130099967001, + 0.0016700303197549002, + 0.001111026644809488, + 0.002402001178316527, + 0.0017060519909199313, + 0.0032416613449397958, + 0.004024232019842923, + 0.001172387623260532, + 0.005020287447718499, + 0.0014886836327071711, + 0.004030935620280917, + 0.00468165176976982, + 0.002099506905573679, + 1.9667703370242697E-4, + 0.0023230586863005145, + 5.95151823829101E-4, + 0.0034698293737939656, + 0.003913993845046005, + 0.0037513049064809524, + 0.004288290358566216, + 0.0017296257678927891, + 0.0027594925670234643, + 0.0028301999951113915, + 0.0034570886815305365, + 0.0018972607002662757, + 0.0018933081488613647, + 0.003651152157580857, + 0.005042306637587417, + 0.005909149795562589, + 0.005482474346555174, + 0.003559391429822467, + 0.0028661119979515267, + 0.003931914814503907, + 4.169421924298596E-4, + 0.003306529279049634, + 0.0031848636787555965, + 0.0015565620440372142, + 0.005046052321169568, + 0.0019758572823388738, + 0.0047313783856263916, + 0.003158389423540904, + 0.002299372890871164, + 0.0023833878330408163, + 0.004965463809878798, + 0.0035489146226478506, + 0.004892365453202493, + 0.0034207279188932897, + 0.004041839328878947, + 0.0027052775237529168, + 0.0023737196917817996, + 0.0022012638939962626, + 0.005415989371582553, + 0.001729781182805339, + 0.002803919093880821, + 0.005394501896092421, + 0.0034558629150848582, + 0.005040400106674514, + 0.0050798306003741875, + 0.0014807275908803503, + 0.006984018816596845, + 0.0011317257766088557, + 0.0021899452073396502, + 0.0015932939659357708, + 0.0015579117677253372, + 3.3568687942205067E-4, + 0.006259590780456705, + 0.001984309415903482, + 0.002306077904204713, + 0.004472971065822071, + 0.0019690424429438676, + 0.0031568030455090576, + 0.005836984250096303, + 0.0044652764612083595, + 0.004510103828494008, + 0.0026977959271043805, + 0.0030232448540383197, + 0.0025183425954768534, + 0.002554557805420423, + 0.0027897583085679067, + 0.005594046365906477, + 0.0056096351864976125, + 0.004870622996432748, + 0.0034600689310046663, + 0.0017112307184569244, + 8.233187287429689E-4, + 0.003986125442687183, + 0.002660128149846982, + 0.0011295921831542962, + 8.1084742632959E-4, + 0.001968879747660885, + 6.612732715962931E-4, + 0.0017008447746756485, + 0.002824533744157955, + 0.0013847900455050879, + 0.002686725162065904, + 0.0027792183176429098, + 0.0024173847475707673, + 8.303630636353185E-4, + 0.00398669417127285, + 0.005001626989777786, + 0.010068624136857603, + 0.016107809812579112, + 0.011716913233442336, + 0.005400161853975187, + 0.0024238862455977367, + 0.005387302707484586, + 0.0012548503168935568, + 0.009634551586529783, + 0.01221455739204666, + 0.009881027927303632, + 0.003605371982388739, + 0.002501663836257768, + 0.0020209766013077985, + 0.0021920328163571173, + 0.0035299132687374645, + 0.004479479107687757, + 0.0045434138162446175, + 6.546484369361965E-4, + 0.003793162037146315, + 0.003464809311342719, + 0.0025047057772669503, + 0.006587072068453613, + 0.004147950180656945, + 0.007414511420133912, + 0.0018061505473796473, + 0.0020748911402267236, + 0.0028602502491815902, + 0.0023169217162384626, + 0.004525992305600463, + 6.790883350042627E-4, + 0.0019488478304658004, + 0.001132374801176871, + 0.0023930310005377798, + 0.003349806186170242, + 0.002330968063581472, + 0.00299062227095061, + 0.004041867782217212, + 0.0017944241198407788, + 0.0027294087576606465, + 0.004216116516953162, + 0.0026632207825965865, + 0.0030804674617909214, + 0.006510420253107041, + 0.004998807146461611, + 0.0029610156164052185, + 0.0014736979362472056, + 0.00229495849360651, + 0.0016738015311102204, + 0.003867934300514821, + 0.0031230904416732724, + 6.876270670505339E-4, + 4.4674059695163303E-4, + 0.0026950027690844343, + 0.003860108399985081, + 0.0014190937989557208, + 0.002850912847483105, + 0.0035886667598563023, + 0.0030380097944153243, + 0.00486158242574409, + 0.0051293198727892135, + 0.0026544098195137125, + 0.0030871454457733604, + 0.0025460690951568253, + 0.0033364425236465356, + 0.004135837237992483, + 0.0015357554822112668, + 4.3080509575823823E-4, + 6.771011933559014E-4, + 0.003200597946814926, + 0.0010135896398927632, + 0.00563758759907767, + 0.0016706236210854005, + 0.005589353132693846, + 5.058421197200021E-4, + 0.005115092311258481, + 0.00239565273144101, + 0.003508023510681432, + 0.0066633561120743754, + 0.002661134527813572, + 0.005858482744382267, + 6.202093202332976E-4, + 0.004268679762875787, + 0.0027408315313989192, + 0.005963073978928054, + 0.006415271871674753, + 0.006313116265345848, + 0.006412678975812523, + 0.002641401529181587, + 0.005157712469426842, + 0.0027348029323646522, + 8.01606348609897E-4, + 0.003550742380230197, + 0.0028743098883617997, + 9.350576090195672E-4, + 0.00376528609796156, + 0.005300530323889696, + 0.0015063278255712305, + 4.570354060824847E-4, + 0.0038866666001820946, + 0.002266668643890223, + 0.0027641619923126984, + 0.002650258332477427, + 0.008677106268492924, + 0.005555361464691412, + 0.0030816240038302896, + 0.005427822819378834, + 0.0038922982576073, + 0.005277526436213665, + 0.002962414955364573, + 0.005002879134262002, + 0.004683745791622747, + 0.0026051003145047998, + 0.002528122590499538, + 0.0029364884573875845, + 0.00328649495572554, + 0.00338606203894225, + 0.001542843913365532, + 0.005456019002755039, + 0.005353895701603218, + 0.0010323083784330043, + 0.0037468790158129302, + 0.005204161286956499, + 0.005444645540022485, + 9.517876051681067E-4, + 0.005287525056324703, + 0.004873780804212677, + 0.0037539224631146593, + 0.0075978159413299775, + 0.008662929131505544, + 0.00876801508635735, + 0.004579845260004982, + 0.0048288317634850985, + 0.002374493623548786, + 0.003978009732987674, + 0.005497411465647342, + 0.009478637537651392, + 0.005513633094248443, + 0.004767738652424429, + 0.0016567870568658888, + 0.0030714782069021953, + 0.005104335088228576, + 0.006105273847460397, + 0.002005947426243826, + 0.0010015931822798317, + 0.0026766968807492757, + 0.002117450239900801, + 0.0025448055069756475, + 0.001543923046454988, + 0.0015784784630263622, + 0.001736989937829224, + 5.819258235220592E-4, + 0.004244078162042958, + 0.0051285922490166575, + 0.003810345908523387, + 0.0021386816181489534, + 0.0030606795449780086, + 0.00255065697231256, + 0.007330333298064122, + 0.0018309923935318157, + 0.006841404238175981, + 0.008130294541226811, + 0.0034348612108267593, + 0.0023120249210833482, + 0.0028127719106716426, + 0.0022548008446182607, + 4.360688073633331E-4, + 0.0010567300158828927, + 0.003890520825164933, + 0.001649069413497706, + 0.0012286183397188215, + 0.0024090008954505294, + 0.002272171162725027, + 7.805474619696083E-4, + 0.0022268487965523536, + 0.0016965438644341298, + 0.003465167587650588, + 0.0015839002531938824, + 9.494089288891066E-4, + 0.002766257621645801, + 0.002974700071307115, + 0.0032631882806140257, + 0.002999773210314723, + 0.0028757283928152523, + 0.0012485007325138346, + 0.0020688428289946156, + 0.0037189616501149985, + 0.0029691879335192986, + 3.6315488573463996E-4, + 7.094011192111859E-4, + 3.704322536130699E-4, + 0.0024251029054399645, + 0.002506576066708725, + 0.0020894817260169647, + 0.0017861581328701664, + 0.0018495653001149826, + 0.00268024957846095, + 0.002600110880711441, + 0.0028392950207082645, + 0.002702773655769337, + 0.0011387907483102228, + 0.0019242559993767935, + 0.0025774285850060385, + 0.0015417222518493553, + 0.0023822967285135788, + 0.0023313140166428908, + 0.0012326764104267597, + 0.001246858131780324, + 0.004421697315251602, + 0.002629752278488547, + 0.0042901639455158605, + 0.002027361275369843, + 0.0033725269374680696, + 0.0032737041125835958, + 0.0023593334594970393, + 0.005270125965433943, + 0.0036009188954134633, + 0.0019886527246082597, + 0.0013444552233441477, + 0.0012030456279771044, + 0.005169000348221671, + 5.75596625281614E-4, + 0.005667860826521392, + 0.005031346792468989, + 0.003877737444539149, + 0.002425274450136971, + 0.0030200315170869347, + 0.00245120822560865, + 9.114398868640144E-4, + 0.003956341615774047, + 0.0030664521500511125, + 0.0036832871209880116, + 0.0012259015353276038, + 0.003165743468753856, + 7.744143600972529E-4, + 0.0013295827783836173, + 0.00191113648217863, + 0.004728062467475101, + 9.173653281556557E-4, + 0.004831075851720991, + 0.0021924462179030418, + 0.003190055634683303, + 0.002911990273694443, + 0.0031231196119838587, + 0.0033184399587094233, + 7.42157111904472E-4, + 0.0010978202449449244, + 8.076336411800709E-4, + 0.0018034333007051263, + 0.0018169983773474365, + 0.0032059014122877354, + 0.0010257971270071506, + 0.002524936600196361, + 0.0019192631331834938, + 0.002013603351070735, + 9.514419712832297E-4, + 0.002458673868666101, + 0.0038859886634542585, + 0.0019197046928049824, + 4.691314033123946E-4, + 0.0013760617683923099, + 0.0018843393416920577, + 0.002695752234522248, + 0.0034964849060950035, + 0.0024042295490714783, + 0.0014159804196217619, + 0.0019866929159178706, + 0.0031989457400341463, + 0.002497400883398997, + 0.0019668369763224712, + 0.0015850740307516598, + 0.003104869566768294, + 6.25744802887811E-4, + 9.978171319061841E-4, + 0.0021854696659900645, + 0.0025226846469285193, + 0.0013543905164521994, + 0.0016123343896580244, + 0.0022246171489807365, + 0.002169341051390221, + 0.003260962295484677, + 0.001379820838697416, + 0.00582491813870133, + 0.0031639824895619514, + 0.0035114256323271237, + 0.0035674286635348, + 0.0017953949134466593, + 0.0041260455708740556, + 0.0012233314423329778, + 0.0013030186974163245, + 0.0047815242722682935, + 0.003333118783449678, + 0.0024412502597131393, + 0.0013669699769135058, + 0.0020834980351950253, + 0.0011140891619038902, + 0.0015306211660516488, + 0.005191284061151035, + 0.002564996626173461, + 3.4872753263206216E-4, + 0.0022189913356683902, + 0.0026079147582216203, + 0.002326858633813414, + 0.001476224427946261, + 0.001898337463410681, + 0.0029954256874092154, + 0.0011819701357631306, + 0.004219932277493933, + 0.0020084037058602806, + 0.00459162442678653, + 0.0034596009441573293, + 0.00485919355173606, + 0.0017652241813790371, + 0.0025736496634843815, + 0.00158642064700774, + 0.002564930288389736, + 0.0018249891294386071, + 0.002945521398302749, + 0.0013298722753301924, + 0.0015765286319581605, + 3.168266307862806E-4, + 0.001002273536448934, + 9.483766184456535E-4, + 0.002417013813460673, + 6.611528060308022E-4, + 0.0013205833595241172, + 0.0015010741863880435, + 0.0021158957727419082, + 0.0023049353467410084, + 0.004007368378163355, + 0.0016714966720619276, + 0.003815380232002115, + 0.0017931044002707462, + 0.003258215827279386, + 0.00288857354862144, + 0.005101931761617142, + 0.001481580475709685, + 0.0016457260530764834, + 7.847714185135066E-4, + 0.003237600258922931, + 2.82944508908325E-4, + 0.0016465964157476242, + 5.387149029199934E-4, + 0.001839665095408531, + 0.001174909014644975, + 4.590335636031597E-4, + 0.001557169446468033, + 0.00275872659934247, + 0.0025936580243883017, + 0.0028124310083124794, + 9.718702763353512E-4, + 0.0027499695031278823, + 0.0022170115449004157, + 6.217012651070015E-4, + 0.0019393543091110982, + 0.0018254943194433184, + 0.001231584694066079, + 0.002784598807148687, + 0.001255437393688428, + 0.003732329577208558, + 9.764064676713882E-5, + 0.00375663724480649, + 0.0026454170058114066, + 6.583496210795505E-4, + 0.0032515577207100177, + 0.004770531690217987, + 5.056846384487004E-4, + 0.002837619165042797, + 0.0032658352689286215, + 4.187760976777516E-4, + 0.0014503678071214306, + 0.0013107188575494715, + 4.697171880258962E-4, + 0.004371370724466447, + 0.002840589924202488, + 4.688383730730183E-4, + 0.002366447005695723, + 5.197050926612439E-4, + 0.0015829746572885324, + 0.0024592238015106902, + 0.0013684179403265582, + 5.411666595869652E-4, + 0.0020552335240442404, + 0.0010902480381486314, + 0.0015096085747018251, + 0.003233914887627216, + 9.90037876284261E-4, + 0.0031604530653732105, + 1.5337857993248777E-4, + 0.0021702504028325107, + 0.0028944507010746742, + 0.0024947448677726815, + 0.003271044218319605, + 0.0031250481059450505, + 0.0019111894090179762, + 0.002061316871580607, + 0.003986464169453264, + 0.002888276620397021, + 0.002085453638343119, + 0.0016486320692129192, + 0.001503077502475585, + 7.073803280102895E-4, + 0.003914334677983058, + 0.0017860434404081455, + 8.514369867739549E-4, + 0.0019099421572354774, + 0.001294009458863896, + 0.003016367207040002, + 0.002972011359260124, + 0.001789744472746144, + 0.0018530051468791822, + 0.002995973834119762, + 0.002973291168320816, + 0.003627334171020607, + 0.003249800719034292, + 0.001820802524751725, + 0.0012306055311265805, + 0.0018855866020135272, + 0.001869343026422228, + 9.313649496751901E-4, + 0.0016363708510548313, + 0.0012476524344299882, + 0.001293044965814046, + 0.0014931106837271508, + 0.003320303404867688, + 0.0031882503480847673, + 0.002436155875782795, + 0.0024581338941717787, + 0.0012063204557431525, + 0.001019621189577828, + 0.0022394150665541626, + 7.933547866743054E-4, + 0.0022693526026562774, + 0.0028984268456478234, + 0.002421892930121696, + 0.0016966774278646829, + 0.0037241272156629617, + 0.0016266492851736095, + 0.0023391042434045837, + 0.0022779924798610267, + 0.001858849423778471, + 6.949142183976534E-4, + 0.0013545838585724964, + 5.73780964491887E-4, + 0.0028321956218283445, + 0.0022235534975266797, + 2.1121666258236099E-4, + 0.004226923645250138, + 0.0022580760595665994, + 0.006958759606311183, + 9.215558792888754E-4, + 0.0011880660983187349, + 0.0027485166483982434, + 0.0019643795353526438, + 0.002673003892502428, + 0.003948161355636384, + 0.0012434870124911554, + 0.0027390394681076143, + 0.0010052256385542776, + 0.004187522626180516, + 0.0020743195929567287, + 6.957071387844413E-4, + 0.002876809325735982, + 0.0024139503876587903, + 0.004898209314497268, + 0.0041501089179037335, + 8.248477667637217E-4, + 0.002342270292219095, + 0.0024660664341625534, + 0.001565715826607282, + 0.002703283185900148, + 0.00277715497444111, + 0.0014874504893302347, + 0.004449565332740666, + 4.7680220666584873E-4, + 0.0033165774168005917, + 0.001005954225745362, + 4.339362280159077E-4, + 0.004852740607459546, + 0.0013738600189866837, + 0.002933840154820649, + 0.0031732761419378096, + 0.001201202815505395, + 0.004318392526828978, + 0.00165003915068109, + 0.0013970316250272292, + 0.0030925182597499514, + 0.002761713311295663, + 0.0035132351495322715, + 0.003220571625952329, + 5.379181342517828E-4, + 0.001422353699124717, + 0.002141147988217178, + 0.0017693658190899722, + 0.003558380425729965, + 0.003139906822246695, + 0.0033209954816083554, + 0.004072159291891239, + 0.001164384908079608, + 8.610035016507291E-4, + 0.00266035366213116, + 7.788555104288075E-4, + 0.0023733044188770872, + 0.003303171342407267, + 0.0021484944982326218, + 0.003455590122264396, + 0.0035389751554644696, + 0.0017333589417425918, + 0.00479278720447193, + 0.003666907852758202, + 0.0013985793050757158, + 0.002077614676324263, + 0.004304307634219818, + 0.0037595247083907525, + 0.0048063057316232284, + 0.0019845314731774854, + 0.004399351256113281, + 0.001854997745940568, + 0.004153937343396311, + 0.00520443683947071, + 0.003960346414011381, + 0.00184237176712251, + 5.353344990834761E-4, + 0.004078894191864546, + 0.004108479156919914, + 0.004748758245193733, + 0.009759849238155937, + 0.005374949165447465, + 0.0024364726735630307, + 0.004008772351668585, + 0.0061235766899253455, + 5.183611300176447E-4, + 0.004627246563320013, + 0.004944153754551312, + 0.007159530154026515, + 0.00848259558080667, + 0.004272114925540382, + 0.0026486131307060365, + 0.005744966707690927, + 0.006151633368628783, + 0.0015125993880730614, + 0.006777001583623941, + 0.006532377569574416, + 0.004952450073819024, + 0.008931134666205983, + 0.0036191082409636898, + 0.005640884409831095, + 0.005101268030088112, + 0.004317971930534725, + 0.009326141854888947, + 0.005818060672195472, + 0.005621096278851942, + 0.006198250257998349, + 0.0075719100057824885, + 0.00901970289667427, + 0.004490441992103565, + 0.00645439376341962, + 0.006993137071941071, + 0.0032427720994675736, + 0.0020944407024860324, + 0.0017667386801809243, + 0.00430895908213912, + 0.0026965388345351242, + 7.69350771797697E-4, + 0.003705567941944583, + 0.00455430811171278, + 0.0030056518066662466, + 0.004326264908031116, + 0.0012076638770187323, + 0.0034474710677857494, + 0.0016703838020759392, + 0.002956757570749514, + 0.0021446969130600414, + 0.0017333693608592175, + 0.00526948642441307, + 5.754214244237999E-4, + 0.0012689896652838806, + 0.003887313062056184, + 5.498478532608318E-4, + 0.003740361458769554, + 0.0049732002935194445, + 0.0030795582304841054, + 0.0023936404444991036, + 0.0022624454532435985, + 0.002414865681494012, + 0.0030747478068922163, + 0.002165409734105226, + 0.003979848167376775, + 0.0033022416234286234, + 0.0031132933481521443, + 0.0026229925896487146, + 0.0023305387611900485, + 0.003761580121096789, + 4.4712142221107234E-4, + 0.004894467234636606, + 0.0017113282447866172, + 0.004456514477579954, + 0.003959424233703003, + 0.0027369144076153794, + 0.005603671810520565, + 0.0056798960513854595, + 0.0021249174560083596, + 0.005721644516185065, + 0.00517445651411306, + 0.002892691428764022, + 0.00239571459390874, + 0.0022039053410505337, + 0.0014830997786535326, + 9.426168372547115E-4, + 0.006310918641590892, + 0.0042565467527724485, + 0.005275954369446198, + 0.003687507087628718, + 0.0015617053476711332, + 0.004883454100604763, + 0.0021768452574575815, + 0.002166958486196209, + 0.007293423550980602, + 0.003922798695947117, + 0.004743821237299005, + 0.005124974502275839, + 0.0015234136463036561, + 0.0010811287593839082, + 0.0022626778896215863, + 0.0053446713189649634, + 0.0026085923680233057, + 0.005068921373114871, + 0.0021315842083787463, + 0.001119511738264991, + 0.002546573787890749, + 0.006064769577038476, + 0.0019265008192110892, + 0.003364503473073581, + 0.0010944085742655197, + 0.0014683549050554456, + 0.004111793348292355, + 0.005327803175802467, + 0.007048829538023979, + 0.0040729545901317015, + 0.009195398793435764, + 0.00453204595794725, + 0.003685980159650555, + 0.006657360694191188, + 0.00537003021361978, + 0.003658283985139869, + 6.063768677581964E-4, + 0.006024529211321345, + 0.0027321378184418533, + 0.005054645963057769, + 3.556206261976949E-4, + 0.0041093834464585146, + 0.0032799373146058606, + 0.001544669995555889, + 0.0020381935324819698, + 0.004420115869686767, + 0.0044701357538011735, + 0.004238432957095138, + 0.006007267212385222, + 5.198667434574846E-4, + 0.002787948899358008, + 0.0030923431835458894, + 0.004358198242646797, + 0.0042843154287946295, + 0.0047556370489637775, + 0.0043985296833074705, + 0.005526410658550875, + 7.135882217157651E-4, + 0.0046988637261073, + 0.004241328809393927, + 0.00619865730801973, + 0.002644211066091537, + 6.128721340907741E-4, + 5.29111484523418E-4, + 0.003147472627016636, + 0.0021692177363746242, + 0.0010459319727164312, + 0.0025609381324075207, + 0.0025345126497915114, + 0.001101307925300185, + 0.0030722128683985444, + 0.0012137203115755461, + 0.0039985388275913655, + 0.00367550403927969, + 0.005147104812607373, + 0.005920666089116461, + 0.0018147665343414391, + 0.004531295678231936, + 0.0019303050997178648, + 0.004110623676781088, + 0.003712881251216548, + 0.001594306688055333, + 0.0060946795181691295, + 0.003903221630691781, + 0.002312407239631367, + 0.0043009811759072165, + 0.003392850350006297, + 0.00516943634936456, + 0.0016717855894396866, + 0.004608845327670056, + 0.002061677082527221, + 0.0019186534614422748, + 0.0027694044463661472, + 6.030581983430867E-4, + 0.0020557945631335403, + 0.0023513399560451866, + 0.0017362290058548274, + 0.005429521641231313, + 0.0022815911350443827, + 0.0018168501790929703, + 0.00465634886265403, + 0.001497941739547744, + 0.001264643516620689, + 0.004177673347033847, + 0.0022702490776102583, + 0.0020675820029204114, + 0.0023245559567535846, + 0.0019210934623661387, + 0.0016062593550771323, + 0.0036024032555859392, + 0.004440961931687755, + 0.006083421555710135, + 0.0032351831172473516, + 0.00301686794927301, + 0.0034289292064953797, + 9.037898863554271E-4, + 0.0024877270284976737, + 0.00354675951246431, + 0.004099299508405488, + 0.0027512167296669487, + 0.0025346823178849054, + 0.0025155573047886295, + 0.0032620027758011217, + 0.00136616912437134, + 0.003691368953023494, + 0.005114416956336085, + 0.001526503758960676, + 0.0024482741870021627, + 0.0016639928857611296, + 0.004145783880405078, + 0.002003848431200926, + 0.002117632051029669, + 0.003239241876266018, + 4.0272186143157514E-4, + 0.003547271765101176, + 0.0018570080152336237, + 7.547647182844273E-4, + 0.004174888995382176, + 0.0010999514012815167, + 0.004710266567977206, + 0.002878119394461189, + 0.0039111793401245785, + 0.0015205026059537494, + 8.904676551383901E-4, + 0.0030758249634388586, + 0.002878037045417553, + 0.0075376884531288295, + 0.0021490394729964763, + 0.003422684543391663, + 0.004329294007389733, + 0.006403654562872367, + 0.0021230294301655497, + 0.007143591421771179, + 0.0036873704149272732, + 0.001781195010403069, + 0.00709385814720096, + 0.0032489943590421184, + 0.0026269139849914316, + 0.0030985771138511715, + 0.003348095056550714, + 0.004411128644782282, + 0.002046573571768888, + 0.004507193056591592, + 0.0022482365513011434, + 0.004473319270888419, + 0.006621312050820435, + 0.008419570642794225, + 0.006235467255268321, + 0.0023310582767013675, + 0.003219313929536317, + 0.002867698295557842, + 0.00407306717205865, + 0.0010907348558540583, + 0.007060191792355623, + 0.005372189921157784, + 0.002859350602231449, + 0.005142783633580713, + 0.0017572469676169543, + 0.0041404099627339605, + 0.0015888847582672472, + 0.0017589062785675208, + 0.0031244477045104277, + 2.992798680788059E-4, + 0.002898723239361137, + 0.006415908063895862, + 0.0034934513174136326, + 0.0030759191559153105, + 0.005653029568061993, + 0.004376967280538707, + 0.004142366504685585, + 0.007296111264173664, + 0.0030833508458974306, + 0.0015155559731773354, + 0.0035949137830152546, + 0.0034097433502203412, + 0.004478005277431015, + 0.00447954654291969, + 0.005529182792629357, + 0.004100484397342069, + 0.003247132151307708, + 0.0048687623062896495, + 0.0034028516744102925, + 0.006728492450555936, + 0.0022161195826685296, + 0.003820690886718922, + 0.001493303307127086, + 0.0020471697832491875, + 0.0050805058201663835, + 0.0017088883388959193, + 0.005956905451570054, + 0.0036934478973298453, + 0.008336260295128982, + 0.008355304916172363, + 0.0019024839625240884, + 0.001612797781149725, + 0.0069289336670317605, + 0.003149658625152942, + 0.004041703245453493, + 0.004323702122223835, + 0.002003222983004791, + 0.003358513375130985, + 0.0010958434113728047, + 0.0037617029277431636, + 0.006609989224087763, + 4.525122653976133E-4, + 0.0033253340151025703, + 6.745745096084881E-4, + 0.003416932340610957, + 0.002733911420957149, + 0.0027123902627523254, + 0.0032619570431196227, + 0.0044832494870214274, + 0.004537559012903794, + 0.003429996330069418, + 0.004203334361842897, + 0.0029727816191505428, + 0.006193864322659457, + 0.0023770129671756785, + 0.002411093980162371, + 0.005553356325734883, + 0.002380350750279901, + 0.002970097472439933, + 0.0022636141497409967, + 0.0072967199830845115, + 0.004657568931240987, + 0.0024373705173834225, + 0.005270441397063797, + 0.004645584431844938, + 0.004065250654001588, + 0.005410510064231754, + 0.008471277694281238, + 0.005120370281872927, + 0.003598780124805571, + 0.005521348868672485, + 0.005867913090911264, + 0.0039973143798254385, + 0.001262491210625517, + 0.0038267265063403246, + 0.00281069675601906, + 0.00463722462888962, + 0.006224515993369812, + 0.003694834001890866, + 0.0031581524049284454, + 0.002237393240142196, + 0.00557647191941596, + 0.0041984193631554615, + 0.002634244966534982, + 0.0062538684016985435, + 8.10264194806764E-4, + 7.20082465967555E-4, + 0.006317877109397604, + 0.0045025719335075156, + 0.003996274736317118, + 0.00222893527406055, + 0.004567274579266799, + 0.0029176441569764774, + 0.004433665117495586, + 0.0028779419421198155, + 0.0049788856504824055, + 0.004827379369053218, + 0.005436331549922792, + 0.005276728938667674, + 0.005886782221850548, + 0.00377490468911415, + 0.00622367519393736, + 0.0065186256981999285, + 0.0046337821531377025, + 0.0034289770254123044, + 0.005824134047624518, + 0.0038283272912122603, + 0.005196670987484281, + 0.0017321698411969758, + 0.006888370764339002, + 0.0012273017009963277, + 0.0066295301496981105, + 0.005649465513325248, + 0.006233499985861447, + 0.0027413572776452846, + 0.004494043874879419, + 0.0063686456339040465, + 0.004670902986920781, + 0.0016858831453930843, + 0.0050801855182643135, + 0.006356447401164092, + 0.0048647825142546, + 0.008111349734827323, + 8.106201840917299E-4, + 0.007501428359815299, + 0.001966232110443685, + 0.005674259879546659, + 0.010152428760782366, + 0.002978438789746442, + 0.0028192850134790668, + 0.0036991703620585666, + 0.004999817797062428, + 0.004863370895390942, + 0.009447419967679768, + 0.003719982954611418, + 0.005356642230082755, + 0.0070135085322251935, + 0.0013143345845560122, + 0.006392056387960298, + 0.003055908695975195, + 0.0028987291669159854, + 0.006428390909776499, + 0.0017958848005125226, + 0.003934926392125692, + 0.004214268034182744, + 0.006372347448629741, + 0.005097949399499175, + 0.006178113115024956, + 0.0035255324780224975, + 0.0014393939150769133, + 0.010640762321662006, + 0.0014440646301418325, + 0.0014234477949769762, + 0.003458291293511483, + 0.0048901638762954645, + 0.0033504691235718585, + 0.002102796769901991, + 0.007697831799501567, + 0.00425632991514673, + 0.0034116151222249565, + 0.0017646798643295328, + 0.007868640626388321, + 0.005232838424899953, + 0.004638406321318738, + 0.010857004993324506, + 0.004041224115457897, + 0.002177566899572669, + 0.0019370922384889955, + 0.00585781414870917, + 0.005305258325587456, + 0.00449295399320151, + 0.0020734100879536903, + 0.007006553887433509, + 0.006582278768403859, + 0.004451547877306064, + 0.004014871660080995, + 0.007167322902047096, + 0.00623528237752601, + 0.0050618346591004785, + 0.007431270665869988, + 0.002439179535373086, + 0.008451273315138773, + 0.0037265094486146166, + 0.006412585163264522, + 0.002332739913996283, + 0.006091846747304866, + 0.0030670191520323566, + 0.0034270889948467224, + 0.0036847600786854835, + 0.0027090416375321193, + 0.005273213872527001, + 0.0022558896733378335, + 0.006563955630743022, + 0.006924287196591978, + 0.0015185260630633795, + 0.0028643299406891564, + 0.0021933640299668117, + 0.004121636463242874, + 0.008161147673194914, + 0.006387679171644895, + 0.004178557171748415, + 0.004048569986696036, + 0.013261049339815135, + 0.007083668504942596, + 0.0054368272667199725, + 0.0067158411429298235, + 0.0032866300343725014, + 0.0029549811461599233, + 0.001228918796472876, + 0.0024562775670190088, + 0.006816317953170059, + 0.006086828283045786, + 0.003207288433273729, + 0.004892828104724677, + 0.006020114422173177, + 0.006492149228566417, + 0.005148746033325386, + 0.0026828707258789906, + 0.001603840333035229, + 0.0064389538615877906, + 0.0016664597703527492, + 0.0034172650644530202, + 0.001636236686367987, + 0.00568008701663644, + 0.0036436397128205423, + 0.004359678581804005, + 0.0032584265841124047, + 0.004998431109808596, + 0.005195086291016571, + 0.005525286330246045, + 0.0035534798006700134, + 0.002550353104149776, + 0.00756059084540697, + 0.004779075486742941, + 8.229973285807753E-4, + 0.01144052395978326, + 0.014746307986708973, + 0.010621098072642348, + 0.010974990731558979, + 0.007778783652939152, + 0.011284191810804353, + 0.010262552935987265, + 0.003799207884153227, + 0.006174058218914324, + 0.0014021225575054502, + 0.008271137191122498, + 0.005665779710226705, + 0.008910555429970279, + 0.007649629064889143, + 0.0029764884655125814, + 0.005894021875195895, + 0.0035121662241702663, + 0.005945144479340996, + 0.004478286244902678, + 0.006889745991569277, + 0.0030060133354991208, + 0.006932448042118702, + 0.002916710863963568, + 0.0030076202138536443, + 0.0035072954794593916, + 1.273821538792609E-4, + 0.0028757409917525762, + 0.003743480612503, + 0.0039075286030202695, + 8.265630719285579E-4, + 2.24380394790811E-4, + 0.0028670080896958865, + 0.003417707234732928, + 0.002461680127893975, + 0.004351771429804878, + 0.003065958605487667, + 0.003250832381782046, + 0.006235128288409113, + 9.968239916783729E-4, + 0.004681254016722134, + 0.001984775103183057, + 7.08235479898825E-4, + 0.0038177324674572802, + 0.004020287063360513, + 0.002630998368095523, + 0.006072864756415414, + 0.0035476363811227313, + 0.0039638447552689, + 0.0017113512805895586, + 0.004641845199813299, + 0.0011713853655445597, + 0.002605302328441896, + 0.0026615738248677114, + 0.0017929015776499526, + 0.0027252806691215868, + 0.0059844552810042985, + 0.002672639048614976, + 8.899976865759106E-4, + 0.0023565100529803792, + 0.004880398818345507, + 0.002827300044988336, + 0.004528126341706331, + 0.0022255278953219023, + 0.0013789293989967194, + 0.003951015799211163, + 0.003096908691615989, + 0.0012951190227233089, + 0.004754646413190102, + 0.004152564146236553, + 0.001486824194690052, + 8.226269875446712E-4, + 0.006831845900973436, + 0.0014971379597115285, + 0.004308213554199299, + 0.002356167600636803, + 0.0029795934742727066, + 0.0038775305636159054, + 0.005647255158339626, + 0.0013900222991353355, + 0.004137565551380744, + 0.0012729798709473863, + 0.004521854299426035, + 0.003356098528742732, + 0.004551105678440149, + 0.008190223108743686, + 0.0046898475601601704, + 0.00642390772435451, + 0.004414750687289824, + 0.0035144623467597085, + 0.0023306393324204725, + 0.0020013879279682186, + 0.001199118799294899, + 0.002654115577586085, + 0.0033605888597689234, + 0.0032302849875837434, + 0.0031762308406523758, + 0.0030928829230194256, + 0.008593220647023978, + 0.004456831558114426, + 0.001846322108315695, + 0.004558480018285531, + 0.00433782553472119, + 0.00445710115879583, + 0.001562928259349923, + 0.007239513209097059, + 0.002072867231026944, + 0.0024098759574524044, + 0.005235782686072924, + 0.0037198227988864212, + 0.00551979490533398, + 0.0019608463825999704, + 0.003863976232910344, + 0.004116409079739271, + 0.007895321208578773, + 0.0034762469878931047, + 0.0030633202869772202, + 0.0027663011367328088, + 0.002907683756749085, + 0.00406055805242202, + 0.0012360652164704767, + 0.001786769709762849, + 0.002374082498410277, + 0.0024271267531765033, + 0.0049169474683943, + 0.00535164523781258, + 0.0035361313953399766, + 0.0030978409466795006, + 0.002456082475986389, + 0.003423338751257757, + 0.0016173193919540552, + 3.8540215161874406E-4, + 0.0025217452436694598, + 0.0027423893123980645, + 0.002529116429056057, + 0.0073742683436444295, + 0.001914284528571426, + 0.0017766910937402085, + 0.0012345857202722694, + 0.002772378627814803, + 0.0012055296021177045, + 0.001988487586952126, + 0.0023192062331499753, + 0.0013820187750884741, + 4.28925036223146E-4, + 0.0016275017193136587, + 8.228564629737422E-4, + 0.003895010498820962, + 0.0014844637071491473, + 0.004182516780553956, + 0.0015968645896395181, + 0.002158073642099477, + 0.004099739465957514, + 7.507761573773745E-4, + 0.0054550013165631395, + 0.001292804859187035, + 0.003756742714540971, + 7.278409442563864E-4, + 0.0022968177714552725, + 6.136499237773544E-4, + 0.0032371170451810953, + 0.0039742012704645216, + 0.003106251765153934, + 0.0013404335765565102, + 0.002667832760182859, + 0.002515188537492101, + 0.0022356083472766823, + 0.001357414786360653, + 0.005785087027874701, + 0.0022041235408582025, + 7.217697830670337E-4, + 3.6445529302646206E-4, + 7.247659467709738E-4, + 6.900233127325259E-4, + 0.005796517668891829, + 0.0026390723388560896, + 0.004807115352205255, + 0.0030276089490920938, + 0.0023239582801291184, + 0.0029887930664770006, + 0.0024005146547684745, + 0.004090631267701593, + 0.0017762812342339933, + 0.003909261432080204, + 0.0016181200577789884, + 0.003150408143427814, + 0.0044805704119248385, + 0.0024790305816169856, + 0.0017214281010404266, + 8.590090450207106E-4, + 2.806326344844281E-4, + 4.3643809961519943E-4, + 0.002464747122204471, + 0.0013986558067542766, + 0.004874387136271329, + 0.00403375054168971, + 0.002574980767979931, + 0.0019062524887048377, + 0.002228927313520835, + 0.0034368893366636213, + 0.0015896229700627853, + 6.216492712955718E-4, + 0.004110366152203504, + 0.003028512875519829, + 0.0025301230281022835, + 0.004682902185405484, + 0.0022038121365219317, + 0.002890714198550647, + 0.0034350895425306967, + 0.005366836527565345, + 0.0022416697467462846, + 9.593152314108825E-4, + 0.002010976117804818, + 0.0029091500434870444, + 0.003566052675563899, + 0.0030975752380890884, + 0.012149203153378639, + 0.007937971649708556, + 0.014002484431747965, + 0.007572947007989796, + 0.007721307713197731, + 0.0027202290446925155, + 0.00779278184776078, + 0.010929244385740534, + 0.0042730866170995595, + 0.009080971076977775, + 0.003361661012998394, + 0.0028576057710247953, + 0.0086447782381776, + 0.0028137159782445917, + 0.005665466553790723, + 0.007403746657642252, + 0.009082264051043126, + 0.002973639502563842, + 0.0014576617170661693, + 0.0063117318245513275, + 0.004266480429292824, + 0.0026630514159428514, + 0.002370768615853203, + 0.0023017293905833176, + 0.0018244020000893894, + 0.0047116369824195085, + 0.003492217387280213, + 0.001839013767995708, + 0.002134140075788539, + 0.0012885031359355752, + 0.0031240787250139436, + 0.005506410576624672, + 0.0024414906081455796, + 0.0018787096003027028, + 0.0030718797347128297, + 0.0012050170000983107, + 0.0037339188270644292, + 0.001711537017999194, + 0.0029381879927161433, + 0.002245782738978405, + 8.278298110075553E-4, + 8.07467181224832E-4, + 0.0016777183235946861, + 7.42934680835256E-4, + 0.003513627022479822, + 0.004240554388751487, + 0.003008338351833848, + 0.004232460461444478, + 0.0037561101369449753, + 0.0025977383697678613, + 0.0020404976304785266, + 0.002639944620677554, + 0.0034713109671456193, + 0.0021085692820744595, + 0.0035498969224616876, + 0.002018981821007977, + 0.004272314719795595, + 0.0016213252020817264, + 0.003818259229116243, + 0.0029738057246681575, + 0.002805056087995471, + 0.0021310957145450424, + 0.0016960290305416206, + 0.0023428536600690877, + 0.0010586196163500767, + 0.0038531233770959833, + 0.0013040041768774505, + 0.0037037797736421854, + 0.002251886059585162, + 7.342489198161864E-4, + 0.005051218797709983, + 0.001446530020454598, + 9.014416113808884E-4, + 4.412275789492604E-4, + 0.0029599792799930944, + 0.0018762287404236492, + 5.172450366815589E-4, + 0.0019687988656367293, + 0.005414137639756802, + 0.00370997010249145, + 0.0040744513058472084, + 0.0050012224450326805, + 0.0033811767612443398, + 0.0030340114483848554, + 0.0025586397204573246, + 0.005486375048243155, + 0.0016990194959637529, + 0.0028131363478910436, + 7.586349066197711E-4, + 0.0027738216319097885, + 5.538804364308177E-4, + 0.0021590434758120597, + 0.0025564954420258905, + 0.001794577124231873, + 0.0026752815939059104, + 0.0022177426061713843, + 0.0018625980816444029, + 0.0038278096376018625, + 4.0794062741230687E-4, + 5.785377451774801E-4, + 0.002529682644486876, + 0.004414392544225772, + 0.0026365728543289372, + 0.0014408611745558952, + 2.8347556444594343E-4, + 0.0020144334825879812, + 0.003068254281440107, + 0.0036932593219938387, + 0.004802641126841929, + 0.0026839610150662294, + 0.0033302565152610033, + 0.0015267612224545719, + 0.002252147147628091, + 0.0022506836811078015, + 0.003575568238285343, + 0.0019323123124782202, + 0.003465442154790885, + 0.0031395594674344606, + 0.0029339643731747136, + 0.003305360849554102, + 9.780223456395112E-4, + 0.002004621710909935, + 0.006118725167254214, + 0.006501912850885004, + 0.0031281934179061338, + 0.003780325991651821, + 0.004410354808087581, + 0.0022295203846056533, + 0.0046852071450400445, + 0.0034082072385572195, + 0.0029914553526953678, + 0.005657365983360712, + 0.004556213310319919, + 8.740366199743282E-4, + 0.004279937640747248, + 0.006193924659740294, + 0.00339866684758383, + 0.004190901797435025, + 0.006211183903760334, + 0.007747435479271896, + 0.0031324280554998543, + 0.004512572277965666, + 0.003387691966075897, + 0.002987894757949166, + 0.005095402348271738, + 4.232287279754183E-4, + 0.0038565681101365742, + 0.007165950649994562, + 0.00272121551967398, + 8.920933368398471E-4, + 0.0019508849297624556, + 0.006846852084791835, + 0.003639549610985408, + 0.0016862607199373588, + 0.004880244033304615, + 0.0021052664265768946, + 5.275207118362426E-4, + 0.0030785959589342323, + 0.004079148259458282, + 0.0016596232227480768, + 0.002581436637532379, + 9.975335859695059E-4, + 6.084799118885202E-4, + 0.002458900603925593, + 0.0014132489786930363, + 0.005186446809412245, + 0.004812705638978893, + 0.0050166049051406526, + 0.00692067635269013, + 0.003203032160184019, + 8.619850892240756E-4, + 0.004499842788047116, + 4.7147141328786335E-4, + 0.0031532480833902396, + 6.880507438627569E-4, + 0.005270243555774506, + 0.001154916979894318, + 0.0024227960137962546, + 0.0031134262813554345, + 0.003465596402183922, + 0.004082039483669264, + 0.0011420416546628958, + 0.00297879453984682, + 0.0027411090893508946, + 0.0038197800477092554, + 0.001546132445821927, + 0.005507808269061626, + 0.005760409026194736, + 0.004960471514995546, + 0.0038219739548507707, + 0.003267114678575358, + 0.0046012200207278114, + 0.006498002008990146, + 0.003609603802855224, + 0.004519506763097099, + 0.0042349879078062745, + 0.0010904873506005, + 0.004057330218494329, + 0.004606894617545882, + 0.003796229221085988, + 0.003854988968297893, + 0.003827216256480109, + 0.003838714070311051, + 0.001977349906935259, + 0.003695626063475659, + 0.0027164405296530394, + 0.0055939827080176445, + 0.002527264571005708, + 0.0035854614503924263, + 0.006510864131328809, + 0.002686916499713004, + 0.007584973868848324, + 0.004782573969095422, + 0.007593466266497593, + 3.1178472210376313E-4, + 0.0032814893588921593, + 0.003165606705727224, + 0.003072781918857518, + 0.006415630954734251, + 0.002731884077982902, + 0.0019068392581736784, + 0.006667944759547176, + 9.172515776185907E-4, + 0.002881541239187921, + 0.0021483496531907406, + 0.0032648358854728806, + 0.008666975316598033, + 0.008082075424292134, + 0.001412739773609484, + 0.002124878451371738, + 0.005940462146167661, + 0.0012005854994960679, + 0.00543620408957033, + 0.002547545888004572, + 0.0014728454892198842, + 0.00781130063109803, + 0.002004492773734672, + 0.0029378335819048584, + 0.005689868140279536, + 0.0060623640692143025, + 0.0022773211323567, + 0.004066900672479318, + 0.004848488205380669, + 0.006048186752716651, + 0.0010667388849010264, + 0.0014416537969184511, + 0.002208923779911128, + 0.005055439752497891, + 0.0017928994725364092, + 0.008648461510623841, + 0.0023616665910574097, + 0.0054480639749006025, + 0.0032622593885192693, + 0.006069196987525864, + 0.0035236133164221733, + 0.007659341420123789, + 0.005902686994344044, + 0.003784258262790296, + 0.0014566940297819227, + 0.00471337860486314, + 0.007175792005613992, + 0.003165791611870811, + 0.005406728788725359, + 0.00550213780636972, + 0.0029400754433705893, + 0.005040908931902857, + 0.006130960756719527, + 0.0040842171047043565, + 0.002350056090366764, + 0.001967554438411504, + 0.009071419104676164, + 0.008131790551499507, + 0.005221764048269612, + 0.007326823487784014, + 0.0019007930378853698, + 0.007326562343568129, + 7.827420264270188E-4, + 0.003975697390634101, + 0.012156772348350414, + 0.0053991842602227665, + 0.006768571147189773, + 0.004031940649681437, + 0.005310942539093891, + 0.006156654663605013, + 0.0014826830317393564, + 0.004137221285824226, + 0.004059955817500507, + 0.005913761998857287, + 0.008722436598631693, + 0.0049121742056701155, + 5.190122275337988E-4, + 0.0015874704867624395, + 0.0069827127467622305, + 4.3947597413017343E-4, + 0.0015710012206959158, + 0.006027447741338788, + 0.004828627450510438, + 0.003537158093965474, + 0.004531131097336306, + 0.0070985780823252615, + 0.0027085644819532574, + 0.0011273043639700062, + 0.004574143735454403, + 0.0034540235798202986, + 0.004485567904288427, + 0.005470341852742778, + 0.0031356256219897743, + 0.003599262709331344, + 0.0016498584008503986, + 0.0025131601081920863, + 0.005335554698794359, + 0.0024607671079175455, + 0.002731909609366697, + 0.002623095202283778, + 0.0033556465352831038, + 0.0029600886827936736, + 0.005459397598320661, + 0.007162623849930308, + 0.002958430996239931, + 0.0022434809652617962, + 0.005616383416238682, + 0.002318879513127413, + 0.002209474108984458, + 0.005829291328317334, + 0.005247994490408435, + 0.003231552227050223, + 0.0030734514828063128, + 0.007354329227553019, + 0.0013027151456971693, + 0.004979169551037561, + 0.004627549510857388, + 0.0016514849239546141, + 0.002324229688828437, + 0.004578882745009473, + 0.0017353610746626807, + 0.003982055965384754, + 0.0033448420699761987, + 0.0017057596625734367, + 0.0018550140016857593, + 0.0035592577277688614, + 4.1802564734404673E-4, + 0.003714826939951855, + 0.0027003705111859934, + 0.003666825299037793, + 0.005243725661122685, + 0.001612939099476518, + 0.0020278403283942354, + 0.0012694159283413746, + 0.002708598686162272, + 0.0011111760213767805, + 0.004124136728662127, + 0.0035276178070057763, + 0.0020527941663283163, + 0.0023090897501444737, + 0.004931788173161234, + 0.0047574393553540826, + 0.0032213000733834606, + 0.0020690477205815867, + 0.0028992225749870752, + 0.006076959878183872, + 0.003718508132163818, + 0.0021190461217144006, + 0.002997372044117744, + 0.0019352622721517648, + 0.005484497210822567, + 0.0011326346829400775, + 0.004527552328493435, + 0.0033077235535179934, + 0.0031742606009717484, + 0.004510915467205023, + 0.002843746014402359, + 0.0025414336976857833, + 0.002713451647806446, + 0.0037757408263792195, + 0.002183420991051616, + 0.0024952852745275442, + 0.00988069060432791, + 0.004704721316266876, + 0.00517293382476069, + 0.0013975277209600531, + 0.002637293342887606, + 0.005844320658970287, + 0.0051693625704497155, + 0.002606521938790656, + 0.006587034043131594, + 8.730648010063476E-4, + 0.0025053787367472465, + 0.0023961548856270463, + 0.010386030186911994, + 0.003608367371081275, + 0.009648113551838106, + 0.0015957171189305065, + 0.0035481851334223007, + 0.0065544957319849245, + 0.004975004636652221, + 0.004646531785579691, + 0.006202644187990422, + 0.005441648924365158, + 0.005044436486168581, + 0.0021747918523627144, + 0.005137937560406875, + 0.00862798082014896, + 0.004663934414879922, + 0.004084970478358633, + 0.0034648807918440157, + 0.004393079546257593, + 0.005599776656189421, + 8.661826274878276E-4, + 0.003427889032492091, + 0.005048953186987239, + 0.001372807467827342, + 0.011514852684130205, + 0.004643848061213058, + 0.003637593582911568, + 0.0035484892098555645, + 0.004905566616758491, + 0.00219803222058108, + 0.006577931428526732, + 0.0020054508569163007, + 0.0040670346556006005, + 0.0018423300004221663, + 2.763462882265719E-4, + 0.0019141487147680692, + 0.003519925162654544, + 0.0025137491201696898, + 0.00224336816830568, + 0.0037674259576761953, + 0.00233922627136899, + 0.0018958803569851187, + 0.005837618912885906, + 0.005162651973552515, + 0.00182032205778423, + 0.0010542168943920621, + 0.002012528825405196, + 0.006028991460118408, + 0.003138416984560119, + 0.0021068141287384906, + 0.0021766641725199346, + 0.001463824063918701, + 0.0021029148951815587, + 0.0058972752393832185, + 0.0018930522903770417, + 0.0017116318694678594, + 0.0039427641323932444, + 0.0036946533020856234, + 0.0014946089184820284, + 7.172956878162132E-4, + 0.006966214381672018, + 0.0041000626079036005, + 7.509344005775978E-4, + 0.002388165620320318, + 0.0020132262338296673, + 0.0029931143746666777, + 8.775004706383765E-4, + 0.005040530307683891, + 0.0034379121779285803, + 0.004588135668216188, + 0.002393274666599949, + 0.0038619009060036603, + 0.0016433851994749607, + 0.002680926381361978, + 0.00603665897402844, + 0.006480932628331793, + 0.0016187587703360474, + 0.0049725316479654795, + 0.0026337792208479638, + 0.0030363586829072367, + 0.006601939619383707, + 0.0017765403667435412, + 0.0021652394690562116, + 0.0032648941642321955, + 0.0026747024522712336, + 0.004852724898292072, + 0.002724175207666629, + 0.005010171580211498, + 0.0020344321031704974, + 0.0038661460099368365, + 0.002740398494880985, + 0.00215273285969343, + 0.0024301742234375204, + 0.002881842866113745, + 0.0028634770373213566, + 9.481299581752484E-4, + 0.0016274915427566987, + 0.0026230046469943855, + 0.0023449561968439084, + 0.006843977226777721, + 0.0014422840828919507, + 0.0033967597461624457, + 0.0014764350407889904, + 0.0020065042245743917, + 0.002505857902366989, + 0.005066654473134066, + 0.003828724914638555, + 0.004752897984477977, + 0.003842520284367664, + 0.003330918534862769, + 0.007194481676732563, + 0.0023956434647746587, + 0.003166191549372746, + 0.004357005917241493, + 0.008017499032671814, + 0.0066465984400373756, + 0.004774996954598288, + 0.007396656076638996, + 0.008387928765668327, + 4.6128582163496403E-4, + 0.002682659380412659, + 0.0028582886015221464, + 0.00639534699641242, + 0.007794157029774465, + 0.003994097642282162, + 0.005027143280156025, + 0.005903131493542263, + 0.004448796853552673, + 0.0102835653842611, + 0.011919627028736836, + 9.569142530085536E-4, + 0.0034049255840186807, + 0.006080710394087842, + 0.004658216225077357, + 0.010046037388429763, + 0.004224564586927187, + 0.0038410575443998353, + 0.010052520912267892, + 0.007610970669616837, + 0.004224945372440771, + 0.0028233808981888353, + 0.010417029784264039, + 0.00924311701254177, + 0.002739233526913997, + 0.006169097634025304, + 0.006940879010855687, + 0.0034209784057784125, + 0.002200493626608554, + 0.0018722638461620528, + 4.5811621637664675E-4, + 0.004488715146817919, + 0.0024193753619178725, + 0.0045710660376079735, + 0.006852680631195347, + 0.004264157313389216, + 0.0047319147830092445, + 0.0038718530331814317, + 0.0060559509188551, + 0.004345019450417137, + 0.003254544736860797, + 0.0010466621020563623, + 0.003984129200846997, + 0.005383033268478221, + 0.005677833408668168, + 0.002678977405434469, + 0.001883546226492059, + 0.0024070857181608643, + 0.0018634482504486254, + 0.0012051323571853336, + 0.0015895205637038341, + 0.004779504452173533, + 0.005567300795343797, + 0.004791555751761373, + 0.0041801854920106895, + 0.0023191727307849343, + 0.005928463021193679, + 0.0010964728753261163, + 0.0021511866274622976, + 0.002886585482683652, + 0.004359513223249076, + 0.002254803451765621, + 6.902751714363248E-4, + 0.004601939317086863, + 0.004408251098143318, + 0.0026656353810309607, + 0.002576099740318643, + 0.0019333485400141368, + 0.003840941680890188, + 0.0024486134851888384, + 0.0013832392952166951, + 0.005493742339108715, + 0.0026425363008146146, + 0.004017655928529548, + 0.0050405265441457875, + 0.001163572256063881, + 0.0018908098752381212, + 0.002357000708026494, + 0.0037830185660905607, + 0.005115908908326577, + 0.00234336958671621, + 0.004302867882253836, + 0.001769853719131162, + 0.00484770503472286, + 0.0013471601178847365, + 7.5706837895383E-4, + 7.675593715578282E-4, + 0.004608824250995112, + 0.004393102115310415, + 0.0024930883572675433, + 0.007718092831085868, + 0.0012964607353052363, + 1.6641026230520997E-4, + 0.00304829804845458, + 0.002367150121137032, + 0.0013566086072092994, + 0.002375131485416966, + 0.004143759648847253, + 0.003175617121905491, + 0.0026196307728122816, + 0.001829255725475728, + 0.004690715797200678, + 0.004478074389111424, + 9.198885560201013E-4, + 0.0028543771993039635, + 0.008206477103453569, + 0.0020869474970214427, + 0.005368142119200739, + 0.0012395368223528285, + 0.0030606906041668025, + 0.005780251409603903, + 0.0028111730524433692, + 0.0038120231535519193, + 0.0026669238841156603, + 0.0022072273968508915, + 0.003933423725251099, + 0.006157515862845496, + 0.001258419993611021, + 0.004380341573988549, + 0.007172044815014836, + 0.006698516647391608, + 0.007495092051786416, + 0.002541376537633498, + 0.003151392424478491, + 0.002197374793441968, + 0.005881308727337855, + 0.0021306448910667682, + 0.005632698323841064, + 0.002826775940470537, + 0.003613145079407275, + 0.003140283897099238, + 0.008156285948267934, + 0.012906646107204054, + 0.015892165768640658, + 0.00858215670949977, + 0.006854040358436844, + 0.009819299066282075, + 0.00479527038411975, + 0.02115786713262767, + 0.018766470275158206, + 0.04093058740368971, + 0.03740536529352623, + 0.0016218260376059395, + 0.020835882169297226, + 0.025361172668137037, + 0.02263979485098545, + 0.04280797469113882, + 0.018574208714474707, + 0.01083337606879909, + 0.029266622162226925, + 0.02891035829862867, + 0.026054237559901803, + 0.00940889266522955, + 0.027567785679691398, + 0.032125187489878936, + 0.014550017512870682, + 0.02069873158578655, + 0.01772118172330963, + 0.007695803188523179, + 0.011375391629200975, + 0.007557047425098516, + 0.004191569337950359, + 0.0019102848019264252, + 0.0027240572038299306, + 0.0029200995723233807, + 0.0057036319251537754, + 0.005899620660761469, + 0.007263026037910047, + 0.007844794184640754, + 0.0042032912507125155, + 0.004993002793350268, + 0.0022757493692667353, + 0.006114180413065842, + 0.0016852652837497906, + 0.006825312218058224, + 0.0032822623428493793, + 0.007703493958581729, + 0.009262605825587562, + 0.004902986947137404, + 0.001608030015470238, + 0.0016972704504302299, + 0.002986227562070114, + 0.005762670562679868, + 0.0017525151070410415, + 0.0021780477001876832, + 0.006283799192331412, + 0.008716124640951329, + 0.0028056618508551013, + 0.003004343962451571, + 0.0022280692847899564, + 0.0025290774208397183, + 0.008536023576677447, + 0.004460497946268209, + 0.005135441270829967, + 0.0010033189977180588, + 0.004265440922123038, + 0.00490927958090536, + 0.0044901363521588295, + 0.004048051700316239, + 0.002705504462526618, + 0.005763844918818815, + 0.0024426235583062477, + 0.005315040358372168, + 2.516071755216062E-4, + 0.007085229097211757, + 0.004599165288898801, + 0.0034469774842663015, + 0.002069301095216057, + 0.004304061252196917, + 0.0028934140032869375, + 0.004742820293870733, + 0.0032348657603275092, + 0.00204839982300422, + 0.004505946255796685, + 0.0037602940704528623, + 0.004067401712970267, + 6.83916327720836E-4, + 0.006630149100726438, + 0.003468066763640905, + 0.007121538333591891, + 0.003574213024706722, + 0.005430801573796786, + 0.004292139259135916, + 0.0010753749185455123, + 9.12743537862884E-4, + 0.003570904760514438, + 0.004647896775614066, + 0.006171917698117162, + 0.005887845520411065, + 0.003123203880560075, + 0.0035908922894086455, + 0.004475038627626949, + 0.006860170692997518, + 0.004236172474560225, + 0.005894465379354386, + 0.0014238191331596435, + 0.0019771164004128957, + 0.0037220114840006906, + 0.003863328498037035, + 0.004348492554493695, + 0.0021918397419902797, + 0.004765248655329084, + 0.003036642648980791, + 0.0030725379733637322, + 0.00124783412927748, + 0.0012478920183872334, + 4.6684014744804644E-4, + 0.004526332085286252, + 0.0030758889133623273, + 0.001862024046799903, + 0.004181181696265585, + 0.003900337047367758, + 0.00833566750291532, + 0.0016809673612523226, + 0.004273172094511869, + 0.0028136449448151824, + 0.004389075263830272, + 0.002253631929601334, + 0.0035410287480362778, + 0.0026778270467805614, + 0.004581598555942637, + 0.0021644175213030915, + 0.005479561117323191, + 0.008526489302571523, + 0.005408510401682634, + 0.007315537092527453, + 0.006882088608201038, + 0.007245609605434634, + 0.00679848484472336, + 0.011671824526944416, + 0.009242506883773939, + 0.019764560285996546, + 0.018909980803614713, + 0.0032241805670079325, + 0.010992122617439292, + 0.009258359094242842, + 0.014046985173997245, + 0.021529894782317496, + 0.01069592260885628, + 0.00830810069212821, + 0.01305582340094487, + 0.01863091109482428, + 0.014796386330821004, + 0.005376407825873659, + 0.014610168168199404, + 0.014040189022003604, + 0.008524721514616895, + 0.008907320812986052, + 0.011623684472393505, + 0.005609008554538521, + 0.0034275366882094978, + 0.005809180413940241, + 0.005661380017414496, + 0.00312802148941518, + 0.0015988905961331489, + 0.004128627874703225, + 0.0034866049346714105, + 0.002412345137693704, + 0.0050830133214796736, + 0.003759310092414628, + 0.0014072509217644045, + 0.0025943477250625732, + 0.003112040466491195, + 0.00249040848523804, + 0.002637759743127804, + 0.0029683551722152657, + 0.0024920190347325673, + 0.001042753215772903, + 0.0014609672798882156, + 0.0022004487249486057, + 0.002215883138867861, + 0.0043283059119756375, + 0.002481823814722891, + 0.0033772014277088512, + 0.004076376648378317, + 0.00479578045781508, + 0.008733784353596384, + 0.0037458752123978333, + 0.0053253400466468336, + 0.007002129374928334, + 0.004092037580435145, + 0.00441540247750282, + 0.002333328978392691, + 0.0020502027915088603, + 0.005075944362062756, + 0.00202924554212818, + 0.0027439792093520094, + 0.0042786548930457925, + 0.010173256312443462, + 0.0026160752778776482, + 6.888524857443668E-4, + 0.002336021391359122, + 0.0021631315485651083, + 8.62619381593199E-4, + 8.911030692493214E-4, + 0.003904734220891436, + 0.002534480907949441, + 8.537506537873364E-4, + 0.0012625953528169669, + 0.0013883794776537173, + 0.002858070325515599, + 0.004191455122605131, + 0.001032260756568839, + 0.0023004889085811325, + 0.0016649913552715106, + 1.8909599981229726E-4, + 0.006523847026471677, + 0.0032046865152895766, + 0.0017532104025550818, + 0.008225364747083271, + 0.0024997024907028246, + 0.006718225102404877, + 7.994694039232793E-4, + 0.004062791104563524, + 0.0015694048706571932, + 0.0023174563026260833, + 0.003621681769650617, + 0.0010570023903324836, + 0.0021514081474072167, + 0.0010236833135631028, + 0.0034151165514711384, + 0.002475477270214519, + 0.004808355514621174, + 0.003968657307531915, + 4.944083501255513E-4, + 0.003915838485862756, + 0.00212839684156521, + 0.004879200680324265, + 0.003813901555888757, + 0.0023943452158969075, + 0.0023960933127856413, + 0.002610977924253763, + 7.665198492468472E-4, + 0.0019102064188558077, + 0.004289238111323497, + 0.001159307572980047, + 0.0035317716325515597, + 0.0017113707331052152, + 0.0023139741788405295, + 0.001440298240466197, + 0.0012623698586132544, + 0.0012649909205151274, + 7.542939203154553E-4, + 8.115828501286381E-4, + 0.002663177872596759, + 0.0038200328382085574, + 0.004553874668156102, + 0.007772380672514311, + 0.002171278918122717, + 0.0031252600343019982, + 0.001139555562607029, + 0.0029672528172073943, + 0.004602969912137951, + 0.004057898582817927, + 0.001838839238121176, + 0.00285625070468599, + 0.0021596015910981914, + 0.0025879404758352995, + 0.006155066866490483, + 0.003558357076398832, + 0.005063325252622266, + 0.004848586932054893, + 0.00919891741484438, + 0.00676526828373152, + 0.0014888230249453095, + 0.005745365693235686, + 0.0025650896759395144, + 0.009049617144196626, + 0.010956276971364776, + 0.005316360166422652, + 0.005351432860873372, + 0.003041242901869614, + 0.005095953340666576, + 0.0032253336238115787, + 8.803170083338272E-4, + 0.0070341658469583275, + 0.0022236432419073093, + 0.004212585352151682, + 0.004563108938990999, + 0.0032625098039260596, + 0.0032711692412386684, + 0.0025134034554024545, + 0.0020306726077473744, + 0.0050432872635981455, + 0.0014419173736533852, + 5.847913253350577E-4, + 8.194533303927393E-4, + 0.00287140939260892, + 0.004847456659241208, + 0.002130947958724016, + 0.0028386784082175447, + 0.002275575480760151, + 0.002255040336297341, + 0.0012914672956836036, + 0.001332303597351787, + 0.0019033322657488667, + 0.004915653914926685, + 0.002835017807858593, + 0.0020744352661999548, + 0.004285207531325794, + 0.0030197179895983055, + 0.006214976219957375, + 0.0044926196469025695, + 0.008058253772016424, + 0.005303722786379933, + 0.00753077458720279, + 0.011651605784971325, + 0.0246910917448109, + 0.017322205045456986, + 0.005920592474740239, + 0.002966116310596604, + 0.011283215144933046, + 0.006319297107945433, + 0.01133214747463112, + 0.01430457101245162, + 0.004971905682721744, + 0.007479979969444749, + 0.009831032734263138, + 0.010415995105754252, + 0.01266206100532111, + 0.011048076811869147, + 0.006498313468871409, + 0.011420975233775074, + 0.008148144728031301, + 0.010600824044515693, + 0.0013615101006451465, + 0.0074374773348967, + 0.0032715695105947616, + 0.0016543305994964755, + 0.006717924387444227, + 0.00599729816005233, + 0.005222299499355151, + 0.0030001889893719624, + 0.005771240950438122, + 0.0037114690657325043, + 0.001378461083637344, + 0.003040462846435407, + 0.0048347952108013514, + 0.0021530425763800357, + 0.003484844349880906, + 0.0015945942901193018, + 0.002820657722188164, + 0.0026479943592920187, + 0.0028055836208880462, + 0.001739857948132583, + 0.0026423123932814044, + 4.8332155167622623E-4, + 0.0034929066283359146, + 0.0026964611011718537, + 0.003420044977448033, + 0.001492994238002768, + 0.002650190984380671, + 0.004266561427046642, + 0.00527059477398086, + 8.50670469148906E-4, + 0.004554450953621433, + 0.0030380026311186453, + 7.375329981475018E-4, + 0.0036047010990730762, + 0.003602657353367743, + 7.722662087453773E-4, + 0.002749602096630111, + 0.001733203056509426, + 4.967605658154643E-4, + 0.0019784392159267338, + 0.00102595164142415, + 0.001591002718401042, + 0.0023328043231172703, + 0.0015690900595506446, + 0.00170319424848487, + 0.00213295214396975, + 0.0033901597421672792, + 0.0021162552433949713, + 0.003223383134740379, + 0.0011310287286112513, + 0.0019006564063146739, + 9.866102092187003E-4, + 0.0015233158950458668, + 0.0038355784555207826, + 0.0017666970743644788, + 0.0010549633784825512, + 0.0022077695378039685, + 0.00445900713924167, + 0.001180737212464268, + 0.002778515313783678, + 0.0017200197398448505, + 0.0032158346983597527, + 0.003849858117129775, + 0.0037121369216602013, + 0.003309515228538605, + 5.72215865581392E-4, + 0.002243876861114286, + 0.0016558037453247216, + 0.005503927498943128, + 0.0035406869148026927, + 8.065943373245577E-4, + 0.003419173226709355, + 0.0025865435514485845, + 0.003658960276443897, + 0.007609858774400521, + 0.001793906280371937, + 0.00481391656262215, + 0.003888846829025344, + 0.0029320194078747562, + 0.0035032580584236535, + 0.004238931118386638, + 0.004156196266195624, + 0.0054988557420716224, + 0.00289832288043665, + 0.0027367667272296683, + 0.0011083437063488192, + 0.0042040017387247434, + 0.002915363997366186, + 4.744995458753084E-4, + 0.004575230881697421, + 0.0011543748070989345, + 1.6755411279929046E-4, + 0.007040304809098427, + 0.002527533617695131, + 0.003155093581510092, + 0.003655080581034853, + 0.00111261167284385, + 0.002558926188352567, + 1.4956875364822422E-4, + 0.0025004747234923163, + 0.0010677016097399511, + 0.0030192088912219758, + 0.0016050676161734774, + 0.0034423718577660666, + 0.002635747107050881, + 0.0022656670369689677, + 0.0018189801647159173, + 0.0014340860652335865, + 0.0039840134885023035, + 0.004115525163770875, + 0.0019690320913455456, + 0.007198229462986665, + 0.009054725902168112, + 0.016286268659703073, + 0.015512370114823698, + 0.005038805773796238, + 0.0041398546299396, + 0.005769518582398986, + 0.002792924222782498, + 0.012964892335743545, + 0.011688475619394319, + 0.001452802687849642, + 3.7395932044969606E-4, + 0.007298986811971671, + 0.005660658455379658, + 0.007585900818771794, + 0.008721547937504924, + 0.009551721344382633, + 0.006007296347828815, + 0.008813411656421797, + 0.0016826008365742131, + 0.0013294159988249752, + 0.003370152558219434, + 0.003575756458800712, + 0.004951677036488419, + 9.141416402675253E-4, + 0.003880228162131365, + 0.0029642548283095502, + 0.0017263320808465976, + 0.0031326596027675614, + 0.0024263975114979038, + 0.0015502814128708993, + 0.0013587195319017665, + 0.0032035440365384463, + 0.0026164532983661577, + 0.005150089078640908, + 0.0029740188566685366, + 0.005085221811541429, + 0.0030003443175763153, + 0.0036361244744274918, + 0.0023775908170894193, + 0.003975554305016685, + 2.9998545526849045E-4, + 8.298844257752747E-4, + 9.447198155962537E-4, + 0.004479972174651338, + 0.003305212176525462, + 7.736904518914253E-4, + 0.002029063188017396, + 0.004091342189821053, + 0.0022456605667804355, + 0.0038843459080609034, + 0.0019281483803858365, + 0.001786325178591249, + 0.0013361172794875572, + 0.001931308951981525, + 0.003319865217959444, + 0.003254991201571299, + 0.0026955165014078764, + 0.0015939131624931378, + 0.0042759552650746815, + 7.86074492429975E-4, + 0.003103305459409074, + 0.005061067008980056, + 0.004204396720880276, + 0.001467182577737013, + 0.0014377695405394404, + 0.003715798058897569, + 0.002654276107617751, + 0.0034006004114510656, + 0.001604765608306075, + 0.0037639013972576856, + 7.18615336627533E-4, + 0.0029063245029023192, + 0.002349147152432145, + 0.00454612199525764, + 0.0038509517155593423, + 0.002258050676348656, + 0.002398731587992991, + 0.0021028088664575926, + 0.006019564510770108, + 0.001754912884193246, + 0.0017680709348944044, + 8.000762503299155E-4, + 0.004387011672501763, + 0.0023592351011485616, + 0.002005653347585561, + 0.0011979852659134709, + 0.0018940612240692645, + 0.001552968474945297, + 0.004455338253631646, + 0.0044075646765954, + 6.294227306114088E-4, + 7.266095534363245E-4, + 0.00211028627930892, + 0.004847061136445061, + 0.0010295964934541278, + 0.002753617656162646, + 0.005544182403333781, + 0.0023312978326797545, + 0.00264875309157195, + 0.0017275876780520592, + 0.004887390270459968, + 0.0023314958085228726, + 0.001923524239383556, + 0.0028024107946034143, + 0.0019358706949426324, + 0.0024419803375625906, + 0.0014523261475619593, + 0.0027206871150758094, + 0.003118318360630835, + 0.0026616388647411936, + 0.0010515466907865714, + 0.002336220705546139, + 0.0027129385261534153, + 0.002797626988638068, + 0.001860157641093765, + 0.003148011034355242, + 0.0019887848877554715, + 0.0014299292337800506, + 2.800079338535227E-4, + 0.002886721105124627, + 0.00166729642432768, + 0.0033606419650996982, + 0.0010823847797663104, + 0.0013024713448483735, + 0.0037966440856723994, + 0.0034024113082810146, + 7.379090564683787E-4, + 0.0010225198686092736, + 0.002409880133119782, + 0.0031776282167918853, + 0.0030861279817542683, + 0.0027678592987746666, + 0.0045841483317195985, + 0.007321999869685587, + 0.0024353866385942394, + 3.150146130202268E-4, + 0.005293682355948783, + 0.0025226911672011527, + 0.009752539168175332, + 0.008125477450021977, + 0.005993873235545076, + 0.0021832374369776934, + 0.003075022840678423, + 0.007721968662756715, + 0.0025820241413974845, + 0.0016799016004643962, + 0.0029216330551293476, + 0.004539107007867784, + 0.004038975869414269, + 0.002413360029658808, + 0.0029760091785846973, + 7.316110236615956E-4, + 0.0030506807412476297, + 0.0025364172657767396, + 0.002724455972574511, + 0.0024382286721214576, + 0.0032271073837055967, + 8.349530909540868E-4, + 0.0041604379041425945, + 0.002456419685697263, + 0.005005626899249461, + 4.767167227854507E-4, + 0.0024359991412830893, + 0.003116564827292198, + 9.952227945361045E-4, + 0.0032519091896468654, + 0.0031999529685159695, + 0.004544210138735755, + 0.0023585563892624083, + 0.0017976010221195907, + 0.002787365592543563, + 0.004124667291189728, + 0.0014385132558470853, + 0.00445073053611292, + 0.0015061350487701845, + 0.002788973274480632, + 0.0020620443408096143, + 0.00289766787345387, + 0.0033123019929913377, + 0.003322455874491973, + 0.003142226734325416, + 0.0021724039615330566, + 9.86049537327119E-4, + 0.002118944781021754, + 0.003031166401389786, + 0.0025299466220787613, + 0.002205510134393969, + 0.0018518672589085262, + 0.002991413870679356, + 0.0029241317562550264, + 0.0014571388771006662, + 0.0029622231467183856, + 5.163097176863566E-4, + 0.0019697869175642354, + 0.003489600197145803, + 0.0034507030642942677, + 0.0025509300303232854, + 7.031946252527522E-4, + 0.004135908527135971, + 0.00398462524874099, + 0.0029447643623907705, + 0.0029226099209100883, + 0.0017999111637604748, + 0.0032610344526408596, + 0.0018247157374655346, + 0.0019880973959141204, + 0.0048985914966783945, + 0.0035147237665650766, + 0.005071412823982992, + 0.007423146677186597, + 0.005629890757352327, + 0.00466102182564495, + 0.0033865654483703493, + 0.0068614304946421, + 0.003909023316468946, + 0.005793632591525253, + 0.0031204100154594, + 0.004887365621118549, + 0.0068557383867111875, + 0.003313599272202539, + 0.002751291611604254, + 0.0030855520861002464, + 0.005990760030749359, + 0.0018704712994885343, + 0.0048827970050997205, + 0.004731421506930597, + 0.003263035902729897, + 0.0032298215453649055, + 0.0034152690484905365, + 0.0035532801536598004, + 0.0011864528276788083, + 0.002802991742359552, + 0.00643992198596218, + 0.0033938433723648856, + 0.002417336155320352, + 0.003881536548395713, + 0.003231190201704426, + 0.002737118837403537, + 0.00459538710901409, + 0.0021662788005761143, + 0.0018080779439171924, + 0.0026390714424565655, + 0.0016779740549924603, + 7.617009055982691E-4, + 0.001284302691950372, + 0.003350379302444428, + 8.815711809958841E-4, + 0.0012244544353948522, + 0.0025139832421117066, + 0.002920518275735165, + 0.0033944314948621012, + 0.003436022543704477, + 0.002897433825034238, + 0.004349730150765063, + 0.004466069839431676, + 0.0033051846108313613, + 0.005194183688341041, + 0.007671262856804689, + 0.0026929293746224326, + 7.718367776780912E-4, + 0.0020980268390099863, + 0.003084827586210728, + 0.004024645689127515, + 0.0029267071293955288, + 0.0037097132418419726, + 0.001587304084993052, + 0.002641012689340199, + 0.005171482586026002, + 0.0015759068686261458, + 0.006739982413485542, + 0.003794795820138054, + 0.003208669952185218, + 0.003850008855497328, + 0.001831548367021518, + 0.0031621827206891975, + 0.004275559530278383, + 0.003733689043947245, + 4.3898671273475846E-4, + 0.0027715690852933576, + 0.005168334445033631, + 6.372930680922402E-4, + 0.0026441304592850065, + 0.0014304050625025462, + 0.00464317456053407, + 0.0047754978315670245, + 0.001183625751400183, + 0.00210186807380328, + 0.0046468445437248766, + 0.0019593566665381023, + 0.004167870768042201, + 0.004117973367512266, + 0.0024599193930630297, + 0.003473629925036995, + 0.0042349102293516155, + 5.43688318506709E-4, + 0.006026447556985208, + 0.006434947016162349, + 0.004446501089154508, + 0.0059430074012739855, + 0.0038378916235854207, + 0.0014286555685804312, + 0.0026185773586818385, + 0.0030623808713455608, + 0.003494696656510955, + 0.0014959710090059807, + 0.0030840534691760216, + 0.0031221116611824854, + 0.003452294269578699, + 0.0034268142186468847, + 0.005205270585623897, + 0.0014915557898020847, + 0.0011012852477888429, + 0.006244793639723892, + 0.002395827921757096, + 0.003790181372328896, + 0.0019224588581231133, + 0.0027208294135416815, + 0.0013593683300209712, + 4.91230817906399E-4, + 5.603940081342694E-4, + 0.003195793904748481, + 0.003942058792447808, + 0.0036016687624179197, + 0.0023659928311512823, + 0.0026433340804736627, + 0.001565717589942304, + 0.002667407120007363, + 6.825482211638099E-4, + 0.003455692707839043, + 0.0016957012328591551, + 0.0033464673334456505, + 0.005481661363629011, + 0.00411086189703124, + 0.0030090258614058124, + 0.002675850879771292, + 0.0011209660810299286, + 0.0021143609099826106, + 0.002491073286698924, + 0.005068086421957101, + 0.0033733002032359407, + 0.002218505026637017, + 0.004180458184045107, + 0.0034341805682867347, + 0.0029438121596224226, + 0.0033120172639580408, + 0.003995838744446236, + 9.433501792110784E-4, + 0.005120533451516534, + 6.787100064420495E-4, + 0.0012170992736827981, + 0.005109918180552333, + 0.0019709677405554123, + 0.0024997178134323786, + 0.004440433641224854, + 0.0025229000131355497, + 0.003894247963674496, + 0.005329982949128615, + 0.0017021471466635255, + 0.0031097175428319705, + 0.004770801152520619, + 0.0024240764376052826, + 0.0033075377390083473, + 0.0015995004362531016, + 0.0032173520364546875, + 0.0037811568452576264, + 0.007346962062535521, + 0.0010782003369078478, + 0.0010885732489708956, + 0.0029792013799895493, + 8.081114502675986E-4, + 0.001719346919870161, + 0.0017836513485872537, + 0.007563336150654117, + 0.0031927203197782534, + 0.0019056006295290681, + 0.002815752192910876, + 0.002100985247914941, + 9.477677774520929E-4, + 5.906349283483096E-4, + 0.003967158346567781, + 0.0023645194554615537, + 0.004834004603551386, + 0.005026249766591853, + 0.003251155345594781, + 0.002905336817708163, + 0.0034293121260900597, + 0.0013804546447682335, + 0.004808766463814207, + 0.002409762860078669, + 0.00437762442940884, + 7.576363658711755E-4, + 0.002150586238480614, + 0.002593390739161236, + 0.0020720479556492607, + 0.0031691818470744137, + 0.0037722047255395854, + 0.00424613117934951, + 0.001788628997660356, + 0.0010003227529038483, + 0.0028899134360408757, + 0.0018670621122511871, + 0.0031141803822879116, + 0.002117659112663843, + 0.0017686927395287933, + 0.0021792180008645893, + 0.0029277549856763724, + 6.122345828703253E-4, + 0.0024877515389964346, + 0.0015000429176915751, + 0.0023092562881437853, + 0.004528114058532659, + 5.803128835276941E-4, + 2.74424495589843E-4, + 0.002202980185527019, + 0.004284207408132367, + 0.00165972361113697, + 0.003874133938701634, + 0.004267179613453702, + 0.0013574485786872498, + 0.002819765496408255, + 0.001381537452714136, + 0.003627914038816122, + 0.003435886437500896, + 0.002331220111477478, + 0.002922313287873237, + 0.005549475091543319, + 0.0029332029711560646, + 0.0017785905521364397, + 0.0017673006900664789, + 0.005659361689865684, + 4.1012099646628924E-4, + 0.001738286388508093, + 0.0017362372550804393, + 0.0032914153822694837, + 0.001784063047053912, + 0.004083575092952013, + 0.0025195242936641112, + 0.0017847448986298793, + 0.0012513248644003753, + 0.0031748136204433185, + 0.0023737658806838573, + 0.0026687506885331217, + 0.002797362371318417, + 0.0022689072832499367, + 0.003414854142656946, + 0.002139697649122063, + 0.003614024118185744, + 0.002115992412150886, + 0.0039632272032012646, + 0.0030329735507468214, + 0.001617686161354763, + 0.003286296767653468, + 0.0032421499196198305, + 0.001761512500118594, + 0.002451141050929246, + 0.004168780279645586, + 0.0010074594404724058, + 0.004314386453594195, + 0.0020981934238827227, + 0.0017422427915524611, + 0.0025338105002060277, + 5.305261424762164E-4, + 0.0038266376453829, + 0.0028939849483118336, + 0.003317010284829184, + 0.0023129192899418363, + 0.004539763093532408, + 0.002602933640088214, + 0.00415988586371425, + 0.003300163996874227, + 0.002183350399113632, + 0.0020346389973311296, + 0.0042108342668231, + 0.005381634958809294, + 0.0015553652534720478, + 0.0014457186425716883, + 0.001515036688885879, + 4.4584208396541573E-4, + 0.0050373698548239546, + 0.0022487078444702606, + 0.0028021770203796193, + 0.00315948295792275, + 0.003415889584566295, + 0.004246765090485087, + 0.001937672157978869, + 0.0015925929752315113, + 0.002823801261211243, + 0.004329901115978761, + 6.932171397923839E-4, + 0.0014560440258884666, + 0.004926748769506051, + 0.004023487275677511, + 0.0047077069689965894, + 0.002596623958520678, + 0.0015843083027196334, + 0.0035128073240224236, + 0.004207682198548762, + 0.002428083207475075, + 0.004920605158974927, + 0.004967220148452952, + 0.0027467919293497982, + 0.0022559908055901283, + 0.003678073908667781, + 0.0016004311232493051, + 0.005377964204610538, + 0.004314101104202757, + 0.002175324814399524, + 0.00469880125307797, + 0.004633221743456004, + 0.0038909401737091585, + 0.005183240874571582, + 0.003187351283367105, + 0.001242558459809093, + 0.006983987002428666, + 0.002140510002589654, + 0.0035931982256875925, + 0.002667831565397207, + 0.0012068082449031366, + 0.00232193249984065, + 0.002528074183321061, + 0.0020030327112790457, + 2.0834601876272617E-4, + 6.921047058972825E-4, + 0.0033606781752013267, + 0.0035461089546292065, + 0.0011102936396201009, + 0.0010209348595613163, + 0.0017110948064450336, + 0.005500597081337843, + 0.007145559510127851, + 0.004409510755447935, + 0.008511062720460982, + 0.0031235123148101256, + 0.0019914370845407437, + 0.0013256756129623253, + 0.0016586810895874173, + 0.002760360519728774, + 0.004914999708372008, + 0.002088160315837073, + 0.0018135602946521836, + 0.004641536825636704, + 0.0032917246297080546, + 0.004802600586090688, + 0.003265987019357074, + 0.004489884854071364, + 0.0040056856229249045, + 0.0017399477593555998, + 0.0020139342777706305, + 0.00591709259905005, + 8.901615575878387E-4, + 0.0011841120584839657, + 0.004309990378291252, + 0.001340330412335487, + 0.003006606126570642, + 0.001569617138652735, + 2.3235411715471303E-4, + 5.916623140688474E-4, + 0.004046567879012284, + 0.00431853602195085, + 0.0019390181455436837, + 0.003441390490286142, + 0.0030433921765018516, + 0.006514975957245308, + 0.0028273585717535376, + 0.004281006492775727, + 0.0048979705678387055, + 0.0027759373148101662, + 0.0037467813686874805, + 0.003619451732944089, + 0.002808580322926933, + 0.0020103034037816216, + 0.0033943367026589718, + 0.0016415614831057615, + 0.0014607231532101786, + 0.001876939537572404, + 0.0022082137550791837, + 0.001297091262551264, + 0.0010789286425592621, + 0.004028286489246956, + 0.003654291934205083, + 0.0017607410457885929, + 7.44324404481392E-4, + 0.00275581735234635, + 0.0029450691754893113, + 0.0015546735019529528, + 0.002297232822014817, + 7.88758119053526E-4, + 0.0013923317802037774, + 0.001686263454763715, + 9.98198857995206E-4, + 0.004957282376984932, + 0.002506277414072632, + 7.200650637195343E-4, + 0.0030300992860961143, + 0.001970599977982969, + 0.003356138419886338, + 0.003678370099264803, + 0.001795489850666587, + 0.001309921226468129, + 0.002928537679077998, + 0.0020739395100845505, + 0.0012237561368055264, + 0.003517516740640705, + 0.0034257507991315404, + 0.0014626951687751208, + 0.0018165759369257858, + 0.0028626802326300986, + 6.552203073595118E-4, + 0.0033841178003834356, + 0.0021987729137545762, + 7.936794305748983E-4, + 0.0018484626282911567, + 0.0027661174283919953, + 8.757470661503628E-4, + 0.004157348569313715, + 0.0012407268090691777, + 0.003716368204941304, + 0.004433961635031689, + 0.005046769477826257, + 0.0019113438418775055, + 0.0023256478890810468, + 0.005500343126072083, + 0.0024341698595632226, + 0.001297914399533254, + 6.280937377552342E-4, + 0.0020800850701815387, + 0.0030468281521501975, + 0.0016469675642780172, + 0.0023786836270460357, + 4.4398096699549937E-4, + 0.003986877131698902, + 0.001554049567918214, + 0.006419942385522565, + 9.263548400140901E-4, + 0.0015760654639480369, + 0.00132353531370289, + 0.004595268638535874, + 0.0014242554701586138, + 0.0012137783597886609, + 0.003702892386508593, + 0.0032752253560268357, + 0.007365448213113727, + 4.8648528783736136E-4, + 0.003689273904716174, + 0.0043225955258608065, + 0.0013953234442911746, + 0.004583940234222623, + 0.0033090856808050376, + 0.0033120805498852088, + 0.002365657043764316, + 1.8782457809763455E-4, + 0.004198512510889901, + 0.003696015143748064, + 0.003291220798420624, + 0.0032663155181590696, + 0.0023373685573869958, + 0.001508721368911741, + 0.0023057805644651954, + 0.0024631821063800415, + 0.0031534580341554394, + 0.003434916307152279, + 0.0019273991672323887, + 0.005131148548983448, + 0.0060861698498230745, + 0.003772056347654005, + 0.0016323577968541288, + 0.002680059721250217, + 0.003649893018712726, + 0.0015489572467419492, + 0.0010994057492291897, + 0.002123856329875504, + 0.004262401243017188, + 0.004669106381527709, + 0.004658769563667838, + 0.002934686848409181, + 0.002673539839674758, + 0.002257542299176479, + 0.003678501948986213, + 0.004465810097892066, + 0.003820598869483875, + 0.00237587393511552, + 0.005711490868988477, + 0.0016154790392212094, + 4.427894533095325E-4, + 3.8830383400966276E-4, + 0.005251224071921537, + 0.002846628685867585, + 0.004853333990397883, + 0.0030453580676859143, + 0.0038751667067568273, + 0.0023244151304854894, + 0.0023037547362505595, + 0.004370576307833003, + 0.001682532624350939, + 0.001419605493252402, + 0.004322468443718063, + 0.0011441748104292543, + 0.0055510128731586904, + 0.0028048278873029713, + 0.003324127514033941, + 5.378291454960816E-4, + 0.006138123938065083, + 0.0030438094920344056, + 0.0013096344525603562, + 0.0012858946720876408, + 0.00362580902864669, + 8.563879791592423E-4, + 0.001466051833449072, + 0.003105365383039928, + 9.712605066399059E-4, + 0.0039040178378271146, + 0.0026881992851960274, + 0.004672473994914626, + 0.004001502967590871, + 0.0015992681819526026, + 0.0016509458575052801, + 0.0034167967076656684, + 5.116283156307412E-4, + 4.4311067649335664E-4, + 0.003189140781159805, + 7.895304203759735E-4, + 0.0040662843116600475, + 0.004559449338918254, + 0.0026177046999168074, + 0.00593308242299534, + 0.0010852687560895336, + 0.004780814684379413, + 0.002214141591493191, + 0.0014273409353965268, + 0.0025712652665980215, + 0.005634338235868751, + 7.502575438448871E-4, + 0.002486891826878673, + 0.001979923805338277, + 0.0025190438825196822, + 0.003214151837084401, + 9.774196875614258E-4, + 0.00246330010194813, + 0.001866534431634196, + 0.0013641218902426724, + 0.005440171303532426, + 0.002560865302985081, + 0.0028803615995201402, + 0.0017325605777325564, + 0.0037047841475557806, + 0.0019128235186282288, + 0.0022923046131107794, + 0.003101984959146993, + 0.002650286354661434, + 0.0031786594013389693, + 0.0013980631598948384, + 0.0016966239820321275, + 0.003994259084449556, + 0.0037889139304259673, + 0.0013119556016030884, + 3.376295949900477E-4, + 0.0029487793238393714, + 0.0027648103512114192, + 0.001943555746102831, + 0.0013386064718464894, + 9.002894663219991E-4, + 2.2494330898820662E-4, + 0.0037688814639595964, + 0.0011348866973861645, + 0.005306851005545556, + 0.002084501631246183, + 0.0036883254761899717, + 0.002593954367804632, + 0.0035498123633532284, + 0.0014403066797647477, + 4.306795559373086E-4, + 0.00379174524728916, + 0.002383712570092688, + 0.0014061842779980488, + 0.001995798763742092, + 0.004812882227628138, + 0.0031940727743472513, + 0.002614757939767038, + 0.0019753288660391364, + 0.0010314974874799192, + 0.0014535395177110158, + 0.0031213573525406694, + 0.005877408862396222, + 0.0021502122844725188, + 0.0027806720565159574, + 0.0030373641323561307, + 8.202029815737145E-4, + 0.0038526756240428073, + 0.0012904799604920468, + 0.001176560030908369, + 0.0032049077584355937, + 0.0025807353106963326, + 0.005281088059785205, + 0.00497819306359602, + 0.007594913435948127, + 0.0038100892130533276, + 0.005419184667275141, + 0.003427941842856558, + 0.005051883790523289, + 0.003168745299169322, + 0.006197085911380682, + 0.002635030655149923, + 0.0022235731034467997, + 0.0012179452322147548, + 0.003198954869949945, + 1.5371807626332406E-4, + 0.00467582751869839, + 0.005342785415202925, + 0.003284799448495359, + 0.006529697200041126, + 0.005290208015005495, + 0.005121632672216123, + 0.003578047612450948, + 8.678748390128852E-4, + 0.0031964550385783276, + 5.887079689998206E-4, + 9.690835707101509E-4, + 0.002390721311973612, + 0.0025876999762412707, + 0.006057604733795646, + 0.0065200751718076325, + 0.0054319209035443555, + 7.062158448334523E-4, + 0.002503921364131991, + 0.001858698411242742, + 0.0035229303311663535, + 0.001758431498504067, + 0.005219220686338629, + 0.0025276424068229196, + 0.002187408286991106, + 0.004771007476526969, + 0.0026219309491268866, + 0.002316855874172363, + 0.0019466316129285292, + 0.006778814838546555, + 0.002154610207850609, + 0.004558330813765807, + 0.002439665247786966, + 0.0024248730289390917, + 0.00531349847499631, + 0.003389553013743698, + 7.219940816681418E-4, + 0.002206233488681877, + 0.001173664308777731, + 0.0027115691812965945, + 0.001454945188855633, + 0.0013880220340643564, + 0.005065167870747859, + 0.0033461340811459183, + 0.005178048203413498, + 0.005338616257427347, + 0.003019222048134303, + 0.00345640046536295, + 0.0033532584887042503, + 0.0043288713002298815, + 0.004995528378311085, + 4.8729528448495036E-4, + 0.004384484899562266, + 0.004409049015069766, + 0.001423373850927137, + 0.0025037489581828444, + 0.008206836813507564, + 4.5686150523325647E-4, + 0.0043922634512006415, + 0.003394103718202651, + 0.004232898932388923, + 0.005334083545912182, + 0.005798530557737042, + 0.0022534011061408716, + 0.0071103334808022495, + 0.004657274147041631, + 0.004960509912502427, + 0.0030080230959047623, + 0.005454597823099469, + 0.0014453747663670643, + 0.0035836532691166374, + 0.0047125323162164525, + 0.004204740214228819, + 0.00476389676599614, + 0.002050913690150239, + 0.0025042588324826155, + 0.0051214013419136, + 0.0019371874150187858, + 7.53438490895843E-4, + 9.328223470300857E-4, + 0.0014590685250960322, + 0.0060076836922077605, + 0.00513652204141543, + 0.006387995453568893, + 0.0019760070744616514, + 0.003267097353318172, + 0.003251069001807071, + 0.005373612076949678, + 0.004774305975718566, + 0.001375126143030448, + 0.0019143060185197636, + 0.0029989879050787063, + 0.005363962375484141, + 0.0011793386253017865, + 0.0025787027881757738, + 0.0015878735662377974, + 0.004191708497109192, + 0.006154386911904604, + 0.002297262501551613, + 0.0038975288283461195, + 0.003830985479048123, + 0.004828166001251625, + 0.0012647831760680005, + 8.577983882733316E-4, + 0.003927490935472182, + 0.002527745075054386, + 0.0021267611511909972, + 0.001071695589288694, + 0.0015829462871495823, + 0.004016022435626438, + 9.498952218626046E-4, + 0.0023739191439928957, + 0.0017788549067657112, + 0.0034790766259461202, + 0.0038533083336604033, + 0.0015691346125676943, + 0.003376455415402501, + 0.005805514607761157, + 0.007631793342362141, + 0.004049595470044497, + 0.006644865589355688, + 0.002346376544460954, + 0.0031212238067868533, + 0.00202102368320462, + 0.0038513497536932727, + 0.005017317191225693, + 1.4868321224304666E-4, + 0.003232687731699183, + 0.006111603671271655, + 0.00574780012928791, + 0.0010640337937006508, + 0.0034825215029285527, + 0.0023329213029551943, + 0.003325941870608814, + 0.005795738268879122, + 0.0038263302745831776, + 0.006236380706031333, + 0.005497044394964429, + 8.473165017498885E-4, + 0.002181690175725581, + 0.0013361668229551508, + 0.006446141330003429, + 0.005728118377209484, + 0.002086789138743398, + 0.003240311806423918, + 0.005922440969318962, + 0.004514254199862717, + 0.004478687111327537, + 0.004361332600735456, + 0.0025284539379276786, + 0.004781714216588028, + 0.005003486623952724, + 0.005932663428076571, + 0.001919861009279549, + 0.002268610748557204, + 9.761249230767058E-4, + 0.0024950081134119807, + 0.005000193739614984, + 0.002648830418674719, + 0.0022780611371511265, + 0.006662680914510973, + 0.001543556260051874, + 0.005230097477265921, + 0.0035864366471655084, + 0.002898340665214665, + 0.0022423840005314794, + 0.0029068477231579816, + 9.341784744494575E-4, + 0.0015477517612595207, + 0.004806155056981002, + 0.003517673319547052, + 0.002173455000960765, + 0.003564521682248181, + 0.004143228711996881, + 0.004455933054071594, + 8.700648851197514E-4, + 0.0012324620048794193, + 0.003167105879994291, + 0.002490735512200016, + 0.002366798246680452, + 0.007209038316170536, + 0.0026591592504926803, + 0.0012878205939696459, + 0.00555272272625088, + 0.0016774386176734736, + 0.0034433827100188545, + 0.007802155493042327, + 0.0038445415055460316, + 0.0021681783667025652, + 0.009644311341612801, + 0.0062902790166916725, + 0.003463256352173356, + 0.003200743427415778, + 0.005249611203723629, + 0.002161860743420476, + 0.004038998819895487, + 0.005653685887777136, + 0.003860851551761265, + 0.005106734916121514, + 0.0016268627352281175, + 0.004342215512407216, + 0.006580688633977705, + 0.005494890086619709, + 0.003180876034990745, + 0.003092148377307895, + 0.0027867919478668196, + 0.0035376024779127805, + 0.004106641204676833, + 0.002328067407631912, + 0.003379446865088151, + 0.0028529694721387625, + 0.0035157543483801948, + 0.002233076201781472, + 0.004348493918696239, + 0.0029642436567595912, + 0.0034302424398479823, + 0.0018803293762039363, + 0.0016744690179412232, + 0.002209146236912674, + 0.006022070793026865, + 0.006647000239168467, + 0.0031401925229308783, + 0.001068094270428621, + 0.0013096017169385583, + 0.004656639843398808, + 0.00469456597551557, + 0.004262738116114745, + 0.00423745463552268, + 0.004137501673488646, + 0.005646793151947576, + 0.0035243969420411967, + 2.073834396873479E-4, + 0.00237759462591055, + 3.921154352816666E-4, + 0.0030452600417620163, + 0.0027868240312456795, + 0.0027014250428428923, + 0.0012019370793210186, + 0.002361220103343257, + 0.004368254171210841, + 0.003823486303603281, + 0.004447066100231744, + 0.006019004888638145, + 0.002973604863844637, + 0.00341047667816961, + 0.0032080525752168137, + 0.004336570433356773, + 5.103306135134423E-4, + 0.006363437432406137, + 0.007605186893694617, + 0.005359942714162442, + 0.00838781379062323, + 2.513280694040049E-4, + 0.00419220574542772, + 0.004950261990544717, + 0.004083727784008296, + 9.864357936442655E-4, + 0.004226256337990544, + 0.0015752894587960525, + 0.0030130516118048296, + 0.001969566872172228, + 0.003070709768681752, + 0.0026493413468333324, + 0.005870232221156097, + 0.0017155018245727169, + 0.0028084934401549026, + 0.0062069194191022165, + 5.848161632159138E-4, + 4.905337903861927E-4, + 0.0027454488858901054, + 0.004192077817720402, + 0.0012788944685871234, + 5.316780288313211E-4, + 0.001788121736867183, + 0.0030962385895296437, + 0.004191000949340223, + 0.0076225636644197126, + 0.0035652625619930355, + 0.005385357910457357, + 0.0018253798545849749, + 0.004197562714831734, + 0.0017844405503352656, + 0.005900031920265568, + 0.00821066017910126, + 0.0015855987474436566, + 0.005235451207111231, + 0.0037852194200080533, + 0.0012657106967023822, + 0.003183261097806934, + 0.0017040987012999261, + 0.002737154907852557, + 0.005762198941612421, + 0.00149447140035454, + 0.0013756010985423105, + 0.0026181523143022824, + 0.004831104572294607, + 0.0035383806155809884, + 0.0031599367142350434, + 0.003982860722378309, + 0.00328023518987524, + 0.0021013468369461157, + 0.0018177640617552814, + 0.0015554392994160365, + 0.0053434561164648385, + 0.003258362905368474, + 0.007772282559261333, + 0.0019243680189724459, + 0.00568550323934977, + 2.1184599669276578E-4, + 0.0013490146066944511, + 8.729087079950105E-4, + 0.004943679478811518, + 0.0018130510886290088, + 0.002592349632550434, + 0.0016497266125296993, + 0.006169490242687663, + 0.001300402497996428, + 0.0024145942663043158, + 0.0040964053950300625, + 0.0056924041839602965, + 0.00566942991510811, + 0.0025581391618436106, + 0.0012878148127657126, + 0.0018556088142000543, + 0.001569310092199388, + 0.004244829917922569, + 0.005441696118114894, + 0.0038517106618728165, + 0.0028763689208934147, + 0.002842268138327896, + 0.003679887702289569, + 0.006457726126005806, + 0.0020461117256162426, + 0.0013526197114247804, + 0.003003071871854234, + 0.003856134995128602, + 0.0038304016587983377, + 0.0017221956701149183, + 0.0020890338772777566, + 0.003563532508139774, + 0.0051264511019664056, + 0.0023437927007844105, + 0.0010319023832360157, + 0.003732874928969636, + 0.0023775554991218514, + 0.0011628691490974759, + 9.696962342284432E-4, + 0.0029418747315107666, + 0.0032824325152254344, + 0.003236907352038343, + 0.004210703742856397, + 0.006413526080137895, + 0.0042634474224151194, + 0.0030596026734402227, + 0.006421349184343528, + 0.003513261817494413, + 0.0028691166072210023, + 0.004756232820249223, + 2.535471446816443E-4, + 0.005806668630273864, + 0.0037685748665258123, + 0.0026638577518308068, + 0.0014411188511285048, + 0.004044646150378866, + 0.0017424270331188707, + 0.00376631480094932, + 0.0033687053253224596, + 8.741602382632487E-5, + 0.0029273257828050657, + 0.0014824293476787985, + 0.001912970511848384, + 0.006311087523880009, + 0.0035049898664045727, + 0.002171301647007184, + 0.004966846421440082, + 0.002448011091087225, + 0.002440284489652054, + 0.001492805423819192, + 0.005095151831668652, + 0.002308216895937455, + 0.006661728753477464, + 0.008013656847727587, + 0.007331543239996946, + 0.0043849206751652115, + 0.0054234871529057135, + 0.0026386822612067813, + 0.0024474834524569663, + 0.002337352639871251, + 0.002885229572163331, + 0.0015394531915555716, + 0.004722517320592964, + 0.005364518862093282, + 0.003801847728123757, + 0.00622196085861742, + 0.004246922219744057, + 0.0011120333832153127, + 0.004125203290462298, + 0.0034231971277777756, + 0.004558047029027567, + 0.004622685601045603, + 0.005408106293171398, + 0.0020403788667980208, + 0.0050672641632525, + 0.0031166985150106194, + 0.004257626468413877, + 0.004580783319602561, + 0.005800609145872213, + 0.002191785280969725, + 0.007656165160839162, + 0.002567451159717892, + 0.0035477840402437875, + 0.0012203891280766575, + 0.004160995969912574, + 0.0046810573910543, + 0.0032070627628701933, + 0.0028880584185939015, + 0.00414955888492718, + 0.004654869830388719, + 0.004482609752642833, + 0.001586045284630577, + 0.006262699214235133, + 0.003685179550565033, + 0.0054546734121852574, + 0.00499220884626215, + 0.003503723848061734, + 0.002361492151842596, + 0.005062196381943214, + 0.0014362497348969787, + 0.0040846096776805466, + 0.002841762689355981, + 0.003016564579120324, + 0.008339798807648457, + 0.008647364014917879, + 0.005994994211123037, + 0.0023765894634958287, + 0.009694399627210897, + 0.0025580739710210415, + 0.007600933429907913, + 0.00362419269276112, + 0.00764902260099375, + 0.00645919164460718, + 0.009156720446530047, + 0.00455651850601472, + 0.0037322863139443822, + 0.005442381305245514, + 0.010978241826750838, + 0.01213515346245891, + 0.0015005205643267216, + 0.005167061320782867, + 0.005089724132500203, + 0.0036587138213015104, + 0.006188744239293874, + 0.008597872999631058, + 0.015529642886228018, + 0.0054939018479520044, + 0.004570731820918067, + 0.012220038959508685, + 0.012011761936477445, + 0.0048679421090685755, + 0.0030719036518928183, + 0.002854805620165949, + 0.0056253823605309766, + 0.009775095375655856, + 0.01034653480854341, + 0.006144917015658322, + 0.010284039672408641, + 8.957494676301493E-4, + 0.0017633428417320038, + 0.003410393530114675, + 0.009842533840468253, + 0.007420237904788493, + 0.00793928054446309, + 0.00636923546882074, + 0.0018454321750672339, + 0.004467953127932931, + 0.005441626587263638, + 0.005195449037206395, + 0.0042418622570023394, + 0.007710133196791979, + 0.003698630216974516, + 0.008678684629892422, + 0.015161342517129566, + 0.014441878685431472, + 0.01888874233142262, + 0.011064012381496482, + 0.006591770377283314, + 0.008774836237831374, + 0.008270117127021168, + 0.00600968909044539, + 0.004337942173775177, + 0.0015131671005857883, + 0.0037273970753586294, + 0.0036705547134027127, + 0.002649175875394128, + 4.733796752942466E-4, + 0.003878661406506093, + 0.001881303055288051, + 0.005655712060469161, + 0.0020209390447652148, + 0.001267555655228188, + 0.0026573684071419783, + 0.002936314666639627, + 0.001832737509829193, + 0.0029313828705467065, + 0.004088362243662171, + 0.005435469055706407, + 0.003605313424371435, + 0.0030616900494138738, + 0.0017805407395013353, + 0.0023170865996911, + 0.002580535448315133, + 0.0023754681992772418, + 0.0025204765080217564, + 0.0024108529380944626, + 0.002928671898997204, + 0.0036522814622267996, + 0.0042052429830742345, + 0.002912463301235811, + 0.009856474414954568, + 0.005189302467373955, + 0.0028895925487628857, + 0.0026717060059616732, + 0.005684598958646416, + 0.003660907920509751, + 0.0027969308593657127, + 0.005396017736748769, + 0.005497804768292858, + 0.001969502194541017, + 0.0035756338002832853, + 0.00460906345204374, + 0.004016458207633143, + 0.008608956271011275, + 0.0014402808557165718, + 0.003974565020649518, + 0.004824699992984836, + 0.0020339141350001694, + 0.005400307718237094, + 0.0037835725627851494, + 0.006580686088645458, + 0.004006297565524549, + 0.0043106431316509075, + 0.0018376243658437693, + 0.0022206853164520386, + 0.0025248804125290185, + 0.0024535520398474386, + 0.0050708278250687425, + 0.0035847193937777323, + 0.004603973087128049, + 0.0018512785631777402, + 0.002582043920942791, + 0.002883888281094935, + 0.002087254876796426, + 0.00457029535768395, + 0.0010664266151560499, + 0.0012896362762094308, + 0.004923828174145493, + 0.0014818034491597188, + 0.003573146093761104, + 0.005135433796103451, + 0.005263334169536016, + 0.0030798039287634866, + 0.0010116841231018383, + 0.0033616551376228743, + 0.004091050340617648, + 0.00338934795186164, + 0.004453769323134379, + 0.003384526276078221, + 0.001023173088250484, + 0.0027478277508026314, + 0.003298303248745524, + 0.002202327591747942, + 0.004255334011012998, + 0.0071704024591930085, + 0.004021649790703382, + 0.004567354869480314, + 0.0033101988215303766, + 0.002381573250899485, + 0.0022121984666554984, + 0.008023797561179272, + 0.006242232139846204, + 0.004958314686337452, + 0.004827790304357387, + 0.00391881441398806, + 0.005838744883953802, + 0.0022124075229414328, + 0.006578110029867702, + 0.0015302710430617032, + 0.002084650486386913, + 0.004627180777171609, + 9.403141574017013E-4, + 0.0010174593911014612, + 0.0012631023836332388, + 0.005027487462320014, + 0.0011376997923758707, + 0.005857926164850018, + 0.0019726265844353247, + 0.001704599101775366, + 0.004991103990829834, + 0.006587343076772971, + 2.9824955266195726E-4, + 0.0017859497005229517, + 0.0015965778378332137, + 0.0034302199778503744, + 0.0016292260230180355, + 0.002032580325808119, + 0.0015344268436741086, + 0.0032682046723664314, + 0.004432228706710399, + 0.0028300822538270074, + 0.0012063411240968442, + 0.004824266704307742, + 0.0011866367755272262, + 0.003743207850954054, + 0.003162198732125805, + 0.004101316360301545, + 0.0023099484908003023, + 0.0034166596237797, + 0.002046324703550484, + 0.0051255918607901645, + 0.005122489625422487, + 9.143564330953447E-4, + 0.0029244403922942083, + 0.002203117230764246, + 0.004231208402751143, + 0.004638222853161347, + 0.0033814709436279667, + 0.0038312882747832517, + 0.0025610395053538093, + 0.0028151258476454013, + 0.0026161010985964314, + 0.007001690055294083, + 0.003905852736069454, + 0.0037196530099356867, + 0.0013892729580055941, + 0.0033026846385959614, + 0.001281408530503624, + 0.005118091996764809, + 0.004031588868078211, + 0.0031999293703006406, + 0.003729469264234073, + 0.003446824712515799, + 0.003813091565151371, + 0.004992308929466492, + 0.005284543503424912, + 0.006327045671827244, + 0.00250993988253227, + 0.0029782496366122318, + 5.543761635906513E-4, + 0.006266021464693508, + 0.00477261554877792, + 0.0013124650283314065, + 0.004780842274899728, + 0.003742979349721393, + 0.004985961299552657, + 0.003217096175278998, + 0.002358919679461526, + 0.001805936679323395, + 0.00534689134471887, + 0.0035353929747068942, + 0.003865940290101578, + 0.003837927581470572, + 0.010059150087350394, + 0.009024044766154947, + 0.006458755622751914, + 0.0014043708275332549, + 0.008646336339905868, + 0.008041445877857545, + 0.011056100718789083, + 0.00887705974155837, + 0.004582046402375484, + 0.006172183783291838, + 0.00547467757692429, + 0.008246517613064195, + 0.0026372274125580817, + 0.0056203240993689205, + 0.00585756472249242, + 0.006169597073550576, + 0.0038170250930130685, + 0.007140915859999609, + 0.004029446025910732, + 0.0029644307353395016, + 0.004519175789544069, + 0.004024626733423362, + 0.006589976213592368, + 0.010429912354495112, + 0.009878860127558406, + 0.003966122443096815, + 0.003562713506541336, + 0.0032965629342847024, + 0.0059806085533014525, + 0.004801253012019135, + 0.007106051758981084, + 0.007768675697101496, + 0.003935361458278021, + 0.0036207104100898693, + 0.003827413015839516, + 0.002561037443931435, + 0.0027011926858436118, + 0.00593291062539529, + 0.006348799638011958, + 0.005172212119903957, + 0.0026182854434019668, + 0.0056494720781785695, + 0.010996448795676102, + 0.0022044076508998993, + 0.004433381466926466, + 0.0037276558169193155, + 0.001392923367815148, + 0.0031511038310537754, + 0.006448958045907915, + 0.003828782316899307, + 0.00158058766865242, + 0.006046575848941105, + 0.007171843217351753, + 0.0018969935361245291, + 0.005349177099520991, + 0.004583828007441133, + 0.00268659484295101, + 0.002971272555542187, + 0.006173974715749605, + 0.00346535736170322, + 0.010039642808398735, + 0.001322975256519164, + 0.00402564687426543, + 0.005524405926640576, + 0.0025278801189767292, + 0.0020668190564038383, + 0.004909870636982435, + 0.005074921540786695, + 0.00729355249854595, + 0.004657366143892164, + 0.003354499372043323, + 0.003769210542242594, + 0.007189248493373813, + 0.002973337942526312, + 0.004810732771844686, + 0.007627067173962354, + 0.004491675946654195, + 0.0032416216501734117, + 0.004121463095174635, + 0.0064266475855611635, + 0.009912990458708762, + 0.007238195480494386, + 0.0028725420656240818, + 0.0030840367318198704, + 0.0065605541158304526, + 0.0017538444964305317, + 0.0032080174448163162, + 0.005366363616345395, + 0.004304245646187471, + 0.0023778240242240873, + 0.00296771525497565, + 0.003349838790196627, + 0.0031419338741787406, + 0.008355035669306229, + 0.0026214684147682367, + 0.008629854006505932, + 0.0033155261085453607, + 0.0034434221255770308, + 0.006593749459657919, + 0.0030636247258971276, + 0.0013793600111103603, + 0.0035635704882632973, + 0.0043152791328066676, + 0.009720676953559958, + 0.0028072633991543536, + 0.008622889396391779, + 0.004624929779179495, + 0.009456360743627988, + 0.007802174240795852, + 0.007617601444015635, + 3.568846272622499E-4, + 0.006450819867449168, + 0.005151340722813385, + 0.0056672807109224175, + 0.003320828178752431, + 0.004823996112204845, + 0.006017349874109982, + 0.002144324357065734, + 0.006226846003068568, + 0.0053300574392469565, + 0.007358562512356115, + 0.004973864535693524, + 0.0012228557494024285, + 0.0028841079375688575, + 0.008812141392493943, + 0.0027795622006151675, + 0.0069765582830362965, + 0.00406590620413505, + 0.006209911575344182, + 0.0037551847355911496, + 0.006096098110871192, + 0.007843010250888746, + 0.008566168127766175, + 0.008824109361491347, + 0.006544300356448292, + 0.0028164066033177526, + 0.008977153444809581, + 0.003208606032563704, + 4.6415359018719184E-4, + 0.006400692969119468, + 0.005317089349770543, + 0.0031475556354079973, + 0.0028920159249579643, + 9.390407206684969E-4, + 0.006381669012893183, + 0.008192931971421616, + 0.006227130993089228, + 0.003939159995597345, + 0.002058706683721797, + 0.004955775977319228, + 0.0038207867690334763, + 0.004684540399289731, + 0.004204504492954559, + 0.012854647226782813, + 0.004822729531301376, + 0.004079289108012309, + 0.0038913120136205223, + 0.002360662993492543, + 0.0015636035204428032, + 0.010686328117095264, + 6.727605661360861E-4, + 0.008653104609307268, + 0.0030310184321746814, + 0.010786366014975447, + 0.0041165780073812745, + 0.001774375539861436, + 0.004317434497222058, + 0.00314191507427162, + 0.0014924003450959408, + 0.0054888973469076445, + 0.004385364672552688, + 0.0038643212826936935, + 0.011484247949661472, + 0.003086236965653112, + 0.0020656290244406602, + 0.0052457844184212185, + 0.006444823005342728, + 0.006483840694526458, + 0.0019278540033007274, + 0.00362721720785089, + 0.003018154313586441, + 0.011997442400154353, + 0.007984574575483338, + 0.007304145663748926, + 0.005318652440137276, + 0.004113549111474068, + 0.004522363607129477, + 0.0038973309303646383, + 0.002603853173415252, + 0.004091689932671753, + 0.003166371424266618, + 0.00473065656578036, + 0.0027328863980177953, + 0.0029208681300227444, + 0.0026532614896389384, + 0.003849299724102462, + 0.0063276858799609, + 0.005099316561166107, + 0.0015716253583042679, + 0.004437278903812243, + 4.811303419228393E-4, + 8.66807574695153E-4, + 0.004584766627378566, + 0.006965909851097757, + 0.005573640648919386, + 0.0041145304125112594, + 0.008777573187787291, + 0.007313750403925306, + 0.004676246140032718, + 0.0028961332976873244, + 0.0014636524389238697, + 0.0029814027767121084, + 0.0013425216732760167, + 0.006132602632163406, + 0.0022859367505037543, + 0.005445073196150237, + 0.0022118968059086277, + 0.004056358881746635, + 0.002856531699698023, + 0.006409540384368457, + 0.009319409290952142, + 0.008339214334180386, + 0.0020567935371602402, + 0.0025700521947926956, + 0.005712341640121418, + 0.005372941401850142, + 0.0017644864636502723, + 0.0017201811419914734, + 0.0059102275734219, + 0.0027397541404499694, + 0.007091835513245854, + 0.006161000039539036, + 0.004321113828292555, + 0.003316364922279315, + 0.005279616139556451, + 0.003612211992782454, + 0.002629159481662445, + 0.006634939975267669, + 0.005130771611308307, + 0.0041522695070831325, + 0.004046393768708696, + 0.006574150142488096, + 0.004664809848565905, + 0.0024130874043239215, + 0.004196086433484097, + 0.0028508909035860892, + 0.002789747745862863, + 0.0028056099385478247, + 0.0027934257038968995, + 8.689252960323125E-4, + 0.007512148358933274, + 0.0027736340889990816, + 0.004960775941887891, + 0.0031015673455749805, + 0.006824874304833827, + 0.004722662324980906, + 0.004771311058772257, + 0.008132335113519747, + 0.003912277390307953, + 0.0021306494655716737, + 9.198410787315203E-4, + 0.0069033347502314305, + 0.0056274009391709175, + 0.010473637129992662, + 0.005083392616023, + 0.0047196756340310295, + 0.0013711179341522723, + 0.003652452072391571, + 0.0035683914144893727, + 0.0034377397361049136, + 0.004227573396040026, + 0.007668270260252406, + 0.0032230820825843096, + 0.001055687113670562, + 0.002607617996965925, + 0.00690647187019932, + 0.007231439183094264, + 0.005227975282083854, + 7.459737604129892E-4, + 0.002792435515995086, + 0.005299815581261781, + 0.0026846692977904093, + 0.0018619502117081458, + 0.002115989394396835, + 0.005540629981772282, + 0.003767062877992792, + 0.002625240090150866, + 0.0051201467825997765, + 0.002626634345909916, + 0.0011769929957372897, + 0.002883427077828101, + 0.0024768025156897107, + 0.0010532368975505052, + 0.00500378392985704, + 0.005815599692922868, + 0.007699322443550922, + 0.0024859485252601383, + 0.0011548477258274913, + 0.0035503810155991344, + 0.0018807070634643298, + 0.004419306208923501, + 0.0011900666558771022, + 0.005627449707989601, + 0.003265229049001439, + 0.005649174826665052, + 0.0036956335406736415, + 0.00319277089159543, + 0.007913618178705707, + 0.0016844743304027015, + 3.942462321900489E-4, + 0.0049029114321861925, + 0.003386275717208321, + 8.873380863997723E-4, + 0.005604089841439432, + 0.0033990440026964663, + 0.0010621301823428681, + 0.002832673269926956, + 0.0023358965339393832, + 5.884987090795285E-4, + 0.0018204739106379504, + 0.005131396075788204, + 0.003901716295117979, + 0.002443942518890595, + 0.0024549157365888028, + 0.0029686924512795417, + 0.007229783542779325, + 0.004795538614798952, + 0.0029994634854621613, + 0.005015189983064161, + 0.0037143286909573667, + 0.00432739245703223, + 0.0017257938811060971, + 0.00534810469185891, + 0.002932265163023832, + 0.0035805729757375578, + 0.006456425980804892, + 0.0012975040294742517, + 0.004183634572149328, + 0.004897635216679492, + 0.003155759689596172, + 0.003003801614285785, + 0.005912886328064855, + 0.0034195830816921868, + 0.00382159140916532, + 0.0032228765422876037, + 0.0025836402774716493, + 0.004442572462205225, + 0.0014611654896941437, + 0.0037850406459165003, + 0.004448037386683952, + 0.0034589185562811744, + 0.0024272442618698347, + 0.007309204706579246, + 0.003208181488316609, + 0.0018337806275548546, + 0.003171108410734272, + 0.004685391106746276, + 0.00200675140106453, + 0.0023764926451274758, + 0.0037097198962097533, + 0.0010074595942228058, + 0.004293361309208064, + 0.0022476912721819883, + 0.003017788128082004, + 0.006364520918417847, + 0.002929359618660452, + 0.00619277553794212, + 0.003427200733568088, + 0.003475807917691558, + 0.001851881782026417, + 0.0026235060915168525, + 0.003255223383124081, + 0.007208401426625865, + 0.0085068286511879, + 0.005352711306404615, + 0.00936392379752803, + 0.006623908132602773, + 0.006318479847239271, + 0.00397842181649215, + 0.0026397436826430627, + 0.0014384852812713987, + 0.005586731634827211, + 0.0016123125097383842, + 0.002271668027692623, + 0.003879253069903119, + 0.004359558479951795, + 0.007810172687594319, + 0.006200100320452018, + 0.006247101682757312, + 0.0034720699804515805, + 0.005411725923885939, + 0.006007169939910007, + 0.0031637408476200375, + 0.006601032012962351, + 0.00365295923707087, + 0.006295234039655069, + 0.0014073703915288146, + 0.007462129141311199, + 0.004302225205639632, + 0.0012938628372306507, + 5.287415976846224E-4, + 0.004767897922256685, + 0.002891749020856935, + 0.006034444387273832, + 0.0014035050979886133, + 0.006213033611569528, + 0.0018715779565224684, + 0.003512075036138879, + 0.005314393825387285, + 7.71291974104754E-4, + 0.004851093045614266, + 0.0015611912305556485, + 0.0014014328150559218, + 0.0029874798633396133, + 0.0031446499474907575, + 0.00764949991648658, + 0.004028176017920739, + 0.0039443756068126045, + 0.003053982253335383, + 0.0015866668359058689, + 3.1171337162200593E-4, + 0.0022825193203747673, + 0.007975027368857588, + 0.0033617999309029875, + 0.004540611068376776, + 0.005388848210762176, + 0.005581436234150985, + 0.0025892439771218064, + 0.007350436736545269, + 0.0016140180075913586, + 0.008067681237243681, + 0.0025729070875078574, + 0.001742577184197751, + 0.0018010700672957231, + 0.004804739596639466, + 0.0030430661269677723, + 0.002166063198810487, + 0.002989986817827633, + 0.0011937872905413034, + 0.005473263716490284, + 0.008506707778039071, + 0.002968816321708194, + 0.003487053896929081, + 0.004126029606187769, + 0.003771299062391736, + 0.0036078610810982145, + 0.005124129605569619, + 0.0013110132783065327, + 0.0017774739525916166, + 0.005143620739661532, + 0.002327447846055662, + 0.0018806298513724723, + 0.0029762371797210393, + 0.0036448527175755303, + 0.004630067089525863, + 0.00498523969384402, + 7.762325472426054E-4, + 0.0017144506216022648, + 0.003864837948653095, + 0.003610467470196973, + 0.0037362323072743266, + 0.002514461746583649, + 0.005705483623721372, + 0.002119595214417188, + 0.0012166236751136772, + 0.002212507874994758, + 0.0015751295038834692, + 0.006414976754869194, + 0.0027499555459429307, + 0.0038194235346768577, + 0.0033123612457181383, + 0.008945579969251657, + 0.0018570421324573105, + 9.78117167058582E-4, + 0.004382550881800896, + 0.0023199809344014357, + 0.002800541602759825, + 0.006379743578714597, + 0.0018310295106081125, + 0.0011708169723871368, + 0.0033566009362654067, + 0.007277723676315522, + 0.00506378828256362, + 0.004879765083548622, + 0.011472053564888271, + 0.003485648499729541, + 0.0015388306976134444, + 6.80668985959205E-4, + 0.005871856531273482, + 0.0023301719082633532, + 0.0011617042880120835, + 0.005103863204586692, + 0.0036188997675420985, + 0.00276217840666219, + 7.700291549684552E-4, + 0.004591577870540964, + 9.448326885888096E-4, + 0.005770468451638605, + 0.003765453164418355, + 0.0011647643546063128, + 0.0019890336224016765, + 0.005899149864796404, + 0.0027783676946223535, + 0.007112265318725872, + 0.004476945592272877, + 0.006847417520259819, + 0.007899202081421166, + 0.006394100343273217, + 0.0013553708059880116, + 0.0028426840697718817, + 0.006980375166102535, + 0.003062354519632728, + 0.004287781470442784, + 0.003779042470175491, + 0.004037076364708522, + 0.0048511717023425336, + 0.0026492043875120438, + 0.00437569564760102, + 0.0027635382483211786, + 0.003491875719969864, + 0.0024579857929348183, + 0.00415372241540381, + 0.009167161566709098, + 0.003064006491012586, + 0.005294424791166335, + 0.0036211628332244064, + 0.0025783011288705677, + 0.004213446544913475, + 0.0078063041237111455, + 0.0060149427350290295, + 0.0037706717753099245, + 0.004715589358757136, + 0.0014528164014242831, + 0.0048144229664552445, + 0.004219886340845166, + 0.0021914645278085262, + 0.009011253644995618, + 0.005730801427086235, + 0.003328610365820216, + 0.003977908646612014, + 0.0019128463227557086, + 0.006327613614994715, + 0.0011652710390558697, + 0.006033225184636135, + 9.069336948424937E-4, + 0.009478915670910984, + 0.003902302528024924, + 0.0038399333888748553, + 8.108786546041005E-4, + 0.0016012069254414784, + 7.416376840515854E-4, + 0.002262241732103237, + 0.003770047051463741, + 0.004642384316745816, + 0.005825575791423345, + 0.00184089442725924, + 0.002905901538279975, + 0.001259525374587193, + 0.0016026432807263607, + 0.0041368337062566, + 0.004438360464504726, + 0.002498008027590256, + 0.004175300901868359, + 0.0037253989982338307, + 0.004081407861041974, + 0.001985634048238482, + 0.001998781741359171, + 0.003190372328289426, + 0.006000064663685928, + 0.0040738256517439, + 0.005083322719069232, + 0.00567783720520212, + 0.001433775721660724, + 0.003134256318999327, + 0.005009789550585375, + 0.0038735740270316307, + 0.005732433395313343, + 0.002623869298909949, + 0.0034670423540626174, + 0.003881696806639501, + 0.009397979265737898, + 0.004973017722689662, + 0.0027439374747609277, + 0.00609943850987971, + 0.004165166035279928, + 0.001201241940918496, + 0.0023863787986395917, + 0.0048540748815606, + 0.0019623563969227253, + 0.004122853373466613, + 0.0013562402864088724, + 0.0018695561298891833, + 0.004761918306572739, + 0.0030350610294174714, + 0.005981852159047076, + 0.0033381401133036866, + 0.002942293679255609, + 0.0037959457994806486, + 0.0014550837269877777, + 6.253837404906781E-4, + 0.0011415829293685371, + 0.001196856714518586, + 0.00310581528744946, + 0.006635262976854324, + 0.0028678522045170133, + 0.004354166032069388, + 5.823762474350106E-4, + 0.003692074278165653, + 0.0019358431437064398, + 0.006640572949306555, + 0.005112425059382153, + 0.005927964539220734, + 0.004772525957328072, + 0.0015827823610150991, + 0.0012923343738250764, + 0.0037446345028399114, + 0.00588261286083122, + 0.007128335715498549, + 0.004111595641874899, + 0.0016998808876859451, + 0.0019672890030874037, + 5.446646397901735E-4, + 0.004300083011497318, + 0.003477345167909569, + 0.0016575802097736237, + 0.002469031543850068, + 0.0018861250443855246, + 0.004345135907740916, + 0.0027100752409262544, + 0.002219499429019224, + 0.004206194265852026, + 0.0030100266963713276, + 0.0032989396719372097, + 0.005024534036266121, + 0.002204468465939179, + 0.00772121296809363, + 0.004737094698901064, + 0.011258043758378031, + 0.017016444190373643, + 0.0026829624975258895, + 0.003073356156047762, + 0.0072412787926029, + 0.006231658059346285, + 0.0070471446856013335, + 0.003488213954277785, + 0.004499748711677225, + 0.003154498621470666, + 0.00898782437145928, + 0.00864757614910154, + 0.0023388891507573864, + 0.006145040571668959, + 0.004030600028076981, + 0.003077764428277875, + 0.0042578735624496196, + 0.006623862525038752, + 0.009282242526200574, + 0.004900268029642406, + 0.00603946526999957, + 0.003204349611946985, + 0.001607084178724949, + 0.0033437677150371953, + 0.004074587172252743, + 0.003960355383692181, + 0.008417388618286534, + 0.0029008012419331655, + 0.004363794326882052, + 6.5151300447884E-4, + 0.003626773014050506, + 0.009179149397232314, + 0.0014028035886863757, + 0.0015475177961253922, + 0.0013853088577397, + 0.0030405845353697033, + 0.0035691089287036588, + 0.003329031976225031, + 0.00175673141050875, + 0.0035010066180261178, + 0.002163314187358838, + 0.006948455841846833, + 0.0039423436112983575, + 0.0043061218587879, + 0.003309480221265584, + 0.005117363459487651, + 0.0034368422029037323, + 0.004710984351965997, + 0.004863298020685832, + 0.0047871221577618465, + 0.008802411657127003, + 0.002440348251231833, + 0.007258799618668269, + 0.0071295206714328515, + 0.007203060406551687, + 0.005562703890559555, + 0.00402533510412246, + 0.005564873662975114, + 0.004724101503806585, + 0.002495155534747967, + 0.004745215785341469, + 0.0031491639606924717, + 0.004934393723529788, + 0.0011901448262198488, + 0.010606583579239569, + 0.0026725174865297693, + 0.003627796257260287, + 0.004904334681716223, + 0.0044505391778252275, + 0.007243119928463661, + 0.004023792766412813, + 0.006371990136901824, + 0.003311753039637048, + 0.00377672241911177, + 0.0011591493939606529, + 0.003517085073642305, + 0.003971870844097594, + 0.007113049005589439, + 0.0015450300951693125, + 0.0044093901923927875, + 0.003779877100498178, + 0.003059930143809122, + 0.003660482007364578, + 5.205743496988039E-4, + 0.0028633257829681507, + 0.00226680075359241, + 0.004024979366690458, + 0.002520149453635623, + 0.00828146898477862, + 0.004534667347406674, + 0.004864687542637577, + 0.007399030197647155, + 0.0035035852578470562, + 0.0045756999109563936, + 0.005891871987520087, + 0.009086427280323906, + 0.0019108261037204968, + 0.0034106226069407367, + 0.006340798974055468, + 0.005514705942015818, + 0.0068947866778692034, + 0.004915412645142396, + 0.004753571230454775, + 0.006603930172014604, + 0.002907047289658233, + 0.005350730400595574, + 0.006826255815016877, + 0.0034384346307598794, + 9.914132653405592E-4, + 0.0016985488222757167, + 0.004210055390249904, + 0.005559277057228439, + 0.0020497514109363737, + 0.0034638782383841393, + 0.005726806809823015, + 0.005216613257563657, + 0.001093611055824542, + 0.004918537516624271, + 7.902454101934831E-4, + 0.008009135365168353, + 0.00730485217761393, + 0.0037419376560575038, + 0.002980428326857574, + 0.005031079094695178, + 0.004776317156508013, + 0.005563551427421289, + 0.0038896649673511355, + 0.011683993863232668, + 0.0021397623421862775, + 0.005042840913807175, + 0.0032523271313347896, + 0.009952822937969267, + 0.012268839526154542, + 0.002483688888477986, + 0.0036596605315872303, + 0.00578526221830899, + 0.003096850389992626, + 0.0072541816291007725, + 0.00444204865159633, + 0.003940004514301848, + 0.0044481520506117105, + 0.008973945513960259, + 0.003941777878106584, + 0.006345535205677622, + 0.008743884660538645, + 0.005616714972383907, + 0.0053552421234079085, + 0.006687004054759719, + 0.008767081388913462, + 0.005917428803692272, + 0.007929627285964982, + 0.007067038512674177, + 0.0032973497452357, + 0.005556494590581885, + 0.004386668933077593, + 0.008891128224649094, + 0.0013043371610074802, + 0.008272377355707496, + 0.007091394389892222, + 0.0061841041086212675, + 0.004243267737261553, + 0.007080380985933602, + 0.006944338753482527, + 0.004053325401564463, + 0.0016094585999546357, + 0.0038673918995444437, + 0.004412072372191571, + 0.0027376429561473134, + 0.006962806345668815, + 0.0013032902123711252, + 0.0074443108260257955, + 0.006433997969931928, + 0.003905195557760104, + 0.0014674431274321529, + 0.0043487293632177145, + 0.00541759829240836, + 0.002408079767395014, + 0.007501628394812426, + 0.0014940422671292951, + 0.005037803596425474, + 0.008311768904850261, + 0.0067992467407625365, + 0.00513370789110722, + 0.002531142627677556, + 0.0023019226183633736, + 0.00585406293069422, + 0.0073973205100892675, + 0.006803841754731836, + 0.0027064632635498275, + 0.004021118649182509, + 0.007937182459737383, + 0.0012795627273513982, + 0.0017757068939290653, + 0.004234877165267693, + 0.005784323661221421, + 0.00634863653492743, + 0.00795619171119373, + 0.00609841260196125, + 0.0030403392292708037, + 0.003973710552696947, + 0.0067948901975114, + 0.008379320736302093, + 0.003928314098794456, + 0.008205895598976871, + 0.006955476908001207, + 0.0054459205087949, + 0.0064793528455607055, + 0.003231521230037859, + 0.0035409453302343388, + 0.0023271958920143207, + 0.003193013343607908, + 0.002234664543188765, + 0.003596090486951333, + 7.18492286689755E-4, + 0.006871506884113549, + 0.004072312787545495, + 0.004429560135497809, + 0.004615031827245295, + 0.0076909162058465185, + 0.00420105220380337, + 0.0018509102054145691, + 0.0036748742711043667, + 0.0014535100472228418, + 0.0026517470888484653, + 0.0011823730817376288, + 0.006315877856559687, + 0.004505713278281074, + 0.0017808215554371886, + 0.005061602651105945, + 0.004720475719405847, + 0.008199432667609838, + 0.006412280747365659, + 0.004730847081710232, + 0.004595354040102922, + 0.0051754094169840555, + 0.005455708029290589, + 8.146936890457623E-4, + 0.001414043854715643, + 0.005359461854543169, + 0.0030943967923870003, + 0.006409435119612318, + 0.0037144080887250063, + 0.0029553684980557176, + 0.001916886259105163, + 0.007867304010914627, + 0.0018691824121767305, + 0.004653881806199297, + 0.0033067793383646377, + 0.006743468196059034, + 0.0031879312726088307, + 0.003534033675256715, + 0.0036177460318742704, + 9.967716937833984E-4, + 0.0017755924988855298, + 4.24519524557536E-4, + 0.0022045267658893216, + 0.004775556634079984, + 0.004402753483452974, + 0.003569306460954793, + 0.007637297396204006, + 0.009786833142550005, + 0.007093888054044366, + 0.008964877979668962, + 0.010035269614079086, + 0.003809336466536898, + 0.0038426293996138413, + 0.006510505175349607, + 0.00737029651386778, + 0.011479972612697058, + 4.509185544978281E-4, + 0.0026564700588216257, + 0.008257868668000766, + 0.0017619052571916426, + 0.008589800620645476, + 0.0017342593528120538, + 0.0075844825085543376, + 0.00711466837453554, + 0.003877196471471192, + 0.005575854263268734, + 0.01129239295573532, + 0.004656130875597187, + 0.007104951486198812, + 0.006829231311457149, + 0.008738040756658091, + 0.008272786766716892, + 0.0017526962472681933, + 0.008114604022215614, + 0.0012693647561166207, + 0.007219065618527101, + 0.009126424863554009, + 0.003769621201432531, + 0.005098550859665122, + 0.005060024610871866, + 0.004794139354187151, + 0.0036820361434717844, + 0.0025831344826015745, + 4.011305821328409E-4, + 0.002758950271209713, + 0.001171065125971874, + 0.004699505004505547, + 0.00477579215606969, + 0.00733368595629874, + 0.0028738628129277746, + 0.0025660140077586003, + 0.004678015979231996, + 5.942322729851247E-4, + 0.003571751045732274, + 0.003563176483589789, + 0.004460513697351747, + 5.418767432919544E-4, + 0.004448505284431204, + 0.003474108674779041, + 0.004202836481047138, + 0.005838387608394697, + 0.0030680666423104474, + 0.0014335426971381997, + 0.0037370263889129384, + 0.003282935794101278, + 0.0048231603757026235, + 0.006385469874237013, + 0.0028273073924864845, + 0.003600117925035022, + 0.0024577277300760854, + 0.003960240774270808, + 0.0032170038216774964, + 0.006159512306368185, + 0.0019521366620960168, + 0.006071706843856498, + 0.0052519202509558344, + 0.006489773638922718, + 0.003276700950490627, + 6.824249543621117E-4, + 0.0014577799508773738, + 0.0035590322778451286, + 0.002873855362872781, + 0.0032218252997236792, + 0.002712515414159536, + 0.003419019369708483, + 0.0034910602597767668, + 0.004298869250248473, + 1.5258333838115532E-4, + 0.0028587379955762817, + 0.0038347234183473077, + 0.003041247643072559, + 8.430631905001596E-4, + 0.003972159733364743, + 0.00496748675881316, + 0.004948204653518621, + 0.002997786437949711, + 0.002604829395725502, + 0.006736650278998438, + 0.0032249804190050716, + 0.003650624621893832, + 0.0017784303336509017, + 0.004676940186015055, + 0.012624122391047064, + 0.0015762589406547781, + 0.0065939941306146655, + 0.005316702439928287, + 0.00572954418613226, + 0.0012406831983591627, + 0.004186560763275495, + 0.0041009198889154, + 0.005284534931199418, + 0.00598682546464302, + 0.005992044551823609, + 0.006471108307848869, + 0.0017266994366224504, + 0.0036599663318783253, + 0.004101972862750199, + 0.008004504836454636, + 0.005002971001129299, + 0.0051637131427181154, + 0.0025747203965706894, + 0.002679871985075332, + 0.0030732632788487884, + 0.0041858917084439855, + 0.007942685483048731, + 0.0044493159812831135, + 0.0027842010988281267, + 0.0036721921183140455, + 0.0033231898197865536, + 0.002483764290215887, + 6.791093431926705E-4, + 0.006390001353032496, + 0.0015332870651408768, + 0.0020115206647354196, + 0.0016725325566578717, + 0.003695089805312483, + 0.01106550991245198, + 0.00669564792837854, + 0.005312793398712679, + 0.007302142946682071, + 0.017944472265112178, + 0.004619509905170008, + 0.00401718831736852, + 0.005753802557368442, + 0.0028182815562080104, + 0.0034287332499669232, + 0.007936924635144988, + 0.0037933356609025494, + 0.0019476087436071676, + 0.008395588510698455, + 0.005895539115948758, + 0.008567908207057733, + 0.009793807523380401, + 0.008247385641917177, + 0.003073741831717412, + 0.0026447006396355314, + 0.004553996851399468, + 0.010549406464260598, + 0.00319755731917371, + 0.009153887593730916, + 0.007989168773978018, + 0.012203835782161901, + 0.009896503994526828, + 0.00859508502635973, + 0.006241836151740395, + 0.00265246897559273, + 0.009334891744666056, + 0.006775259393638825, + 0.004101120466358641, + 7.899936344455154E-4, + 0.00964818279280986, + 0.011844455410130256, + 0.010162083450864607, + 0.007690182251474097, + 0.0028043604100931297, + 0.003650843576554256, + 0.0075231100454606434, + 0.0033261253894897895, + 0.0035546354458010528, + 6.133346905704736E-4, + 0.007787105960513208, + 0.0013915003434622607, + 0.0020714767052022096, + 0.001409308364571373, + 3.37914516516705E-4, + 0.0038868560462367984, + 0.0010841693675885222, + 0.0055387131183599215, + 0.004794791898227049, + 0.0035077212941906247, + 0.0018273087401824903, + 0.005072150172055599, + 0.0030397811538640804, + 0.009985114758920317, + 0.003625900725798808, + 0.0013507796341206697, + 0.006252543194290647, + 0.007221352355999242, + 0.0032195714327732943, + 0.005684522904286014, + 0.002379007532489992, + 0.006446500451583509, + 0.002175342676523157, + 0.002752049924833395, + 0.008352119117384305, + 0.007063039230753332, + 0.007776443505720107, + 0.002039142799301172, + 0.002429888818317008, + 0.00419201525895998, + 0.0035194828394688586, + 0.0072970866860136265, + 0.0018339376676910235, + 0.007340555877735679, + 0.005722688974627838, + 0.004180047859177018, + 0.004883109125328202, + 0.0027371908667379245, + 0.004037235921642405, + 0.007230053971233623, + 0.0051277983187517865, + 0.00458513808201154, + 0.009685245603094549, + 0.008890550934432783, + 0.0016066646285513733, + 0.0065303383039026245, + 0.0021926359740760386, + 0.003551689099578716, + 0.0019048271100573287, + 0.005084836963294038, + 0.00893941642513646, + 0.001596440508999158, + 0.003265031364953522, + 0.010592701963396785, + 0.0029433538770826887, + 0.0010205106970988442, + 0.004739731861912375, + 0.009573976078652405, + 0.015507826631759696, + 0.005842616349412072, + 0.012144879978625005, + 0.0019171238303258853, + 0.005867131777928828, + 0.007971818431342885, + 0.01858525367510804, + 0.01714296885751314, + 0.008534090765578576, + 0.008811784080293124, + 0.00543965459826591, + 0.0015650627795363932, + 0.006241176896661714, + 0.012387030973827113, + 0.001686064659185656, + 0.003983391116410427, + 0.01289353098821869, + 0.004499813971657949, + 0.005970580552947443, + 0.010577258458036424, + 0.0027849452006626658, + 0.012427885931783646, + 0.006806351218948975, + 0.00439842531037093, + 0.0205523759141397, + 0.008873096074797237, + 0.004920543175472373, + 0.014316532337516515, + 0.0071522785650314, + 0.011510686853991104, + 0.007786632412002929, + 0.00963933503671161, + 0.020423906644477467, + 0.012276124025369897, + 0.021489592305956345, + 0.012957404523766636, + 0.01364913922254115, + 0.007455274280707271, + 0.00990073737653273, + 0.01205153412330283, + 0.01146648816274339, + 0.0033254450763659568, + 0.013418309991354599, + 0.007909157570931342, + 0.012509318559879678, + 0.004803789597668709, + 0.0149531272192816, + 0.009207502971026687, + 0.006358772023336792, + 0.01271439550439219, + 0.007807932584797072, + 0.008271060236287119, + 0.007558174565528624, + 0.005175257028953848, + 0.006945757426123381, + 0.0060659333697913025, + 0.003252316397522294, + 0.015154933861351891, + 0.0062318548891124965, + 0.016799178202713122, + 0.016897729300480564, + 0.006581414082925532, + 0.0037692542211117896, + 0.0088703173792339, + 0.008507362758231975, + 0.004046312385252109, + 0.006005066994850286, + 6.34047102731326E-4, + 0.006918582972783498, + 0.012455103509719503, + 0.004087323959767058, + 0.008272123980611603, + 9.827418181014855E-4, + 0.002714741517084694, + 0.0014399084040099138, + 0.004587971360906559, + 0.0014815301115726391, + 0.005316417663536936, + 0.0062558830388138075, + 0.001680850032855493, + 0.004284418253872646, + 0.0024070662972226643, + 0.004986651746869428, + 0.006922686926682393, + 0.001788137253376175, + 0.003155560383155212, + 0.004042689695375156, + 0.0036704045653975902, + 0.006211637228292, + 0.005376788167085367, + 0.0033060301297422857, + 0.010592629423613284, + 0.0035669578721811146, + 0.008718595686151104, + 0.0030843666701484856, + 0.005213528051765438, + 0.003934032448446868, + 0.004536140099007812, + 0.008801969819108014, + 0.01275797233373631, + 0.003148883027623503, + 0.00672621915064465, + 0.007690891566581198, + 0.0013212817296127492, + 0.007524005460578246, + 0.0051338778367414385, + 0.006466428148779336, + 0.00490809918066301, + 0.006564482227312376, + 0.005150902985079808, + 0.007713589192003374, + 0.0023997410350121567, + 0.0028825664237683945, + 0.002972774355270566, + 0.012465477323597126, + 0.005757611324229058, + 0.002538929352144505, + 0.00897670037053696, + 0.0033833190100036503, + 0.004686833031739383, + 0.0037825813206848573, + 0.006821373035995333, + 0.0020518540506941564, + 0.005662071799127694, + 0.00571959791524904, + 0.004937835021149405, + 0.007863259738676595, + 0.003417258975927951, + 0.00189622583275, + 0.0032328270746217356, + 0.0017578468551855476, + 0.003402212304486686, + 0.00454251380665107, + 0.005803592484726658, + 0.00646943658499039, + 0.0033430944254382983, + 0.00519697088950879, + 0.007831608690634583, + 0.006264161319461341, + 0.00446446838418875, + 0.007846987501156323, + 0.007158310250211147, + 0.007932004010123157, + 0.0043208809182798975, + 0.0021300911413632724, + 0.00729035868357105, + 0.004338028618898024, + 0.006963808064599239, + 0.003355477396238436, + 0.006252090766318622, + 0.00946677710621606, + 0.011815776589401202, + 0.005167175980970121, + 0.0074024240117733795, + 0.003678987597031959, + 0.015032467125758611, + 0.0065902961585409285, + 0.011584199232394336, + 0.005864363639747262, + 0.0172747844917109, + 0.009971110888063872, + 0.008511619081060106, + 0.014178424923851603, + 0.023010441694008562, + 0.03948139626699795, + 0.03555633244623883, + 0.007275533171167388, + 0.013870054724165446, + 0.014797419172967454, + 0.01337169119487102, + 0.01868088370497059, + 0.01817258114710151, + 0.007332404471236981, + 0.005524537941497071, + 0.011881810614704266, + 0.009136167542763944, + 0.016091023432935808, + 0.01966622059592476, + 0.012721467127008328, + 0.003439411922109347, + 0.014577793335675606, + 0.0118730868269186, + 0.01407017281044627, + 0.02098202713384557, + 0.013332811507183096, + 0.013900763904669641, + 0.015001856305434375, + 0.0035254696795147893, + 0.008717141969910015, + 0.01794873958011953, + 0.018373374728449413, + 0.02160838727876731, + 0.007350597413289948, + 0.005082259566905757, + 0.008430764445687843, + 0.021776690175657372, + 0.009195632527899218, + 0.00786652805431535, + 0.005548534685167934, + 0.008069193135563224, + 0.006272826524382044, + 0.011413697032035399, + 0.012707507263656829, + 0.008630628550655906, + 0.004852099795016514, + 0.007112178713117621, + 0.005308020160380459, + 0.008014015478245007, + 0.0063737264729507885, + 0.004790651601097937, + 0.008467103337043933, + 0.007627074830933992, + 0.0046767975117099365, + 0.00787495801543208, + 0.005359334400664352, + 0.009805528273813629, + 0.007520977808586228, + 0.0072284480897090815, + 0.011919764780203776, + 0.004604695222837917, + 0.003509658449336594, + 0.016491029193458486, + 0.0056602993825579035, + 0.006346221658762387, + 0.009784378402179314, + 0.00176902653740138, + 0.009147997377716975, + 0.009311959537925468, + 0.0076819007201616414, + 0.0031805538606384087, + 0.008462802462628575, + 0.009343456080978153, + 0.008793253763311932, + 0.009131636785715786, + 0.005356309048727382, + 0.007162775120257757, + 0.008854196834785106, + 0.022825332738379212, + 0.007900767451181798, + 0.013149813319373323, + 0.004093618923857539, + 0.0040253891429766035, + 0.007995899016168106, + 0.007238694774683465, + 0.00956490300982772, + 0.008925784973301695, + 0.00482525070429764, + 0.009517571495263525, + 0.0016755269118951172, + 0.011435216381028929, + 0.006326695504588138, + 0.019097941190780843, + 0.01668841489987519, + 0.0052272225513722214, + 0.014135753890092445, + 0.00499354561145172, + 0.003300623038153911, + 0.0020293745507402117, + 0.014380051429852762, + 0.010492852155730653, + 0.017948962064906347, + 0.01193218106159606, + 0.007488712634045605, + 0.014145728466953703, + 0.019376371401349443, + 0.017564214440087225, + 0.008368379461488395, + 0.016208483419892526, + 0.016143534787205396, + 0.0060891242630998895, + 0.011007563498447871, + 0.011594430802531822, + 0.006736825497679409, + 0.008516023549794817, + 0.00978224545577662, + 0.012929915740124746, + 0.010435904495636507, + 0.006828992338335409, + 0.006895182737168159, + 0.014190367249602738, + 0.009360847083523503, + 0.012086705603871022, + 0.0021315291385307668, + 0.015476775161910622, + 0.007821130791618705, + 0.016544703257381922, + 0.01409957628318074, + 0.020860225879211367, + 0.005909388855450374, + 0.03171918612982294, + 0.04692225352905379, + 0.03989472032304945, + 0.014742406729838207, + 0.06698078559579919, + 0.07812355607324908, + 0.12403591899918212, + 0.11062708323355844, + 0.03778647613589098, + 0.02550431144341691, + 0.05220538017840555, + 0.03649107743693161, + 0.06922573388049819, + 0.05112499200503835, + 0.042775635023871786, + 0.013943148944389958, + 0.06982938903289075, + 0.05981100481524144, + 0.051972656670197875, + 0.08175957625865322, + 0.05081060271457527, + 0.014791312722708568, + 0.06306268636379805, + 0.040497249678387005, + 0.053582959724150156, + 0.0809314548668583, + 0.039520867553154274, + 0.04219991334173787, + 0.06219859994628545, + 0.024596206277076243, + 0.033770275222662315, + 0.0523565078143309, + 0.0861795157898635, + 0.08589471725621366, + 0.030875741400505464, + 0.015633462962272814, + 0.053559995241262925, + 0.07327852677869062, + 0.04815613261811172, + 0.03241594615201029, + 0.02845628348914423, + 0.0356697751831034, + 0.02767440844611601, + 0.019015671981609972, + 0.01387559834970416, + 0.018051042743359, + 0.00993697099072257, + 0.0033290393753624852, + 0.01926983302665647, + 0.00517489349863165, + 0.00888934353157472, + 0.008865557795478637, + 0.004841038530192112, + 0.005094798042465042, + 0.004010028382619328, + 0.009861083159776494, + 0.005658932204128008, + 0.01056988419289159, + 0.0018392539309238806, + 4.731719068096699E-4, + 0.006722508331280891, + 0.002641293640321177, + 0.007629164850568788, + 0.009517519483680792, + 0.0040129691924495215, + 0.006292743066879994, + 0.002037158010547833, + 0.005258426296049859, + 0.004414359032968069, + 0.005905255859136144, + 0.003340609384156083, + 0.0054309606201773004, + 0.0033700870799423157, + 0.004646953009570184, + 0.00259361822727648, + 0.0019111935831846616, + 0.007296892319914959, + 7.174459229218943E-4, + 0.002225883884561895, + 0.005410315367455214, + 0.006395077199765184, + 0.008275506138860668, + 0.0013586729958539833, + 0.005284282848049729, + 0.005139910540229653, + 0.0038849608266447832, + 0.003442309521858236, + 0.0069837442180987605, + 0.00473418661890487, + 0.004840525154451405, + 0.00845698858670881, + 0.006511650391493952, + 0.007712716316503187, + 0.0013168986618376153, + 0.0034864337123899905, + 0.005461476917339785, + 0.008435048250430892, + 0.0033571120095000316, + 0.001806625011488632, + 0.004899352390851606, + 0.0031701038661782572, + 0.006284273610693012, + 0.0016904562101667218, + 0.0022981299482671, + 0.005020499531831532, + 0.0018217180194543081, + 0.006954637085558462, + 0.013952331422211901, + 0.004962385764250011, + 0.005356966043282416, + 0.0017900990154055987, + 0.004217779555393988, + 0.006414417639684301, + 0.006102811020390974, + 0.0035604077358322734, + 4.5848377566127976E-4, + 0.005367967654865648, + 0.0024927895447819128, + 0.009931642829846906, + 0.0061803762676391405, + 0.004388954511647568, + 0.0032513955442490753, + 0.0038584695400601674, + 0.0035547403520129, + 0.009412295673819038, + 0.01113187213627733, + 0.00327786204326117, + 0.010018288701584995, + 6.820167221657842E-4, + 0.0013163290365323748, + 0.007612214704684895, + 0.0076438633705568125, + 0.0033349420422518904, + 0.0014838467972926401, + 0.002099187260652239, + 0.0156426805015659, + 0.005540739657878271, + 0.02223388793928367, + 0.017567733797532084, + 0.009865077003115591, + 0.008121620180364424, + 0.007925097473018334, + 0.011036810152968469, + 0.010992448470170623, + 0.01084103015035394, + 0.0010660402350759386, + 0.006940849131709615, + 0.0041631371559261105, + 0.007436051512269722, + 0.0037718893343566735, + 0.02211054399691491, + 0.0063125826138049354, + 0.006924329597626696, + 0.009687370210210414, + 0.01613255155618278, + 0.007302535281383762, + 0.011430164029398305, + 0.015332378449909685, + 0.009295904733018348, + 0.009639773280825745, + 0.006460841693452244, + 0.013097460623307619, + 0.008562841378264054, + 0.009681568786368824, + 0.011553020265798894, + 0.007544261938897507, + 0.0035386936985965928, + 0.009044541767111414, + 0.010100119971340901, + 0.006701589631310421, + 0.010177055696639015, + 0.007787602067784826, + 0.007654995667814976, + 0.0034227530940600173, + 0.008076814576757697, + 0.008250575521508197, + 0.0011738123512912138, + 0.0020507057530733865, + 0.006790724661082928, + 0.010407256982164461, + 0.007104459565951285, + 0.004220258769138693, + 0.009430056222304606, + 0.01026907046948115, + 0.01053330529172969, + 0.005928921867231212, + 0.003963511293808526, + 0.0031137065589180468, + 0.0053999087480303635, + 0.007958566977864354, + 0.0035460563470829766, + 0.00499444855033811, + 5.832958093165422E-4, + 0.00631136879109914, + 0.006189605923537786, + 0.002894168631749062, + 0.0065884986906132505, + 0.005182917203038439, + 0.0074708945895412835, + 0.0030993525357134095, + 0.0035611749953871597, + 0.0122506022964153, + 0.0032070552394404205, + 0.0027632879691699146, + 0.003717660431963851, + 0.005571942557610577, + 0.005497065782140555, + 0.0030103720327042307, + 0.004290581961693764, + 0.0012149621146124196, + 0.0030176119928283993, + 0.00328832032453255, + 0.006327651906693519, + 0.0037454566025992768, + 0.008091260887259697, + 0.009410780740930215, + 0.004183739187910506, + 0.005036261040763899, + 0.007659339409517751, + 0.003701381816642945, + 0.004397886174363141, + 0.007407549010126952, + 0.00697220267403703, + 0.00949004812613092, + 0.004452959644530006, + 0.002048564808653444, + 0.0033865270867915022, + 0.005628208472974796, + 0.002196057995166837, + 0.007851970717209928, + 0.007185038368530943, + 0.005668544395481933, + 0.005714965528296286, + 0.005657908083296297, + 0.0016507328022865209, + 0.008218808177817824, + 0.004093315790380893, + 0.002328119700226852, + 0.004584616247186703, + 0.002480253245272986, + 0.0056194857879825755, + 0.0027025950125927393, + 0.005547648251091058, + 0.0059885165614327555, + 0.003847850081973802, + 0.002429638104430527, + 0.0042441764197923, + 0.0033522268886793122, + 0.0010315389374246017, + 0.004551237275924388, + 0.0019519604499384354, + 0.004500538542064123, + 0.009861283599082752, + 0.008695532688499168, + 0.008389307305099116, + 0.005402203975438078, + 0.009080386623108658, + 0.003652543764982836, + 0.002504865956281125, + 0.0017651840009998766, + 0.005492707570695383, + 0.012005593685424053, + 0.005254395031638429, + 0.001390501702562359, + 0.009763459168342524, + 0.004538337326190785, + 0.011333983287582505, + 0.008968582429382692, + 0.010365240611216821, + 0.01425699215274793, + 0.006651097998782418, + 0.003836886323584017, + 1.4970850129435748E-4, + 0.005269201857956286, + 0.009964284409353949, + 0.003929810731501684, + 0.0065793774784619966, + 0.00684081183878731, + 0.004781620382567551, + 0.0024314669140729425, + 0.010709526314220735, + 0.013251256195544939, + 0.009004988623153676, + 0.0064012856958747125, + 0.0041389499647589605, + 0.005413673526838457, + 0.005228849444234249, + 0.007571647816007055, + 0.0070093784738011365, + 0.0050089837319986655, + 0.003085533225367656, + 0.00412527055257561, + 0.0043488089310790385, + 0.005219343519627949, + 0.007965515801417975, + 0.004434321294585644, + 0.00667286622898876, + 0.003602017840966422, + 0.0034769497814319747, + 0.005192411849465692, + 0.0036875261304869823, + 9.09654979627054E-4, + 0.008766978950494698, + 0.007861551045639263, + 0.008712716373359996, + 0.006318512455685582, + 0.004578659205689043, + 0.0016429174975785073, + 0.005035297199761872, + 0.004926670383116012, + 0.00680889962249066, + 0.002517148389686789, + 0.0019246748039381907, + 0.006909774855309061, + 0.015323135700420237, + 0.004278388491952175, + 0.0072596929784237395, + 0.010313979247737724, + 0.0022522654913201662, + 0.007003940600577455, + 0.004656170513713019, + 0.005197895501469776, + 0.005926749907807383, + 0.007767953681886188, + 0.004178475038660049, + 0.002791234293586219, + 0.003035322080485635, + 0.006184879564483964, + 0.0037135126756880714, + 0.004666903040980442, + 0.00510206511097559, + 0.0057871686791080325, + 0.004898803736975321, + 0.00922737478205006, + 0.003207238884056425, + 4.329241714817168E-4, + 0.0021659777751483395, + 0.00520872282779215, + 0.005167462659897146, + 0.005962899179121397, + 0.005236752591552205, + 0.008193846990748843, + 0.0056472154072275, + 0.003687716503053006, + 0.003567191894741214, + 0.0049937689891735, + 0.007358597254113168, + 5.22800899610406E-4, + 0.0027487260258129307, + 0.0020043849298739843, + 0.002231365558306118, + 0.007723057748781795, + 0.007160470808699055, + 0.007655132561318789, + 0.0022222419974565156, + 0.001854835047158411, + 0.003615295371647278, + 0.0025601249211052064, + 0.003692316382014241, + 0.00399344026128429, + 0.005535972784949419, + 0.006992107994777438, + 0.005952733286616528, + 0.005184213705327364, + 0.0017607678588345103, + 0.0017527428479171278, + 0.005009572073313898, + 0.010194142778461056, + 0.006673034354162485, + 0.00432839394660727, + 0.0058400577357796656, + 0.004567791930434233, + 0.004048132792518287, + 0.003868450121026161, + 0.005409734339923818, + 0.0011559558327487666, + 0.0031530381551427, + 0.005609764837216548, + 0.0020219180927519257, + 0.00428460412830498, + 0.00888122988752291, + 0.005465808571213434, + 0.007611168405202311, + 0.0027049935870314796, + 0.003149605717769544, + 0.003934763603416708, + 8.924878707165062E-4, + 0.005594844887582082, + 0.007463575001563202, + 0.005618646013492839, + 0.0044322008356646805, + 0.003130069879658135, + 0.003867622695315178, + 0.005336627812183539, + 4.5592894285417085E-4, + 0.003895061846543633, + 0.003384613319236337, + 0.007393129931567981, + 0.0034281876370165793, + 0.007136154260844485, + 0.0076486014802205245, + 0.002816833004125147, + 0.005077166616759094, + 0.0025541809476606957, + 0.003829745659189152, + 0.0026614373198711643, + 0.005379418266935101, + 0.005865531048168253, + 0.0038823780600871355, + 0.008810419447048908, + 0.006830997225936284, + 0.004377454270791683, + 0.0023928239211855142, + 0.004143845962218482, + 0.004781968793694573, + 0.005738620081471417, + 0.0032037930674159217, + 0.006382266637183187, + 0.004982631328570737, + 9.119576398139967E-4, + 0.002994938661601924, + 3.099022236546862E-4, + 0.00796799048445747, + 0.004688534530876836, + 0.0031769407978103166, + 0.012553485327006331, + 0.008691485766127775, + 0.003550657408028655, + 0.005422472285597613, + 0.0022762080661467674, + 0.006106862144837259, + 0.003140284789026175, + 0.002042368007520268, + 0.009222606041630927, + 0.009099667704747249, + 0.0046516087236752, + 0.00745290495208792, + 0.0032429902250618765, + 0.004220123356153062, + 0.005153936817984211, + 0.012130111295684774, + 0.0034472825606718166, + 0.002118217573898652, + 0.006652946664195641, + 0.0034933909432878028, + 0.005497017803983127, + 0.0012022779615250357, + 0.0033272278561190375, + 3.95171880035899E-4, + 0.0024598275428342085, + 0.0029594679834994402, + 0.0016212137614444115, + 0.006027403957806342, + 0.010737793419314776, + 0.006956467437722252, + 0.004885645801758424, + 0.006817526070130864, + 0.005279121722125262, + 0.005978891984571684, + 9.06475533036359E-4, + 0.002427677970091008, + 0.007567844038619402, + 0.01002875981913731, + 0.004843671789442691, + 0.008131051861101855, + 7.678870276718811E-4, + 0.0038281366033446986, + 0.0035523617363750442, + 0.005386613483137022, + 0.01094705345000882, + 0.0033284648174460624, + 0.002051682442633116, + 0.004348275399993573, + 0.0030522039973603704, + 0.002353679218709471, + 0.002259045634890137, + 0.0091696550683814, + 0.007584023556490178, + 0.00404705513083294, + 0.004038689552837779, + 0.005714038980124488, + 0.0027318548648608506, + 0.0032257738861896693, + 0.004283994582531743, + 0.005435961632438407, + 0.0045536850135797355, + 0.005154258390456564, + 9.084139529877506E-4, + 0.004105119607969462, + 0.008073542230568793, + 0.0032176284365733154, + 0.005303960826253478, + 0.0061208565531989615, + 0.002933742191193363, + 0.008984577101048443, + 0.002878833200395951, + 0.0018940653104129316, + 0.004169746918301367, + 0.0065162541252596256, + 0.004410666808885124, + 0.0013891453050491958, + 0.006526830642784326, + 0.005296681440436158, + 0.0049514051584204745, + 0.0036922197101005175, + 0.0027362643555857405, + 0.00968318464624093, + 0.002868035155185957, + 0.004065804704597406, + 2.764754371101223E-4, + 0.002127872925661393, + 0.004559659666771462, + 0.003419854561477298, + 0.011691215935870114, + 0.0036218600105737894, + 0.011295038825183101, + 0.004037258645286906, + 0.0074788274343871326, + 0.004004850042757001, + 0.0037018142928232018, + 0.01194847982476701, + 0.002243460030071118, + 0.002859229504513681, + 0.0028224622396630815, + 0.001399860607999837, + 4.956229915516515E-4, + 0.0015248361720370189, + 0.001063655134593568, + 0.006897580150122394, + 0.0013854500786079755, + 0.0031189080145000206, + 0.006947288578740117, + 0.004734041335269586, + 0.001063123059656151, + 0.006942149140786921, + 0.00406608559477546, + 0.006607502645827433, + 0.002774300032397429, + 0.007291543718720389, + 0.0010112729207438361, + 0.007656847322589255, + 0.0056308000409645625, + 0.0026535601789531627, + 0.0022658155012601384, + 0.0048776412770187, + 0.001230402004129816, + 0.0070290535511652085, + 0.007280560620010409, + 0.0011679637610207446, + 0.003698744008872954, + 0.004884390000374228, + 0.0019985730173106226, + 0.002255760205548068, + 0.005106046686911476, + 0.006832112317593541, + 0.0036365790412945563, + 0.010131712621578328, + 0.002396592559078024, + 0.012205458253896555, + 0.00584417208320464, + 0.004718588768664803, + 0.0062706022757719766, + 0.004243408685121327, + 0.004300478217860015, + 0.007682090092847413, + 0.0030303389052668147, + 0.006198422822488619, + 0.006535854573373701, + 0.006376807497800513, + 0.0018686602494695282, + 0.007320065417854064, + 0.004087012270202277, + 0.002018206689766341, + 0.0038532993616158377, + 0.010226129118375758, + 0.0060211866131716285, + 0.0014714531880143213, + 0.00912515925761696, + 0.001897403210033985, + 0.003793982234727514, + 0.004543690847670205, + 0.008942585350848447, + 0.01038875866095409, + 0.008643855661129659, + 0.005159337763934156, + 0.012709618889832519, + 0.010475434735726298, + 0.010733040085575693, + 0.008742456267661932, + 0.0057312448146869975, + 0.0030429353171068044, + 0.005516602672246815, + 0.005483697726998251, + 0.003834143294893047, + 0.01098991934089778, + 0.00906504226977344, + 7.397474243948988E-4, + 0.0031606606754880817, + 0.009082942657398826, + 0.012905765926471505, + 0.007460494443542103, + 0.0065319723282250145, + 0.005760187801481417, + 0.015059787779270976, + 0.014067722689800813, + 0.00922538089450701, + 0.0028989190901089284, + 0.009119289828489746, + 0.012827797352973548, + 0.004810086523943097, + 0.00658701204511106, + 0.0045244333181078174, + 0.004541582667535528, + 0.004264165345515298, + 0.004184264049712022, + 0.00901133869139407, + 0.004863383060979369, + 0.01430951329280536, + 0.005442344576547207, + 0.004000722266477541, + 0.004680591457782885, + 0.0058805919116505885, + 0.003936420090937416, + 0.0013946449363793655, + 0.002590374765626565, + 0.004845986323711658, + 0.0011366807293212739, + 0.00507191245716753, + 0.009000688431778125, + 0.010593282296022655, + 0.002905769521868824, + 0.0050147403109019675, + 0.011211013235335543, + 0.004922328038958984, + 0.004070262511590768, + 0.007395648136934012, + 0.003981325561935261, + 0.003952865339257955, + 0.005386677255432506, + 0.006474239641950567, + 0.004838727464632015, + 0.0028897010960572934, + 0.0021851320989776037, + 0.0012505772084051153, + 0.00907921282013774, + 0.004836038050783643, + 0.003127140834449607, + 0.0039724487389595385, + 0.00690508873044052, + 3.791210879087161E-5, + 0.006905088730444617, + 0.003972448738972082, + 0.003127140834458431, + 0.004836038050780588, + 0.009079212820134727, + 0.0012505772084096052, + 0.0021851320989829544, + 0.0028897010960540763, + 0.004838727464624675, + 0.006474239641937358, + 0.005386677255440269, + 0.003952865339260991, + 0.003981325561926952, + 0.0073956481369332775, + 0.004070262511589673, + 0.004922328038959052, + 0.011211013235325723, + 0.005014740310902625, + 0.002905769521870027, + 0.010593282296020471, + 0.009000688431774744, + 0.005071912457156346, + 0.0011366807293184495, + 0.004845986323711702, + 0.0025903747656180432, + 0.0013946449363826559, + 0.003936420090930379, + 0.0058805919116524325, + 0.004680591457787487, + 0.004000722266473293, + 0.00544234457654858, + 0.014309513292810647, + 0.004863383060981401, + 0.009011338691406561, + 0.004184264049707968, + 0.004264165345520231, + 0.0045415826675325975, + 0.004524433318098482, + 0.006587012045121275, + 0.004810086523933867, + 0.012827797352965378, + 0.009119289828494043, + 0.002898919090106385, + 0.009225380894498885, + 0.014067722689797025, + 0.015059787779269834, + 0.005760187801485214, + 0.006531972328222143, + 0.0074604944435485, + 0.012905765926480987, + 0.009082942657406286, + 0.00316066067548155, + 7.397474243916878E-4, + 0.009065042269779907, + 0.010989919340893028, + 0.0038341432948975347, + 0.0054836977270049285, + 0.005516602672254227, + 0.003042935317103288, + 0.005731244814678446, + 0.008742456267653787, + 0.010733040085572609, + 0.010475434735733178, + 0.012709618889834417, + 0.0051593377639306435, + 0.008643855661128089, + 0.010388758660956895, + 0.00894258535084954, + 0.004543690847671257, + 0.003793982234734029, + 0.0018974032100325994, + 0.009125159257616406, + 0.0014714531880098795, + 0.006021186613174948, + 0.010226129118368024, + 0.003853299361619262, + 0.0020182066897599343, + 0.0040870122702048725, + 0.007320065417856553, + 0.0018686602494741914, + 0.006376807497804712, + 0.00653585457337049, + 0.006198422822495021, + 0.0030303389052581376, + 0.007682090092848575, + 0.00430047821786255, + 0.0042434086851165734, + 0.0062706022757705515, + 0.004718588768669165, + 0.005844172083204424, + 0.012205458253898476, + 0.0023965925590802043, + 0.010131712621578562, + 0.0036365790412931694, + 0.006832112317620967, + 0.005106046686916842, + 0.0022557602055468086, + 0.001998573017314079, + 0.004884390000373052, + 0.003698744008866952, + 0.0011679637610198708, + 0.00728056062001946, + 0.007029053551159549, + 0.001230402004130719, + 0.004877641277012162, + 0.0022658155012662165, + 0.0026535601789444674, + 0.005630800040963798, + 0.00765684732258046, + 0.0010112729207570584, + 0.007291543718704482, + 0.0027743000323993366, + 0.006607502645829087, + 0.004066085594778534, + 0.006942149140784537, + 0.0010631230596576222, + 0.004734041335265241, + 0.006947288578742765, + 0.003118908014499382, + 0.0013854500786046756, + 0.006897580150114822, + 0.0010636551345947335, + 0.001524836172031405, + 4.956229915513893E-4, + 0.001399860607997134, + 0.0028224622396647737, + 0.0028592295045124453, + 0.0022434600300783964, + 0.01194847982477102, + 0.003701814292822929, + 0.004004850042765999, + 0.007478827434391278, + 0.004037258645285349, + 0.011295038825180114, + 0.003621860010569764, + 0.011691215935868056, + 0.0034198545615008276, + 0.004559659666772852, + 0.0021278729256590154, + 2.7647543711306616E-4, + 0.004065804704590484, + 0.002868035155201387, + 0.009683184646244618, + 0.0027362643555860575, + 0.0036922197100985564, + 0.004951405158428519, + 0.005296681440443492, + 0.006526830642785526, + 0.0013891453050511662, + 0.0044106668088882885, + 0.006516254125253194, + 0.004169746918304999, + 0.0018940653104180696, + 0.0028788332003976103, + 0.008984577101051022, + 0.0029337421911959224, + 0.0061208565531961166, + 0.005303960826255696, + 0.00321762843656849, + 0.00807354223057453, + 0.004105119607972893, + 9.084139529923138E-4, + 0.0051542583904501515, + 0.004553685013582628, + 0.005435961632440261, + 0.004283994582559188, + 0.0032257738861959807, + 0.0027318548648578326, + 0.005714038980127486, + 0.004038689552841403, + 0.004047055130835669, + 0.007584023556492752, + 0.009169655068378049, + 0.0022590456348938665, + 0.0023536792187055337, + 0.0030522039973635857, + 0.004348275399990124, + 0.002051682442632087, + 0.003328464817442162, + 0.01094705345000832, + 0.005386613483129061, + 0.003552361736374021, + 0.003828136603345443, + 7.678870276718279E-4, + 0.008131051861098814, + 0.004843671789447554, + 0.010028759819118604, + 0.007567844038613703, + 0.0024276779700947724, + 9.0647553303589E-4, + 0.005978891984581162, + 0.005279121722127136, + 0.006817526070124027, + 0.004885645801761759, + 0.006956467437718595, + 0.010737793419316967, + 0.00602740395780512, + 0.001621213761439021, + 0.0029594679834969257, + 0.0024598275428403533, + 3.9517188003751485E-4, + 0.0033272278561175053, + 0.0012022779615258015, + 0.005497017803981716, + 0.0034933909432802827, + 0.006652946664190895, + 0.002118217573896287, + 0.0034472825606803245, + 0.012130111295685274, + 0.005153936817984644, + 0.004220123356148969, + 0.0032429902250660195, + 0.007452904952087142, + 0.004651608723672831, + 0.009099667704777199, + 0.009222606041635191, + 0.0020423680075237656, + 0.0031402847890266107, + 0.00610686214483768, + 0.002276208066142224, + 0.0054224722855963775, + 0.003550657408033911, + 0.008691485766123379, + 0.012553485327012955, + 0.0031769407978081256, + 0.004688534530876131, + 0.007967990484459531, + 3.099022236532146E-4, + 0.0029949386616081415, + 9.11957639825653E-4, + 0.004982631328570442, + 0.006382266637188943, + 0.0032037930674121665, + 0.005738620081471216, + 0.0047819687936899126, + 0.0041438459622138895, + 0.00239282392119369, + 0.004377454270799579, + 0.0068309972259382, + 0.008810419447041962, + 0.003882378060090656, + 0.005865531048169966, + 0.005379418266930515, + 0.002661437319872319, + 0.0038297456591939063, + 0.0025541809476595386, + 0.005077166616754424, + 0.002816833004119468, + 0.007648601480216387, + 0.007136154260835315, + 0.0034281876370158794, + 0.007393129931567229, + 0.003384613319240183, + 0.003895061846538426, + 4.55928942855955E-4, + 0.0053366278121854, + 0.0038676226953013337, + 0.0031300698796571684, + 0.004432200835662871, + 0.005618646013503171, + 0.007463575001562874, + 0.0055948448875869266, + 8.92487870715615E-4, + 0.003934763603421178, + 0.003149605717766096, + 0.0027049935870336406, + 0.007611168405205558, + 0.005465808571215387, + 0.008881229887524333, + 0.004284604128304078, + 0.0020219180927516854, + 0.005609764837215993, + 0.0031530381551316787, + 0.0011559558327486, + 0.005409734339917485, + 0.003868450121029033, + 0.004048132792524085, + 0.004567791930432168, + 0.005840057735776247, + 0.0043283939466049635, + 0.0066730343541653294, + 0.010194142778462839, + 0.005009572073315884, + 0.0017527428479175353, + 0.0017607678588259276, + 0.005184213705336931, + 0.0059527332866169584, + 0.006992107994767544, + 0.005535972784956301, + 0.003993440261278226, + 0.003692316382015147, + 0.0025601249211077053, + 0.003615295371650626, + 0.001854835047157825, + 0.002222241997453149, + 0.0076551325613226605, + 0.00716047080871152, + 0.007723057748781425, + 0.0022313655583076747, + 0.0020043849298718363, + 0.002748726025817199, + 5.22800899609577E-4, + 0.007358597254122288, + 0.004993768989175291, + 0.0035671918947569256, + 0.0036877165030563606, + 0.005647215407233355, + 0.00819384699075316, + 0.005236752591552423, + 0.005962899179129818, + 0.005167462659889864, + 0.0052087228277896535, + 0.0021659777751468256, + 4.329241714813635E-4, + 0.0032072388840462835, + 0.009227374782049587, + 0.004898803736981532, + 0.005787168679104415, + 0.005102065110983324, + 0.00466690304098147, + 0.0037135126756823495, + 0.006184879564490073, + 0.003035322080487605, + 0.002791234293586115, + 0.004178475038663928, + 0.007767953681883994, + 0.0059267499078031515, + 0.005197895501473728, + 0.004656170513712576, + 0.007003940600581948, + 0.002252265491321723, + 0.010313979247731808, + 0.007259692978432486, + 0.004278388491946014, + 0.015323135700421783, + 0.0069097748553057165, + 0.0019246748039328833, + 0.0025171483896988594, + 0.0068088996224911595, + 0.0049266703831100074, + 0.005035297199763928, + 0.0016429174975768062, + 0.004578659205679671, + 0.006318512455676964, + 0.008712716373359233, + 0.007861551045637441, + 0.008766978950505244, + 9.096549796296631E-4, + 0.0036875261304794116, + 0.0051924118494667566, + 0.0034769497814323698, + 0.0036020178409641064, + 0.006672866228986068, + 0.004434321294587838, + 0.007965515801415635, + 0.005219343519633, + 0.004348808931076017, + 0.004125270552580223, + 0.003085533225363388, + 0.005008983732004068, + 0.007009378473795574, + 0.00757164781599741, + 0.005228849444232857, + 0.005413673526835264, + 0.004138949964758362, + 0.00640128569587251, + 0.009004988623151765, + 0.013251256195543733, + 0.010709526314221368, + 0.002431466914081917, + 0.004781620382569556, + 0.006840811838789729, + 0.006579377478461224, + 0.003929810731501383, + 0.009964284409352084, + 0.005269201857955169, + 1.4970850130071573E-4, + 0.0038368863235858507, + 0.006651097998776766, + 0.014256992152751741, + 0.01036524061120816, + 0.00896858242939535, + 0.011333983287587179, + 0.004538337326196019, + 0.00976345916834345, + 0.0013905017025585957, + 0.005254395031633948, + 0.012005593685422918, + 0.005492707570693381, + 0.001765184000999824, + 0.002504865956282176, + 0.003652543764996547, + 0.009080386623109149, + 0.005402203975438809, + 0.008389307305110514, + 0.008695532688497898, + 0.00986128359909068, + 0.004500538542058723, + 0.0019519604499338558, + 0.0045512372759249934, + 0.001031538937433713, + 0.0033522268886873514, + 0.004244176419789576, + 0.0024296381044333596, + 0.0038478500819725636, + 0.0059885165614311205, + 0.005547648251091492, + 0.0027025950125973788, + 0.0056194857879775266, + 0.0024802532452770643, + 0.004584616247183385, + 0.0023281197002301794, + 0.004093315790378004, + 0.008218808177821321, + 0.0016507328022802167, + 0.005657908083300275, + 0.005714965528296457, + 0.0056685443954779865, + 0.00718503836852708, + 0.007851970717208223, + 0.00219605799517251, + 0.0056282084729677795, + 0.0033865270867911076, + 0.00204856480864955, + 0.004452959644523396, + 0.009490048126135278, + 0.006972202674042495, + 0.00740754901011677, + 0.004397886174360559, + 0.003701381816640562, + 0.007659339409513595, + 0.0050362610407631864, + 0.004183739187912013, + 0.009410780740926371, + 0.008091260887247192, + 0.0037454566025966556, + 0.006327651906702411, + 0.003288320324519511, + 0.00301761199282967, + 0.0012149621146151683, + 0.004290581961687925, + 0.003010372032695571, + 0.005497065782136326, + 0.0055719425576182275, + 0.0037176604319392815, + 0.002763287969171848, + 0.0032070552394395657, + 0.012250602296422228, + 0.0035611749953773945, + 0.0030993525356979596, + 0.007470894589537646, + 0.005182917203038772, + 0.006588498690609895, + 0.0028941686317481845, + 0.006189605923540514, + 0.006311368791091261, + 5.832958093077186E-4, + 0.004994448550333563, + 0.0035460563470844173, + 0.007958566977861547, + 0.0053999087480298595, + 0.003113706558920877, + 0.003963511293813947, + 0.005928921867226844, + 0.010533305291731208, + 0.01026907046948131, + 0.009430056222300826, + 0.004220258769144438, + 0.007104459565949657, + 0.010407256982161099, + 0.0067907246610897, + 0.0020507057530697982, + 0.0011738123512952557, + 0.008250575521505796, + 0.008076814576749665, + 0.0034227530940622703, + 0.007654995667814849, + 0.007787602067782707, + 0.010177055696640137, + 0.006701589631307705, + 0.01010011997133606, + 0.00904454176710559, + 0.00353869369860283, + 0.007544261938902405, + 0.011553020265796137, + 0.009681568786374457, + 0.008562841378265183, + 0.013097460623307482, + 0.00646084169345139, + 0.009639773280821396, + 0.009295904733023124, + 0.015332378449909877, + 0.01143016402940467, + 0.007302535281378991, + 0.01613255155618089, + 0.00968737021020824, + 0.00692432959762617, + 0.0063125826138071064, + 0.02211054399692242, + 0.00377188933435633, + 0.007436051512271315, + 0.004163137155925209, + 0.0069408491317034535, + 0.001066040235075723, + 0.010841030150354406, + 0.010992448470171718, + 0.011036810152969291, + 0.00792509747301245, + 0.008121620180356977, + 0.009865077003113664, + 0.017567733797535106, + 0.022233887939270218, + 0.0055407396578737245, + 0.015642680501565337, + 0.002099187260653404, + 0.001483846797282623, + 0.0033349420422459507, + 0.007643863370555655, + 0.007612214704677561, + 0.0013163290365338204, + 6.820167221667537E-4, + 0.0100182887015807, + 0.0032778620432669854, + 0.011131872136279218, + 0.00941229567381735, + 0.003554740352007792, + 0.0038584695400570557, + 0.003251395544252368, + 0.004388954511651341, + 0.006180376267640837, + 0.00993164282984457, + 0.002492789544785467, + 0.005367967654868832, + 4.5848377567003155E-4, + 0.0035604077358359965, + 0.006102811020384032, + 0.0064144176396858715, + 0.004217779555396383, + 0.0017900990154089682, + 0.005356966043285744, + 0.004962385764247735, + 0.013952331422210786, + 0.006954637085559312, + 0.001821718019444828, + 0.005020499531831496, + 0.0022981299482698115, + 0.0016904562101718449, + 0.006284273610698836, + 0.0031701038661757605, + 0.0048993523908458765, + 0.0018066250114839155, + 0.0033571120094986855, + 0.008435048250432703, + 0.00546147691734513, + 0.003486433712397923, + 0.0013168986618356086, + 0.007712716316502247, + 0.006511650391499067, + 0.00845698858671557, + 0.004840525154451491, + 0.004734186618907143, + 0.006983744218103307, + 0.0034423095218627255, + 0.0038849608266439814, + 0.005139910540231839, + 0.005284282848053141, + 0.00135867299585165, + 0.008275506138860559, + 0.006395077199758724, + 0.005410315367461905, + 0.002225883884564731, + 7.174459229138178E-4, + 0.007296892319918357, + 0.001911193583185767, + 0.00259361822728057, + 0.004646953009567396, + 0.003370087079944741, + 0.005430960620180724, + 0.003340609384153525, + 0.005905255859139378, + 0.004414359032966909, + 0.00525842629604725, + 0.00203715801054229, + 0.006292743066887113, + 0.004012969192453762, + 0.009517519483683182, + 0.00762916485056801, + 0.002641293640321195, + 0.006722508331286647, + 4.7317190680685724E-4, + 0.0018392539309249562, + 0.010569884192896131, + 0.005658932204114503, + 0.009861083159782175, + 0.004010028382623799, + 0.005094798042471867, + 0.004841038530185456, + 0.008865557795486999, + 0.008889343531569529, + 0.005174893498620677, + 0.019269833026651032, + 0.0033290393753690377, + 0.009936970990722462, + 0.018051042743362274, + 0.013875598349702652, + 0.019015671981609108, + 0.027674408446110053, + 0.03566977518309846, + 0.02845628348915246, + 0.03241594615201902, + 0.04815613261811133, + 0.07327852677867161, + 0.05355999524126021, + 0.015633462962274004, + 0.03087574140048953, + 0.08589471725620457, + 0.08617951578986328, + 0.05235650781432937, + 0.03377027522266471, + 0.024596206277068048, + 0.062198599946278514, + 0.042199913341744895, + 0.039520867553148875, + 0.08093145486685625, + 0.05358295972414769, + 0.04049724967838297, + 0.06306268636380408, + 0.014791312722714861, + 0.050810602714574195, + 0.08175957625866405, + 0.051972656670204065, + 0.05981100481523883, + 0.06982938903289383, + 0.0139431489444029, + 0.04277563502386869, + 0.05112499200504318, + 0.06922573388049767, + 0.0364910774369301, + 0.05220538017839692, + 0.025504311443420764, + 0.03778647613588718, + 0.11062708323354875, + 0.12403591899918362, + 0.07812355607325153, + 0.06698078559580938, + 0.014742406729838748, + 0.039894720323047736, + 0.04692225352905642, + 0.03171918612982445, + 0.005909388855449506, + 0.02086022587921191, + 0.014099576283186087, + 0.016544703257381353, + 0.007821130791618992, + 0.015476775161905643, + 0.002131529138533751, + 0.012086705603870915, + 0.00936084708351885, + 0.014190367249609656, + 0.006895182737170199, + 0.006828992338329697, + 0.010435904495632668, + 0.012929915740127538, + 0.009782245455777053, + 0.00851602354979829, + 0.0067368254976785755, + 0.011594430802521998, + 0.011007563498457586, + 0.0060891242630975355, + 0.01614353478720808, + 0.016208483419891943, + 0.00836837946148067, + 0.017564214440093883, + 0.019376371401343965, + 0.014145728466954973, + 0.007488712634043156, + 0.01193218106158829, + 0.017948962064909244, + 0.010492852155733366, + 0.014380051429855515, + 0.0020293745507408323, + 0.0033006230381548126, + 0.004993545611445505, + 0.014135753890090584, + 0.0052272225513681275, + 0.016688414899874705, + 0.019097941190781224, + 0.006326695504588373, + 0.011435216381027376, + 0.0016755269118981543, + 0.009517571495266027, + 0.004825250704297917, + 0.008925784973302278, + 0.009564903009826023, + 0.007238694774677985, + 0.007995899016170323, + 0.004025389142979485, + 0.0040936189238565315, + 0.013149813319372776, + 0.00790076745118378, + 0.022825332738388274, + 0.008854196834784044, + 0.007162775120255604, + 0.005356309048726032, + 0.009131636785713375, + 0.008793253763308743, + 0.00934345608097719, + 0.008462802462627848, + 0.00318055386064576, + 0.007681900720160506, + 0.00931195953792518, + 0.009147997377726485, + 0.001769026537395153, + 0.009784378402177834, + 0.006346221658768829, + 0.005660299382546856, + 0.016491029193462136, + 0.0035096584493370356, + 0.004604695222840968, + 0.011919764780197543, + 0.00722844808970773, + 0.007520977808581981, + 0.00980552827381705, + 0.005359334400658424, + 0.007874958015440666, + 0.004676797511712866, + 0.007627074830929145, + 0.008467103337045258, + 0.004790651601103687, + 0.006373726472948414, + 0.008014015478242861, + 0.0053080201603786775, + 0.007112178713125064, + 0.0048520997950225716, + 0.008630628550658508, + 0.012707507263649442, + 0.011413697032037273, + 0.006272826524374153, + 0.008069193135573253, + 0.005548534685163764, + 0.007866528054317822, + 0.009195632527902972, + 0.02177669017565927, + 0.00843076444568755, + 0.005082259566902392, + 0.00735059741328891, + 0.021608387278760473, + 0.018373374728448088, + 0.017948739580122268, + 0.008717141969915073, + 0.003525469679515216, + 0.015001856305433202, + 0.013900763904667322, + 0.013332811507184832, + 0.020982027133846677, + 0.014070172810445354, + 0.011873086826922888, + 0.014577793335678336, + 0.00343941192211088, + 0.012721467127007141, + 0.01966622059593309, + 0.016091023432930132, + 0.00913616754275773, + 0.011881810614704625, + 0.0055245379414922465, + 0.007332404471236621, + 0.018172581147099288, + 0.018680883704974262, + 0.013371691194865996, + 0.014797419172961552, + 0.013870054724166333, + 0.007275533171165881, + 0.03555633244624071, + 0.03948139626700306, + 0.023010441694008132, + 0.014178424923851289, + 0.008511619081061692, + 0.009971110888067675, + 0.01727478449171723, + 0.005864363639745286, + 0.011584199232395679, + 0.006590296158539617, + 0.015032467125756607, + 0.003678987597038269, + 0.007402424011774422, + 0.0051671759809703574, + 0.011815776589401604, + 0.00946677710621368, + 0.00625209076631656, + 0.0033554773962397033, + 0.006963808064596611, + 0.0043380286189003605, + 0.007290358683575045, + 0.0021300911413671257, + 0.004320880918279496, + 0.00793200401012072, + 0.007158310250210262, + 0.00784698750115964, + 0.004464468384194226, + 0.006264161319466773, + 0.007831608690630022, + 0.005196970889510126, + 0.003343094425440542, + 0.006469436584977343, + 0.005803592484724126, + 0.00454251380665609, + 0.0034022123044878147, + 0.0017578468551856913, + 0.0032328270746197715, + 0.0018962258327440606, + 0.0034172589759250555, + 0.007863259738677773, + 0.004937835021143879, + 0.0057195979152478895, + 0.005662071799124761, + 0.002051854050690995, + 0.0068213730359936615, + 0.003782581320685818, + 0.0046868330317426125, + 0.0033833190099962773, + 0.008976700370544629, + 0.0025389293521492925, + 0.005757611324229255, + 0.012465477323599008, + 0.0029727743552666816, + 0.002882566423765003, + 0.0023997410350181905, + 0.007713589192012241, + 0.005150902985078475, + 0.006564482227315466, + 0.004908099180667052, + 0.006466428148779916, + 0.005133877836741283, + 0.007524005460579025, + 0.0013212817296099158, + 0.007690891566580474, + 0.006726219150644863, + 0.003148883027620164, + 0.012757972333737676, + 0.008801969819103457, + 0.00453614009900218, + 0.003934032448447647, + 0.005213528051764414, + 0.003084366670150173, + 0.00871859568615289, + 0.003566957872182426, + 0.010592629423613761, + 0.003306030129741461, + 0.005376788167085539, + 0.006211637228292463, + 0.0036704045653957454, + 0.004042689695373325, + 0.0031555603831493043, + 0.0017881372533804746, + 0.006922686926680184, + 0.004986651746873576, + 0.0024070662972222215, + 0.0042844182538726945, + 0.0016808500328512812, + 0.006255883038810829, + 0.005316417663534426, + 0.001481530111564139, + 0.004587971360912572, + 0.0014399084040054963, + 0.002714741517086402, + 9.827418181061426E-4, + 0.008272123980614136, + 0.004087323959771487, + 0.01245510350972434, + 0.0069185829727807365, + 6.340471027294986E-4, + 0.006005066994849466, + 0.004046312385251906, + 0.008507362758225043, + 0.008870317379239621, + 0.0037692542211195702, + 0.0065814140829310855, + 0.016897729300479836, + 0.016799178202713996, + 0.006231854889115434, + 0.015154933861355899, + 0.0032523163975322, + 0.006065933369791767, + 0.006945757426122631, + 0.0051752570289610045, + 0.0075581745655291955, + 0.00827106023628538, + 0.007807932584795438, + 0.012714395504397345, + 0.006358772023331484, + 0.009207502971023969, + 0.014953127219281475, + 0.004803789597668158, + 0.012509318559878722, + 0.007909157570928223, + 0.01341830999134462, + 0.0033254450763667972, + 0.011466488162746414, + 0.012051534123297751, + 0.009900737376531887, + 0.0074552742807062955, + 0.013649139222545348, + 0.012957404523761047, + 0.021489592305953334, + 0.012276124025376802, + 0.020423906644483025, + 0.009639335036705094, + 0.007786632412003926, + 0.011510686853991856, + 0.007152278565031748, + 0.014316532337519715, + 0.004920543175472183, + 0.008873096074795493, + 0.020552375914138894, + 0.004398425310370726, + 0.006806351218947594, + 0.012427885931782272, + 0.0027849452006655827, + 0.010577258458033768, + 0.0059705805529537545, + 0.004499813971661274, + 0.012893530988219352, + 0.003983391116408743, + 0.001686064659184299, + 0.01238703097382793, + 0.006241176896660652, + 0.0015650627795446939, + 0.005439654598261574, + 0.00881178408029282, + 0.008534090765580534, + 0.01714296885751028, + 0.018585253675107428, + 0.007971818431343316, + 0.0058671317779274675, + 0.0019171238303253234, + 0.01214487997861855, + 0.00584261634941611, + 0.015507826631755059, + 0.009573976078651979, + 0.004739731861914326, + 0.0010205106970889162, + 0.0029433538770812393, + 0.010592701963394508, + 0.0032650313649448394, + 0.0015964405090001747, + 0.008939416425136869, + 0.005084836963313241, + 0.0019048271100579079, + 0.003551689099581588, + 0.002192635974070748, + 0.006530338303902722, + 0.0016066646285451608, + 0.008890550934435007, + 0.00968524560310124, + 0.0045851380820156095, + 0.005127798318752782, + 0.007230053971231966, + 0.004037235921645744, + 0.0027371908667364704, + 0.004883109125326912, + 0.004180047859169605, + 0.005722688974627411, + 0.007340555877733356, + 0.00183393766769703, + 0.007297086686011903, + 0.0035194828394693803, + 0.0041920152589535725, + 0.002429888818313785, + 0.00203914279930319, + 0.007776443505723108, + 0.0070630392307630754, + 0.00835211911737971, + 0.0027520499248369756, + 0.0021753426765262554, + 0.006446500451582897, + 0.0023790075324976664, + 0.005684522904286539, + 0.00321957143277645, + 0.0072213523559970655, + 0.006252543194296366, + 0.0013507796341201532, + 0.003625900725798368, + 0.009985114758919859, + 0.0030397811538697035, + 0.005072150172052958, + 0.0018273087401848318, + 0.0035077212941885456, + 0.004794791898221281, + 0.005538713118356114, + 0.00108416936759045, + 0.0038868560462368214, + 3.3791451651335805E-4, + 0.001409308364569406, + 0.0020714767052064584, + 0.0013915003434645907, + 0.007787105960510216, + 6.133346905697884E-4, + 0.0035546354458024015, + 0.0033261253894929076, + 0.007523110045461734, + 0.003650843576550571, + 0.0028043604100939953, + 0.007690182251476053, + 0.010162083450859463, + 0.011844455410131549, + 0.009648182792807682, + 7.899936344436077E-4, + 0.004101120466356905, + 0.006775259393636553, + 0.009334891744665565, + 0.0026524689755901805, + 0.006241836151746742, + 0.008595085026355502, + 0.009896503994525302, + 0.012203835782157318, + 0.007989168773981724, + 0.009153887593729445, + 0.0031975573191831454, + 0.010549406464257569, + 0.004553996851390643, + 0.0026447006396304374, + 0.003073741831719221, + 0.008247385641915402, + 0.009793807523378462, + 0.008567908207064025, + 0.005895539115947525, + 0.008395588510695341, + 0.00194760874360384, + 0.0037933356608961075, + 0.007936924635148947, + 0.0034287332499711855, + 0.0028182815562112517, + 0.00575380255736774, + 0.004017188317369371, + 0.0046195099051648805, + 0.01794447226510776, + 0.007302142946678777, + 0.005312793398710956, + 0.006695647928382491, + 0.011065509912450495, + 0.003695089805311963, + 0.0016725325566558803, + 0.0020115206647381726, + 0.0015332870651382836, + 0.006390001353032873, + 6.791093431911017E-4, + 0.0024837642902157467, + 0.003323189819797122, + 0.0036721921183193095, + 0.0027842010988292703, + 0.004449315981278845, + 0.007942685483056818, + 0.004185891708446369, + 0.00307326327885317, + 0.0026798719850760705, + 0.002574720396569605, + 0.005163713142725581, + 0.005002971001127905, + 0.008004504836456391, + 0.004101972862744102, + 0.0036599663318754657, + 0.001726699436620366, + 0.006471108307842257, + 0.005992044551824097, + 0.005986825464645013, + 0.005284534931195175, + 0.004100919888913721, + 0.004186560763269563, + 0.0012406831983662427, + 0.005729544186131089, + 0.005316702439930107, + 0.006593994130611705, + 0.0015762589406560098, + 0.01262412239104127, + 0.0046769401860184325, + 0.001778430333647663, + 0.0036506246218964214, + 0.0032249804190111458, + 0.006736650278996036, + 0.002604829395718835, + 0.00299778643795453, + 0.004948204653522639, + 0.004967486758812225, + 0.003972159733358867, + 8.430631905026505E-4, + 0.003041247643068329, + 0.003834723418347087, + 0.0028587379955753735, + 1.5258333838044877E-4, + 0.004298869250248276, + 0.0034910602597743048, + 0.003419019369710249, + 0.002712515414158785, + 0.0032218252997279163, + 0.0028738553628708694, + 0.003559032277844179, + 0.0014577799508784588, + 6.824249543670256E-4, + 0.00327670095049201, + 0.006489773638921578, + 0.005251920250940852, + 0.006071706843858322, + 0.0019521366621003647, + 0.006159512306364729, + 0.003217003821679701, + 0.003960240774271465, + 0.0024577277300795023, + 0.0036001179250349184, + 0.002827307392482906, + 0.006385469874237786, + 0.004823160375703551, + 0.0032829357940953006, + 0.0037370263889096055, + 0.0014335426971350744, + 0.003068066642309452, + 0.005838387608393662, + 0.004202836481049689, + 0.0034741086747786705, + 0.004448505284432051, + 5.418767432893225E-4, + 0.004460513697346789, + 0.003563176483593052, + 0.0035717510457302193, + 5.942322729822312E-4, + 0.004678015979217656, + 0.0025660140077602284, + 0.0028738628129309153, + 0.007333685956297183, + 0.004775792156072185, + 0.004699505004504528, + 0.0011710651259850206, + 0.002758950271204866, + 4.0113058213159545E-4, + 0.0025831344826000692, + 0.0036820361434672984, + 0.004794139354191009, + 0.0050600246108762825, + 0.005098550859665832, + 0.003769621201431261, + 0.009126424863553573, + 0.007219065618528609, + 0.0012693647561199941, + 0.008114604022216, + 0.0017526962472703517, + 0.008272786766712668, + 0.008738040756663288, + 0.0068292313114511945, + 0.00710495148620015, + 0.004656130875606517, + 0.011292392955736712, + 0.0055758542632723725, + 0.0038771964714680992, + 0.007114668374535849, + 0.007584482508553201, + 0.0017342593528114592, + 0.008589800620646296, + 0.0017619052571984466, + 0.008257868668005132, + 0.0026564700588253844, + 4.509185545014926E-4, + 0.011479972612695155, + 0.007370296513865034, + 0.006510505175348274, + 0.003842629399615801, + 0.003809336466524628, + 0.010035269614085546, + 0.008964877979658706, + 0.007093888054044058, + 0.009786833142545076, + 0.007637297396200899, + 0.0035693064609498724, + 0.004402753483452501, + 0.004775556634077888, + 0.0022045267658905065, + 4.2451952455563666E-4, + 0.001775592498883785, + 9.967716937786674E-4, + 0.00361774603188149, + 0.003534033675263208, + 0.0031879312726075726, + 0.006743468196061348, + 0.003306779338367701, + 0.004653881806199329, + 0.0018691824121793846, + 0.007867304010911734, + 0.0019168862591063271, + 0.002955368498053796, + 0.0037144080887206157, + 0.006409435119608302, + 0.003094396792387367, + 0.0053594618545383535, + 0.0014140438547117016, + 8.14693689044426E-4, + 0.005455708029284342, + 0.005175409416981121, + 0.004595354040100133, + 0.004730847081704541, + 0.0064122807473617534, + 0.008199432667612624, + 0.0047204757194057555, + 0.005061602651109157, + 0.0017808215554333464, + 0.004505713278277679, + 0.006315877856566873, + 0.0011823730817443515, + 0.0026517470888496922, + 0.001453510047223007, + 0.003674874271106122, + 0.0018509102054127121, + 0.004201052203798446, + 0.007690916205848094, + 0.004615031827244353, + 0.004429560135497296, + 0.00407231278755379, + 0.006871506884114325, + 7.184922866916818E-4, + 0.0035960904869470085, + 0.0022346645431899296, + 0.0031930133436072045, + 0.002327195892006266, + 0.0035409453302298454, + 0.0032315212300399947, + 0.006479352845554757, + 0.005445920508792899, + 0.00695547690799682, + 0.008205895598976736, + 0.003928314098791926, + 0.008379320736292377, + 0.006794890197510987, + 0.003973710552699308, + 0.003040339229272898, + 0.006098412601958867, + 0.00795619171119589, + 0.006348636534931797, + 0.005784323661224177, + 0.0042348771652699355, + 0.0017757068939263905, + 0.0012795627273558458, + 0.007937182459739563, + 0.004021118649179665, + 0.002706463263550696, + 0.006803841754725612, + 0.0073973205100901435, + 0.005854062930694753, + 0.0023019226183654657, + 0.0025311426276778677, + 0.005133707891111115, + 0.006799246740760945, + 0.008311768904850574, + 0.005037803596421071, + 0.0014940422671337896, + 0.00750162839480374, + 0.0024080797673885976, + 0.005417598292408727, + 0.00434872936322008, + 0.0014674431274295842, + 0.003905195557761421, + 0.006433997969934261, + 0.007444310826027383, + 0.0013032902123736225, + 0.006962806345680229, + 0.002737642956148783, + 0.004412072372189586, + 0.00386739189954563, + 0.0016094585999500283, + 0.004053325401565842, + 0.006944338753482922, + 0.007080380985931443, + 0.0042432677372584385, + 0.006184104108625578, + 0.007091394389886177, + 0.008272377355702631, + 0.0013043371610085017, + 0.008891128224647653, + 0.0043866689330762255, + 0.005556494590582192, + 0.0032973497452346047, + 0.007067038512674596, + 0.007929627285967323, + 0.0059174288036891775, + 0.008767081388920246, + 0.00668700405475793, + 0.00535524212340633, + 0.005616714972382667, + 0.008743884660538112, + 0.006345535205679314, + 0.003941777878104794, + 0.008973945513962522, + 0.004448152050615928, + 0.003940004514302951, + 0.004442048651599189, + 0.007254181629120704, + 0.003096850389992881, + 0.005785262218302079, + 0.0036596605315951033, + 0.0024836888884806575, + 0.012268839526157165, + 0.009952822937967091, + 0.003252327131332988, + 0.0050428409138114005, + 0.0021397623421843728, + 0.011683993863230428, + 0.003889664967351122, + 0.005563551427423165, + 0.004776317156511689, + 0.0050310790947000915, + 0.0029804283268643266, + 0.0037419376560599376, + 0.007304852177613675, + 0.008009135365165088, + 7.902454101962811E-4, + 0.00491853751662142, + 0.0010936110558232189, + 0.005216613257566513, + 0.005726806809817666, + 0.003463878238382195, + 0.002049751410935924, + 0.005559277057226687, + 0.004210055390246546, + 0.0016985488222763224, + 9.91413265347398E-4, + 0.003438434630752046, + 0.00682625581501458, + 0.0053507304005944835, + 0.0029070472896547466, + 0.006603930172013695, + 0.004753571230453238, + 0.004915412645141147, + 0.006894786677873322, + 0.005514705942012533, + 0.00634079897405935, + 0.0034106226069397566, + 0.0019108261037221494, + 0.009086427280323363, + 0.005891871987524045, + 0.004575699910957937, + 0.00350358525785298, + 0.007399030197645805, + 0.00486468754263815, + 0.004534667347404484, + 0.00828146898477325, + 0.0025201494536360464, + 0.004024979366692761, + 0.002266800753597146, + 0.0028633257829639566, + 5.205743496983251E-4, + 0.00366048200736187, + 0.0030599301438093856, + 0.0037798771005000736, + 0.004409390192392919, + 0.0015450300951634524, + 0.007113049005588705, + 0.003971870844100129, + 0.003517085073642332, + 0.0011591493939620973, + 0.0037767224191137404, + 0.003311753039638484, + 0.00637199013689494, + 0.0040237927664102755, + 0.007243119928462811, + 0.004450539177826294, + 0.004904334681715531, + 0.003627796257257139, + 0.0026725174865304692, + 0.010606583579241304, + 0.0011901448262202849, + 0.004934393723531003, + 0.0031491639606942056, + 0.004745215785342169, + 0.0024951555347564425, + 0.0047241015038050095, + 0.005564873662974354, + 0.004025335104129653, + 0.0055627038905571614, + 0.007203060406553253, + 0.007129520671430784, + 0.007258799618672716, + 0.002440348251236103, + 0.008802411657126677, + 0.004787122157764137, + 0.004863298020684736, + 0.004710984351966842, + 0.003436842202902421, + 0.005117363459483655, + 0.0033094802212664926, + 0.004306121858797167, + 0.003942343611297892, + 0.006948455841854538, + 0.002163314187360908, + 0.0035010066180256334, + 0.0017567314105112288, + 0.0033290319762240878, + 0.003569108928694939, + 0.0030405845353788257, + 0.0013853088577453407, + 0.0015475177961268966, + 0.001402803588685716, + 0.009179149397231825, + 0.0036267730140527054, + 6.51513004481814E-4, + 0.00436379432687636, + 0.0029008012419267783, + 0.008417388618290847, + 0.00396035538369483, + 0.004074587172256188, + 0.003343767715030663, + 0.0016070841787276856, + 0.0032043496119440445, + 0.006039465269997115, + 0.004900268029643015, + 0.009282242526193774, + 0.00662386252503631, + 0.004257873562452344, + 0.0030777644282780083, + 0.00403060002807764, + 0.006145040571664638, + 0.002338889150757363, + 0.008647576149103262, + 0.008987824371460507, + 0.0031544986214644194, + 0.004499748711677495, + 0.0034882139542820848, + 0.007047144685609083, + 0.0062316580593450846, + 0.007241278792602637, + 0.003073356156052736, + 0.0026829624975327863, + 0.01701644419036135, + 0.011258043758377006, + 0.004737094698904188, + 0.0077212129681000375, + 0.0022044684659384825, + 0.0050245340362679415, + 0.003298939671933409, + 0.0030100266963674423, + 0.0042061942658521145, + 0.0022194994290152823, + 0.0027100752409256914, + 0.004345135907741501, + 0.001886125044387716, + 0.002469031543847962, + 0.0016575802097677991, + 0.0034773451679101586, + 0.004300083011490721, + 5.446646397890471E-4, + 0.001967289003086074, + 0.0016998808876899413, + 0.004111595641878298, + 0.007128335715497763, + 0.00588261286082857, + 0.0037446345028461074, + 0.001292334373829243, + 0.0015827823610166946, + 0.004772525957333705, + 0.005927964539218346, + 0.0051124250593870164, + 0.006640572949303211, + 0.0019358431437006508, + 0.0036920742781726564, + 5.823762474328958E-4, + 0.004354166032069618, + 0.0028678522045188703, + 0.006635262976859866, + 0.0031058152874551756, + 0.0011968567145197184, + 0.0011415829293649215, + 6.253837404903244E-4, + 0.0014550837269898115, + 0.0037959457994855414, + 0.002942293679262599, + 0.0033381401133041034, + 0.0059818521590523106, + 0.0030350610294110473, + 0.004761918306573402, + 0.0018695561298872534, + 0.0013562402864093265, + 0.004122853373466786, + 0.001962356396930324, + 0.004854074881553884, + 0.002386378798652014, + 0.0012012419409173096, + 0.004165166035280616, + 0.006099438509874881, + 0.0027439374747562145, + 0.004973017722686174, + 0.009397979265738763, + 0.0038816968066404493, + 0.003467042354057727, + 0.002623869298906246, + 0.005732433395312847, + 0.0038735740270310045, + 0.005009789550584002, + 0.003134256318997017, + 0.0014337757216570455, + 0.00567783720519834, + 0.005083322719066862, + 0.0040738256517468836, + 0.006000064663685386, + 0.003190372328288032, + 0.001998781741356623, + 0.0019856340482393288, + 0.0040814078610373825, + 0.003725398998234453, + 0.004175300901865729, + 0.002498008027594141, + 0.004438360464501303, + 0.0041368337062551224, + 0.0016026432807284918, + 0.0012595253745870524, + 0.0029059015382790153, + 0.0018408944272618165, + 0.005825575791425042, + 0.004642384316743515, + 0.0037700470514593284, + 0.0022622417321021583, + 7.416376840500462E-4, + 0.0016012069254419962, + 8.108786546058112E-4, + 0.0038399333888718685, + 0.003902302528023674, + 0.009478915670911945, + 9.069336948406127E-4, + 0.0060332251846354195, + 0.001165271039056759, + 0.006327613614995619, + 0.0019128463227532642, + 0.003977908646614889, + 0.0033286103658178986, + 0.005730801427085527, + 0.00901125364500163, + 0.0021914645278084304, + 0.004219886340845877, + 0.004814422966459283, + 0.0014528164014178742, + 0.004715589358756584, + 0.0037706717753093638, + 0.0060149427350279115, + 0.007806304123713475, + 0.004213446544912069, + 0.002578301128871896, + 0.003621162833225054, + 0.005294424791170925, + 0.0030640064910174448, + 0.009167161566707074, + 0.00415372241540515, + 0.0024579857929308124, + 0.003491875719972119, + 0.002763538248326026, + 0.004375695647597405, + 0.0026492043875082074, + 0.004851171702341663, + 0.004037076364708127, + 0.003779042470176431, + 0.004287781470440001, + 0.0030623545196365076, + 0.006980375166105398, + 0.0028426840697714606, + 0.001355370805983885, + 0.006394100343275386, + 0.007899202081422469, + 0.006847417520259039, + 0.004476945592270953, + 0.007112265318726203, + 0.002778367694619259, + 0.005899149864799547, + 0.0019890336224053333, + 0.0011647643546042435, + 0.003765453164415099, + 0.005770468451637054, + 9.448326885939222E-4, + 0.004591577870541139, + 7.700291549673119E-4, + 0.0027621784066647302, + 0.0036188997675436194, + 0.005103863204581438, + 0.0011617042880116347, + 0.002330171908265134, + 0.005871856531272185, + 6.806689859632415E-4, + 0.0015388306976106174, + 0.003485648499732362, + 0.011472053564890545, + 0.004879765083549677, + 0.005063788282559881, + 0.007277723676313346, + 0.0033566009362679876, + 0.0011708169723814298, + 0.0018310295106064465, + 0.006379743578715781, + 0.002800541602761053, + 0.0023199809344022536, + 0.004382550881803212, + 9.781171670578588E-4, + 0.0018570421324577804, + 0.008945579969250482, + 0.00331236124571472, + 0.0038194235346852286, + 0.002749955545947061, + 0.006414976754869459, + 0.0015751295038895078, + 0.0022125078749924837, + 0.0012166236751149837, + 0.002119595214419342, + 0.00570548362371739, + 0.002514461746585075, + 0.003736232307273393, + 0.0036104674701974925, + 0.003864837948653638, + 0.001714450621603253, + 7.76232547245693E-4, + 0.004985239693843663, + 0.0046300670895272344, + 0.003644852717571562, + 0.0029762371797211057, + 0.0018806298513716411, + 0.0023274478460538726, + 0.005143620739662094, + 0.0017774739525899816, + 0.0013110132783058486, + 0.005124129605569799, + 0.0036078610810945746, + 0.0037712990623952045, + 0.00412602960619093, + 0.003487053896931333, + 0.0029688163217036385, + 0.00850670777804022, + 0.005473263716485544, + 0.0011937872905460588, + 0.002989986817831571, + 0.002166063198807104, + 0.003043066126972618, + 0.00480473959663825, + 0.001801070067292101, + 0.001742577184199263, + 0.002572907087508365, + 0.008067681237246518, + 0.0016140180075914473, + 0.007350436736545222, + 0.002589243977126651, + 0.005581436234148262, + 0.005388848210759146, + 0.004540611068381778, + 0.0033617999308990665, + 0.007975027368856606, + 0.0022825193203735972, + 3.117133716174695E-4, + 0.001586666835898866, + 0.0030539822533381276, + 0.0039443756068142976, + 0.004028176017917137, + 0.007649499916486337, + 0.003144649947490835, + 0.0029874798633360206, + 0.0014014328150563555, + 0.001561191230565623, + 0.004851093045615584, + 7.712919741066115E-4, + 0.0053143938253891665, + 0.003512075036139201, + 0.0018715779565175404, + 0.006213033611568136, + 0.001403505097986077, + 0.006034444387276242, + 0.0028917490208579424, + 0.004767897922255988, + 5.287415976843317E-4, + 0.001293862837232819, + 0.004302225205635059, + 0.007462129141310052, + 0.0014073703915308364, + 0.006295234039658448, + 0.003652959237069626, + 0.006601032012964043, + 0.0031637408476217024, + 0.006007169939910986, + 0.005411725923889384, + 0.0034720699804533846, + 0.006247101682753483, + 0.006200100320447276, + 0.0078101726875967, + 0.0043595584799547785, + 0.0038792530699036944, + 0.002271668027696642, + 0.0016123125097351454, + 0.005586731634823817, + 0.0014384852812741613, + 0.0026397436826466176, + 0.003978421816488478, + 0.006318479847240342, + 0.006623908132601964, + 0.009363923797522855, + 0.00535271130640252, + 0.008506828651186857, + 0.007208401426628514, + 0.003255223383127142, + 0.0026235060915262803, + 0.0018518817820272963, + 0.003475807917691022, + 0.003427200733567512, + 0.006192775537942705, + 0.0029293596186601148, + 0.006364520918413434, + 0.003017788128080026, + 0.002247691272184024, + 0.004293361309207093, + 0.0010074595942188265, + 0.0037097198962142476, + 0.0023764926451259154, + 0.0020067514010635567, + 0.004685391106749182, + 0.0031711084107403434, + 0.0018337806275513504, + 0.0032081814883187657, + 0.007309204706575921, + 0.002427244261866868, + 0.00345891855628454, + 0.0044480373866866655, + 0.003785040645913993, + 0.001461165489692513, + 0.00444257246220374, + 0.0025836402774718323, + 0.003222876542285526, + 0.003821591409162884, + 0.0034195830816940325, + 0.005912886328066408, + 0.003003801614287183, + 0.003155759689599818, + 0.004897635216684645, + 0.004183634572151266, + 0.0012975040294786121, + 0.0064564259808043015, + 0.0035805729757365395, + 0.0029322651630195183, + 0.005348104691852903, + 0.0017257938811099172, + 0.004327392457034362, + 0.0037143286909626645, + 0.005015189983065284, + 0.0029994634854646983, + 0.004795538614794854, + 0.00722978354278259, + 0.0029686924512789016, + 0.0024549157365877385, + 0.002443942518889127, + 0.0039017162951181243, + 0.005131396075785092, + 0.0018204739106392404, + 5.884987090790357E-4, + 0.0023358965339344206, + 0.002832673269929683, + 0.0010621301823404285, + 0.003399044002698631, + 0.0056040898414364245, + 8.873380863991917E-4, + 0.003386275717206789, + 0.004902911432188802, + 3.9424623218794216E-4, + 0.00168447433040228, + 0.007913618178702115, + 0.003192770891596352, + 0.00369563354067434, + 0.005649174826663033, + 0.003265229049006325, + 0.0056274497079844485, + 0.0011900666558762787, + 0.004419306208920866, + 0.0018807070634630609, + 0.0035503810155987146, + 0.0011548477258284202, + 0.0024859485252565912, + 0.007699322443548647, + 0.005815599692921011, + 0.0050037839298580624, + 0.0010532368975514198, + 0.002476802515693762, + 0.0028834270778290965, + 0.001176992995738603, + 0.002626634345907244, + 0.0051201467826015815, + 0.002625240090151588, + 0.0037670628779937136, + 0.005540629981776244, + 0.0021159893943952304, + 0.0018619502117055925, + 0.0026846692977913105, + 0.005299815581258322, + 0.0027924355160002415, + 7.459737604192385E-4, + 0.005227975282084592, + 0.007231439183093865, + 0.006906471870195543, + 0.002607617996964074, + 0.001055687113673691, + 0.003223082082589246, + 0.00766827026024456, + 0.004227573396040979, + 0.003437739736103678, + 0.003568391414489148, + 0.003652452072390783, + 0.0013711179341475482, + 0.004719675634036705, + 0.005083392616018676, + 0.010473637129989595, + 0.005627400939173694, + 0.006903334750236634, + 9.198410787313369E-4, + 0.0021306494655727623, + 0.0039122773903056685, + 0.008132335113519741, + 0.004771311058778122, + 0.004722662324982979, + 0.006824874304829269, + 0.0031015673455714503, + 0.004960775941883671, + 0.002773634088998207, + 0.007512148358932196, + 8.689252960303052E-4, + 0.002793425703892078, + 0.0028056099385464234, + 0.0027897477458563315, + 0.002850890903590783, + 0.00419608643348309, + 0.002413087404325783, + 0.004664809848568269, + 0.006574150142490355, + 0.004046393768708575, + 0.004152269507084025, + 0.005130771611301921, + 0.006634939975265001, + 0.002629159481662579, + 0.0036122119927802223, + 0.005279616139557508, + 0.0033163649222818416, + 0.0043211138282910014, + 0.0061610000395357105, + 0.0070918355132446815, + 0.002739754140452479, + 0.00591022757342021, + 0.0017201811419951803, + 0.0017644864636434524, + 0.005372941401846316, + 0.00571234164012163, + 0.002570052194793039, + 0.0020567935371639586, + 0.00833921433418367, + 0.009319409290953793, + 0.006409540384370902, + 0.002856531699700039, + 0.00405635888174631, + 0.0022118968059089963, + 0.005445073196149946, + 0.002285936750502308, + 0.006132602632162094, + 0.0013425216732789918, + 0.002981402776707959, + 0.001463652438929731, + 0.002896133297689695, + 0.004676246140027184, + 0.007313750403924502, + 0.008777573187781744, + 0.004114530412515313, + 0.005573640648917809, + 0.00696590985109668, + 0.004584766627382904, + 8.668075746905867E-4, + 4.811303419195072E-4, + 0.004437278903809068, + 0.0015716253583022148, + 0.005099316561164386, + 0.0063276858799646805, + 0.003849299724102082, + 0.0026532614896368056, + 0.0029208681300271584, + 0.0027328863980191367, + 0.0047306565657768305, + 0.0031663714242677245, + 0.004091689932671488, + 0.0026038531734131867, + 0.003897330930363979, + 0.004522363607134703, + 0.00411354911147401, + 0.0053186524401296386, + 0.007304145663747377, + 0.007984574575485055, + 0.011997442400159201, + 0.0030181543135853525, + 0.0036272172078545355, + 0.0019278540033010286, + 0.006483840694519111, + 0.006444823005342118, + 0.0052457844184174264, + 0.0020656290244402678, + 0.003086236965651513, + 0.011484247949667587, + 0.003864321282696361, + 0.00438536467255407, + 0.005488897346907115, + 0.0014924003450929413, + 0.003141915074271517, + 0.004317434497223163, + 0.0017743755398612914, + 0.004116578007379964, + 0.010786366014978689, + 0.0030310184321744385, + 0.008653104609312231, + 6.727605661336975E-4, + 0.010686328117101868, + 0.0015636035204400988, + 0.00236066299349455, + 0.0038913120136174974, + 0.0040792891080157654, + 0.004822729531298715, + 0.012854647226784189, + 0.004204504492949793, + 0.004684540399292429, + 0.0038207867690316748, + 0.004955775977313025, + 0.0020587066837232638, + 0.003939159995594023, + 0.006227130993087358, + 0.008192931971421803, + 0.006381669012895646, + 9.39040720666708E-4, + 0.002892015924956197, + 0.0031475556354096466, + 0.005317089349767555, + 0.006400692969119853, + 4.64153590185456E-4, + 0.0032086060325675044, + 0.008977153444806214, + 0.002816406603317256, + 0.006544300356452799, + 0.008824109361494433, + 0.008566168127765818, + 0.007843010250892696, + 0.0060960981108726916, + 0.0037551847355878883, + 0.006209911575341059, + 0.004065906204135874, + 0.006976558283037918, + 0.0027795622006120658, + 0.00881214139249841, + 0.0028841079375714787, + 0.0012228557494034875, + 0.004973864535695146, + 0.007358562512354987, + 0.0053300574392447266, + 0.0062268460030692335, + 0.0021443243570614997, + 0.006017349874114169, + 0.004823996112202716, + 0.0033208281787532666, + 0.005667280710926331, + 0.005151340722816902, + 0.006450819867445745, + 3.568846272602279E-4, + 0.007617601444012003, + 0.007802174240799281, + 0.009456360743628184, + 0.0046249297791842335, + 0.00862288939638902, + 0.002807263399146689, + 0.009720676953561509, + 0.004315279132804042, + 0.003563570488263758, + 0.0013793600111116498, + 0.003063624725897294, + 0.006593749459658986, + 0.003443422125573057, + 0.0033155261085414433, + 0.008629854006506893, + 0.0026214684147679835, + 0.00835503566931256, + 0.0031419338741826277, + 0.0033498387901989475, + 0.0029677152549826844, + 0.002377824024221925, + 0.004304245646188529, + 0.005366363616348026, + 0.003208017444824807, + 0.0017538444964311439, + 0.00656055411583013, + 0.0030840367318197663, + 0.0028725420656220825, + 0.007238195480495932, + 0.009912990458714096, + 0.0064266475855599145, + 0.004121463095182312, + 0.0032416216501707004, + 0.004491675946654072, + 0.007627067173959824, + 0.004810732771843841, + 0.002973337942523548, + 0.007189248493374077, + 0.003769210542240889, + 0.003354499372039843, + 0.0046573661438919075, + 0.0072935524985412855, + 0.0050749215407861065, + 0.004909870636978334, + 0.0020668190564049347, + 0.002527880118973058, + 0.005524405926640332, + 0.004025646874269295, + 0.0013229752565185285, + 0.010039642808398435, + 0.003465357361703293, + 0.006173974715745892, + 0.00297127255553861, + 0.0026865948429524024, + 0.004583828007443363, + 0.005349177099516625, + 0.0018969935361253132, + 0.007171843217361909, + 0.006046575848942657, + 0.00158058766865305, + 0.003828782316898754, + 0.00644895804590711, + 0.003151103831052088, + 0.0013929233678127582, + 0.0037276558169235447, + 0.004433381466922781, + 0.0022044076508993013, + 0.01099644879567437, + 0.005649472078181996, + 0.0026182854434009047, + 0.005172212119903407, + 0.006348799638010986, + 0.005932910625393239, + 0.0027011926858446678, + 0.0025610374439354157, + 0.0038274130158366237, + 0.003620710410091391, + 0.0039353614582807095, + 0.007768675697099952, + 0.007106051758986579, + 0.0048012530120180455, + 0.005980608553300386, + 0.003296562934284988, + 0.0035627135065438376, + 0.003966122443103238, + 0.009878860127560592, + 0.010429912354495025, + 0.006589976213597323, + 0.004024626733424995, + 0.004519175789543969, + 0.0029644307353449374, + 0.004029446025911579, + 0.007140915859993515, + 0.003817025093014481, + 0.00616959707355697, + 0.005857564722492156, + 0.005620324099370854, + 0.0026372274125641484, + 0.0082465176130703, + 0.005474677576922211, + 0.006172183783290022, + 0.004582046402374143, + 0.008877059741558826, + 0.011056100718781551, + 0.008041445877859113, + 0.008646336339904203, + 0.0014043708275307098, + 0.006458755622754451, + 0.00902404476615809, + 0.010059150087349655, + 0.0038379275814709782, + 0.00386594029010571, + 0.0035353929747083484, + 0.0053468913447168856, + 0.0018059366793369764, + 0.0023589196794608107, + 0.0032170961752783682, + 0.004985961299552246, + 0.0037429793497212767, + 0.00478084227489801, + 0.0013124650283284807, + 0.004772615548779318, + 0.006266021464691551, + 5.543761635891719E-4, + 0.0029782496366091006, + 0.002509939882531937, + 0.006327045671826932, + 0.005284543503425587, + 0.0049923089294683165, + 0.003813091565150904, + 0.0034468247125086344, + 0.003729469264233941, + 0.0031999293702989176, + 0.004031588868078306, + 0.005118091996756123, + 0.00128140853050636, + 0.0033026846385947766, + 0.001389272958009877, + 0.0037196530099358974, + 0.0039058527360708636, + 0.007001690055288895, + 0.002616101098597717, + 0.002815125847644003, + 0.0025610395053536883, + 0.0038312882747822685, + 0.003381470943627084, + 0.004638222853156266, + 0.004231208402750683, + 0.0022031172307667925, + 0.002924440392297226, + 9.143564331005702E-4, + 0.005122489625414072, + 0.00512559186079031, + 0.0020463247035454424, + 0.00341665962377952, + 0.0023099484908004567, + 0.004101316360308398, + 0.00316219873212645, + 0.00374320785095309, + 0.0011866367755270473, + 0.004824266704304484, + 0.0012063411240905335, + 0.0028300822538267, + 0.004432228706710896, + 0.003268204672365695, + 0.0015344268436725203, + 0.0020325803258068723, + 0.0016292260230187194, + 0.003430219977852776, + 0.0015965778378430923, + 0.0017859497005203934, + 2.982495526638312E-4, + 0.006587343076777299, + 0.004991103990824977, + 0.0017045991017791665, + 0.0019726265844331567, + 0.005857926164849151, + 0.0011376997923706839, + 0.005027487462322915, + 0.0012631023836354592, + 0.0010174593911027841, + 9.403141573969989E-4, + 0.004627180777169554, + 0.00208465048639054, + 0.001530271043063824, + 0.006578110029864543, + 0.002212407522937232, + 0.005838744883955088, + 0.003918814413983162, + 0.004827790304362451, + 0.00495831468634193, + 0.006242232139845557, + 0.008023797561181656, + 0.0022121984666566195, + 0.0023815732508969565, + 0.0033101988215330667, + 0.00456735486948406, + 0.004021649790699968, + 0.007170402459192299, + 0.004255334011009825, + 0.0022023275917494407, + 0.0032983032487438353, + 0.0027478277507993463, + 0.0010231730882510278, + 0.0033845262760771257, + 0.004453769323138203, + 0.003389347951856619, + 0.0040910503406192955, + 0.0033616551376231493, + 0.0010116841231031144, + 0.003079803928761548, + 0.005263334169535276, + 0.005135433796099467, + 0.0035731460937626675, + 0.0014818034491596757, + 0.0049238281741524155, + 0.0012896362762091738, + 0.0010664266151527448, + 0.004570295357686399, + 0.0020872548767935438, + 0.002883888281097448, + 0.0025820439209425527, + 0.0018512785631743334, + 0.004603973087129164, + 0.0035847193937767947, + 0.005070827825066713, + 0.002453552039842273, + 0.002524880412530326, + 0.0022206853164531337, + 0.0018376243658429295, + 0.004310643131651021, + 0.004006297565520721, + 0.006580686088642602, + 0.003783572562784317, + 0.005400307718237328, + 0.0020339141349986455, + 0.004824699992985284, + 0.003974565020645353, + 0.0014402808557202967, + 0.008608956271013858, + 0.004016458207638157, + 0.00460906345204402, + 0.0035756338002808272, + 0.001969502194541669, + 0.0054978047682927985, + 0.005396017736751477, + 0.0027969308593664122, + 0.0036609079205102433, + 0.005684598958648205, + 0.0026717060059614625, + 0.0028895925487713763, + 0.005189302467368891, + 0.00985647441495179, + 0.0029124633012365805, + 0.004205242983074091, + 0.0036522814622257974, + 0.0029286718989976197, + 0.002410852938095431, + 0.0025204765080225123, + 0.0023754681992774734, + 0.002580535448316232, + 0.0023170865996893246, + 0.0017805407395017293, + 0.0030616900494164845, + 0.0036053134243648898, + 0.0054354690557087875, + 0.004088362243661238, + 0.002931382870542954, + 0.0018327375098267738, + 0.002936314666638125, + 0.0026573684071372373, + 0.0012675556552292893, + 0.0020209390447643483, + 0.005655712060464901, + 0.0018813030552867825, + 0.0038786614065082887, + 4.733796752983884E-4, + 0.0026491758753944532, + 0.003670554713404909, + 0.003727397075358454, + 0.0015131671005811083, + 0.004337942173772985, + 0.006009689090445716, + 0.008270117127022693, + 0.008774836237831742, + 0.006591770377285597, + 0.01106401238150009, + 0.01888874233142115, + 0.014441878685426202, + 0.01516134251713358, + 0.008678684629892594, + 0.0036986302169778646, + 0.007710133196788354, + 0.0042418622570029735, + 0.005195449037209397, + 0.005441626587262561, + 0.00446795312793632, + 0.0018454321750671853, + 0.006369235468820076, + 0.007939280544471367, + 0.00742023790478771, + 0.009842533840470106, + 0.0034103935301172733, + 0.0017633428417353054, + 8.957494676256923E-4, + 0.010284039672409742, + 0.006144917015655091, + 0.010346534808539982, + 0.009775095375657855, + 0.005625382360530694, + 0.0028548056201666786, + 0.0030719036518950366, + 0.004867942109060317, + 0.012011761936474692, + 0.012220038959511148, + 0.004570731820923471, + 0.005493901847952109, + 0.015529642886228918, + 0.008597872999630751, + 0.006188744239292999, + 0.003658713821296929, + 0.005089724132497254, + 0.005167061320780123, + 0.001500520564329921, + 0.012135153462459034, + 0.010978241826754203, + 0.005442381305244023, + 0.003732286313945032, + 0.004556518506010765, + 0.009156720446536471, + 0.006459191644602336, + 0.007649022600997394, + 0.003624192692763929, + 0.007600933429910207, + 0.0025580739710275215, + 0.009694399627211135, + 0.0023765894634980083, + 0.005994994211118273, + 0.00864736401491593, + 0.008339798807646844, + 0.0030165645791120324, + 0.0028417626893553227, + 0.004084609677685515, + 0.0014362497348960111, + 0.005062196381943134, + 0.002361492151843162, + 0.0035037238480673397, + 0.004992208846260952, + 0.005454673412185244, + 0.003685179550566972, + 0.006262699214233022, + 0.001586045284634758, + 0.004482609752639665, + 0.004654869830389606, + 0.0041495588849231844, + 0.002888058418596587, + 0.003207062762871781, + 0.00468105739104723, + 0.004160995969912384, + 0.001220389128070446, + 0.0035477840402406272, + 0.002567451159720723, + 0.007656165160841486, + 0.0021917852809729874, + 0.005800609145874042, + 0.004580783319603133, + 0.004257626468414877, + 0.003116698515011139, + 0.00506726416325342, + 0.002040378866803508, + 0.005408106293167424, + 0.004622685601048451, + 0.0045580470290306095, + 0.0034231971277732137, + 0.004125203290459706, + 0.0011120333832135608, + 0.004246922219746221, + 0.006221960858616689, + 0.0038018477281266134, + 0.005364518862095302, + 0.004722517320592481, + 0.0015394531915543237, + 0.0028852295721623817, + 0.0023373526398715264, + 0.0024474834524563873, + 0.002638682261205311, + 0.005423487152905735, + 0.004384920675166004, + 0.007331543239999242, + 0.008013656847730024, + 0.006661728753477396, + 0.0023082168959367095, + 0.005095151831668047, + 0.001492805423815358, + 0.0024402844896509466, + 0.0024480110910862925, + 0.004966846421439068, + 0.0021713016470065985, + 0.0035049898664007966, + 0.006311087523884122, + 0.0019129705118483822, + 0.0014824293476801737, + 0.002927325782806252, + 8.741602382542563E-5, + 0.0033687053253183817, + 0.0037663148009457297, + 0.0017424270331156462, + 0.004044646150378106, + 0.0014411188511267259, + 0.002663857751829995, + 0.003768574866525053, + 0.005806668630273723, + 2.5354714468566245E-4, + 0.004756232820250194, + 0.0028691166072229005, + 0.0035132618174933735, + 0.006421349184340045, + 0.0030596026734386736, + 0.0042634474224162045, + 0.006413526080132364, + 0.004210703742857004, + 0.003236907352036041, + 0.0032824325152288124, + 0.0029418747315127654, + 9.696962342273452E-4, + 0.0011628691491025963, + 0.0023775554991197516, + 0.0037328749289707265, + 0.0010319023832357785, + 0.0023437927007869765, + 0.0051264511019653795, + 0.0035635325081357226, + 0.0020890338772805365, + 0.0017221956701125303, + 0.003830401658797947, + 0.0038561349951308117, + 0.0030030718718508102, + 0.0013526197114259702, + 0.0020461117256185463, + 0.006457726126009055, + 0.0036798877022905514, + 0.002842268138330508, + 0.002876368920886801, + 0.0038517106618733577, + 0.005441696118115361, + 0.00424482991791985, + 0.0015693100921972138, + 0.001855608814201929, + 0.0012878148127646461, + 0.002558139161837582, + 0.005669429915104339, + 0.005692404183959239, + 0.004096405395030825, + 0.0024145942663064027, + 0.0013004024979981273, + 0.006169490242689225, + 0.001649726612531465, + 0.002592349632548938, + 0.0018130510886268597, + 0.004943679478807724, + 8.72908707998108E-4, + 0.0013490146066936306, + 2.1184599669774986E-4, + 0.005685503239345337, + 0.0019243680189676747, + 0.007772282559263291, + 0.0032583629053691463, + 0.005343456116466992, + 0.0015554392994148983, + 0.0018177640617585884, + 0.0021013468369500995, + 0.003280235189874604, + 0.003982860722379003, + 0.0031599367142336973, + 0.0035383806155747455, + 0.004831104572293912, + 0.0026181523143058725, + 0.0013756010985453726, + 0.0014944714003528442, + 0.005762198941610898, + 0.0027371549078555406, + 0.0017040987012940552, + 0.0031832610978083983, + 0.0012657106967024915, + 0.0037852194200071643, + 0.0052354512071102945, + 0.0015855987474484206, + 0.008210660179097265, + 0.005900031920264941, + 0.001784440550342657, + 0.00419756271483389, + 0.0018253798545819066, + 0.005385357910459015, + 0.0035652625619927553, + 0.007622563664421081, + 0.004191000949340143, + 0.0030962385895347325, + 0.0017881217368698864, + 5.316780288344019E-4, + 0.0012788944685820395, + 0.0041920778177194145, + 0.002745448885887412, + 4.905337903814461E-4, + 5.848161632139537E-4, + 0.006206919419101111, + 0.002808493440154729, + 0.0017155018245709152, + 0.00587023222115903, + 0.0026493413468417905, + 0.003070709768685007, + 0.0019695668721741943, + 0.003013051611806068, + 0.0015752894587957704, + 0.004226256337990138, + 9.864357936343862E-4, + 0.004083727784008386, + 0.0049502619905486865, + 0.004192205745433485, + 2.5132806940249145E-4, + 0.008387813790624634, + 0.005359942714161611, + 0.007605186893696285, + 0.006363437432408535, + 5.103306135164021E-4, + 0.004336570433359078, + 0.003208052575215708, + 0.0034104766781641333, + 0.002973604863844436, + 0.006019004888639828, + 0.004447066100230975, + 0.003823486303599347, + 0.004368254171210255, + 0.0023612201033394913, + 0.00120193707931972, + 0.0027014250428420376, + 0.002786824031244837, + 0.0030452600417628867, + 3.9211543528600544E-4, + 0.0023775946259119466, + 2.0738343968533605E-4, + 0.003524396942037922, + 0.005646793151945366, + 0.004137501673488062, + 0.004237454635529368, + 0.0042627381161156564, + 0.004694565975516046, + 0.0046566398434008645, + 0.001309601716938565, + 0.0010680942704288335, + 0.003140192522930553, + 0.006647000239168794, + 0.006022070793028961, + 0.0022091462369166178, + 0.0016744690179411686, + 0.0018803293762040514, + 0.0034302424398485365, + 0.002964243656755623, + 0.004348493918695652, + 0.0022330762017858962, + 0.003515754348384455, + 0.002852969472138884, + 0.0033794468650890845, + 0.002328067407632454, + 0.00410664120467876, + 0.0035376024779082884, + 0.002786791947867783, + 0.0030921483773116575, + 0.003180876034990812, + 0.005494890086621416, + 0.006580688633978253, + 0.004342215512405699, + 0.0016268627352269058, + 0.00510673491611974, + 0.0038608515517603997, + 0.005653685887776361, + 0.004038998819893506, + 0.0021618607434230417, + 0.005249611203725283, + 0.003200743427414741, + 0.0034632563521736263, + 0.006290279016693498, + 0.009644311341615154, + 0.0021681783667036815, + 0.00384454150554941, + 0.00780215549304233, + 0.0034433827100151535, + 0.001677438617671917, + 0.0055527227262520094, + 0.0012878205939693837, + 0.0026591592504913732, + 0.007209038316170843, + 0.002366798246683153, + 0.0024907355121985848, + 0.003167105879994384, + 0.0012324620048754973, + 8.700648851187951E-4, + 0.0044559330540752, + 0.0041432287119939105, + 0.0035645216822482303, + 0.0021734550009585366, + 0.003517673319549147, + 0.004806155056981715, + 0.0015477517612610349, + 9.34178474447719E-4, + 0.0029068477231630136, + 0.002242384000529776, + 0.0028983406652144873, + 0.0035864366471655535, + 0.005230097477267808, + 0.0015435562600553672, + 0.006662680914513118, + 0.002278061137150856, + 0.0026488304186734215, + 0.005000193739613166, + 0.002495008113409389, + 9.761249230785579E-4, + 0.002268610748558447, + 0.0019198610092817715, + 0.005932663428073984, + 0.005003486623951893, + 0.00478171421658886, + 0.0025284539379249395, + 0.004361332600730687, + 0.004478687111329222, + 0.004514254199865949, + 0.005922440969321295, + 0.0032403118064253627, + 0.0020867891387442803, + 0.005728118377205963, + 0.006446141330002738, + 0.0013361668229530108, + 0.0021816901757242247, + 8.473165017483783E-4, + 0.005497044394964042, + 0.006236380706030657, + 0.0038263302745826454, + 0.0057957382688773665, + 0.0033259418706130827, + 0.0023329213029520037, + 0.0034825215029271727, + 0.0010640337936976064, + 0.005747800129291012, + 0.006111603671272432, + 0.003232687731699526, + 1.486832122398928E-4, + 0.0050173171912252, + 0.0038513497536928447, + 0.0020210236832042057, + 0.0031212238067871295, + 0.002346376544461181, + 0.0066448655893538286, + 0.004049595470050322, + 0.007631793342363762, + 0.005805514607758665, + 0.0033764554154028037, + 0.0015691346125714285, + 0.0038533083336584747, + 0.003479076625946174, + 0.0017788549067680973, + 0.0023739191439947826, + 9.498952218582674E-4, + 0.004016022435629264, + 0.0015829462871494084, + 0.0010716955892913873, + 0.0021267611511886944, + 0.0025277450750519088, + 0.003927490935474649, + 8.57798388274526E-4, + 0.0012647831760638634, + 0.0048281660012496974, + 0.003830985479044884, + 0.0038975288283426327, + 0.0022972625015485475, + 0.006154386911904847, + 0.004191708497109295, + 0.0015878735662350379, + 0.0025787027881758523, + 0.0011793386253018887, + 0.005363962375488363, + 0.002998987905075546, + 0.0019143060185165487, + 0.0013751261430309282, + 0.004774305975720306, + 0.005373612076949538, + 0.003251069001809195, + 0.003267097353312957, + 0.001976007074463931, + 0.006387995453568097, + 0.005136522041411193, + 0.006007683692209743, + 0.0014590685250961655, + 9.328223470287463E-4, + 7.534384908990528E-4, + 0.0019371874150204257, + 0.005121401341913466, + 0.0025042588324767174, + 0.00205091369014771, + 0.004763896765999372, + 0.004204740214227306, + 0.004712532316215521, + 0.003583653269116915, + 0.0014453747663661861, + 0.005454597823099972, + 0.003008023095902699, + 0.004960509912502784, + 0.00465727414704223, + 0.007110333480806571, + 0.0022534011061408656, + 0.005798530557735359, + 0.005334083545913476, + 0.0042328989323880805, + 0.0033941037181982187, + 0.0043922634512004784, + 4.5686150523465953E-4, + 0.008206836813505772, + 0.0025037489581863606, + 0.0014233738509279428, + 0.004409049015068352, + 0.004384484899560599, + 4.872952844873789E-4, + 0.0049955283783085416, + 0.004328871300231907, + 0.0033532584886999148, + 0.003456400465358551, + 0.0030192220481365085, + 0.005338616257425294, + 0.005178048203412555, + 0.003346134081146812, + 0.005065167870751768, + 0.0013880220340629899, + 0.0014549451888560755, + 0.002711569181293339, + 0.001173664308778736, + 0.0022062334886837104, + 7.219940816635483E-4, + 0.0033895530137411788, + 0.0053134984749971005, + 0.0024248730289403706, + 0.002439665247785469, + 0.004558330813765822, + 0.002154610207848966, + 0.006778814838550105, + 0.0019466316129326026, + 0.0023168558741710346, + 0.002621930949131028, + 0.004771007476529493, + 0.002187408286990278, + 0.0025276424068278983, + 0.005219220686335717, + 0.0017584314984997484, + 0.003522930331164578, + 0.001858698411249473, + 0.0025039213641330324, + 7.062158448334954E-4, + 0.0054319209035442115, + 0.006520075171806275, + 0.006057604733795691, + 0.0025876999762417478, + 0.0023907213119722854, + 9.690835707126031E-4, + 5.887079689922527E-4, + 0.0031964550385747688, + 8.67874839013236E-4, + 0.003578047612453702, + 0.005121632672218543, + 0.005290208015003199, + 0.0065296972000375335, + 0.003284799448496155, + 0.005342785415201897, + 0.0046758275186971855, + 1.5371807625526462E-4, + 0.0031989548699490385, + 0.0012179452322141726, + 0.0022235731034467385, + 0.002635030655153453, + 0.006197085911382789, + 0.0031687452991695305, + 0.005051883790518064, + 0.0034279418428589197, + 0.005419184667274117, + 0.00381008921305496, + 0.007594913435945157, + 0.004978193063592758, + 0.005281088059781789, + 0.0025807353106883546, + 0.003204907758433825, + 0.0011765600309084784, + 0.001290479960496302, + 0.0038526756240398565, + 8.202029815713791E-4, + 0.003037364132357634, + 0.002780672056515766, + 0.002150212284472433, + 0.005877408862398218, + 0.0031213573525393718, + 0.0014535395177103349, + 0.0010314974874790182, + 0.001975328866039797, + 0.0026147579397686, + 0.0031940727743505573, + 0.004812882227626376, + 0.001995798763742972, + 0.0014061842779999798, + 0.0023837125700936893, + 0.0037917452472878213, + 4.3067955594150345E-4, + 0.0014403066797734467, + 0.0035498123633538863, + 0.0025939543678026975, + 0.003688325476185351, + 0.002084501631246112, + 0.005306851005542728, + 0.0011348866973875998, + 0.0037688814639592577, + 2.2494330898747096E-4, + 9.002894663231589E-4, + 0.0013386064718441035, + 0.0019435557461032539, + 0.002764810351210552, + 0.0029487793238396616, + 3.3762959498809714E-4, + 0.0013119556016037476, + 0.0037889139304272553, + 0.00399425908444854, + 0.0016966239820313282, + 0.001398063159887344, + 0.0031786594013418386, + 0.0026502863546623047, + 0.0031019849591453316, + 0.002292304613114518, + 0.00191282351862536, + 0.0037047841475543247, + 0.0017325605777349202, + 0.002880361599524004, + 0.002560865302983117, + 0.005440171303530472, + 0.0013641218902410985, + 0.0018665344316322432, + 0.0024633001019491053, + 9.774196875625499E-4, + 0.0032141518370868063, + 0.0025190438825163338, + 0.00197992380533925, + 0.0024868918268827044, + 7.502575438481054E-4, + 0.005634338235864669, + 0.0025712652665957846, + 0.0014273409353974887, + 0.0022141415914928154, + 0.004780814684380811, + 0.0010852687560893531, + 0.005933082422993858, + 0.0026177046999140913, + 0.004559449338916499, + 0.004066284311663415, + 7.89530420385103E-4, + 0.003189140781154814, + 4.4311067649586527E-4, + 5.116283156257821E-4, + 0.0034167967076647837, + 0.0016509458575067427, + 0.0015992681819531783, + 0.004001502967591507, + 0.004672473994914432, + 0.0026881992851938733, + 0.003904017837826254, + 9.71260506642328E-4, + 0.003105365383037294, + 0.0014660518334576108, + 8.56387979159776E-4, + 0.0036258090286450605, + 0.0012858946720871733, + 0.0013096344525569672, + 0.003043809492023406, + 0.006138123938062466, + 5.378291454968633E-4, + 0.00332412751403137, + 0.002804827887308123, + 0.005551012873157962, + 0.0011441748104319897, + 0.0043224684437198745, + 0.001419605493251116, + 0.0016825326243532226, + 0.004370576307834321, + 0.002303754736253676, + 0.002324415130490545, + 0.0038751667067570407, + 0.0030453580676870853, + 0.004853333990396272, + 0.0028466286858669443, + 0.005251224071926151, + 3.883038340129744E-4, + 4.4278945330969877E-4, + 0.0016154790392191103, + 0.005711490868988028, + 0.0023758739351112815, + 0.0038205988694848076, + 0.0044658100978924396, + 0.0036785019489870797, + 0.0022575422991761643, + 0.002673539839675487, + 0.0029346868484160077, + 0.004658769563665754, + 0.004669106381527121, + 0.004262401243021495, + 0.0021238563298728464, + 0.0010994057492286079, + 0.001548957246743231, + 0.003649893018714272, + 0.0026800597212471742, + 0.0016323577968503792, + 0.0037720563476586638, + 0.006086169849824415, + 0.005131148548980257, + 0.001927399167233019, + 0.0034349163071547336, + 0.0031534580341540585, + 0.0024631821063802904, + 0.0023057805644693743, + 0.0015087213689122302, + 0.002337368557385562, + 0.0032663155181507386, + 0.003291220798426288, + 0.003696015143753568, + 0.00419851251088964, + 1.8782457809563417E-4, + 0.0023656570437624864, + 0.0033120805498882745, + 0.003309085680803357, + 0.0045839402342177414, + 0.0013953234442903905, + 0.004322595525863192, + 0.0036892739047150913, + 4.86485287825811E-4, + 0.007365448213111273, + 0.0032752253560224703, + 0.003702892386511442, + 0.0012137783597848753, + 0.0014242554701598665, + 0.004595268638534985, + 0.001323535313705759, + 0.0015760654639474835, + 9.263548400129768E-4, + 0.006419942385525341, + 0.0015540495679152557, + 0.003986877131699862, + 4.4398096699694125E-4, + 0.0023786836270485406, + 0.0016469675642791705, + 0.003046828152148976, + 0.0020800850701819303, + 6.280937377525041E-4, + 0.0012979143995352565, + 0.0024341698595617507, + 0.005500343126068477, + 0.002325647889081503, + 0.0019113438418752293, + 0.005046769477827186, + 0.0044339616350381065, + 0.003716368204944775, + 0.001240726809068913, + 0.004157348569314285, + 8.757470661530598E-4, + 0.0027661174283919285, + 0.001848462628293345, + 7.936794305758186E-4, + 0.0021987729137547727, + 0.0033841178003869246, + 6.552203073596467E-4, + 0.0028626802326307834, + 0.0018165759369296434, + 0.0014626951687730112, + 0.0034257507991302103, + 0.0035175167406419866, + 0.0012237561368044325, + 0.0020739395100891956, + 0.0029285376790756145, + 0.0013099212264706445, + 0.0017954898506644713, + 0.003678370099266994, + 0.0033561384198890856, + 0.001970599977981059, + 0.003030099286096934, + 7.200650637248801E-4, + 0.0025062774140737635, + 0.004957282376988006, + 9.981988579982998E-4, + 0.001686263454764479, + 0.0013923317802042384, + 7.887581190554892E-4, + 0.002297232822015367, + 0.0015546735019530318, + 0.002945069175493017, + 0.0027558173523459578, + 7.443244044820128E-4, + 0.0017607410457901238, + 0.0036542919341986, + 0.0040282864892472485, + 0.0010789286425581578, + 0.0012970912625520218, + 0.0022082137550788875, + 0.0018769395375735339, + 0.001460723153209494, + 0.0016415614831059259, + 0.003394336702658748, + 0.0020103034037832553, + 0.0028085803229237183, + 0.003619451732946504, + 0.0037467813686867754, + 0.0027759373148099104, + 0.004897970567838465, + 0.004281006492778325, + 0.002827358571751035, + 0.006514975957244376, + 0.003043392176501534, + 0.003441390490283431, + 0.0019390181455482053, + 0.004318536021947104, + 0.0040465678790100115, + 5.916623140671256E-4, + 2.3235411716006967E-4, + 0.0015696171386491602, + 0.0030066061265733228, + 0.001340330412341426, + 0.004309990378297325, + 0.0011841120584848745, + 8.901615575867412E-4, + 0.005917092599045187, + 0.0020139342777722286, + 0.0017399477593572864, + 0.004005685622920887, + 0.004489884854067151, + 0.003265987019355493, + 0.004802600586090578, + 0.0032917246297108856, + 0.0046415368256393155, + 0.0018135602946507793, + 0.002088160315835437, + 0.004914999708371008, + 0.0027603605197288376, + 0.001658681089581128, + 0.001325675612959925, + 0.001991437084540488, + 0.0031235123148100367, + 0.008511062720459877, + 0.004409510755441274, + 0.007145559510129925, + 0.005500597081337436, + 0.001711094806447653, + 0.0010209348595618187, + 0.0011102936396193256, + 0.0035461089546271426, + 0.003360678175204748, + 6.921047058973121E-4, + 2.0834601876513944E-4, + 0.002003032711277427, + 0.0025280741833219045, + 0.002321932499840045, + 0.001206808244907585, + 0.0026678315653965554, + 0.0035931982256871536, + 0.0021405100025934033, + 0.006983987002431993, + 0.0012425584598095294, + 0.0031873512833646795, + 0.005183240874569243, + 0.0038909401737060303, + 0.004633221743455203, + 0.004698801253074919, + 0.002175324814397692, + 0.004314101104199755, + 0.00537796420461077, + 0.0016004311232465011, + 0.003678073908669545, + 0.0022559908055879594, + 0.0027467919293441855, + 0.004967220148456469, + 0.004920605158973533, + 0.0024280832074763266, + 0.004207682198545845, + 0.0035128073240202995, + 0.0015843083027186767, + 0.002596623958519123, + 0.004707706969001342, + 0.004023487275673078, + 0.004926748769510083, + 0.0014560440258880928, + 6.932171397903474E-4, + 0.004329901115974298, + 0.0028238012612138066, + 0.0015925929752339011, + 0.0019376721579774314, + 0.004246765090483177, + 0.0034158895845656477, + 0.0031594829579224756, + 0.002802177020377183, + 0.002248707844466565, + 0.005037369854826137, + 4.4584208396684195E-4, + 0.0015150366888866456, + 0.0014457186425758085, + 0.0015553652534709532, + 0.0053816349588088905, + 0.0042108342668228825, + 0.002034638997329257, + 0.0021833503991166496, + 0.0033001639968694933, + 0.0041598858637161345, + 0.002602933640087301, + 0.004539763093531426, + 0.0023129192899343553, + 0.003317010284829981, + 0.0028939849483106132, + 0.0038266376453784065, + 5.305261424711674E-4, + 0.002533810500210976, + 0.00174224279155417, + 0.002098193423881936, + 0.004314386453600737, + 0.001007459440473681, + 0.004168780279647475, + 0.0024511410509310255, + 0.0017615125001206218, + 0.0032421499196171747, + 0.0032862967676538916, + 0.001617686161357405, + 0.0030329735507448725, + 0.003963227203202374, + 0.0021159924121513045, + 0.0036140241181853105, + 0.0021396976491195193, + 0.003414854142651413, + 0.00226890728324888, + 0.0027973623713169744, + 0.002668750688533828, + 0.002373765880682627, + 0.0031748136204444244, + 0.0012513248644052597, + 0.0017847448986285821, + 0.0025195242936644734, + 0.004083575092951749, + 0.0017840630470580996, + 0.0032914153822700127, + 0.0017362372550793212, + 0.0017382863885029318, + 4.1012099646672314E-4, + 0.005659361689867404, + 0.0017673006900662982, + 0.0017785905521350992, + 0.0029332029711545754, + 0.0055494750915469635, + 0.002922313287873201, + 0.0023312201114737783, + 0.003435886437500137, + 0.0036279140388168433, + 0.0013815374527135845, + 0.002819765496408537, + 0.0013574485786882469, + 0.0042671796134532685, + 0.0038741339386996593, + 0.001659723611130863, + 0.004284207408129505, + 0.0022029801855294796, + 2.744244955890288E-4, + 5.803128835269155E-4, + 0.0045281140585360195, + 0.002309256288141806, + 0.0015000429176924744, + 0.002487751538994876, + 6.122345828707131E-4, + 0.0029277549856737643, + 0.0021792180008657325, + 0.0017686927395282098, + 0.002117659112658673, + 0.003114180382288685, + 0.0018670621122522542, + 0.002889913436040659, + 0.0010003227529078698, + 0.0017886289976563475, + 0.004246131179352983, + 0.0037722047255387054, + 0.0031691818470866513, + 0.0020720479556494103, + 0.002593390739167312, + 0.0021505862384781486, + 7.576363658693454E-4, + 0.0043776244294082, + 0.0024097628600829746, + 0.004808766463811371, + 0.001380454644767867, + 0.0034293121260891906, + 0.0029053368177100656, + 0.0032511553455944493, + 0.005026249766591682, + 0.004834004603554964, + 0.002364519455462141, + 0.003967158346563141, + 5.906349283490638E-4, + 9.477677774506621E-4, + 0.0021009852479172628, + 0.0028157521929096695, + 0.001905600629526637, + 0.0031927203197800883, + 0.007563336150652099, + 0.0017836513485890173, + 0.001719346919873976, + 8.081114502666774E-4, + 0.0029792013799873032, + 0.001088573248967407, + 0.001078200336907778, + 0.0073469620625386655, + 0.0037811568452568727, + 0.003217352036455776, + 0.001599500436249, + 0.0033075377390059616, + 0.0024240764376085738, + 0.004770801152520345, + 0.0031097175428359603, + 0.0017021471466604273, + 0.005329982949130472, + 0.0038942479636768215, + 0.00252290001313378, + 0.004440433641220104, + 0.002499717813430711, + 0.0019709677405593757, + 0.0051099181805534305, + 0.0012170992736829772, + 6.787100064365595E-4, + 0.00512053345151378, + 9.433501792125037E-4, + 0.003995838744445166, + 0.0033120172639614334, + 0.002943812159621672, + 0.003434180568287046, + 0.004180458184048223, + 0.0022185050266357734, + 0.0033733002032382635, + 0.005068086421956818, + 0.0024910732866981608, + 0.002114360909983419, + 0.0011209660810259999, + 0.002675850879773265, + 0.0030090258614085, + 0.004110861897029184, + 0.005481661363625832, + 0.0033464673334475574, + 0.0016957012328613723, + 0.0034556927078408404, + 6.825482211703866E-4, + 0.002667407120008002, + 0.0015657175899334995, + 0.0026433340804717224, + 0.00236599283115016, + 0.003601668762417422, + 0.003942058792451799, + 0.003195793904747673, + 5.603940081382174E-4, + 4.912308179083453E-4, + 0.001359368330024578, + 0.0027208294135388313, + 0.0019224588581275188, + 0.0037901813723275426, + 0.0023958279217603557, + 0.00624479363972347, + 0.0011012852477905548, + 0.0014915557898003843, + 0.005205270585626743, + 0.00342681421864994, + 0.0034522942695793955, + 0.003122111661182179, + 0.003084053469172553, + 0.0014959710090077395, + 0.00349469665651415, + 0.003062380871344856, + 0.002618577358683334, + 0.0014286555685780772, + 0.0038378916235856826, + 0.005943007401278072, + 0.004446501089150633, + 0.006434947016159055, + 0.006026447556977411, + 5.436883185095052E-4, + 0.0042349102293552385, + 0.0034736299250385477, + 0.0024599193930712007, + 0.0041179733675145375, + 0.004167870768039535, + 0.0019593566665394007, + 0.004646844543725192, + 0.002101868073799937, + 0.0011836257513994123, + 0.00477549783156962, + 0.004643174560533887, + 0.0014304050625038442, + 0.0026441304592801627, + 6.372930680908556E-4, + 0.005168334445033242, + 0.002771569085297236, + 4.389867127378434E-4, + 0.003733689043945155, + 0.004275559530280384, + 0.0031621827206928525, + 0.0018315483670223094, + 0.0038500088554966187, + 0.0032086699521904935, + 0.00379479582013609, + 0.006739982413484687, + 0.0015759068686260161, + 0.005171482586025179, + 0.0026410126893393815, + 0.001587304084990913, + 0.0037097132418441457, + 0.0029267071293957196, + 0.004024645689132927, + 0.00308482758621048, + 0.0020980268390086124, + 7.718367776771575E-4, + 0.002692929374623036, + 0.007671262856804689, + 0.005194183688339115, + 0.003305184610827908, + 0.004466069839427319, + 0.0043497301507657345, + 0.0028974338250397913, + 0.0034360225437040735, + 0.0033944314948600855, + 0.002920518275735276, + 0.002513983242110719, + 0.0012244544353938026, + 8.81571180995318E-4, + 0.0033503793024407223, + 0.0012843026919502742, + 7.617009055995279E-4, + 0.001677974054988996, + 0.0026390714424582348, + 0.0018080779439220915, + 0.0021662788005769136, + 0.004595387109012358, + 0.002737118837403262, + 0.0032311902017019573, + 0.0038815365483985333, + 0.002417336155320283, + 0.0033938433723667517, + 0.006439921985961674, + 0.0028029917423614105, + 0.0011864528276761214, + 0.0035532801536576272, + 0.0034152690484877024, + 0.003229821545364662, + 0.0032630359027303896, + 0.004731421506929072, + 0.004882797005099582, + 0.0018704712994913506, + 0.005990760030750981, + 0.0030855520861057632, + 0.0027512916116050174, + 0.0033135992722020556, + 0.0068557383867101735, + 0.004887365621115137, + 0.003120410015464968, + 0.00579363259152624, + 0.0039090233164730875, + 0.006861430494641509, + 0.003386565448369343, + 0.004661021825647525, + 0.005629890757349791, + 0.007423146677193332, + 0.005071412823983688, + 0.003514723766563967, + 0.004898591496678882, + 0.001988097395911264, + 0.0018247157374678448, + 0.003261034452641705, + 0.001799911163762113, + 0.0029226099209078826, + 0.0029447643623898324, + 0.003984625248737228, + 0.0041359085271414865, + 7.031946252557726E-4, + 0.002550930030315001, + 0.003450703064289333, + 0.0034896001971493106, + 0.001969786917560028, + 5.163097176887593E-4, + 0.0029622231467183882, + 0.0014571388770979, + 0.00292413175625718, + 0.0029914138706803825, + 0.001851867258909125, + 0.0022055101343945367, + 0.00252994662207698, + 0.003031166401390627, + 0.002118944781017346, + 9.860495373246354E-4, + 0.002172403961528892, + 0.0031422267343249933, + 0.0033224558744924418, + 0.003312301992994141, + 0.0028976678734539416, + 0.00206204434080955, + 0.002788973274480748, + 0.001506135048770697, + 0.004450730536113524, + 0.0014385132558486504, + 0.004124667291186329, + 0.0027873655925470973, + 0.0017976010221143997, + 0.002358556389260905, + 0.004544210138738934, + 0.0031999529685113343, + 0.0032519091896478416, + 9.952227945274326E-4, + 0.00311656482729428, + 0.002435999141290684, + 4.7671672278371354E-4, + 0.005005626899255336, + 0.002456419685697905, + 0.0041604379041388015, + 8.34953090951577E-4, + 0.0032271073837082803, + 0.0024382286721210205, + 0.002724455972571151, + 0.002536417265774175, + 0.0030506807412467207, + 7.316110236611508E-4, + 0.002976009178580994, + 0.0024133600296584504, + 0.004038975869415108, + 0.004539107007866827, + 0.002921633055130664, + 0.0016799016004673854, + 0.002582024141396761, + 0.007721968662756297, + 0.0030750228406753823, + 0.0021832374369795864, + 0.00599387323554816, + 0.008125477450023006, + 0.009752539168176182, + 0.0025226911672016827, + 0.005293682355948816, + 3.1501461301876863E-4, + 0.00243538663859101, + 0.007321999869682103, + 0.004584148331722855, + 0.0027678592987726578, + 0.003086127981758659, + 0.0031776282167971072, + 0.002409880133116017, + 0.0010225198686073156, + 7.379090564730649E-4, + 0.003402411308285097, + 0.0037966440856684203, + 0.0013024713448454228, + 0.001082384779764755, + 0.0033606419650990225, + 0.0016672964243252444, + 0.0028867211051226303, + 2.800079338538557E-4, + 0.0014299292337820579, + 0.001988784887754232, + 0.003148011034350907, + 0.0018601576410986825, + 0.002797626988636144, + 0.00271293852616052, + 0.0023362207055465365, + 0.0010515466907904437, + 0.0026616388647426213, + 0.0031183183606321987, + 0.0027206871150750335, + 0.0014523261475653311, + 0.00244198033756354, + 0.0019358706949362864, + 0.0028024107945975583, + 0.0019235242393813865, + 0.0023314958085193585, + 0.004887390270458289, + 0.0017275876780542831, + 0.002648753091571202, + 0.002331297832678981, + 0.005544182403335749, + 0.0027536176561636996, + 0.0010295964934539173, + 0.004847061136445443, + 0.0021102862793118795, + 7.266095534402934E-4, + 6.294227306140162E-4, + 0.004407564676595276, + 0.00445533825363583, + 0.001552968474941057, + 0.0018940612240673776, + 0.0011979852659145449, + 0.0020056533475858577, + 0.0023592351011464644, + 0.004387011672499881, + 8.000762503291726E-4, + 0.001768070934891, + 0.0017549128841921472, + 0.006019564510767892, + 0.002102808866456074, + 0.002398731587993992, + 0.0022580506763497507, + 0.0038509517155622132, + 0.004546121995256715, + 0.002349147152431224, + 0.0029063245029000207, + 7.186153366253685E-4, + 0.0037639013972529975, + 0.0016047656083018336, + 0.003400600411448049, + 0.0026542761076101353, + 0.003715798058896919, + 0.0014377695405375, + 0.0014671825777315373, + 0.004204396720881838, + 0.0050610670089796354, + 0.0031033054594075352, + 7.86074492428382E-4, + 0.00427595526507722, + 0.0015939131624946277, + 0.0026955165014092863, + 0.003254991201570916, + 0.003319865217958001, + 0.001931308951977814, + 0.0013361172794844622, + 0.0017863251785927015, + 0.0019281483803863181, + 0.0038843459080573346, + 0.0022456605667777923, + 0.00409134218981512, + 0.002029063188019744, + 7.73690451895488E-4, + 0.003305212176529505, + 0.004479972174649494, + 9.447198156030674E-4, + 8.298844257732101E-4, + 2.9998545526983307E-4, + 0.003975554305019316, + 0.002377590817087765, + 0.0036361244744268196, + 0.0030003443175763726, + 0.005085221811543162, + 0.002974018856668087, + 0.005150089078635514, + 0.0026164532983668203, + 0.0032035440365405623, + 0.0013587195318999774, + 0.0015502814128728205, + 0.0024263975114986744, + 0.003132659602767714, + 0.0017263320808440152, + 0.002964254828308317, + 0.003880228162129762, + 9.141416402656747E-4, + 0.0049516770364940385, + 0.0035757564588030553, + 0.003370152558223397, + 0.0013294159988257142, + 0.00168260083657179, + 0.008813411656422803, + 0.006007296347830016, + 0.009551721344383804, + 0.008721547937505089, + 0.007585900818766981, + 0.005660658455379847, + 0.007298986811971662, + 3.7395932044835024E-4, + 0.0014528026878484993, + 0.011688475619396465, + 0.012964892335747366, + 0.0027929242227792183, + 0.0057695185823961465, + 0.004139854629943535, + 0.005038805773795198, + 0.015512370114823794, + 0.01628626865970613, + 0.009054725902163295, + 0.0071982294629848575, + 0.001969032091343878, + 0.004115525163758706, + 0.003984013488505797, + 0.0014340860652330392, + 0.0018189801647167311, + 0.0022656670369707267, + 0.0026357471070472616, + 0.0034423718577719217, + 0.0016050676161740074, + 0.0030192088912248142, + 0.0010677016097394999, + 0.002500474723492017, + 1.4956875365142305E-4, + 0.002558926188352903, + 0.0011126116728387937, + 0.003655080581036245, + 0.003155093581508902, + 0.0025275336176907998, + 0.007040304809100232, + 1.6755411279913994E-4, + 0.0011543748070927486, + 0.004575230881693404, + 4.7449954587397924E-4, + 0.002915363997368075, + 0.0042040017387221604, + 0.0011083437063371354, + 0.0027367667272288677, + 0.0028983228804354043, + 0.0054988557420695685, + 0.0041561962661958865, + 0.00423893111838577, + 0.0035032580584226963, + 0.0029320194078779117, + 0.0038888468290230347, + 0.004813916562623608, + 0.0017939062803696414, + 0.007609858774401489, + 0.0036589602764443207, + 0.0025865435514473246, + 0.0034191732267104067, + 8.065943373249092E-4, + 0.0035406869148018986, + 0.005503927498941561, + 0.0016558037453245909, + 0.002243876861117052, + 5.722158655814457E-4, + 0.003309515228529868, + 0.003712136921661718, + 0.003849858117133447, + 0.0032158346983584794, + 0.0017200197398412828, + 0.002778515313785882, + 0.0011807372124615174, + 0.00445900713924376, + 0.002207769537804254, + 0.001054963378480007, + 0.001766697074368576, + 0.003835578455523424, + 0.0015233158950496138, + 9.866102092167127E-4, + 0.0019006564063135385, + 0.0011310287286134502, + 0.0032233831347365407, + 0.0021162552433977556, + 0.0033901597421689376, + 0.002132952143971579, + 0.0017031942484848402, + 0.0015690900595484321, + 0.00233280432311628, + 0.0015910027184023062, + 0.001025951641423934, + 0.00197843921592304, + 4.967605658116855E-4, + 0.0017332030565091706, + 0.00274960209662983, + 7.722662087475747E-4, + 0.0036026573533714393, + 0.003604701099070231, + 7.375329981438714E-4, + 0.0030380026311207465, + 0.004554450953622748, + 8.506704691501272E-4, + 0.005270594773981395, + 0.004266561427048341, + 0.0026501909843770167, + 0.0014929942380024366, + 0.003420044977448847, + 0.0026964611011766285, + 0.003492906628334905, + 4.8332155167561555E-4, + 0.0026423123932820796, + 0.0017398579481327386, + 0.002805583620888487, + 0.0026479943592939933, + 0.0028206577221871637, + 0.0015945942901175328, + 0.0034848443498786737, + 0.0021530425763835676, + 0.004834795210803566, + 0.003040462846433094, + 0.0013784610836374794, + 0.0037114690657348032, + 0.005771240950440836, + 0.0030001889893734274, + 0.005222299499353274, + 0.005997298160051355, + 0.006717924387444058, + 0.0016543305994951533, + 0.003271569510594816, + 0.007437477334897323, + 0.0013615101006471386, + 0.01060082404451543, + 0.008148144728032238, + 0.011420975233773382, + 0.006498313468873283, + 0.011048076811868299, + 0.012662061005323225, + 0.010415995105757392, + 0.009831032734263358, + 0.007479979969446778, + 0.004971905682723376, + 0.014304571012448402, + 0.011332147474629099, + 0.006319297107943038, + 0.011283215144931179, + 0.002966116310601006, + 0.005920592474733934, + 0.017322205045452635, + 0.024691091744811267, + 0.011651605784973353, + 0.007530774587206096, + 0.005303722786379905, + 0.008058253772016152, + 0.004492619646905336, + 0.006214976219957426, + 0.003019717989595302, + 0.004285207531326026, + 0.0020744352662001625, + 0.0028350178078663107, + 0.004915653914928806, + 0.0019033322657485963, + 0.0013323035973552215, + 0.001291467295687631, + 0.0022550403362944084, + 0.002275575480757128, + 0.0028386784082124906, + 0.0021309479587223673, + 0.004847456659241961, + 0.002871409392611438, + 8.194533303939162E-4, + 5.8479132533517E-4, + 0.0014419173736517903, + 0.005043287263603607, + 0.002030672607746426, + 0.0025134034554057253, + 0.0032711692412372762, + 0.0032625098039260796, + 0.004563108938992592, + 0.0042125853521528586, + 0.0022236432419041985, + 0.007034165846960062, + 8.803170083319676E-4, + 0.0032253336238081106, + 0.005095953340663929, + 0.003041242901868602, + 0.005351432860873679, + 0.005316360166420549, + 0.010956276971363827, + 0.009049617144204743, + 0.0025650896759360064, + 0.005745365693235926, + 0.0014888230249459466, + 0.006765268283732804, + 0.009198917414845627, + 0.00484858693205571, + 0.005063325252625714, + 0.003558357076404284, + 0.006155066866491279, + 0.002587940475836008, + 0.002159601591098576, + 0.002856250704683564, + 0.0018388392381224826, + 0.004057898582815445, + 0.004602969912140167, + 0.0029672528172088064, + 0.0011395555626060874, + 0.0031252600343055024, + 0.0021712789181251523, + 0.007772380672512383, + 0.004553874668156787, + 0.003820032838210314, + 0.002663177872590958, + 8.115828501294265E-4, + 7.542939203134641E-4, + 0.0012649909205159008, + 0.001262369858612822, + 0.001440298240470566, + 0.0023139741788423536, + 0.0017113707331039185, + 0.0035317716325547763, + 0.0011593075729821778, + 0.00428923811132389, + 0.0019102064188573347, + 7.665198492494547E-4, + 0.0026109779242528297, + 0.0023960933127869393, + 0.0023943452158984246, + 0.0038139015558913258, + 0.004879200680326719, + 0.0021283968415637677, + 0.003915838485860372, + 4.944083501267673E-4, + 0.003968657307531269, + 0.004808355514621268, + 0.0024754772702136464, + 0.0034151165514709394, + 0.0010236833135616468, + 0.002151408147408864, + 0.0010570023903291282, + 0.0036216817696513052, + 0.0023174563026233967, + 0.0015694048706552145, + 0.004062791104565119, + 7.99469403924855E-4, + 0.006718225102404366, + 0.0024997024907013835, + 0.008225364747082077, + 0.0017532104025519473, + 0.0032046865152847853, + 0.006523847026471209, + 1.8909599980990188E-4, + 0.0016649913552711202, + 0.002300488908583855, + 0.0010322607565707513, + 0.004191455122609241, + 0.002858070325516978, + 0.0013883794776559698, + 0.0012625953528169935, + 8.537506537880712E-4, + 0.002534480907950476, + 0.003904734220894923, + 8.911030692510265E-4, + 8.626193815950926E-4, + 0.0021631315485648333, + 0.0023360213913616195, + 6.888524857434094E-4, + 0.002616075277878904, + 0.010173256312438799, + 0.004278654893046038, + 0.0027439792093541106, + 0.002029245542127354, + 0.005075944362062729, + 0.0020502027915142392, + 0.0023333289783950607, + 0.0044154024775042286, + 0.004092037580435933, + 0.007002129374931366, + 0.005325340046648065, + 0.0037458752123980875, + 0.008733784353599866, + 0.004795780457819147, + 0.004076376648381986, + 0.003377201427708498, + 0.002481823814725146, + 0.004328305911973247, + 0.002215883138865839, + 0.0022004487249484375, + 0.0014609672798863696, + 0.0010427532157721985, + 0.002492019034731313, + 0.0029683551722151434, + 0.002637759743127448, + 0.0024904084852381747, + 0.0031120404664908034, + 0.0025943477250602756, + 0.0014072509217664083, + 0.003759310092413295, + 0.005083013321482073, + 0.002412345137692289, + 0.0034866049346729644, + 0.004128627874704666, + 0.0015988905961332209, + 0.0031280214894127594, + 0.005661380017419401, + 0.005809180413941333, + 0.003427536688212574, + 0.005609008554536924, + 0.011623684472390695, + 0.008907320812985385, + 0.00852472151461853, + 0.014040189022002502, + 0.014610168168200868, + 0.005376407825875097, + 0.014796386330818208, + 0.018630911094823524, + 0.013055823400943285, + 0.008308100692130988, + 0.010695922608856583, + 0.0215298947823153, + 0.01404698517400008, + 0.009258359094238855, + 0.010992122617439315, + 0.003224180567006997, + 0.018909980803611098, + 0.019764560285996477, + 0.009242506883773217, + 0.01167182452694768, + 0.006798484844723549, + 0.007245609605429289, + 0.006882088608200298, + 0.007315537092526608, + 0.005408510401684542, + 0.008526489302572268, + 0.005479561117327625, + 0.002164417521305616, + 0.004581598555945469, + 0.0026778270467786125, + 0.003541028748036468, + 0.00225363192959938, + 0.004389075263828503, + 0.0028136449448142465, + 0.0042731720945107885, + 0.0016809673612489372, + 0.00833566750291237, + 0.0039003370473672115, + 0.0041811816962625216, + 0.0018620240467970717, + 0.003075888913359572, + 0.004526332085286259, + 4.668401474474697E-4, + 0.0012478920183868116, + 0.0012478341292782304, + 0.003072537973367104, + 0.0030366426489794457, + 0.004765248655333451, + 0.002191839741986653, + 0.004348492554494616, + 0.003863328498033085, + 0.0037220114840039367, + 0.001977116400410391, + 0.0014238191331573727, + 0.005894465379353648, + 0.004236172474558279, + 0.006860170692996664, + 0.004475038627624777, + 0.0035908922894058717, + 0.0031232038805583296, + 0.0058878455204087205, + 0.006171917698120322, + 0.004647896775615751, + 0.003570904760515397, + 9.12743537865859E-4, + 0.001075374918544975, + 0.004292139259140347, + 0.005430801573799616, + 0.003574213024708627, + 0.007121538333589854, + 0.003468066763645013, + 0.006630149100724787, + 6.839163277248312E-4, + 0.0040674017129715785, + 0.0037602940704532374, + 0.004505946255797045, + 0.002048399823001136, + 0.0032348657603262668, + 0.004742820293870741, + 0.0028934140032875187, + 0.0043040612522000764, + 0.0020693010952195974, + 0.0034469774842649783, + 0.00459916528889918, + 0.007085229097211484, + 2.516071755188394E-4, + 0.005315040358371491, + 0.002442623558311021, + 0.005763844918820198, + 0.0027055044625274504, + 0.004048051700314752, + 0.004490136352159217, + 0.004909279580904658, + 0.004265440922124146, + 0.0010033189977209844, + 0.005135441270825851, + 0.0044604979462669996, + 0.008536023576675551, + 0.0025290774208372373, + 0.0022280692847910185, + 0.0030043439624508846, + 0.0028056618508539416, + 0.008716124640950574, + 0.006283799192328993, + 0.0021780477001934018, + 0.0017525151070405174, + 0.005762670562680856, + 0.002986227562069635, + 0.0016972704504277004, + 0.0016080300154726354, + 0.00490298694714117, + 0.009262605825588213, + 0.007703493958583532, + 0.0032822623428531714, + 0.006825312218060379, + 0.001685265283750085, + 0.006114180413066454, + 0.002275749369260487, + 0.00499300279335263, + 0.00420329125071252, + 0.007844794184642437, + 0.0072630260379125, + 0.005899620660763699, + 0.0057036319251528135, + 0.0029200995723218004, + 0.0027240572038282375, + 0.0019102848019253767, + 0.004191569337951968, + 0.007557047425096646, + 0.011375391629200466, + 0.007695803188522379, + 0.017721181723310865, + 0.02069873158578772, + 0.014550017512871109, + 0.0321251874898769, + 0.02756778567969377, + 0.00940889266523004, + 0.02605423755989951, + 0.028910358298627703, + 0.02926662216222781, + 0.010833376068801446, + 0.018574208714474953, + 0.0428079746911352, + 0.022639794850987594, + 0.025361172668131673, + 0.020835882169302697, + 0.0016218260376055272, + 0.03740536529352483, + 0.04093058740369093, + 0.01876647027516468, + 0.021157867132627562, + 0.004795270384122517, + 0.009819299066280483, + 0.006854040358433622, + 0.008582156709497038, + 0.015892165768640755, + 0.012906646107201613, + 0.008156285948269011, + 0.0031402838970994895, + 0.003613145079406604, + 0.002826775940474043, + 0.00563269832384181, + 0.002130644891068322, + 0.005881308727340454, + 0.0021973747934409585, + 0.003151392424476522, + 0.0025413765376303427, + 0.007495092051787263, + 0.006698516647392397, + 0.007172044815015733, + 0.004380341573991278, + 0.0012584199936140318, + 0.006157515862845908, + 0.003933423725247855, + 0.0022072273968500532, + 0.0026669238841131385, + 0.003812023153556723, + 0.0028111730524409723, + 0.0057802514096023765, + 0.003060690604167633, + 0.0012395368223511078, + 0.005368142119200188, + 0.0020869474970218616, + 0.008206477103451551, + 0.002854377199300776, + 9.198885560245717E-4, + 0.004478074389117514, + 0.004690715797197455, + 0.0018292557254753667, + 0.0026196307728104558, + 0.0031756171219084655, + 0.004143759648846581, + 0.0023751314854194134, + 0.0013566086072067866, + 0.0023671501211402907, + 0.003048298048454034, + 1.6641026230607416E-4, + 0.0012964607353036363, + 0.0077180928310873085, + 0.0024930883572663017, + 0.00439310211530992, + 0.00460882425099337, + 7.67559371557322E-4, + 7.570683789547849E-4, + 0.001347160117883651, + 0.004847705034723407, + 0.0017698537191318728, + 0.004302867882252392, + 0.002343369586714642, + 0.005115908908328261, + 0.003783018566091547, + 0.0023570007080302197, + 0.001890809875237821, + 0.0011635722560660456, + 0.005040526544147521, + 0.004017655928533094, + 0.0026425363008139974, + 0.005493742339111159, + 0.0013832392952155873, + 0.002448613485189809, + 0.0038409416808889204, + 0.0019333485400118045, + 0.002576099740317628, + 0.0026656353810378397, + 0.004408251098140286, + 0.004601939317084294, + 6.902751714339971E-4, + 0.0022548034517644575, + 0.004359513223250764, + 0.0028865854826804647, + 0.002151186627463585, + 0.0010964728753223424, + 0.005928463021191365, + 0.002319172730787715, + 0.004180185492011653, + 0.004791555751761582, + 0.0055673007953469834, + 0.004779504452176759, + 0.0015895205636995311, + 0.0012051323571859666, + 0.0018634482504484417, + 0.0024070857181563124, + 0.0018835462264945092, + 0.002678977405433075, + 0.005677833408668635, + 0.005383033268473668, + 0.00398412920084713, + 0.0010466621020573349, + 0.003254544736857013, + 0.004345019450419663, + 0.006055950918854731, + 0.003871853033183831, + 0.004731914783004944, + 0.004264157313388079, + 0.006852680631192705, + 0.004571066037605914, + 0.0024193753619159977, + 0.004488715146812536, + 4.581162163740488E-4, + 0.00187226384616069, + 0.002200493626611553, + 0.003420978405779201, + 0.006940879010853335, + 0.006169097634024807, + 0.002739233526913214, + 0.00924311701254416, + 0.010417029784265473, + 0.0028233808981901302, + 0.004224945372436883, + 0.00761097066961702, + 0.010052520912265103, + 0.003841057544401059, + 0.004224564586928433, + 0.010046037388431434, + 0.004658216225079043, + 0.00608071039408507, + 0.0034049255840168844, + 9.56914253008343E-4, + 0.011919627028737468, + 0.010283565384263772, + 0.00444879685355414, + 0.005903131493540191, + 0.005027143280157737, + 0.0039940976422822485, + 0.0077941570297795325, + 0.006395346996407724, + 0.002858288601521371, + 0.0026826593804163083, + 4.612858216392605E-4, + 0.008387928765668668, + 0.007396656076639796, + 0.004774996954604882, + 0.006646598440039577, + 0.008017499032669783, + 0.004357005917242121, + 0.0031661915493739097, + 0.002395643464778024, + 0.007194481676730835, + 0.003330918534862406, + 0.003842520284366132, + 0.004752897984475293, + 0.0038287249146434056, + 0.005066654473132946, + 0.00250585790236879, + 0.002006504224572571, + 0.0014764350407872081, + 0.0033967597461659256, + 0.001442284082892309, + 0.006843977226775598, + 0.0023449561968448295, + 0.0026230046469937255, + 0.0016274915427564025, + 9.481299581727717E-4, + 0.0028634770373234483, + 0.002881842866115035, + 0.002430174223434668, + 0.00215273285969103, + 0.0027403984948804238, + 0.003866146009939571, + 0.0020344321031704094, + 0.005010171580211467, + 0.0027241752076640744, + 0.004852724898291296, + 0.002674702452273038, + 0.0032648941642347976, + 0.0021652394690581255, + 0.0017765403667400412, + 0.006601939619382662, + 0.0030363586829061625, + 0.0026337792208502436, + 0.004972531647970049, + 0.0016187587703364863, + 0.0064809326283309775, + 0.006036658974025723, + 0.0026809263813626486, + 0.001643385199476922, + 0.0038619009060014463, + 0.00239327466659957, + 0.004588135668214456, + 0.0034379121779310362, + 0.005040530307685432, + 8.77500470636552E-4, + 0.0029931143746648077, + 0.0020132262338303274, + 0.0023881656203246513, + 7.509344005755352E-4, + 0.004100062607901282, + 0.006966214381670815, + 7.172956878185099E-4, + 0.0014946089184816771, + 0.0036946533020885105, + 0.003942764132392405, + 0.0017116318694629287, + 0.001893052290376814, + 0.005897275239381939, + 0.0021029148951814524, + 0.0014638240639180892, + 0.002176664172517762, + 0.00210681412873452, + 0.0031384169845600197, + 0.006028991460119056, + 0.0020125288254045745, + 0.0010542168943896205, + 0.0018203220577824514, + 0.005162651973551545, + 0.0058376189128867655, + 0.0018958803569842737, + 0.0023392262713684076, + 0.0037674259576701554, + 0.0022433681683039245, + 0.002513749120168638, + 0.0035199251626574645, + 0.0019141487147694314, + 2.763462882327252E-4, + 0.0018423300004208362, + 0.004067034655598751, + 0.002005450856920319, + 0.006577931428530449, + 0.0021980322205784274, + 0.004905566616758158, + 0.003548489209855649, + 0.003637593582910733, + 0.004643848061214857, + 0.01151485268413108, + 0.0013728074678292634, + 0.005048953186989636, + 0.003427889032495022, + 8.661826274833543E-4, + 0.005599776656189534, + 0.004393079546253932, + 0.003464880791845132, + 0.004084970478361875, + 0.004663934414877184, + 0.00862798082015113, + 0.005137937560405947, + 0.0021747918523640744, + 0.005044436486165134, + 0.005441648924365362, + 0.006202644187991557, + 0.004646531785578433, + 0.004975004636651526, + 0.006554495731985523, + 0.0035481851334234955, + 0.001595717118931286, + 0.009648113551838722, + 0.003608367371076031, + 0.010386030186913885, + 0.002396154885631217, + 0.002505378736748528, + 8.730648010019979E-4, + 0.006587034043129755, + 0.002606521938790548, + 0.005169362570448121, + 0.00584432065896998, + 0.002637293342886348, + 0.0013975277209558156, + 0.005172933824760775, + 0.004704721316269894, + 0.009880690604327547, + 0.002495285274527746, + 0.0021834209910505356, + 0.003775740826380644, + 0.002713451647804059, + 0.002541433697691271, + 0.0028437460144026274, + 0.004510915467202795, + 0.003174260600969611, + 0.003307723553517969, + 0.00452755232849422, + 0.0011326346829385054, + 0.005484497210821682, + 0.0019352622721493843, + 0.00299737204411686, + 0.002119046121713601, + 0.0037185081321654055, + 0.00607695987818321, + 0.0028992225749922313, + 0.0020690477205796737, + 0.0032213000733841476, + 0.004757439355354668, + 0.0049317881731628785, + 0.002309089750143507, + 0.0020527941663255906, + 0.0035276178070039396, + 0.004124136728661106, + 0.0011111760213810414, + 0.0027085986861649725, + 0.0012694159283433613, + 0.0020278403283942267, + 0.0016129390994753482, + 0.005243725661121532, + 0.0036668252990405274, + 0.002700370511184178, + 0.0037148269399515446, + 4.1802564734544866E-4, + 0.0035592577277691667, + 0.0018550140016878036, + 0.0017057596625694828, + 0.0033448420699736855, + 0.00398205596538055, + 0.0017353610746566493, + 0.004578882745006288, + 0.002324229688834435, + 0.0016514849239504512, + 0.004627549510857288, + 0.004979169551035283, + 0.0013027151456976181, + 0.0073543292275539554, + 0.003073451482807659, + 0.0032315522270477703, + 0.005247994490406241, + 0.005829291328316488, + 0.002209474108984384, + 0.002318879513132033, + 0.005616383416236393, + 0.0022434809652607307, + 0.0029584309962403057, + 0.0071626238499224145, + 0.005459397598320984, + 0.002960088682792897, + 0.0033556465352811314, + 0.0026230952022822085, + 0.002731909609363976, + 0.002460767107914458, + 0.005335554698795432, + 0.0025131601081916583, + 0.0016498584008499259, + 0.0035992627093314688, + 0.0031356256219897765, + 0.005470341852741716, + 0.004485567904283324, + 0.003454023579819678, + 0.004574143735453763, + 0.0011273043639678875, + 0.002708564481951224, + 0.0070985780823244905, + 0.004531131097337643, + 0.003537158093967265, + 0.004828627450508718, + 0.006027447741338059, + 0.0015710012206934959, + 4.394759741295801E-4, + 0.00698271274676031, + 0.0015874704867603858, + 5.190122275338673E-4, + 0.004912174205671111, + 0.00872243659862879, + 0.005913761998860892, + 0.0040599558175010465, + 0.004137221285828721, + 0.0014826830317378025, + 0.006156654663609098, + 0.005310942539095174, + 0.0040319406496802735, + 0.006768571147190962, + 0.005399184260222005, + 0.012156772348349124, + 0.003975697390634789, + 7.827420264269609E-4, + 0.007326562343567412, + 0.0019007930378882, + 0.0073268234877837055, + 0.005221764048265435, + 0.008131790551501171, + 0.009071419104674313, + 0.001967554438409768, + 0.002350056090366554, + 0.004084217104706774, + 0.006130960756719361, + 0.005040908931905668, + 0.0029400754433711335, + 0.005502137806370773, + 0.005406728788722543, + 0.003165791611870783, + 0.007175792005611794, + 0.004713378604863677, + 0.0014566940297787057, + 0.0037842582627887595, + 0.005902686994344797, + 0.007659341420124508, + 0.0035236133164258934, + 0.006069196987522623, + 0.0032622593885181465, + 0.005448063974900195, + 0.002361666591057532, + 0.008648461510625805, + 0.0017928994725328557, + 0.005055439752500584, + 0.0022089237799088695, + 0.0014416537969196752, + 0.0010667388849009234, + 0.006048186752715678, + 0.00484848820537756, + 0.0040669006724837, + 0.0022773211323586185, + 0.006062364069213387, + 0.005689868140282931, + 0.002937833581902566, + 0.0020044927737347977, + 0.0078113006310996415, + 0.001472845489219797, + 0.0025475458880000776, + 0.005436204089569789, + 0.0012005854994944023, + 0.005940462146166855, + 0.0021248784513698557, + 0.001412739773613274, + 0.008082075424290767, + 0.008666975316596033, + 0.0032648358854714815, + 0.002148349653188391, + 0.0028815412391909726, + 9.172515776193896E-4, + 0.006667944759544432, + 0.0019068392581743808, + 0.002731884077982834, + 0.006415630954736234, + 0.003072781918857464, + 0.003165606705728154, + 0.0032814893588895785, + 3.117847221018964E-4, + 0.007593466266496101, + 0.004782573969094435, + 0.007584973868850588, + 0.002686916499712612, + 0.006510864131327663, + 0.0035854614503948255, + 0.002527264571006719, + 0.0055939827080158395, + 0.002716440529657175, + 0.0036956260634727445, + 0.0019773499069330055, + 0.0038387140703086964, + 0.003827216256482977, + 0.003854988968298563, + 0.0037962292210841427, + 0.004606894617548262, + 0.004057330218491937, + 0.00109048735059969, + 0.004234987907806684, + 0.004519506763095589, + 0.00360960380285458, + 0.006498002008986541, + 0.0046012200207296095, + 0.0032671146785764656, + 0.003821973954854587, + 0.004960471514994437, + 0.005760409026193676, + 0.005507808269059866, + 0.0015461324458205792, + 0.0038197800477116134, + 0.002741109089351747, + 0.002978794539848382, + 0.0011420416546655855, + 0.004082039483668831, + 0.0034655964021851676, + 0.0031134262813557584, + 0.0024227960137961904, + 0.0011549169798934032, + 0.005270243555769034, + 6.880507438641138E-4, + 0.003153248083387143, + 4.714714132865917E-4, + 0.004499842788044248, + 8.619850892235419E-4, + 0.00320303216018144, + 0.00692067635268757, + 0.005016604905139742, + 0.0048127056389778095, + 0.0051864468094127885, + 0.0014132489786971398, + 0.002458900603923897, + 6.084799118912909E-4, + 9.975335859704326E-4, + 0.002581436637539186, + 0.0016596232227488695, + 0.004079148259460628, + 0.003078595958933506, + 5.275207118380038E-4, + 0.002105266426576461, + 0.004880244033303303, + 0.0016862607199397684, + 0.003639549610985311, + 0.00684685208478952, + 0.0019508849297616873, + 8.920933368391715E-4, + 0.0027212155196755113, + 0.007165950649996424, + 0.0038565681101380696, + 4.2322872797755567E-4, + 0.005095402348269217, + 0.00298789475794729, + 0.0033876919660771943, + 0.00451257227796475, + 0.003132428055499329, + 0.007747435479270778, + 0.006211183903759687, + 0.004190901797436389, + 0.003398666847583503, + 0.006193924659739633, + 0.0042799376407460865, + 8.740366199726738E-4, + 0.004556213310319508, + 0.005657365983357655, + 0.0029914553526972235, + 0.0034082072385555697, + 0.004685207145039326, + 0.00222952038460444, + 0.004410354808085658, + 0.0037803259916514777, + 0.003128193417906422, + 0.006501912850884105, + 0.006118725167255102, + 0.0020046217109070453, + 9.780223456356293E-4, + 0.0033053608495535844, + 0.002933964373179528, + 0.0031395594674385324, + 0.0034654421547905163, + 0.001932312312477425, + 0.003575568238284312, + 0.0022506836811062685, + 0.00225214714762849, + 0.0015267612224525015, + 0.003330256515264457, + 0.0026839610150665378, + 0.004802641126839229, + 0.003693259321994776, + 0.0030682542814458465, + 0.002014433482586846, + 2.834755644517893E-4, + 0.0014408611745528794, + 0.002636572854327131, + 0.0044143925442247595, + 0.0025296826444855575, + 5.785377451781004E-4, + 4.0794062740981743E-4, + 0.003827809637598165, + 0.001862598081641409, + 0.0022177426061713882, + 0.002675281593908203, + 0.0017945771242313087, + 0.0025564954420272943, + 0.0021590434758124257, + 5.538804364284491E-4, + 0.0027738216319099607, + 7.586349066252717E-4, + 0.0028131363478871166, + 0.0016990194959697095, + 0.005486375048243441, + 0.0025586397204587735, + 0.0030340114483862445, + 0.0033811767612424797, + 0.005001222445035177, + 0.00407445130584778, + 0.003709970102486522, + 0.005414137639757861, + 0.0019687988656376344, + 5.172450366810416E-4, + 0.001876228740424039, + 0.002959979279996789, + 4.412275789503846E-4, + 9.014416113831839E-4, + 0.0014465300204542654, + 0.005051218797709185, + 7.34248919816209E-4, + 0.0022518860595868236, + 0.003703779773642617, + 0.0013040041768770238, + 0.0038531233770965245, + 0.0010586196163541181, + 0.002342853660070148, + 0.001696029030539433, + 0.0021310957145465196, + 0.002805056087998888, + 0.0029738057246668508, + 0.0038182592291138946, + 0.001621325202081306, + 0.00427231471979679, + 0.0020189818210084496, + 0.003549896922462452, + 0.0021085692820777186, + 0.0034713109671463183, + 0.002639944620678213, + 0.002040497630476644, + 0.002597738369766691, + 0.0037561101369430723, + 0.00423246046144467, + 0.003008338351833105, + 0.0042405543887512115, + 0.0035136270224807985, + 7.429346808353843E-4, + 0.0016777183235924548, + 8.074671812242754E-4, + 8.27829811008381E-4, + 0.0022457827389785897, + 0.00293818799271568, + 0.0017115370180007126, + 0.00373391882706256, + 0.0012050170000998995, + 0.003071879734711468, + 0.0018787096003052132, + 0.002441490608145596, + 0.005506410576622338, + 0.0031240787250143404, + 0.0012885031359349845, + 0.002134140075789872, + 0.0018390137679951486, + 0.003492217387280995, + 0.004711636982420215, + 0.0018244020000881137, + 0.002301729390583284, + 0.0023707686158523206, + 0.0026630514159430435, + 0.004266480429292899, + 0.006311731824551719, + 0.001457661717065432, + 0.0029736395025675693, + 0.00908226405104208, + 0.0074037466576431805, + 0.005665466553791662, + 0.0028137159782421857, + 0.008644778238176849, + 0.0028576057710248525, + 0.0033616610129967453, + 0.009080971076977272, + 0.00427308661710225, + 0.010929244385741353, + 0.007792781847760187, + 0.0027202290446911633, + 0.0077213077131992195, + 0.007572947007992921, + 0.01400248443174548, + 0.007937971649706168, + 0.012149203153379891, + 0.00309757523808463, + 0.0035660526755646165, + 0.002909150043483673, + 0.0020109761178058695, + 9.593152314073026E-4, + 0.00224166974674589, + 0.005366836527563786, + 0.0034350895425314626, + 0.0028907141985452353, + 0.0022038121365246287, + 0.004682902185405174, + 0.002530123028104516, + 0.0030285128755175974, + 0.004110366152205296, + 6.216492712959531E-4, + 0.0015896229700638842, + 0.0034368893366632657, + 0.0022289273135211738, + 0.0019062524887066233, + 0.0025749807679789414, + 0.004033750541686758, + 0.004874387136271963, + 0.0013986558067551316, + 0.0024647471222011114, + 4.364380996160216E-4, + 2.8063263448452065E-4, + 8.590090450188866E-4, + 0.0017214281010408767, + 0.002479030581615987, + 0.004480570411925756, + 0.0031504081434265392, + 0.0016181200577788425, + 0.003909261432079156, + 0.0017762812342328033, + 0.004090631267704446, + 0.0024005146547713243, + 0.0029887930664786277, + 0.002323958280128358, + 0.003027608949092602, + 0.004807115352203145, + 0.002639072338855399, + 0.005796517668892306, + 6.90023312729933E-4, + 7.247659467705411E-4, + 3.644552930265724E-4, + 7.217697830638306E-4, + 0.002204123540854382, + 0.005785087027871085, + 0.0013574147863615559, + 0.0022356083472795255, + 0.0025151885374921617, + 0.0026678327601825777, + 0.0013404335765589556, + 0.0031062517651534735, + 0.003974201270464954, + 0.003237117045182391, + 6.136499237754754E-4, + 0.002296817771458326, + 7.278409442588035E-4, + 0.0037567427145427054, + 0.0012928048591862567, + 0.005455001316564822, + 7.507761573805592E-4, + 0.004099739465957396, + 0.002158073642104189, + 0.0015968645896417338, + 0.004182516780557871, + 0.0014844637071492967, + 0.003895010498821545, + 8.228564629722324E-4, + 0.0016275017193147017, + 4.289250362242105E-4, + 0.0013820187750877972, + 0.002319206233150706, + 0.001988487586949879, + 0.0012055296021183828, + 0.0027723786278148776, + 0.0012345857202737485, + 0.0017766910937361184, + 0.001914284528565747, + 0.007374268343642076, + 0.002529116429053266, + 0.002742389312398991, + 0.0025217452436716694, + 3.8540215161665426E-4, + 0.0016173193919561423, + 0.0034233387512543254, + 0.002456082475986248, + 0.0030978409466806424, + 0.003536131395342852, + 0.005351645237811853, + 0.004916947468390478, + 0.002427126753176499, + 0.002374082498411731, + 0.001786769709762361, + 0.0012360652164701844, + 0.004060558052422351, + 0.0029076837567491996, + 0.002766301136732329, + 0.003063320286979323, + 0.003476246987893255, + 0.007895321208578812, + 0.004116409079740682, + 0.003863976232914748, + 0.001960846382598703, + 0.005519794905330545, + 0.003719822798885153, + 0.005235782686074327, + 0.002409875957450851, + 0.0020728672310286107, + 0.007239513209098841, + 0.0015629282593524038, + 0.004457101158796409, + 0.004337825534719652, + 0.004558480018284083, + 0.0018463221083182913, + 0.004456831558112695, + 0.008593220647026173, + 0.003092882923019447, + 0.003176230840651147, + 0.003230284987584389, + 0.0033605888597671284, + 0.0026541155775838938, + 0.0011991187992940826, + 0.0020013879279683305, + 0.002330639332419803, + 0.0035144623467626484, + 0.0044147506872915685, + 0.006423907724355016, + 0.00468984756015972, + 0.008190223108740286, + 0.004551105678438027, + 0.003356098528746278, + 0.004521854299424806, + 0.0012729798709476402, + 0.004137565551378148, + 0.0013900222991370837, + 0.005647255158340759, + 0.0038775305636178903, + 0.0029795934742722343, + 0.0023561676006332577, + 0.004308213554202525, + 0.0014971379597109415, + 0.006831845900974464, + 8.226269875465118E-4, + 0.001486824194692479, + 0.004152564146239702, + 0.004754646413190155, + 0.00129511902272303, + 0.003096908691615097, + 0.003951015799210822, + 0.0013789293989981835, + 0.002225527895322202, + 0.004528126341705932, + 0.002827300044988635, + 0.004880398818346531, + 0.0023565100529762007, + 8.89997686576662E-4, + 0.002672639048614096, + 0.005984455281004727, + 0.002725280669122272, + 0.0017929015776464285, + 0.0026615738248678797, + 0.0026053023284465, + 0.0011713853655382963, + 0.004641845199811834, + 0.0017113512805894246, + 0.0039638447552690385, + 0.003547636381124067, + 0.006072864756414848, + 0.0026309983680972166, + 0.004020287063362731, + 0.0038177324674555273, + 7.082354798996898E-4, + 0.0019847751031840024, + 0.004681254016720129, + 9.968239916813746E-4, + 0.006235128288407324, + 0.003250832381781474, + 0.0030659586054885292, + 0.004351771429810273, + 0.0024616801278930754, + 0.003417707234730246, + 0.002867008089693972, + 2.243803947901427E-4, + 8.26563071924842E-4, + 0.003907528603024093, + 0.0037434806124972196, + 0.002875740991755582, + 1.2738215388093793E-4, + 0.003507295479457114, + 0.0030076202138575947, + 0.0029167108639620324, + 0.0069324480421171725, + 0.003006013335496355, + 0.00688974599156915, + 0.004478286244899815, + 0.005945144479340075, + 0.0035121662241692714, + 0.005894021875198469, + 0.0029764884655096037, + 0.007649629064886206, + 0.00891055542997443, + 0.005665779710224877, + 0.008271137191121753, + 0.001402122557506653, + 0.006174058218919166, + 0.003799207884154603, + 0.010262552935987003, + 0.011284191810803814, + 0.007778783652936548, + 0.01097499073155871, + 0.010621098072640785, + 0.014746307986712847, + 0.0114405239597844, + 8.229973285822327E-4, + 0.004779075486740775, + 0.007560590845404747, + 0.0025503531041507605, + 0.0035534798006717693, + 0.005525286330246681, + 0.005195086291014064, + 0.004998431109808859, + 0.0032584265841147423, + 0.0043596785818047325, + 0.003643639712819315, + 0.005680087016637347, + 0.0016362366863659405, + 0.0034172650644524495, + 0.0016664597703536785, + 0.006438953861590553, + 0.0016038403330356642, + 0.002682870725883376, + 0.005148746033322877, + 0.006492149228569742, + 0.006020114422174401, + 0.004892828104721773, + 0.003207288433271753, + 0.006086828283048451, + 0.006816317953169081, + 0.002456277567015671, + 0.0012289187964726607, + 0.0029549811461594007, + 0.0032866300343705086, + 0.006715841142927149, + 0.005436827266717042, + 0.007083668504943724, + 0.013261049339816079, + 0.004048569986695312, + 0.004178557171746475, + 0.006387679171644253, + 0.008161147673196976, + 0.004121636463242841, + 0.0021933640299619892, + 0.002864329940689453, + 0.0015185260630623295, + 0.006924287196592612, + 0.006563955630742272, + 0.0022558896733377736, + 0.00527321387252391, + 0.0027090416375335, + 0.0036847600786900046, + 0.0034270889948449083, + 0.0030670191520338875, + 0.00609184674730245, + 0.0023327399139987147, + 0.006412585163263304, + 0.0037265094486141114, + 0.008451273315139474, + 0.0024391795353696333, + 0.007431270665870969, + 0.0050618346590995495, + 0.00623528237752984, + 0.007167322902048531, + 0.004014871660083701, + 0.0044515478773070605, + 0.006582278768403486, + 0.007006553887431705, + 0.0020734100879562668, + 0.004492953993203175, + 0.005305258325590268, + 0.005857814148710349, + 0.0019370922384907053, + 0.002177566899571635, + 0.004041224115456777, + 0.010857004993326012, + 0.004638406321319683, + 0.00523283842489727, + 0.00786864062638733, + 0.0017646798643295557, + 0.003411615122224349, + 0.004256329915145182, + 0.0076978317995034665, + 0.002102796769899166, + 0.003350469123571252, + 0.004890163876297262, + 0.003458291293511237, + 0.0014234477949777087, + 0.0014440646301422536, + 0.010640762321659388, + 0.001439393915076297, + 0.0035255324780187874, + 0.0061781131150228505, + 0.005097949399498999, + 0.00637234744863052, + 0.0042142680341827774, + 0.003934926392123419, + 0.001795884800511874, + 0.006428390909776208, + 0.0028987291669190372, + 0.0030559086959787538, + 0.006392056387958614, + 0.0013143345845537783, + 0.007013508532226018, + 0.005356642230091853, + 0.003719982954613405, + 0.00944741996767979, + 0.004863370895386531, + 0.0049998177970626365, + 0.0036991703620614072, + 0.0028192850134771477, + 0.002978438789743652, + 0.01015242876078234, + 0.005674259879544937, + 0.001966232110443945, + 0.007501428359812057, + 8.106201840924232E-4, + 0.008111349734826096, + 0.004864782514258567, + 0.006356447401163513, + 0.0050801855182641695, + 0.001685883145391558, + 0.004670902986920582, + 0.006368645633904884, + 0.004494043874881779, + 0.0027413572776505734, + 0.00623349998586033, + 0.005649465513324595, + 0.00662953014969881, + 0.0012273017009962175, + 0.006888370764341017, + 0.0017321698412031824, + 0.00519667098748473, + 0.0038283272912089973, + 0.005824134047628664, + 0.0034289770254162535, + 0.004633782153139191, + 0.006518625698196897, + 0.006223675193937068, + 0.0037749046891142725, + 0.005886782221847968, + 0.005276728938668084, + 0.005436331549922847, + 0.00482737936905649, + 0.00497888565048439, + 0.002877941942118849, + 0.004433665117494439, + 0.0029176441569745953, + 0.004567274579268991, + 0.002228935274059907, + 0.003996274736320474, + 0.004502571933507816, + 0.006317877109399356, + 7.200824659686965E-4, + 8.10264194809767E-4, + 0.0062538684016988375, + 0.00263424496653426, + 0.004198419363156057, + 0.005576471919413431, + 0.002237393240142488, + 0.003158152404925398, + 0.003694834001893521, + 0.006224515993369311, + 0.0046372246288872146, + 0.0028106967560176262, + 0.00382672650634282, + 0.0012624912106249447, + 0.0039973143798271, + 0.005867913090909823, + 0.005521348868673815, + 0.003598780124804738, + 0.005120370281877164, + 0.008471277694280408, + 0.005410510064231845, + 0.004065250654003644, + 0.0046455844318439585, + 0.005270441397067274, + 0.002437370517382156, + 0.004657568931243139, + 0.007296719983083367, + 0.0022636141497414867, + 0.0029700974724407763, + 0.002380350750278911, + 0.005553356325734515, + 0.0024110939801591773, + 0.0023770129671790968, + 0.006193864322656704, + 0.002972781619150774, + 0.004203334361844232, + 0.0034299963300667906, + 0.004537559012907287, + 0.004483249487020522, + 0.003261957043119005, + 0.0027123902627483095, + 0.002733911420956195, + 0.0034169323406081768, + 6.745745096072595E-4, + 0.0033253340151038297, + 4.52512265395163E-4, + 0.006609989224090388, + 0.0037617029277434823, + 0.0010958434113770177, + 0.0033585133751296743, + 0.0020032229830024705, + 0.0043237021222263606, + 0.004041703245454534, + 0.0031496586251536078, + 0.00692893366703532, + 0.0016127977811490083, + 0.0019024839625253922, + 0.008355304916174198, + 0.008336260295130628, + 0.003693447897329403, + 0.005956905451574014, + 0.001708888338898457, + 0.00508050582017012, + 0.0020471697832467263, + 0.0014933033071283912, + 0.00382069088672224, + 0.0022161195826690505, + 0.006728492450557209, + 0.0034028516744077134, + 0.004868762306285508, + 0.0032471321513052134, + 0.004100484397340881, + 0.005529182792632314, + 0.004479546542920577, + 0.004478005277431436, + 0.003409743350218169, + 0.0035949137830185, + 0.0015155559731742333, + 0.0030833508458998835, + 0.007296111264172866, + 0.004142366504685538, + 0.004376967280539785, + 0.005653029568062008, + 0.003075919155914303, + 0.0034934513174115075, + 0.006415908063892434, + 0.0028987232393644004, + 2.992798680824186E-4, + 0.0031244477045108874, + 0.0017589062785681089, + 0.001588884758263824, + 0.004140409962737138, + 0.0017572469676204684, + 0.005142783633578852, + 0.00285935060223266, + 0.005372189921156142, + 0.007060191792356644, + 0.0010907348558578723, + 0.00407306717205302, + 0.00286769829556062, + 0.00321931392953714, + 0.002331058276700278, + 0.006235467255268668, + 0.008419570642794161, + 0.006621312050819258, + 0.004473319270888618, + 0.0022482365513008824, + 0.00450719305658965, + 0.002046573571768913, + 0.0044111286447788625, + 0.0033480950565506124, + 0.003098577113850512, + 0.002626913984994214, + 0.003248994359043079, + 0.0070938581472024835, + 0.0017811950104014507, + 0.003687370414923726, + 0.00714359142177301, + 0.0021230294301662774, + 0.00640365456287138, + 0.004329294007387646, + 0.0034226845433936908, + 0.0021490394729974543, + 0.0075376884531298165, + 0.002878037045415659, + 0.0030758249634347886, + 8.90467655140999E-4, + 0.001520502605952852, + 0.003911179340124857, + 0.0028781193944635523, + 0.0047102665679803705, + 0.001099951401278088, + 0.0041748889953815965, + 7.547647182832781E-4, + 0.0018570080152381604, + 0.003547271765102104, + 4.0272186142884973E-4, + 0.003239241876267753, + 0.002117632051029152, + 0.0020038484312048122, + 0.004145783880406739, + 0.001663992885763461, + 0.0024482741870010907, + 0.0015265037589570639, + 0.005114416956334918, + 0.0036913689530230246, + 0.0013661691243685439, + 0.003262002775803629, + 0.002515557304785219, + 0.002534682317885399, + 0.002751216729668285, + 0.004099299508405691, + 0.0035467595124631652, + 0.002487727028497463, + 9.037898863559439E-4, + 0.003428929206498182, + 0.003016867949275351, + 0.0032351831172443405, + 0.006083421555712673, + 0.004440961931688493, + 0.003602403255586628, + 0.001606259355080422, + 0.0019210934623660678, + 0.002324555956753844, + 0.0020675820029220876, + 0.002270249077608347, + 0.004177673347031913, + 0.0012646435166222096, + 0.0014979417395466644, + 0.00465634886265815, + 0.0018168501790937033, + 0.0022815911350456738, + 0.005429521641230712, + 0.0017362290058550618, + 0.0023513399560476083, + 0.00205579456313339, + 6.030581983406171E-4, + 0.002769404446364595, + 0.0019186534614370403, + 0.0020616770825254422, + 0.004608845327669992, + 0.0016717855894402196, + 0.005169436349361767, + 0.003392850350006866, + 0.004300981175904404, + 0.002312407239634678, + 0.0039032216306901725, + 0.006094679518174791, + 0.0015943066880528011, + 0.0037128812512200286, + 0.004110623676779946, + 0.0019303050997163344, + 0.0045312956782341445, + 0.0018147665343407446, + 0.005920666089116694, + 0.0051471048126037235, + 0.0036755040392775916, + 0.0039985388275936345, + 0.0012137203115787124, + 0.003072212868399139, + 0.0011013079252994477, + 0.0025345126497906623, + 0.0025609381324068507, + 0.001045931972717724, + 0.002169217736376156, + 0.003147472627016249, + 5.291114845197428E-4, + 6.128721340917983E-4, + 0.0026442110660951012, + 0.006198657308020138, + 0.004241328809397216, + 0.0046988637261073, + 7.135882217143191E-4, + 0.005526410658550993, + 0.004398529683306658, + 0.004755637048963177, + 0.00428431542879551, + 0.0043581982426482676, + 0.0030923431835479303, + 0.002787948899356723, + 5.198667434565808E-4, + 0.006007267212387605, + 0.004238432957097693, + 0.0044701357538003365, + 0.004420115869685805, + 0.00203819353248206, + 0.001544669995558444, + 0.003279937314608316, + 0.004109383446455326, + 3.556206261970537E-4, + 0.00505464596306123, + 0.0027321378184432194, + 0.006024529211322107, + 6.06376867755481E-4, + 0.003658283985142761, + 0.00537003021362185, + 0.006657360694190187, + 0.003685980159651866, + 0.004532045957948804, + 0.009195398793436905, + 0.004072954590131277, + 0.00704882953802312, + 0.005327803175797744, + 0.004111793348290997, + 0.0014683549050549707, + 0.001094408574264523, + 0.003364503473072753, + 0.0019265008192109361, + 0.0060647695770385274, + 0.0025465737878914508, + 0.0011195117382654298, + 0.0021315842083806454, + 0.00506892137311698, + 0.0026085923680230017, + 0.005344671318964714, + 0.0022626778896216245, + 0.0010811287593852862, + 0.0015234136463044936, + 0.00512497450227808, + 0.004743821237300633, + 0.003922798695946362, + 0.007293423550979567, + 0.002166958486197549, + 0.002176845257455324, + 0.004883454100606176, + 0.0015617053476716925, + 0.003687507087628303, + 0.005275954369442213, + 0.00425654675277672, + 0.006310918641594005, + 9.426168372546336E-4, + 0.0014830997786513243, + 0.0022039053410519063, + 0.002395714593910836, + 0.0028926914287621306, + 0.005174456514114277, + 0.005721644516183402, + 0.002124917456006207, + 0.005679896051387258, + 0.005603671810521708, + 0.0027369144076127582, + 0.003959424233701284, + 0.004456514477583152, + 0.0017113282447876765, + 0.004894467234639497, + 4.4712142220567724E-4, + 0.0037615801210984672, + 0.0023305387611894253, + 0.0026229925896475944, + 0.0031132933481455576, + 0.0033022416234270205, + 0.003979848167376695, + 0.0021654097341035046, + 0.0030747478068931136, + 0.002414865681492373, + 0.002262445453244707, + 0.0023936404444978056, + 0.0030795582304856835, + 0.004973200293520672, + 0.003740361458768346, + 5.498478532604842E-4, + 0.0038873130620584646, + 0.0012689896652816827, + 5.754214244238496E-4, + 0.005269486424413974, + 0.0017333693608592602, + 0.0021446969130610918, + 0.0029567575707474926, + 0.0016703838020778884, + 0.0034474710677861015, + 0.001207663877021292, + 0.004326264908029993, + 0.00300565180666543, + 0.004554308111715947, + 0.003705567941943379, + 7.693507718010738E-4, + 0.0026965388345357405, + 0.004308959082137772, + 0.0017667386801837506, + 0.0020944407024859417, + 0.0032427720994679726, + 0.006993137071940698, + 0.006454393763419793, + 0.004490441992105925, + 0.009019702896673813, + 0.007571910005783764, + 0.0061982502579999215, + 0.005621096278851966, + 0.005818060672191296, + 0.009326141854889624, + 0.004317971930533203, + 0.005101268030086905, + 0.005640884409829384, + 0.003619108240963778, + 0.00893113466620821, + 0.004952450073822186, + 0.006532377569573175, + 0.006777001583619674, + 0.001512599388073702, + 0.006151633368632128, + 0.0057449667076906906, + 0.00264861313070391, + 0.004272114925537471, + 0.008482595580809596, + 0.0071595301540280385, + 0.004944153754552006, + 0.004627246563321196, + 5.183611300155278E-4, + 0.006123576689923769, + 0.004008772351669647, + 0.002436472673562468, + 0.005374949165448156, + 0.00975984923815802, + 0.0047487582451907605, + 0.004108479156919306, + 0.004078894191868001, + 5.353344990887942E-4, + 0.0018423717671215126, + 0.003960346414010217, + 0.00520443683946915, + 0.00415393734339999, + 0.0018549977459403992, + 0.00439935125611097, + 0.0019845314731772, + 0.0048063057316240065, + 0.0037595247083878, + 0.0043043076342190205, + 0.002077614676319575, + 0.0013985793050749682, + 0.0036669078527583367, + 0.0047927872044731135, + 0.00173335894174631, + 0.003538975155464928, + 0.0034555901222621845, + 0.0021484944982339224, + 0.0033031713424092487, + 0.002373304418877642, + 7.7885551042907E-4, + 0.002660353662131289, + 8.610035016510412E-4, + 0.0011643849080772988, + 0.00407215929189329, + 0.003320995481606584, + 0.003139906822246587, + 0.003558380425728513, + 0.001769365819089241, + 0.0021411479882170376, + 0.0014223536991258136, + 5.379181342532529E-4, + 0.003220571625954758, + 0.003513235149528407, + 0.0027617133112957685, + 0.0030925182597456333, + 0.0013970316250314558, + 0.0016500391506826292, + 0.004318392526830342, + 0.001201202815503936, + 0.0031732761419365043, + 0.0029338401548215888, + 0.0013738600189865974, + 0.004852740607458417, + 4.33936228017603E-4, + 0.0010059542257458039, + 0.0033165774167987472, + 4.7680220666561845E-4, + 0.004449565332740128, + 0.0014874504893276504, + 0.0027771549744407312, + 0.0027032831858988873, + 0.001565715826610217, + 0.0024660664341647357, + 0.0023422702922223037, + 8.248477667652786E-4, + 0.0041501089179090825, + 0.004898209314496508, + 0.0024139503876606317, + 0.002876809325737055, + 6.957071387854046E-4, + 0.0020743195929573666, + 0.004187522626179723, + 0.0010052256385526222, + 0.0027390394681059715, + 0.0012434870124844006, + 0.003948161355635654, + 0.0026730038924976875, + 0.001964379535351792, + 0.0027485166483995683, + 0.0011880660983179662, + 9.215558792923505E-4, + 0.006958759606309792, + 0.0022580760595625983, + 0.004226923645249964, + 2.1121666258443726E-4, + 0.0022235534975276203, + 0.0028321956218296963, + 5.737809644904647E-4, + 0.0013545838585701075, + 6.949142183996541E-4, + 0.0018588494237764043, + 0.002277992479859859, + 0.0023391042434029448, + 0.0016266492851714123, + 0.003724127215665061, + 0.0016966774278646057, + 0.002421892930120197, + 0.002898426845648581, + 0.002269352602655691, + 7.9335478667399E-4, + 0.002239415066554415, + 0.0010196211895776108, + 0.0012063204557408787, + 0.002458133894169622, + 0.002436155875782822, + 0.003188250348087617, + 0.0033203034048671976, + 0.0014931106837256976, + 0.0012930449658097565, + 0.0012476524344285618, + 0.0016363708510526668, + 9.313649496762678E-4, + 0.0018693430264238864, + 0.0018855866020149675, + 0.00123060553112841, + 0.0018208025247513778, + 0.0032498007190339467, + 0.0036273341710202755, + 0.002973291168319782, + 0.002995973834121462, + 0.0018530051468796033, + 0.001789744472744133, + 0.002972011359260955, + 0.0030163672070382974, + 0.00129400945886481, + 0.0019099421572343343, + 8.514369867737154E-4, + 0.0017860434404073841, + 0.003914334677980912, + 7.073803280086173E-4, + 0.0015030775024791126, + 0.0016486320692105007, + 0.002085453638342342, + 0.002888276620394728, + 0.003986464169452681, + 0.0020613168715758207, + 0.0019111894090156666, + 0.0031250481059482776, + 0.0032710442183201713, + 0.0024947448677755594, + 0.0028944507010764623, + 0.0021702504028324543, + 1.5337857993228792E-4, + 0.0031604530653727425, + 9.900378762824301E-4, + 0.003233914887624657, + 0.0015096085747026968, + 0.001090248038149339, + 0.002055233524044903, + 5.411666595850797E-4, + 0.0013684179403252157, + 0.002459223801512154, + 0.0015829746572893811, + 5.19705092661611E-4, + 0.0023664470056978387, + 4.6883837307381925E-4, + 0.002840589924201729, + 0.004371370724468342, + 4.6971718802922395E-4, + 0.0013107188575529677, + 0.001450367807120791, + 4.1877609767400516E-4, + 0.0032658352689299915, + 0.0028376191650454448, + 5.056846384501348E-4, + 0.004770531690217747, + 0.0032515577207111786, + 6.583496210795578E-4, + 0.0026454170058106893, + 0.0037566372448046416, + 9.764064676662106E-5, + 0.0037323295772072117, + 0.0012554373936895658, + 0.002784598807152403, + 0.001231584694065605, + 0.0018254943194391932, + 0.001939354309110467, + 6.217012651064881E-4, + 0.0022170115449003684, + 0.002749969503125765, + 9.718702763349633E-4, + 0.002812431008313324, + 0.0025936580243879114, + 0.0027587265993408573, + 0.0015571694464680897, + 4.590335636047641E-4, + 0.0011749090146453648, + 0.0018396650954049436, + 5.387149029193469E-4, + 0.0016465964157452576, + 2.829445089059028E-4, + 0.0032376002589228044, + 7.847714185095869E-4, + 0.0016457260530739904, + 0.001481580475708987, + 0.005101931761614154, + 0.00288857354862143, + 0.003258215827278293, + 0.0017931044002690918, + 0.003815380232000172, + 0.001671496672060353, + 0.004007368378163626, + 0.0023049353467418754, + 0.0021158957727439795, + 0.0015010741863905879, + 0.0013205833595213406, + 6.611528060312943E-4, + 0.0024170138134600463, + 9.483766184456672E-4, + 0.0010022735364511517, + 3.1682663078565795E-4, + 0.0015765286319557835, + 0.0013298722753287597, + 0.0029455213983010605, + 0.0018249891294414965, + 0.002564930288391151, + 0.0015864206470075197, + 0.002573649663483139, + 0.00176522418137696, + 0.004859193551736099, + 0.0034596009441593733, + 0.004591624426789381, + 0.0020084037058605494, + 0.0042199322774919045, + 0.0011819701357633917, + 0.0029954256874056917, + 0.0018983374634106759, + 0.0014762244279479973, + 0.002326858633812649, + 0.002607914758218387, + 0.002218991335665801, + 3.487275326314294E-4, + 0.002564996626175711, + 0.00519128406115404, + 0.0015306211660524374, + 0.0011140891619029615, + 0.002083498035194537, + 0.0013669699769120764, + 0.0024412502597146086, + 0.003333118783451087, + 0.0047815242722680056, + 0.001303018697414412, + 0.0012233314423305025, + 0.004126045570869595, + 0.0017953949134444356, + 0.0035674286635333, + 0.0035114256323265274, + 0.0031639824895598745, + 0.005824918138701288, + 0.001379820838696895, + 0.0032609622954834477, + 0.002169341051390614, + 0.0022246171489791544, + 0.001612334389660417, + 0.0013543905164520957, + 0.002522684646929517, + 0.0021854696659926514, + 9.97817131908443E-4, + 6.25744802887538E-4, + 0.0031048695667682514, + 0.0015850740307504904, + 0.0019668369763222887, + 0.002497400883398647, + 0.003198945740035136, + 0.0019866929159184296, + 0.0014159804196244657, + 0.002404229549073225, + 0.003496484906095124, + 0.0026957522345232962, + 0.001884339341693008, + 0.0013760617683902386, + 4.6913140331083093E-4, + 0.0019197046928042492, + 0.0038859886634540937, + 0.0024586738686664944, + 9.514419712789732E-4, + 0.0020136033510697957, + 0.0019192631331862834, + 0.0025249366001949035, + 0.0010257971270096315, + 0.003205901412289075, + 0.0018169983773457673, + 0.001803433300702911, + 8.076336411808431E-4, + 0.0010978202449447125, + 7.421571119079351E-4, + 0.0033184399587137072, + 0.003123119611981435, + 0.002911990273694606, + 0.0031900556346810614, + 0.0021924462179014966, + 0.004831075851720828, + 9.173653281559052E-4, + 0.004728062467474375, + 0.0019111364821823153, + 0.0013295827783847305, + 7.744143600962255E-4, + 0.0031657434687525853, + 0.0012259015353249605, + 0.0036832871209867774, + 0.003066452150050546, + 0.003956341615775281, + 9.114398868613911E-4, + 0.0024512082256095678, + 0.003020031517087183, + 0.002425274450135304, + 0.003877737444540699, + 0.005031346792464877, + 0.005667860826525726, + 5.755966252800818E-4, + 0.005169000348220258, + 0.0012030456279774637, + 0.0013444552233452631, + 0.0019886527246063433, + 0.0036009188954125586, + 0.0052701259654313395, + 0.002359333459495308, + 0.003273704112581152, + 0.0033725269374680913, + 0.002027361275367595, + 0.0042901639455166255, + 0.002629752278488078, + 0.004421697315253814, + 0.001246858131780182, + 0.001232676410430788, + 0.00233131401664277, + 0.0023822967285118696, + 0.0015417222518476102, + 0.0025774285850068894, + 0.0019242559993788457, + 0.0011387907483111062, + 0.0027027736557718235, + 0.002839295020708076, + 0.0026001108807105506, + 0.002680249578461387, + 0.0018495653001140435, + 0.0017861581328726393, + 0.0020894817260200356, + 0.0025065760667095463, + 0.0024251029054407915, + 3.704322536113405E-4, + 7.094011192142654E-4, + 3.631548857334733E-4, + 0.0029691879335195263, + 0.003718961650112906, + 0.002068842828996917, + 0.0012485007325169178, + 0.0028757283928101496, + 0.002999773210315627, + 0.0032631882806158814, + 0.0029747000713069398, + 0.002766257621646086, + 9.494089288886589E-4, + 0.0015839002531902362, + 0.0034651675876530034, + 0.0016965438644339218, + 0.0022268487965531047, + 7.805474619670942E-4, + 0.0022721711627238603, + 0.002409000895449691, + 0.0012286183397190408, + 0.0016490694135002754, + 0.0038905208251628805, + 0.0010567300158862694, + 4.3606880736413617E-4, + 0.002254800844618352, + 0.0028127719106713534, + 0.002312024921080653, + 0.003434861210826608, + 0.008130294541226447, + 0.00684140423817495, + 0.0018309923935334843, + 0.0073303332980651555, + 0.0025506569723126263, + 0.0030606795449793227, + 0.002138681618150125, + 0.003810345908522812, + 0.005128592249016681, + 0.00424407816204062, + 5.819258235233618E-4, + 0.0017369899378270573, + 0.0015784784630211892, + 0.0015439230464562742, + 0.0025448055069738117, + 0.0021174502399022364, + 0.002676696880749399, + 0.001001593182283101, + 0.0020059474262438546, + 0.006105273847460575, + 0.005104335088229063, + 0.003071478206901575, + 0.0016567870568653578, + 0.00476773865242372, + 0.005513633094253011, + 0.009478637537648807, + 0.005497411465648867, + 0.003978009732986974, + 0.0023744936235508356, + 0.004828831763486317, + 0.004579845260003643, + 0.008768015086359196, + 0.008662929131504992, + 0.007597815941328884, + 0.0037539224631128938, + 0.004873780804214226, + 0.005287525056325371, + 9.517876051640599E-4, + 0.005444645540024761, + 0.005204161286955782, + 0.003746879015811441, + 0.0010323083784317228, + 0.005353895701602615, + 0.005456019002756642, + 0.0015428439133657768, + 0.003386062038941059, + 0.003286494955726888, + 0.0029364884573898045, + 0.002528122590500931, + 0.002605100314502114, + 0.0046837457916217625, + 0.005002879134260298, + 0.00296241495536472, + 0.005277526436213988, + 0.0038922982576052936, + 0.0054278228193765845, + 0.0030816240038298065, + 0.005555361464689582, + 0.008677106268493821, + 0.0026502583324773954, + 0.0027641619923108336, + 0.0022666686438917484, + 0.0038866666001828396, + 4.5703540608031857E-4, + 0.0015063278255724988, + 0.0053005303238901425, + 0.0037652860979607065, + 9.350576090205269E-4, + 0.002874309888362527, + 0.003550742380229365, + 8.016063486131624E-4, + 0.00273480293236248, + 0.005157712469426897, + 0.0026414015291820053, + 0.00641267897581456, + 0.0063131162653411324, + 0.0064152718716761516, + 0.0059630739789285235, + 0.002740831531398673, + 0.004268679762877242, + 6.202093202340034E-4, + 0.005858482744385152, + 0.0026611345278114516, + 0.006663356112077749, + 0.0035080235106803546, + 0.0023956527314396205, + 0.0051150923112609666, + 5.058421197202739E-4, + 0.005589353132691639, + 0.0016706236210854775, + 0.005637587599075984, + 0.001013589639894373, + 0.003200597946815943, + 6.771011933544471E-4, + 4.308050957584137E-4, + 0.0015357554822109484, + 0.004135837237993009, + 0.003336442523643861, + 0.0025460690951548954, + 0.003087145445773091, + 0.0026544098195143825, + 0.005129319872789506, + 0.004861582425744468, + 0.0030380097944144135, + 0.0035886667598585536, + 0.0028509128474856382, + 0.0014190937989578265, + 0.0038601083999839146, + 0.0026950027690871175, + 4.467405969526212E-4, + 6.876270670511089E-4, + 0.0031230904416735235, + 0.0038679343005125796, + 0.0016738015311118114, + 0.002294958493606775, + 0.0014736979362498395, + 0.0029610156164060456, + 0.004998807146459846, + 0.006510420253108762, + 0.003080467461789896, + 0.002663220782596515, + 0.004216116516955284, + 0.0027294087576636436, + 0.0017944241198441307, + 0.004041867782214087, + 0.002990622270951052, + 0.002330968063580527, + 0.003349806186168121, + 0.002393031000538508, + 0.0011323748011758084, + 0.001948847830463466, + 6.790883350025054E-4, + 0.0045259923055991835, + 0.002316921716239445, + 0.002860250249179195, + 0.002074891140229003, + 0.0018061505473793101, + 0.007414511420134192, + 0.0041479501806581205, + 0.006587072068455251, + 0.0025047057772682904, + 0.0034648093113463555, + 0.0037931620371472884, + 6.54648436937895E-4, + 0.004543413816242962, + 0.004479479107687969, + 0.0035299132687363864, + 0.002192032816359048, + 0.0020209766013101773, + 0.0025016638362588637, + 0.0036053719823906615, + 0.009881027927300456, + 0.012214557392045772, + 0.009634551586530487, + 0.0012548503168908496, + 0.005387302707485896, + 0.0024238862455984926, + 0.005400161853974841, + 0.011716913233442344, + 0.01610780981257965, + 0.010068624136856299, + 0.005001626989777133, + 0.003986694171269763, + 8.303630636350878E-4, + 0.0024173847475701658, + 0.0027792183176395596, + 0.0026867251620660716, + 0.0013847900455059598, + 0.0028245337441578067, + 0.0017008447746731, + 6.612732715967752E-4, + 0.0019688797476598197, + 8.108474263312721E-4, + 0.0011295921831575779, + 0.002660128149846915, + 0.0039861254426862116, + 8.23318728743597E-4, + 0.001711230718457635, + 0.0034600689310025387, + 0.004870622996433719, + 0.005609635186496288, + 0.005594046365908597, + 0.0027897583085656577, + 0.0025545578054235996, + 0.0025183425954771925, + 0.003023244854039665, + 0.002697795927103591, + 0.004510103828492085, + 0.004465276461206659, + 0.005836984250094414, + 0.0031568030455097675, + 0.001969042442943217, + 0.004472971065823018, + 0.002306077904202663, + 0.0019843094159042386, + 0.006259590780459042, + 3.35686879422567E-4, + 0.0015579117677282123, + 0.001593293965937665, + 0.002189945207339898, + 0.0011317257766079538, + 0.0069840188165970355, + 0.0014807275908794253, + 0.005079830600373957, + 0.005040400106672725, + 0.0034558629150838326, + 0.005394501896089862, + 0.0028039190938815984, + 0.0017297811828037163, + 0.005415989371583514, + 0.0022012638939945253, + 0.0023737196917856802, + 0.00270527752375407, + 0.004041839328880425, + 0.003420727918890647, + 0.004892365453203553, + 0.0035489146226444874, + 0.004965463809878547, + 0.0023833878330411923, + 0.002299372890868002, + 0.0031583894235389467, + 0.004731378385629766, + 0.001975857282339115, + 0.005046052321168908, + 0.001556562044034222, + 0.0031848636787537507, + 0.003306529279049938, + 4.1694219243386936E-4, + 0.003931914814503939, + 0.0028661119979506784, + 0.003559391429823521, + 0.005482474346555342, + 0.005909149795560943, + 0.0050423066375881705, + 0.003651152157581282, + 0.0018933081488639518, + 0.001897260700264833, + 0.003457088681530933, + 0.002830199995110257, + 0.0027594925670208657, + 0.0017296257678891017, + 0.00428829035856671, + 0.0037513049064792007, + 0.003913993845046911, + 0.003469829373792155, + 5.951518238297739E-4, + 0.002323058686301612, + 1.9667703370015223E-4, + 0.0020995069055750695, + 0.004681651769769742, + 0.00403093562028126, + 0.00148868363270724, + 0.005020287447715693, + 0.0011723876232598083, + 0.0040242320198445826, + 0.003241661344939858, + 0.001706051990919906, + 0.00240200117831218, + 0.0011110266448146652, + 0.001670030319756548, + 0.003994130099964271, + 0.0012239816708247647, + 0.0025918094048047475, + 0.003562535768935922, + 0.0019709923520690865, + 0.002182960902430264, + 0.0030469370430442834, + 9.595841360224138E-4, + 0.004692574845048221, + 0.001998077928771518, + 0.0027434514756342738, + 0.0017033431373605738, + 0.0016304994890368014, + 7.142625499283023E-4, + 0.001356663361610755, + 0.0035572275015626157, + 0.004625741558516716, + 0.005353341965274917, + 0.0047796144150520975, + 0.003508206692203908, + 0.0020989946001278973, + 0.00256674790322703, + 0.004205737318914197, + 0.0031204424392856883, + 0.001793970278050897, + 0.0012425723937725442, + 0.001309742863691686, + 0.006228935784449091, + 0.0020065307928033905, + 0.004810592197517715, + 0.004735666773037049, + 0.002707825143595943, + 0.0013327891387858817, + 0.0013714762873591729, + 0.002505666020022071, + 0.0021693454450466177, + 8.77966950885575E-4, + 0.0012109264789223475, + 0.0021656353993754485, + 0.0011473343529848092, + 0.0014105855748198475, + 0.0024730074380727423, + 3.880213386023902E-4, + 8.844843809184776E-4, + 7.210274060076416E-4, + 0.003046326305767504, + 0.0025801965710297876, + 0.00330827371852997, + 6.36319023341851E-4, + 0.00168708457130174, + 0.002805850276929091, + 0.001364884159321224, + 0.0018522543791890478, + 5.152195670528342E-4, + 0.0017844873968590532, + 0.0015621571524154334, + 0.003098297691054371, + 0.003372602018379374, + 0.0027638175086323394, + 0.0020026037619689497, + 4.321476217921156E-4, + 8.101948952030331E-4, + 0.0017547945526398935, + 0.0022531769242457845, + 0.0014838114040225526, + 0.0019350330173077788, + 0.002411239161940059, + 0.0013140506742390235, + 0.0032922033474801072, + 0.001960747371987391, + 0.001222717779283216, + 0.0020637515241107023, + 0.0019635855920575565, + 0.003134138667904948, + 0.0038416366209211147, + 0.0010409835588558283, + 0.0021116663246782967, + 0.0016648272929298763, + 0.0014617564185296194, + 0.003331888885264982, + 0.0023367400920887315, + 0.00397892014339905, + 0.001662538702826565, + 0.0031132075366593673, + 6.782987343885357E-4, + 0.003834854308635133, + 0.005381758064664902, + 0.0021917651062447353, + 0.0020460428597104527, + 7.289743721482812E-4, + 0.0015780667595518736, + 0.004924036604505512, + 0.003467204841254636, + 0.002586860742209911, + 0.0015766383494899099, + 0.002486080022520882, + 0.0015983324699125356, + 0.0024271052005807, + 0.0013877421349801544, + 0.006122545852133199, + 0.006728444033679131, + 0.0017289969910182727, + 0.002217676692692621, + 0.0019148055684223705, + 0.0016367045307760807, + 0.003092532269735705, + 0.0031456351769307014, + 0.003936094547615533, + 0.0037216251527545253, + 0.0014004967426908409, + 0.002721165171897465, + 4.458892812881272E-4, + 0.0017659954572839117, + 0.0029293016933724584, + 0.004528453495527764, + 0.002815344789819898, + 0.0044981172105693894, + 0.0019760739856352497, + 0.00204868994785879, + 0.003925903703154842, + 0.003825292437913384, + 0.0019622882559959367, + 0.002339414991167885, + 5.970133386046921E-4, + 0.001053265402547764, + 1.2529413095783623E-4, + 0.0013571156085201174, + 9.966875395238553E-4, + 0.0018637982763910024, + 9.162318261606155E-4, + 0.0011676391316193097, + 0.002627508481767992, + 0.004380795228294899, + 0.0015644111696822866, + 6.62045579321849E-4, + 5.112124196048078E-4, + 0.003270813610266921, + 5.346125791078057E-4, + 0.0021456770046449974, + 0.00315033773140267, + 0.0028830619061351688, + 0.0021851556096504215, + 0.003146620345911417, + 0.0016372416980834981, + 0.002874509088928888, + 0.0016087003451648024, + 3.8929910758282873E-4, + 0.004688595239538234, + 0.0036079404044877233, + 7.383451136420125E-4, + 6.08817962652092E-4, + 0.0016200603563429838, + 0.0019037556907986514, + 0.0020195739011332424, + 0.0016245201731923669, + 7.24321117365197E-4, + 0.0031708850092592943, + 0.0010548193870254187, + 0.0022013856408858853, + 0.0023111363285013326, + 0.0012995456965144735, + 0.002235446319392564, + 0.0011424667563744333, + 0.001225261158855124, + 0.0016331764498145479, + 0.0031918290034567546, + 0.0034190219247136455, + 0.0023559970033572588, + 0.0023215988122396317, + 0.0024429078368660255, + 0.0015050840774949376, + 0.0019838784282327658, + 0.0011463559479070462, + 0.001285456697696567, + 0.001641750190291766, + 0.001584651982656855, + 0.004615344812734786, + 0.0020538652432854337, + 9.954067678279496E-4, + 0.0035845488065643365, + 0.0030285347965639084, + 0.0013511642685538226, + 0.0018305877410310079, + 0.00353979148516166, + 0.00245597887976789, + 0.002657652015568469, + 7.125475459031902E-4, + 0.0035936878428767414, + 0.0015397968996704655, + 0.002429501917744591, + 0.0025188437743297273, + 5.566289645899905E-4, + 9.319302450227753E-4, + 0.005055556474829066, + 0.00331279536289457, + 0.0016973573580519204, + 0.003684938196132832, + 0.0034255231325220035, + 0.00244723735445821, + 0.0034312493247705238, + 0.003851585168819329, + 0.0021369087255664124, + 0.0023601385397233657, + 5.939361204943909E-4, + 0.0017241394686757063, + 0.0018045516028870493, + 0.00362890961178305, + 0.0027432807725647178, + 0.002867073960408309, + 6.207302040655766E-4, + 0.001620240782707412, + 0.0013739702788861695, + 0.004480948437172859, + 0.0011942327619358687, + 0.002188491850034517, + 7.663644413565546E-4, + 0.0015912287809906939, + 0.001241806338262705, + 0.001481255805401699, + 0.002039004236732543, + 0.0015128297545462619, + 0.0028773928146474427, + 0.0012225902360090816, + 0.0031585551727507, + 0.0023084163073852147, + 0.0020263867798287656, + 8.89095566250628E-4, + 0.0032140244523160898, + 0.0020286633575778137, + 0.004111340518325446, + 0.0041102231789561065, + 0.001465827666812932, + 0.002505555415707827, + 0.003174261983322105, + 0.0026606069584419944, + 0.0032445314875031582, + 0.0014082862897651046, + 0.002455450713901978, + 0.0019773071411368338, + 0.0036634187785863225, + 6.939305905729743E-4, + 0.0027464057307913722, + 0.0036074281962357848, + 0.0014935398669881975, + 5.417092630615317E-4, + 0.002264045077915946, + 0.002047114305875656, + 0.001868115297047708, + 0.0017036066606818231, + 8.830432263212934E-4, + 0.002078928468794535, + 0.00197213506453851, + 0.002251419887931969, + 9.725854734222931E-4, + 0.0021484440552847106, + 6.329352759696689E-4, + 6.514012040600498E-4, + 0.001422616070460925, + 0.0019436596362486487, + 0.0030460352904703035, + 7.550934407979416E-4, + 0.0013529275818305075, + 0.0029168094903846333, + 0.0013195361995923009, + 0.002753869669178688, + 0.002208653013292762, + 0.001272730860378228, + 0.0023730636046071854, + 8.688657993886811E-4, + 0.0020932243751497254, + 5.692812062541478E-4, + 0.0015500622458370892, + 0.0022433121793850952, + 0.00154362862656277, + 0.001941617290338535, + 0.0013229255728262094, + 8.214264545787584E-4, + 6.9284923614109E-4, + 2.4546047460491046E-4, + 0.0028828548020118213, + 8.80982827396357E-4, + 0.001128227949710556, + 0.0019477883619270985, + 9.522295423171565E-4, + 0.0016234678437473324, + 0.002949455017988402, + 0.004813067371746327, + 0.0022733499695472247, + 0.0010436498049999456, + 0.0029441181035891905, + 0.002798911816457533, + 0.0013742649813021552, + 0.0033722210195469247, + 0.003609742206153409, + 0.0012197954685282022, + 0.0021682322874052966, + 0.0021796885572632667, + 0.003604122745238582, + 0.0014437732055463965, + 0.001726954291329607, + 0.0029603477113309866, + 2.550758118491347E-4, + 0.0016786501369551125, + 0.00186753097432802, + 0.003216596143545654, + 0.0024153000332384094, + 0.003268675320357598, + 0.0021427806093360998, + 1.0600577487942587E-4, + 0.00162068100322161, + 0.0013770634586946905, + 8.333971889622614E-4, + 0.0018386557531775358, + 0.0012192366824738971, + 0.0013066314905229323, + 0.002737116259038718, + 8.657978475704631E-4, + 0.0012995292338020157, + 0.0025419118225994373, + 0.002454479580531458, + 3.8360741692430514E-4, + 0.0016749216180945454, + 0.004605296219139136, + 0.0029207911673206225, + 4.977957155043381E-4, + 0.001247817725223919, + 0.0025010749153791915, + 8.716321472486844E-4, + 0.001259022482970354, + 7.258254710834968E-4, + 0.0011230812804502062, + 0.001052607809172625, + 0.002839042621063796, + 0.0016953289542414403, + 4.795652150548558E-4, + 2.2022986322728732E-4, + 0.0012013191448258193, + 7.356358574749864E-4, + 0.002222990898433307, + 0.001762060231652049, + 0.0014325246837965724, + 0.0010767735193354636, + 0.0025651465359721134, + 0.002094776337503631, + 9.533956319022961E-4, + 0.002317816132443131, + 0.002681411220256525, + 0.0019242914985016224, + 9.721383869193178E-4, + 0.003069422918395102, + 0.0032051558213581845, + 0.003101580089395345, + 2.1897028067656277E-4, + 0.0018108391663468845, + 0.0016836989527546473, + 0.0016710140600561326, + 0.0014518246735817023, + 0.002583199376882618, + 0.00318659063249784, + 0.0030667665254765233, + 1.872757584728157E-4, + 0.0020785418822783577, + 0.0024744318762542094, + 5.995210407626691E-4, + 0.002632804655630791, + 0.0011969128324120148, + 1.0906394187647716E-4, + 0.0019312266619131641, + 0.002396272261044554, + 0.001585389671380865, + 0.0014484945505214822, + 0.0027264282483489403, + 0.0010709963959834323, + 0.002330876575478597, + 8.716545192235636E-4, + 0.002005038762564327, + 0.002011125027418016, + 7.030897926515134E-4, + 0.0015148458554813656, + 0.0038560494779209787, + 9.921500336356466E-4, + 0.0021166159427230295, + 0.0019549590488799505, + 0.0025638730610883773, + 7.494892593210083E-4, + 0.0030701531058611965, + 0.0010842724462252341, + 0.0022288014334186194, + 4.834793518540572E-4, + 0.0025674463710598423, + 0.0014970905268563703, + 0.002720704772820678, + 7.21957508604691E-4, + 0.002630692349792652, + 0.0010694107855155086, + 5.050381050637497E-4, + 0.0018505084257260242, + 0.0016510769347007639, + 0.0015990682092637705, + 0.001930246001551649, + 0.002603925755015986, + 0.0012193516037832378, + 0.002504885595287011, + 0.001765191172266128, + 0.0029801265119292317, + 0.0016931881857264086, + 0.0027598004911761867, + 0.002158786077502304, + 0.001976179331698796, + 0.0020868731458662413, + 0.001923048548232714, + 9.774152472298574E-4, + 0.0012191649757679825, + 0.0013449259542461524, + 0.003579868960510695, + 3.539794365925096E-4, + 0.0027046856924177695, + 0.0015710556068098275, + 0.0020073676407486155, + 0.001378559996359851, + 5.1553080045706E-4, + 0.0036524260248773613, + 0.0019515270308451426, + 4.0428252261587706E-4, + 0.00370730493327655, + 0.002110133640093991, + 0.0013031669744249068, + 0.0012991121509498746, + 7.157665395542056E-4, + 0.003242720839148043, + 0.0011129727376857274, + 0.00233441150052003, + 0.0029361297638656474, + 3.7450792808074913E-4, + 7.776427349060319E-4, + 9.361429389631357E-4, + 0.0019950092987738436, + 0.0010272520635602478, + 0.0016334435602323176, + 0.0011675588033736607, + 0.0031186039711755707, + 0.001368256438374505, + 8.049582669729429E-4, + 0.002984691779310808, + 0.001140968568530194, + 0.0015460950845563228, + 0.002802693488098778, + 0.0032652187028926237, + 0.0017853258668006082, + 0.014778991832883222, + 0.008572429894087021, + 0.004703292177461531, + 0.0032687546415325246, + 0.002731581859077149, + 0.0014946571420974917, + 0.0014467606895244595, + 0.0010603084964813717, + 0.002545495459786986, + 0.0020244702245542493, + 0.001385846340119695, + 0.0012684064185664856, + 0.003168935979902305, + 8.34325317312968E-4, + 0.001289704452134644, + 4.0858173794230956E-4, + 0.0011892556112710884, + 0.002565602871057622, + 0.0038022658447878655, + 0.0034558579736435045, + 9.94535495636508E-4, + 8.196962526837038E-4, + 0.0037189040871218335, + 0.009497164448019154, + 0.005122409843166525, + 0.0013911925626752487, + 0.0011574257712138416, + 1.1949202966688086E-4, + 6.227186827864124E-4, + 0.0015510203477342843, + 0.003108426205938156, + 0.0034928310249322365, + 0.002130559290619809, + 0.001515484748456168, + 2.828575446905299E-4, + 0.0012791862716771056, + 0.003107070454107101, + 0.0020606000566090452, + 0.001640016687958001, + 0.0019589758241707273, + 0.0016101433860824066, + 7.029635144206877E-4, + 0.0024290765527105757, + 0.0013247419826690548, + 0.0017754183287969798, + 6.865399962604614E-4, + 0.0034319986756378698, + 0.001750057778078682, + 0.001567761013859868, + 0.001074306264549191, + 0.0035759576216615988, + 0.003315226124799649, + 0.0011574682136427773, + 0.002193077037558687, + 0.002223961181864472, + 3.319418479709442E-4, + 7.017494191594665E-4, + 0.0028102187161199482, + 0.001274120803010302, + 6.960210033819218E-4, + 7.236468731310767E-4, + 0.002223922017833056, + 0.002341890588675229, + 0.0030495100516932214, + 0.0015414262122656994, + 8.691932940028751E-4, + 0.0030698004884690882, + 0.003375394622929782, + 0.0016081084017185198, + 0.0013134765944607361, + 0.0014472180532526782, + 0.003004673619521214, + 0.0012528361004431018, + 9.988862431630473E-4, + 0.002363016130486005, + 0.002047078128784847, + 0.0012785353487288968, + 0.0017093895402214585, + 0.0010964519886771768, + 0.0012255252511270214, + 0.004133568884782583, + 6.991366420046292E-4, + 0.0024109531945555327, + 0.0029025505602034716, + 1.790580491144637E-4, + 0.002891170596362472, + 0.0016791294639633358, + 0.00209636786387882, + 0.0011366510553995042, + 0.0018511793671899845, + 0.002600832544906639, + 0.0010033568857395034, + 0.0018533687591138367, + 0.00260173953160439, + 0.0035744118565149544, + 7.895938409452786E-4, + 0.003265062231038096, + 0.0020886256076407214, + 9.023612927876498E-4, + 4.646990482970057E-4, + 0.0018827560493048054, + 0.0011927041981106877, + 0.001167636690896126, + 0.002594051391763703, + 0.001829680625558224, + 0.002002106699411032, + 0.0031628975316359536, + 0.002143409472272872, + 0.0029033994150500543, + 3.670952715753017E-4, + 0.0030027582721130403, + 0.0022614788686642477, + 5.573049437543433E-4, + 0.0016391305705649344, + 0.0013217292428340359, + 0.0011173631035655803, + 0.0015813178076496382, + 0.0023391158741086363, + 0.0014146117490065448, + 0.0018484053337797166, + 0.0029648238361351035, + 0.0022177181858191127, + 0.0013201008835704942, + 0.0026031103107262647, + 0.0017576540681837887, + 0.0011969580846534237, + 0.0013952307635663231, + 0.0024287059677309906, + 0.0016566557378354086, + 0.0014859880642757997, + 0.002706563419954186, + 0.004019331827636903, + 0.0032143924823091184, + 0.0029974439495193783, + 0.0020610196069118674, + 0.0018204396733314957, + 0.002252693375919477, + 0.0032420359364783167, + 6.470945978754722E-4, + 0.00130531626694299, + 0.003612048222020171, + 0.0016164387215922775, + 0.0037352987818727703, + 0.00636699045082993, + 0.006237987779868353 + ], + "location": "Shaft2_径向", + "time": "20230524175422", + "windfarm": "华能三塘湖项目(一期)", + "RPM": 14.41, + "ts": 1529253290000 +} \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/table.sql b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/table.sql new file mode 100644 index 0000000..b09f109 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/table.sql @@ -0,0 +1,46 @@ +create table if not exists dim_gas_type_info +( + rated_duration + varchar, + rated_load + varchar, + rated_power + varchar, + rated_speed + varchar, + rated_flow_rate + varchar, + type_id + varchar, + rated_press + varchar, + rated_temp + varchar, + id + varchar + primary + key +) + upsert into dim_gas_type_info +( + rated_duration, + rated_load, + rated_power, + rated_speed, + rated_flow_rate, + type_id, + rated_press, + rated_temp, + id +) values +( + rated_duration, + rated_load, + rated_power, + rated_speed, + rated_flow_rate, + type_id, + rated_press, + rated_temp, + id +) \ No newline at end of file diff --git a/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/test.java b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/test.java new file mode 100644 index 0000000..5b7ed47 --- /dev/null +++ b/phm_rotate/backend/phm_backend/warehouse/rt-warehouse/src/main/java/com/cqu/warehouse/realtime/app/func/test.java @@ -0,0 +1,21 @@ +package com.cqu.warehouse.realtime.app.func; + +import java.util.Date; + +/** + *@BelongsProject: phm_parent + *@BelongsPackage: com.cqu.warehouse.realtime.func + *@Author: markilue + *@CreateTime: 2023-05-18 17:42 + *@Description: TODO + *@Version: 1.0 + */ +public class test { + + public static void main(String[] args) { + Long ts = 1672502465000L; + Long ts1 =1672502405000L; + System.out.println(new Date(ts)); + System.out.println(new Date(ts1)); + } +} diff --git a/phm_rotate/datasource/error.log b/phm_rotate/datasource/error.log new file mode 100644 index 0000000..8d0dd69 --- /dev/null +++ b/phm_rotate/datasource/error.log @@ -0,0 +1,44 @@ + + +Sync started at Mon Jun 20 19:03:24 2022 + +`data_model` 12 0 12 0 0 +`data_set_detail` 0 0 0 0 0 +`data_sets` 0 0 0 0 0 +`device` 4 0 4 0 0 +`device_area` 5 0 5 0 0 +`device_group` 6 0 6 0 0 +`device_object` 0 0 0 0 0 +`device_type` 5 0 5 0 0 +`device_type_detail` 45 0 45 0 0 +`device_type_group` 15 0 15 0 0 +`part` 19 0 19 0 0 +`part_type` 3 0 3 0 0 +`part_type_detail` 36 0 36 0 0 +`part_type_group` 11 0 11 0 0 +`sub_system` 5 0 5 0 0 + + +Sync started at Mon Jun 20 19:19:11 2022 + +`access_service` 0 0 0 0 0 +`access_task` 0 0 0 0 0 +`data_model` 12 12 0 0 0 +`data_set_detail` 0 0 0 0 0 +`data_sets` 0 0 0 0 0 +`device` 4 4 0 0 0 +`device_area` 5 5 0 0 0 +`device_group` 6 6 0 0 0 +`device_object` 0 0 0 0 0 +`device_type` 5 5 0 0 0 +`device_type_detail` 45 45 0 0 0 +`device_type_group` 15 15 0 0 0 +`part` 19 19 0 0 0 +`part_type` 3 3 0 0 0 +`part_type_detail` 36 36 0 0 0 +`part_type_group` 11 11 0 0 0 +`source_type_kafka` 0 0 0 0 0 +`source_type_liga` 0 0 0 0 0 +`source_type_mqtt` 0 0 0 0 0 +`source_type_opc_ua` 0 0 0 0 0 +`sub_system` 5 5 0 0 0 diff --git a/phm_rotate/datasource/phm_device.sql b/phm_rotate/datasource/phm_device.sql new file mode 100644 index 0000000..791b000 --- /dev/null +++ b/phm_rotate/datasource/phm_device.sql @@ -0,0 +1,300 @@ +/* +SQLyog Ultimate v11.25 (64 bit) +MySQL - 8.0.13 : Database - phm_device +********************************************************************* +*/ + +/*!40101 SET NAMES utf8 */; + +/*!40101 SET SQL_MODE=''*/; + +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/`phm_device` /*!40100 DEFAULT CHARACTER SET utf8 */; + +USE `phm_device`; + +/*Table structure for table `data_model` */ + +DROP TABLE IF EXISTS `data_model`; + +CREATE TABLE `data_model` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `type_id` VARCHAR(20) NOT NULL COMMENT '设备类型id 设备类型\r\nid', + `detail_id` VARCHAR(20) NOT NULL COMMENT '设备型号id 设备型号\r\nid', + `name` VARCHAR(20) NOT NULL COMMENT '名称 名称', + `show_name` VARCHAR(20) NOT NULL COMMENT '显示名称 显示名称', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述 描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='数据模型 数据模型'; + +/*Data for the table `data_model` */ + +INSERT INTO `data_model`(`id`,`type_id`,`detail_id`,`name`,`show_name`,`description`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1','1514199611785363458','1517333596900229121','data_model_14MW_1_4','data_model_14MW_1_4','14MW数据模型4',1,'ysl','2022-04-24 13:52:24','2022-04-24 17:57:00'),('1518138544122556417','1514199611785363458','1517768187079380994','data_model_20MW_1','data_model_20MW_1','20MW数据模型1',0,'ysl','2022-04-24 16:03:29','2022-04-24 16:03:29'),('1518142805212459009','1514199611785363458','1517768187079380994','20MW_2','20MW_2','20MW数据模型2',0,'ysl','2022-04-24 16:20:25','2022-04-24 16:20:25'),('1518146419012202497','1514199611785363458','1514200864187760641','data_model_8MW_3','data_model_8MW_3',NULL,0,'ysl','2022-04-24 16:34:47','2022-04-24 17:53:59'),('1518152188629614594','1514199611785363458','1517333596900229121','data_model_14MW_3','dataModel_14MW_3','14MW数据模型3',1,'ysl','2022-04-24 16:57:42','2022-04-24 16:57:42'),('1518167449613115393','1514199611785363458','1517333596900229121','data_model_14MW_1_5','data_model_14MW_1_5','14MW数据模型5',0,'ysl','2022-04-24 17:58:21','2022-04-24 17:58:47'),('1518948944908918786','undefined','1514200247667015681','data_model_1MW_1','data_model_1MW_1',NULL,0,'rmq','2022-04-26 21:43:44','2022-05-18 18:51:05'),('1519893513666375682','1514199611785363458','1514200247667015681','data_model_1MW_2','data_model_1MW_2',NULL,0,'冉茂淇','2022-04-29 12:17:07','2022-04-29 12:17:07'),('1519893601335717890','undefined','1514200247667015681','data_model_1MW_3','data_model_1MW_3',NULL,0,'冉茂淇','2022-04-29 12:17:27','2022-04-29 12:17:27'),('1526520423003561985','1514199611785363458','1514200341845917698','data_model_2MW_1','data_model_2MW_1',NULL,0,'rmq','2022-05-17 19:10:05','2022-05-17 19:10:05'),('1526520700259639298','1514199611785363458','1514200247667015681','data_model_1MW_4','data_model_1MW_4',NULL,0,'rmq','2022-05-17 19:11:11','2022-05-17 19:11:11'),('2','1514199611785363458','1517333596900229121','data_model_14MW_2_2','dataModel_14MW_2_2','14MW数据模型2',0,'ysl','2022-04-24 15:19:00','2022-04-24 17:39:58'); + +/*Table structure for table `device` */ + +DROP TABLE IF EXISTS `device`; + +CREATE TABLE `device` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `group_id` VARCHAR(20) NOT NULL COMMENT '设备组id 设备组id', + `name` VARCHAR(20) NOT NULL COMMENT '设备标识 设备标识', + `type_id` VARCHAR(20) NOT NULL COMMENT '设备类型 设备类型', + `detail_id` VARCHAR(20) NOT NULL COMMENT '设备型号 设备型号', + `device_code` VARCHAR(20) DEFAULT NULL COMMENT '设备编码 设备编码', + `produce_time` DATETIME DEFAULT NULL COMMENT '出厂日期 出厂日期', + `east_longitude` VARCHAR(4000) DEFAULT NULL COMMENT '东经 东经', + `north_latitude` VARCHAR(20) DEFAULT NULL COMMENT '北纬 北纬', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述 描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='设备 设备'; + +/*Data for the table `device` */ + +/*Table structure for table `device_area` */ + +DROP TABLE IF EXISTS `device_area`; + +CREATE TABLE `device_area` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `show_name` VARCHAR(20) NOT NULL COMMENT '区域名称 区域名称', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述 描述', + `object_id` VARCHAR(20) NOT NULL DEFAULT '0' COMMENT '设备对象id 设备对象\r\nid', + `is_deleted` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='设备区域 设备区域'; + +/*Data for the table `device_area` */ + +INSERT INTO `device_area`(`id`,`show_name`,`description`,`object_id`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1526879509901594233','华北区厂房','华北区厂房','0',0,'冉茂淇','2022-05-18 11:50:19','2022-05-18 20:49:35'),('1526879509901594432','西北区风场',NULL,'0',0,'冉茂淇','2022-05-18 13:58:15','2022-05-18 13:58:17'),('1526879509901594626','重庆大学测试','重庆大学测试','0',0,'冉茂淇','2022-05-18 18:56:58','2022-05-18 18:56:58'),('1526879817662844930','成都片区','成都片区','0',0,'冉茂淇','2022-05-18 18:58:11','2022-05-18 18:58:11'),('1526896051364085761','华南区厂房',NULL,'0',0,'冉茂淇','2022-05-18 20:02:42','2022-05-18 20:02:42'); + +/*Table structure for table `device_group` */ + +DROP TABLE IF EXISTS `device_group`; + +CREATE TABLE `device_group` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `name` VARCHAR(20) NOT NULL COMMENT '设备组标识 设备组标识\r\n', + `show_name` VARCHAR(20) NOT NULL COMMENT '设备组名称 设备组名称\r\n', + `object_id` CHAR(20) NOT NULL DEFAULT '0' COMMENT '设备对象id 设备对象\r\nid', + `area_id` CHAR(20) NOT NULL DEFAULT '0' COMMENT '设备区域id 设备区域id', + `group_code` VARCHAR(20) DEFAULT NULL COMMENT '设备组编码 设备组编码', + `location` VARCHAR(20) DEFAULT NULL COMMENT '所在地 所在地', + `east_longitude` VARCHAR(20) DEFAULT NULL COMMENT '东经 东经', + `north_latitude` VARCHAR(20) DEFAULT NULL COMMENT '北纬 北纬', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述 描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='设备组 设备组'; + +/*Data for the table `device_group` */ + +INSERT INTO `device_group`(`id`,`name`,`show_name`,`object_id`,`area_id`,`group_code`,`location`,`east_longitude`,`north_latitude`,`description`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1527116169335664642','jichuangchangfang','机床厂房','0','1526879509901594233','asd','北京',NULL,NULL,NULL,0,'冉茂淇','2022-05-19 10:37:22','2022-05-19 11:10:17'),('1527116356133187586','lushangfengchang','陆上风场','0','1526879509901594432','asd',NULL,NULL,NULL,NULL,0,'冉茂淇','2022-05-19 10:38:06','2022-05-19 10:38:06'),('1527116597506994177','bearing','轴承耐久试验台','0','1526879509901594626','asdasd','重庆',NULL,NULL,NULL,0,'ranmaoqi','2022-05-19 10:39:04','2022-05-19 10:39:04'),('1527116876591788034','test','test设备组','0','0','asdasd','重庆大学',NULL,NULL,NULL,0,'冉茂淇','2022-05-19 10:40:10','2022-05-19 10:40:10'); + +/*Table structure for table `device_object` */ + +DROP TABLE IF EXISTS `device_object`; + +CREATE TABLE `device_object` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='设备对象 设备对象'; + +/*Data for the table `device_object` */ + +/*Table structure for table `device_type` */ + +DROP TABLE IF EXISTS `device_type`; + +CREATE TABLE `device_type` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `name` VARCHAR(20) NOT NULL COMMENT '设备类型名称 设备类型\r\n名称', + `show_name` VARCHAR(20) NOT NULL COMMENT '显示名称 显示名称', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述 描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否被删除(0未删除、1已删除)', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='设备类型 设备类型'; + +/*Data for the table `device_type` */ + +INSERT INTO `device_type`(`id`,`name`,`show_name`,`description`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1514199611785363458','wind-turbine','风电机组','风电机组设备类型',0,'冉茂淇','2022-04-13 19:11:35','2022-04-21 21:45:47'),('1514200004061839362','engine','发动机','发动机设备类型',0,'冉茂淇','2022-04-13 19:13:08','2022-04-13 19:13:08'),('1514202147363766274','gas-turbine','燃气轮机',NULL,0,'冉茂淇','2022-04-13 19:21:39','2022-04-13 19:21:39'),('1517772731326746626','CMS','海装',NULL,0,'海装','2022-04-23 15:49:53','2022-04-23 15:49:53'); + +/*Table structure for table `device_type_detail` */ + +DROP TABLE IF EXISTS `device_type_detail`; + +CREATE TABLE `device_type_detail` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `type_id` CHAR(20) NOT NULL COMMENT '设备类型id 设备类型\r\nid', + `type_group_id` CHAR(20) NOT NULL DEFAULT '0' COMMENT '设备分组id 设备分组id', + `name` VARCHAR(20) NOT NULL COMMENT '设备标识 设备标识', + `show_name` VARCHAR(20) NOT NULL COMMENT '型号名称 型号名称', + `specification_type` VARCHAR(255) DEFAULT NULL COMMENT '规格类型 规格类型', + `manufacturer` VARCHAR(20) DEFAULT NULL COMMENT '生产厂商 生产厂商', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述 描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='设备型号 设备型号表'; + +/*Data for the table `device_type_detail` */ + +INSERT INTO `device_type_detail`(`id`,`type_id`,`type_group_id`,`name`,`show_name`,`specification_type`,`manufacturer`,`description`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1514200247667015681','1514199611785363458','1514199745759821826','1MW','1MW',NULL,'重庆大学','1MW',0,'冉茂淇','2022-04-13 19:14:06','2022-04-28 12:59:07'),('1514200341845917698','1514199611785363458','1514199745759821826','2MW','2MW',NULL,'重庆大学','2MW',0,'冉茂淇','2022-04-13 19:14:29','2022-04-13 19:14:29'),('1514200430551252993','1514199611785363458','1514199745759821826','3MW','3MW',NULL,'重庆大学','3MW',0,'rmq','2022-04-13 19:14:50','2022-04-15 16:45:25'),('1514200527808774146','1514199611785363458','1514199816282849282','4MW','4MW',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:15:13','2022-04-13 19:15:13'),('1514200582095650817','1514199611785363458','1514199816282849282','5MW','5MW',NULL,NULL,'5MW',0,'rmq','2022-04-13 19:15:26','2022-04-13 19:15:26'),('1514200727679942657','1514199611785363458','1514200662278160386','6MW','6MW',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:16:01','2022-04-13 19:16:01'),('1514200766858936321','1514199611785363458','1514200662278160386','7MW','7MW',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:16:10','2022-04-13 19:16:10'),('1514200864187760641','1514199611785363458','0','8MW','8MW',NULL,NULL,'ysl',0,'rmq','2022-04-13 19:16:33','2022-04-26 21:32:19'),('1514200968571404290','1514199611785363458','0','10MW','10MW',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:16:58','2022-04-13 19:16:58'),('1514201040143007745','1514199611785363458','0','12MW','12MW',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:17:15','2022-04-13 19:17:52'),('1514201124658233346','1514199611785363458','0','13MW','13MW',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:17:35','2022-04-13 19:17:35'),('1514201272062853121','1514199611785363458','0','15MW','15MW',NULL,NULL,NULL,0,'rmq','2022-04-13 19:18:10','2022-04-13 19:18:10'),('1514201499729674241','1514200004061839362','1514200074081550337','engine-1','发动机-1',NULL,NULL,NULL,0,'rmq','2022-04-13 19:19:05','2022-04-13 19:19:05'),('1514201560438030337','1514200004061839362','1514200074081550337','engine-2','发动机-2',NULL,NULL,NULL,0,'rmq','2022-04-13 19:19:19','2022-04-13 19:19:19'),('1514201649722179585','1514200004061839362','1514200110618132481','engine-3','发动机-3',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:19:40','2022-04-13 19:19:40'),('1514201759004770306','1514200004061839362','1514200110618132481','engine-4','发动机-4',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:20:07','2022-04-13 19:20:07'),('1514201883533656066','1514200004061839362','0','engine-5','发动机-5',NULL,NULL,NULL,1,'冉茂淇','2022-04-13 19:20:36','2022-04-13 19:20:36'),('1514203804227092481','1514202147363766274','1514202229777645569','gas-turbine-1','燃气轮机-1',NULL,NULL,NULL,1,'rmq','2022-04-13 19:28:14','2022-04-13 19:28:14'),('1514203925811576833','1514202147363766274','1514202229777645569','gas-turbine-4','燃气轮机-4',NULL,NULL,NULL,1,'冉茂淇','2022-04-13 19:28:43','2022-04-13 19:28:43'),('1514203997387374593','1514202147363766274','1514203282438897666','gas-turbine-2','燃气轮机-2',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:29:00','2022-04-13 19:29:00'),('1514204060985606146','1514202147363766274','1514203282438897666','gas-turbine-3','燃气轮机-3',NULL,NULL,NULL,0,'冉茂淇','2022-04-13 19:29:15','2022-04-13 19:29:15'),('1514204785228660737','1514200004061839362','1514200110618132481','engine-6','发动机-6',NULL,NULL,NULL,1,'冉茂淇','2022-04-13 19:32:08','2022-04-13 19:32:08'),('1514205190952075266','1514202147363766274','1514203282438897666','gas-turbine-5','燃气轮机-5',NULL,NULL,NULL,1,'rmq','2022-04-13 19:33:45','2022-04-13 19:33:45'),('1514205266306940930','1514202147363766274','1514203282438897666','gas-turbine-6','燃气轮机-6',NULL,NULL,NULL,1,'冉茂淇','2022-04-13 19:34:03','2022-04-13 19:34:03'),('1514813583232344066','1514199611785363458','0','13MW','13MW',NULL,NULL,'13MW',1,'冉茂淇','2022-04-15 11:51:17','2022-04-15 11:51:17'),('1514879949167783937','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:15:00','2022-04-15 16:15:00'),('1514891143471476738','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:59:29','2022-04-15 16:59:29'),('1514891152900272129','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:59:31','2022-04-15 16:59:31'),('1514891163155345410','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:59:33','2022-04-15 16:59:33'),('1514891174194753538','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:59:36','2022-04-15 16:59:36'),('1514891183980064770','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:59:38','2022-04-15 16:59:38'),('1514891195107553282','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:59:41','2022-04-15 16:59:41'),('1514891206390231041','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:59:44','2022-04-15 16:59:44'),('1514891219979776001','1514199611785363458','1514199745759821826','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:59:47','2022-04-15 16:59:47'),('1517333035501027330','1514199611785363458','1514200662278160386','9MW','9MW',NULL,NULL,NULL,1,'冉茂淇','2022-04-22 10:42:41','2022-04-22 10:42:41'),('1517333136185294849','1514199611785363458','1514200662278160386','11MW','11MW',NULL,NULL,NULL,1,'冉茂淇','2022-04-22 10:43:05','2022-04-22 10:43:05'),('1517333596900229121','1514199611785363458','0','14MW','14MW',NULL,NULL,NULL,0,'冉茂淇','2022-04-22 10:44:55','2022-04-22 10:44:55'),('1517334920152809473','1514199611785363458','1514199816282849282','15MW','15MW',NULL,NULL,NULL,1,'冉茂淇','2022-04-22 10:50:10','2022-04-22 10:50:10'),('1517335114864984066','1514199611785363458','1514199816282849282','16MW','16MW',NULL,NULL,NULL,0,'rmq','2022-04-22 10:50:57','2022-04-22 10:50:57'),('1517336832927399938','1514199611785363458','0','17MW','17MW',NULL,NULL,NULL,0,'rmq','2022-04-22 10:57:46','2022-04-22 10:57:46'),('1517336892117417986','1514199611785363458','1514199745759821826','18MW','18MW',NULL,'',NULL,0,'rmq','2022-04-22 10:58:01','2022-04-22 10:58:01'),('1517337838599864321','1514199611785363458','1514199745759821826','19MW','19MW',NULL,NULL,NULL,1,'rmq','2022-04-22 11:01:46','2022-04-22 11:01:46'),('1517735975386697730','1514199611785363458','1517735704300441601','15Mw','15MW',NULL,NULL,NULL,1,'ysl','2022-04-23 13:23:49','2022-04-23 13:23:49'),('1517768187079380994','1514199611785363458','1517740478617964545','20MW','20MW',NULL,NULL,NULL,0,'ysl','2022-04-23 15:31:49','2022-04-23 15:31:49'); + +/*Table structure for table `device_type_group` */ + +DROP TABLE IF EXISTS `device_type_group`; + +CREATE TABLE `device_type_group` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `type_id` CHAR(20) NOT NULL COMMENT '设备类型id 设备类型\r\nid', + `parent_group_id` CHAR(20) NOT NULL DEFAULT '0' COMMENT '父组id 父组id', + `description` VARCHAR(20) DEFAULT NULL COMMENT '描述 描述', + `show_name` VARCHAR(20) NOT NULL COMMENT '部件分组名称 部件分组\r\n名称', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='设备分组 设备分组'; + +/*Data for the table `device_type_group` */ + +INSERT INTO `device_type_group`(`id`,`type_id`,`parent_group_id`,`description`,`show_name`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1514199745759821826','1514199611785363458','0','风电机组-1','风电机组-1',0,'冉茂淇','2022-04-13 19:12:07','2022-04-15 18:00:14'),('1514199816282849282','1514199611785363458','1514199745759821826',NULL,'风电机组-2',0,'冉茂淇','2022-04-13 19:12:23','2022-04-13 19:12:23'),('1514200074081550337','1514200004061839362','0',NULL,'发动机分组-1',0,'冉茂淇','2022-04-13 19:13:25','2022-04-13 19:13:25'),('1514200110618132481','1514200004061839362','0',NULL,'发动机分组-2',0,'冉茂淇','2022-04-13 19:13:34','2022-04-13 19:13:34'),('1514200662278160386','1514199611785363458','1514199816282849282',NULL,'风电机组-3',0,'冉茂淇','2022-04-13 19:15:45','2022-04-13 19:15:45'),('1514202229777645569','1514202147363766274','0',NULL,'燃气轮机分组-1',0,'冉茂淇','2022-04-13 19:21:59','2022-04-13 19:26:24'),('1514203282438897666','1514202147363766274','1514202229777645569',NULL,'燃气轮机分组-2',0,'冉茂淇','2022-04-13 19:26:10','2022-04-13 19:26:10'),('1517735704300441601','1514199611785363458','1514199816282849282','ysl','风电机组-4',1,'ysl','2022-04-23 13:22:45','2022-04-23 13:22:45'),('1517740478617964545','1514199611785363458','0',NULL,'风电机组-5',0,'ysl','2022-04-23 13:41:43','2022-04-23 13:41:43'),('1517768346576179201','1514199611785363458','1514199816282849282',NULL,'风电机组-6',1,'ysl','2022-04-23 15:32:27','2022-04-23 15:32:27'),('1519182845887660033','1514199611785363458','1514199816282849282',NULL,'风电机组-6',1,'冉茂淇','2022-04-27 13:13:10','2022-04-27 13:13:10'),('1519183158413639682','1514199611785363458','1514199816282849282',NULL,'风电机组-6',1,'rmq','2022-04-27 13:14:25','2022-04-27 13:14:25'),('1519183648375455746','1514202147363766274','0',NULL,'燃气轮机分组-3',1,'rmq','2022-04-27 13:16:22','2022-04-27 13:16:22'),('1519185345181138945','1514199611785363458','1514199816282849282',NULL,'风电机组-5',1,'rmq','2022-04-27 13:23:06','2022-04-27 13:23:06'),('1519185505047035905','1514199611785363458','1514199816282849282',NULL,'风电机组-6',1,'rmq','2022-04-27 13:23:44','2022-04-27 13:23:44'); + +/*Table structure for table `part` */ + +DROP TABLE IF EXISTS `part`; + +CREATE TABLE `part` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `device_detail_id` VARCHAR(20) NOT NULL COMMENT '设备类型id', + `sub_system_id` VARCHAR(20) NOT NULL DEFAULT '0' COMMENT '子系统id', + `part_type_id` VARCHAR(20) NOT NULL COMMENT '部件类型id', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='部件 部件'; + +/*Data for the table `part` */ + +INSERT INTO `part`(`id`,`device_detail_id`,`sub_system_id`,`part_type_id`,`description`,`is_deleted`,`gmt_create`,`gmt_modified`) VALUES ('1','1514200247667015681','1','1',NULL,0,'2022-04-21 15:01:04','2022-04-21 15:01:06'),('1519621520559702018','1514200247667015681','0','1514902289863712769',NULL,1,'2022-04-28 18:16:18','2022-04-28 18:16:18'),('1519627581454921729','1514200247667015681','1','1519561785961709570',NULL,0,'2022-04-28 18:40:23','2022-04-28 18:40:23'),('1519627926188961793','1514200247667015681','0','1519561785961709570',NULL,1,'2022-04-28 18:41:46','2022-04-28 18:41:46'),('1519627978147999745','1514200247667015681','1519550383037460481','1',NULL,0,'2022-04-28 18:41:58','2022-04-28 18:41:58'),('1519627978147999746','1514200247667015681','1519550383037460481','1514902289863712769',NULL,0,'2022-04-28 18:41:58','2022-04-28 18:41:58'),('1519627978147999747','1514200247667015681','1519550383037460481','1519561785961709570',NULL,0,'2022-04-28 18:41:58','2022-04-28 18:41:58'),('1519870816869756930','1514200864187760641','1519870776046596097','1',NULL,1,'2022-04-29 10:46:55','2022-04-29 10:46:55'),('1519870816869756931','1514200864187760641','1519870776046596097','1514902289863712769',NULL,1,'2022-04-29 10:46:55','2022-04-29 10:46:55'),('1522102782427959298','1514200247667015681','0','1514902289863712769',NULL,1,'2022-05-05 14:35:57','2022-05-05 14:35:57'),('1522102782427959299','1514200247667015681','0','1',NULL,1,'2022-05-05 14:35:57','2022-05-05 14:35:57'),('1522102806469709826','1514200247667015681','0','1514902289863712769',NULL,0,'2022-05-05 14:36:03','2022-05-05 14:36:03'),('1522102806469709827','1514200247667015681','0','1',NULL,0,'2022-05-05 14:36:03','2022-05-05 14:36:03'),('1522102806469709828','1514200247667015681','0','1519561785961709570',NULL,0,'2022-05-05 14:36:03','2022-05-05 14:36:03'),('1523612720891547649','1514200864187760641','1519870776046596097','1',NULL,1,'2022-05-09 18:35:55','2022-05-09 18:35:55'),('1523612720891547650','1514200864187760641','1519870776046596097','1514902289863712769',NULL,1,'2022-05-09 18:35:55','2022-05-09 18:35:55'),('1523612720891547651','1514200864187760641','1519870776046596097','1519561785961709570',NULL,1,'2022-05-09 18:35:55','2022-05-09 18:35:55'),('1523612749576392705','1514200864187760641','1519870776046596097','1',NULL,0,'2022-05-09 18:36:02','2022-05-09 18:36:02'),('2','1514200247667015681','0','1',NULL,1,'2022-04-21 17:05:32','2022-04-21 17:05:34'); + +/*Table structure for table `part_type` */ + +DROP TABLE IF EXISTS `part_type`; + +CREATE TABLE `part_type` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `name` VARCHAR(20) NOT NULL COMMENT '类型名称 设备部件类型\r\n名称', + `show_name` VARCHAR(20) NOT NULL COMMENT '显示名称 显示名称', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述 描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='部件类型表 部件类型表'; + +/*Data for the table `part_type` */ + +INSERT INTO `part_type`(`id`,`name`,`show_name`,`description`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1','gearbox','主齿轮箱','主齿轮箱',0,'rmq','2022-04-15 14:23:14','2022-04-15 19:23:25'),('1514902289863712769','blade','叶片',NULL,0,'冉茂淇','2022-04-15 17:43:46','2022-04-15 17:43:46'),('1519561785961709570','bearing','轴承',NULL,0,'冉茂淇','2022-04-28 14:18:57','2022-04-28 14:18:57'); + +/*Table structure for table `part_type_detail` */ + +DROP TABLE IF EXISTS `part_type_detail`; + +CREATE TABLE `part_type_detail` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `type_id` CHAR(20) NOT NULL COMMENT '部件类型id 部件类型\r\nid', + `type_group_id` CHAR(20) NOT NULL DEFAULT '0' COMMENT '部件分组id 部件分组id', + `name` VARCHAR(20) NOT NULL COMMENT '设备标识 设备标识', + `show_name` VARCHAR(20) NOT NULL COMMENT '型号名称 型号名称', + `specification_type` VARCHAR(255) DEFAULT NULL COMMENT '规格类型 规格类型', + `manufacturer` VARCHAR(20) DEFAULT NULL COMMENT '生产厂商 生产厂商', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述 描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='部件型号 部件型号表'; + +/*Data for the table `part_type_detail` */ + +INSERT INTO `part_type_detail`(`id`,`type_id`,`type_group_id`,`name`,`show_name`,`specification_type`,`manufacturer`,`description`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1','1','1','gearbox-1','齿轮箱-1',NULL,NULL,'齿轮箱1',1,'rmq','2022-04-15 14:25:08','2022-04-15 16:46:18'),('1514880293847298050','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:16:22','2022-04-15 16:16:22'),('1514881323234344961','1','1','2','2',NULL,NULL,NULL,1,'2','2022-04-15 16:20:27','2022-04-15 16:20:27'),('1514883490519236609','1','0','12','12',NULL,NULL,NULL,1,'12','2022-04-15 16:29:04','2022-04-15 16:46:25'),('1514883502112292865','1','0','2','2',NULL,NULL,NULL,1,'2','2022-04-15 16:29:07','2022-04-15 16:29:07'),('1514883523469688834','1','1','3','3',NULL,NULL,NULL,1,'3','2022-04-15 16:29:12','2022-04-15 16:29:12'),('1514883593447456769','1','1','123','123',NULL,NULL,NULL,1,'123','2022-04-15 16:29:29','2022-04-15 16:29:29'),('1514883611285831681','1','1','123','123',NULL,NULL,NULL,1,'123','2022-04-15 16:29:33','2022-04-15 16:29:33'),('1514883650871672833','1','0','22','22',NULL,NULL,NULL,1,'22','2022-04-15 16:29:42','2022-04-15 16:29:42'),('1514890235438215169','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:55:52','2022-04-15 16:55:52'),('1514890248922902529','1','0','2','2',NULL,NULL,NULL,1,'2','2022-04-15 16:55:55','2022-04-15 16:55:55'),('1514890260310437890','1','0','3','3',NULL,NULL,NULL,1,'3','2022-04-15 16:55:58','2022-04-15 16:55:58'),('1514890315893354498','1','1','1','1',NULL,NULL,NULL,1,'1','2022-04-15 16:56:11','2022-04-15 16:56:11'),('1514890333048057858','1','0','1','1',NULL,NULL,NULL,1,'2','2022-04-15 16:56:15','2022-04-15 19:48:31'),('1514891880121282561','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-15 17:02:24','2022-04-15 17:02:24'),('1514891891060027394','1','0','2','2',NULL,NULL,NULL,1,'2','2022-04-15 17:02:27','2022-04-15 17:02:27'),('1514891900090363905','1','0','3','3',NULL,NULL,NULL,1,'3','2022-04-15 17:02:29','2022-04-15 17:02:29'),('1514891911050080257','1','0','2','2',NULL,NULL,NULL,1,'2','2022-04-15 17:02:32','2022-04-15 17:02:32'),('1514891922861240322','1','0','2','2',NULL,NULL,NULL,1,'2','2022-04-15 17:02:34','2022-04-15 17:02:34'),('1514891932726243329','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-15 17:02:37','2022-04-15 17:02:37'),('1514891942964539394','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-15 17:02:39','2022-04-15 17:02:39'),('1514891956877045762','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-15 17:02:43','2022-04-15 17:02:43'),('1514891966746243074','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-15 17:02:45','2022-04-15 17:02:45'),('1514906914125787137','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-15 18:02:09','2022-04-15 18:02:09'),('1514934149721362433','1','1514933457480847361','1','1',NULL,NULL,NULL,1,'1','2022-04-15 19:50:22','2022-04-15 19:50:22'),('1514934165273841665','1','1514933457480847361','1','2',NULL,NULL,NULL,1,'3','2022-04-15 19:50:26','2022-04-15 19:50:26'),('1517125499908808706','1514902289863712769','1','gearbox-1','齿轮箱-1',NULL,NULL,NULL,1,'冉茂淇','2022-04-21 20:58:01','2022-04-21 20:58:01'),('1517129944252047362','1','0','1','1',NULL,NULL,NULL,1,'1','2022-04-21 21:15:40','2022-04-21 21:15:40'),('1517130017501372418','1','1','2','2',NULL,NULL,NULL,1,'2','2022-04-21 21:15:58','2022-04-21 21:15:58'),('1517130114326880258','1','1','gearbox-1','齿轮箱-1',NULL,NULL,NULL,0,'冉茂淇','2022-04-21 21:16:21','2022-05-18 18:51:11'),('1517335938773090306','1','1','gearbox-2','齿轮箱-2',NULL,NULL,NULL,0,'冉茂淇','2022-04-22 10:54:13','2022-04-22 10:54:13'),('1517341262368227330','1','1','gearbox-3','齿轮箱-3',NULL,NULL,NULL,1,'冉茂淇','2022-04-22 11:15:22','2022-04-22 11:15:22'),('1517342679137009666','1','1517342601617883137','gearbox-4','齿轮箱-4',NULL,NULL,NULL,0,'冉茂淇','2022-04-22 11:21:00','2022-04-22 11:21:00'),('1517342812918530050','1514902289863712769','1517342760011579393','blade-1','叶片-1',NULL,NULL,NULL,0,'冉茂淇','2022-04-22 11:21:32','2022-04-22 11:21:32'),('1517342869789097986','1514902289863712769','1517342760011579393','blade-2','叶片-2',NULL,NULL,NULL,1,'冉茂淇','2022-04-22 11:21:46','2022-04-22 11:21:46'),('1517343016505851905','1514902289863712769','1517342978941665282','blade-3','叶片-3',NULL,NULL,NULL,0,'冉茂淇','2022-04-22 11:22:21','2022-04-22 11:22:21'); + +/*Table structure for table `part_type_group` */ + +DROP TABLE IF EXISTS `part_type_group`; + +CREATE TABLE `part_type_group` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `parent_group_id` CHAR(20) NOT NULL DEFAULT '0' COMMENT '父组id 父组id', + `type_id` CHAR(20) NOT NULL COMMENT '部件类型id 部件类型\r\nid', + `show_name` VARCHAR(20) NOT NULL COMMENT '部件分组名称 部件分组\r\n名称', + `description` VARCHAR(20) DEFAULT NULL COMMENT '描述 描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除 是\r\n否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期 创建时间', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间 修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='部件分组 部件分组'; + +/*Data for the table `part_type_group` */ + +INSERT INTO `part_type_group`(`id`,`parent_group_id`,`type_id`,`show_name`,`description`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1','0','1','主齿轮箱分组1','主齿轮箱分组1',0,'rmq','2022-04-15 14:23:48','2022-04-15 19:47:55'),('1514929672884887554','0','1','主齿轮箱分组2','主齿轮箱分组2',1,'rmq','2022-04-15 19:32:35','2022-04-15 19:32:35'),('1514933457480847361','0','1','主齿轮箱分组2',NULL,1,'冉茂淇','2022-04-15 19:47:37','2022-04-15 19:47:37'),('1517342601617883137','0','1','主齿轮箱分组2',NULL,0,'冉茂淇','2022-04-22 11:20:42','2022-04-22 11:20:42'),('1517342760011579393','0','1514902289863712769','叶片分组1',NULL,0,'冉茂淇','2022-04-22 11:21:20','2022-04-22 11:21:20'),('1517342978941665282','0','1514902289863712769','叶片分组3',NULL,0,'冉茂淇','2022-04-22 11:22:12','2022-04-27 13:35:09'),('1519184458601742338','0','1514902289863712769','叶片分组-3',NULL,1,'rmq','2022-04-27 13:19:35','2022-04-27 13:19:35'),('1519184694535536641','0','1514902289863712769','叶片分组3',NULL,1,'冉茂淇','2022-04-27 13:20:31','2022-04-27 13:20:31'),('1519185083863416834','1517342760011579393','1514902289863712769','叶片分组1-1',NULL,1,'冉茂淇','2022-04-27 13:22:04','2022-04-27 13:22:04'),('1519188342200090625','0','1514902289863712769','叶片分组3',NULL,1,'rmq','2022-04-27 13:35:01','2022-04-27 13:35:01'),('1519281293781704706','1','1','主齿轮箱分组3',NULL,1,'rmq','2022-04-27 19:44:22','2022-04-27 19:44:22'); + +/*Table structure for table `sub_system` */ + +DROP TABLE IF EXISTS `sub_system`; + +CREATE TABLE `sub_system` ( + `id` CHAR(20) NOT NULL COMMENT '编号', + `device_detail_id` VARCHAR(20) NOT NULL COMMENT '设备型号id', + `name` VARCHAR(20) NOT NULL COMMENT '名称', + `show_name` VARCHAR(20) NOT NULL COMMENT '显示名称', + `description` VARCHAR(255) DEFAULT NULL COMMENT '描述', + `is_deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否已被删除', + `create_person` VARCHAR(20) NOT NULL COMMENT '创建人', + `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', + `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='子系统 子系统'; + +/*Data for the table `sub_system` */ + +INSERT INTO `sub_system`(`id`,`device_detail_id`,`name`,`show_name`,`description`,`is_deleted`,`create_person`,`gmt_create`,`gmt_modified`) VALUES ('1','1514200247667015681','sub_system_1','子系统-1',NULL,0,'冉茂淇','2022-04-21 14:58:54','2022-04-27 20:42:08'),('1519291225528643586','1514200247667015681','sub_system_2','子系统-2',NULL,1,'冉茂淇','2022-04-27 20:23:50','2022-04-27 20:23:50'),('1519300177591119873','1514200247667015681','sub_system_2','子系统-2',NULL,1,'rmq','2022-04-27 20:59:24','2022-04-27 20:59:24'),('1519550383037460481','1514200247667015681','sub_system_2','子系统-2',NULL,0,'rmq','2022-04-28 13:33:38','2022-04-28 13:33:38'),('1519870776046596097','1514200864187760641','8MWSubSystem-1','8MW子系统-1',NULL,0,'冉茂淇','2022-04-29 10:46:46','2022-04-29 10:46:46'); + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; diff --git a/phm_rotate/datasource/phm_gateway.sql b/phm_rotate/datasource/phm_gateway.sql new file mode 100644 index 0000000..a758c88 --- /dev/null +++ b/phm_rotate/datasource/phm_gateway.sql @@ -0,0 +1,140 @@ +-- access_service +/* +警告: 字段名可能非法 - status +*/ +CREATE TABLE access_service +( + id CHAR(20) NOT NULL COMMENT '编号 主键编号', + group_id CHAR(20) NOT NULL COMMENT '设备组id 设备组id', + NAME VARCHAR(20) NOT NULL COMMENT '接入服务名称 接入服务名称', + source_type CHAR(20) NOT NULL COMMENT '数据源类型 数据源类型', + source_type_id CHAR(20) NOT NULL COMMENT '数据源类型id 关联数据源类型表的id', + description VARCHAR(255) COMMENT '接入服务描述 接入服务描述', + packet_format INT DEFAULT 0 NOT NULL COMMENT '数据包格式 数据包格式,0标准,1轻量,默认0', + timestamp_code VARCHAR(20) NOT NULL COMMENT '时间戳编码 时间戳编码,默认为time', + timestamp_accurate INT DEFAULT 0 NOT NULL COMMENT '时间戳精度 时间戳精度,0秒,1毫秒,默认0', + timestamp_format INT DEFAULT 0 NOT NULL COMMENT '时间戳格式 时间戳格式枚举类,0yyyyMMddHHmmss,默认为0', + task_num INT DEFAULT 0 NOT NULL COMMENT '接入任务数量 接入任务数量', + `STATUS` INT NOT NULL COMMENT '状态 状态枚举类,0运行中等等', + is_deleted TINYINT DEFAULT 0 NOT NULL COMMENT '是否已被删除 是否已被删除', + create_person VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + gmt_create DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建日期 创建时间', + gmt_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '修改时间 修改时间' +) COMMENT '接入服务表 接入服务表'; +ALTER TABLE access_service + ADD CONSTRAINT PK_access_service_id PRIMARY KEY (id); + +-- source_type_MQTT +/* +警告: 字段名可能非法 - host +警告: 字段名可能非法 - port +警告: 字段名可能非法 - password +警告: 字段名可能非法 - connect +*/ +CREATE TABLE source_type_MQTT +( + id CHAR(20) NOT NULL COMMENT '编号 编号', + service_id CHAR(20) NOT NULL COMMENT '接入服务id 接入服务id', + type_name VARCHAR(20) NOT NULL COMMENT '数据源类型名称 数据源类型名称,什么表就是什么名称', + is_inner INT NOT NULL COMMENT '是否是内置MQTT 是否是内置数据源,0内置,1第三方,默认0', + is_encryption INT COMMENT '是否加密 是否加密,0不加密,1加密,默认为0', + is_TSL_connect INT COMMENT '是否TSL通信 是否开启TSL通信,0不开启1开启,默认为0', + encryption_type INT COMMENT '加密类型 加密类型,0DES,1DES,默认0', + encryption_password VARCHAR(20) COMMENT '加密秘钥 加密秘钥', + `HOST` VARCHAR(20) COMMENT '服务器地址 服务器地址host,如192.168.118.1', + `PORT` VARCHAR(20) COMMENT '服务器端口 服务器端口port,1-65535', + is_single_connect INT COMMENT '开启单一连接 是否开启单一连接,0不开启1开启,默认为0', + client_id VARCHAR(50) COMMENT 'mqtt的client_id mqtt的client_id', + is_anonymous_connect INT COMMENT '是否匿名连接 是否开启匿名连接,0不开启1开启,默认为1', + username VARCHAR(50) COMMENT 'mqtt的用户名 mqtt的用户名', + `PASSWORD` VARCHAR(50) COMMENT 'mqtt的密码 mqtt的密码', + `CONNECT` VARCHAR(255) COMMENT '连接串 连接串', + is_deleted TINYINT DEFAULT 0 NOT NULL COMMENT '是否已被删除 是否已被删除', + create_person VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + gmt_create DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建日期 创建时间', + gmt_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '修改时间 修改时间' +) COMMENT '数据源MQTT表 数据源MQTT表'; +ALTER TABLE source_type_MQTT + ADD CONSTRAINT PK_source_type_MQTT_id PRIMARY KEY (id); + +-- source_type_kafka +/* +警告: 字段名可能非法 - host +警告: 字段名可能非法 - port +*/ +CREATE TABLE source_type_kafka +( + id CHAR(20) NOT NULL COMMENT '编号 编号', + service_id CHAR(20) NOT NULL COMMENT '接入服务id 接入服务id', + type_name VARCHAR(20) NOT NULL COMMENT '数据源类型名称 数据源类型名称', + `HOST` VARCHAR(20) COMMENT '服务器地址 服务器地址host,如192.168.118.1', + `PORT` VARCHAR(20) COMMENT '服务器端口 服务器端口port,1-65535', + is_deleted TINYINT DEFAULT 0 NOT NULL COMMENT '是否已被删除 是否已被删除', + create_person VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + gmt_create DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建日期 创建时间', + gmt_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '修改时间 修改时间' +) COMMENT '数据源kafka表 数据源kafka表'; +ALTER TABLE source_type_kafka + ADD CONSTRAINT PK_source_type_kafka_id PRIMARY KEY (id); + +-- source_type_OPC_UA +/* +警告: 字段名可能非法 - host +警告: 字段名可能非法 - port +警告: 字段名可能非法 - password +*/ +CREATE TABLE source_type_OPC_UA +( + id CHAR(20) NOT NULL COMMENT '编号 编号', + service_id CHAR(20) NOT NULL COMMENT '接入服务id 接入服务id', + type_name VARCHAR(20) NOT NULL COMMENT '数据源类型名称 数据源类型名称', + `HOST` VARCHAR(20) COMMENT '服务器地址 服务器地址host,如192.168.118.1', + `PORT` VARCHAR(20) COMMENT '服务器端口 服务器端口port,1-65535', + is_anonymous_connect INT COMMENT '是否匿名连接 是否开启匿名连接,0不开启1开启,默认为1', + username VARCHAR(50) COMMENT '用户名', + `PASSWORD` VARCHAR(50) COMMENT '密码 密码', + is_deleted TINYINT DEFAULT 0 NOT NULL COMMENT '是否已被删除 是否已被删除', + create_person VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + gmt_create DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建日期 创建时间', + gmt_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '修改时间 修改时间' +) COMMENT '数据源OPC_UA表 数据源OPC_UA表'; +ALTER TABLE source_type_OPC_UA + ADD CONSTRAINT PK_source_type_OPC_UA_id PRIMARY KEY (id); + +-- source_type_liga +CREATE TABLE source_type_liga +( + id CHAR(20) NOT NULL COMMENT '编号 编号', + service_id CHAR(20) NOT NULL COMMENT '接入服务id 接入服务id', + type_name VARCHAR(20) NOT NULL COMMENT '数据源类型名称 数据源类型名称', + is_deleted TINYINT DEFAULT 0 NOT NULL COMMENT '是否已被删除 是否已被删除', + create_person VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + gmt_create DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建日期 创建时间', + gmt_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '修改时间 修改时间' +) COMMENT '数据源liga表 数据源liga表'; +ALTER TABLE source_type_liga + ADD CONSTRAINT PK_source_type_liga_id PRIMARY KEY (id); + +-- access_task +/* +警告: 字段名可能非法 - status +*/ +CREATE TABLE access_task +( + id CHAR(20) NOT NULL COMMENT '编号 主键编号', + service_id CHAR(20) NOT NULL COMMENT '接入服务id 设备组id', + NAME VARCHAR(64) NOT NULL COMMENT '接入任务名称 接入任务名称', + deivce_object_id CHAR(20) NOT NULL COMMENT '设备对象id 设备对象id', + part_id CHAR(20) COMMENT '部件id 部件id', + dataset_id INT NOT NULL COMMENT '数据集id 数据集id', + description VARCHAR(255) COMMENT '描述 描述', + `STATUS` INT NOT NULL COMMENT '状态 状态,0运行1停止等', + data_num INT DEFAULT 0 NOT NULL COMMENT '接受数据条数 接受数据条数', + is_deleted TINYINT DEFAULT 0 NOT NULL COMMENT '是否已被删除 是否已被删除', + create_person VARCHAR(20) NOT NULL COMMENT '创建人 创建人', + gmt_create DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建日期 创建时间', + gmt_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '修改时间 修改时间' +) COMMENT '接入任务表 接入任务表'; +ALTER TABLE access_task + ADD CONSTRAINT PK_access_task_id PRIMARY KEY (id); + diff --git a/phm_rotate/frontend/phm_frontend b/phm_rotate/frontend/phm_frontend new file mode 160000 index 0000000..0fa1f87 --- /dev/null +++ b/phm_rotate/frontend/phm_frontend @@ -0,0 +1 @@ +Subproject commit 0fa1f8709bda514418c57c11ec31e25eb43a4c10